Methods and devices for image coding and decoding

Adaptive methods using sequence and picture parameter sets address the inconsistency issue in video encoding and decoding by providing missing parameters, ensuring consistent behavior and efficiency without APS.

JP2026053775APending Publication Date: 2026-03-25INTERDIGITALCE PATENT HLDG SAS
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2026-01-15
Publication Date
2026-03-25

AI Technical Summary

Technical Problem

Existing video encoding and decoding methods face challenges in maintaining consistent behavior when adaptive parameter sets (APS) are absent in the bitstream, despite coding tools referencing APS parameters being activated.

Method used

Adaptive methods for encoding and decoding that utilize sequence parameter sets, picture parameter sets, picture headers, and sequence headers to provide missing parameters when APS is not present, ensuring consistent decoding and encoding processes.

Benefits of technology

Ensures consistent behavior and efficient decoding and encoding even when APS is missing, maintaining video quality and compression efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026053775000001_ABST
    Figure 2026053775000001_ABST
Patent Text Reader

Abstract

This provides a method for decryption. [Solution] The method includes: obtaining a bitstream representing an encoded video sequence (501); obtaining first information indicating whether a container of a first type providing at least one coding parameter is present in the bitstream (502); checking the value of a first syntax element indicating whether a coding tool using the at least one coding parameter is activated for the current block of image samples of the video sequence; and, when the second syntax element indicates activation of the coding tool, adapting the decoding of the current block if no container is present.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] At least one of the embodiments generally relates to methods and devices for image encoding and decoding, and more particularly, to methods and devices for ensuring consistent interaction between some signaling tools and some encoding tools.

Background Art

[0002] To achieve high compression efficiency, video encoding schemes typically employ prediction and transformation that utilize the spatial and temporal redundancy of video content. During encoding, the images of the video content are divided into blocks of samples (i.e., pixels), and these blocks are then further divided into one or more sub-blocks hereinafter referred to as original sub-blocks. Intra prediction or inter prediction is then applied to each sub-block to exploit intra-image or inter-image correlation. Regardless of the prediction method (intra or inter) used, a predictor sub-block is determined for each original sub-block. The sub-block representing the difference between the original sub-block and the predicted sub-block is then often referred to as a prediction error sub-block, a prediction residual sub-block, or simply a residual block, and is transformed, quantized, and entropy encoded to generate the encoded video stream. To reconstruct the video, the compressed data is decoded by inverse processes corresponding to the transformation, quantization, and entropy encoding.

[0003] The complexity of video compression methods has increased significantly compared to earlier video compression methods such as MPEG-1 (ISO / CEI-11172), MPEG-2 (ISO / CEI13818-2), or MPEG-4 / AVC (ISO / CEI14496-10). In fact, many new coding tools have emerged, or existing coding tools have been refined in the last generation of video compression standards (for example, the international standard titled Versatile Video Coding (VVC), which is under development by a joint collaborative team of ITU-T and ISO / IEC experts known as the Joint Video Experts Team (JVET), or the standard HEVC (ISO / IEC 23008-2-MPEG-H Part 2, High Efficiency Video Coding / ITU-T H.265). In parallel, several signaling tools have been proposed that enable exemplary signaling parameters for several coding tools, all shared by many subblocks along the video sequence. One of these signaling tools is the adaptive parameter set (APS). The APS is a specific data container (called a NAL (Network Abstraction Layer) unit), and is used in the Adaptive Loop Filter (ALF) coding tool, Luma Mapping with Chroma Scaling. This provides a Chroma Scaling (LMCS) coding tool and parameters for the scaling matrix used in quantization.

[0004] In some cases, the APS may not be present in the bitstream while a coding tool that uses parameters signaled by the APS is activated.

[0005] It is desirable to propose a solution that enables consistent behavior of the encoder or decoder when the signaling container is not present in the bitstream, while the coding tool that references the parameters provided by the signaling container is activated. [Overview of the Initiative]

[0006] In a first aspect, one or more of these embodiments provide a method for decoding, the method comprising: obtaining a bitstream representing an encoded video sequence; obtaining first information indicating whether a container of a first type providing at least one coding parameter is present in the bitstream; checking the value of a first syntax element indicating whether a coding tool using the at least one coding parameter is activated for the current block of image samples of the video sequence; and, when a second syntax element indicates activation of the coding tool, adapting the decoding of the current block if no container is present.

[0007] In one embodiment, the first information is obtained from a second syntactic element acquired from a bitstream.

[0008] In one embodiment, the first type of container is an adaptive parameter set, and the second syntactic element indicates whether the presence of at least one adaptive parameter set in the bitstream is permitted.

[0009] In one embodiment, the adaptation of decoding the current block includes outputting second information representing a bitstream mismatch.

[0010] In one embodiment, the adaptation of decrypting the current block includes deactivating the coding tool to decrypt the current block.

[0011] In one embodiment, the decryption adaptation includes obtaining at least one parameter from at least one container of at least one second type, and applying the obtained parameter to a coding tool to decrypt the current block.

[0012] In one embodiment, at least one container of a second type is a sequence parameter set and / or a picture parameter set and / or a picture header and / or a sequence header.

[0013] In a second aspect, one or more of these embodiments provide a method for encoding, the method comprising: obtaining a video sequence for encoding in a bitstream; and adapting the encoding of a block of image samples of the video sequence in response to first information indicating whether the presence of a first type of container in the bitstream that provides at least one coding parameter to an encoding tool is authorized.

[0014] In one embodiment, the first information is encoded in a bitstream.

[0015] In one embodiment, the first type of container is an adaptive parameter set, and the second syntactic element indicates whether the presence of at least one adaptive parameter set in the bitstream is permitted.

[0016] In one embodiment, the encoding adaptation includes removing a coding tool from the list of coding tools considered for encoding the current block if the presence of a container is not authorized.

[0017] In one embodiment, the encoding adaptation includes encoding at least one encoding parameter in at least one container of at least one second type, provided that the use of the encoding tool is authorized to encode the current block.

[0018] In one embodiment, at least one container of a second type is a sequence parameter set and / or a picture parameter set and / or a picture header and / or a sequence header.

[0019] In a third embodiment, one or more of these embodiments provide a device for decoding, the device comprising electronics adapted to acquire a bitstream representing an encoded video sequence; acquire first information indicating whether a container of a first type providing at least one coding parameter is present in the bitstream; check the value of a first syntax element indicating whether a coding tool using the at least one coding parameter is activated for the current block of image samples of the video sequence; and, when a second syntax element indicates activation of the coding tool, adapt decoding of the current block if no container is present.

[0020] In one embodiment, the first information is obtained from a second syntactic element acquired from a bitstream.

[0021] In one embodiment, the first type of container is an adaptive parameter set, and the second syntactic element indicates whether the presence of at least one adaptive parameter set in the bitstream is permitted.

[0022] In one embodiment, the adaptation of decoding the current block includes outputting second information representing a bitstream mismatch.

[0023] In one embodiment, the adaptation of decrypting the current block includes deactivating the coding tool to decrypt the current block.

[0024] In one embodiment, the adaptation of decoding includes obtaining at least one parameter from at least one container of at least one second type, and applying the obtained parameter to a coding tool to decode the current block.

[0025] In one embodiment, at least one container of at least one second type is a sequence parameter set and / or a picture parameter set and / or a picture header and / or a sequence header.

[0026] In a fourth aspect, one or more of the present embodiments provide a device for encoding, the device being adapted to obtain a video sequence for encoding in a bitstream, and to adapt the encoding of blocks of samples of images of the video sequence according to first information indicating whether the presence of a first type of container providing at least one coding parameter to a coding tool in the bitstream is authorized.

[0027] In one embodiment, the first information is encoded in the bitstream.

[0028] In one embodiment, the first type of container is an adaptation parameter set, and the second syntax element indicates whether the presence of at least one adaptation parameter set in the bitstream is authorized.

[0029] In one embodiment, the adaptation of encoding includes removing a coding tool from a list of coding tools considered for encoding the current block if the presence of the container is not authorized.

[0030] In one embodiment, the adaptation of encoding includes encoding at least one coding parameter in at least one container of at least one second type if the use of the coding tool is authorized for encoding the current block.

[0031] In one embodiment, at least one container of at least one second type is a sequence parameter set and / or a picture parameter set and / or a picture header and / or a sequence header.

[0032] In a fifth aspect, one or more of the present embodiments provide a signal including data generated according to a method for encoding according to the second aspect or by a device for encoding according to the fourth aspect.

[0033] In a sixth aspect, one or more of the present embodiments provide a computer program including program code instructions for implementing a method according to the first aspect or the second aspect.

[0034] In a seventh aspect, one or more of the present embodiments provide information storage means for storing program code instructions for implementing a method according to the first aspect or the second aspect.

Brief Description of the Drawings

[0035] [Figure 1] An example of division by the pixels of the original video's image is shown. [Figure 2] A method for encoding a video stream executed by an encoding module is schematically shown. [Figure 3] A method for decoding an encoded video stream (i.e., a bitstream) is schematically shown. [Figure 4A] An example of the hardware architecture of a processing module capable of implementing an encoding module or a decoding module in which various aspects and embodiments are implemented is schematically shown. [Figure 4B] A block diagram of an example of a system in which various aspects and embodiments are implemented is shown. [Figure 5] A solution for adapting the decoding process when APS is not available on the decoder side is schematically shown. [Figure 6] This outlines a solution for adapting the encoding process when APS can be used. [Modes for carrying out the invention]

[0036] In the following description, some embodiments use tools developed in the context of VVC or HEVC. However, these embodiments are not limited to video encoding / decoding methods corresponding to VVC or HEVC, but are also applicable to other video encoding / decoding methods and any method in which an image is predicted from another image.

[0037] Figure 1 shows an example of the division that the image of sample 11 of the original video 10 undergoes. Here, the sample is considered to consist of three components, namely a luminance component and two chrominance components. In this case, the sample corresponds to a pixel. However, the following embodiments are adapted to samples with a different number of components, for example, an image in which the sample consists of a gray-level sample containing one component, or an image in which the sample consists of three color components and a transparency component and / or depth component. The following embodiments are adapted to one component of the image. In this case, the sample corresponds to the value of one component.

[0038] An image is divided into multiple coded entities. First, as shown in reference no. 13 in Figure 1, the image is divided into a grid of blocks called coding tree units (CTUs). A CTU consists of N×N blocks of luminance samples and two corresponding blocks of chrominance samples. N is generally a power of 2, with a maximum value of, for example, "128". Second, the image is divided into one or more groups of CTUs. For example, it can be divided into one or more tile rows and tile columns, where a tile is a sequence of CTUs covering a rectangular area of ​​the image. In some cases, a tile can be divided into one or more bricks, each brick consisting of at least one row of CTUs within the tile. Above the concepts of tiles and bricks, there exists another coded entity called a slice, which can incorporate at least one tile or at least one brick of a tile in the image.

[0039] In the example in Figure 1, as indicated by reference numeral 12, image 11 is divided into three equal slices S1, S2, and S3, each slice containing multiple tiles (not shown).

[0040] As shown in reference no. 14 in Figure 1, a CTU can be divided into a hierarchical tree of one or more subblocks called coding units (CUs). The CTU is the root (i.e., parent node) of the hierarchical tree and can be divided into multiple CUs (i.e., child nodes). Each CU becomes a leaf of the hierarchical tree if it has not been further divided into smaller CUs, and becomes the parent node of the smaller CUs (i.e., child nodes) if it has been further divided. Several types of hierarchical trees can be applied, including quadtrees, binary trees, and ternary trees. In a quadtree, each CTU (each CU) can be divided into four rectangular CUs of equal size (i.e., it can be its parent node). In a binary tree, each CTU (each CU) can be divided horizontally or vertically into two rectangular CUs of equal size. In a ternary tree, each CTU (each CU) can be divided horizontally or vertically into three rectangular CUs. For example, a CU with height N and width M is divided vertically (and horizontally) into a first CU with height N (each N / 4) and width M / 4 (each M), a second CU with height N (each N / 2) and width M / 2 (each M), and a third CU with height N (each N / 4) and width M / 4 (each M).

[0041] In the example in Figure 1, CTU14 is initially split into "four" rectangular CUs using a quadtree-type split. The top-left CU is a leaf in the hierarchical tree because it has not been split further, i.e., it is not the parent node of the other CUs. The top-right CU is further split into "four" smaller square CUs, again using a quadtree-type split. The bottom-right CU is vertically split into "two" rectangular CUs using a binary tree-type split. The bottom-left CU is vertically split into "three" rectangular CUs using a ternary tree-type split.

[0042] During image encoding, the splitting is adaptive, and each CTU is split to optimize the compression efficiency based on the CTU standard.

[0043] In some video compression schemes, the concepts of prediction units (PUs) and transform units (TUs) have emerged. In this case, the coded entities used for prediction (i.e., PUs) and transformation (i.e., TUs) can be subdivisions of a CU. For example, as shown in Figure 1, a CU of size 2N × 2N can be divided into PUs of size N × 2N or 2N × N. Furthermore, this CU can be divided into four TUs of size N × N or sixteen TUs of size (N / 2) × (N / 2).

[0044] In this application, the terms “block,” “image block,” or “subblock” may be used to refer to any one of CTU, CU, PU, ​​and TU. Furthermore, the terms “block,” or “image block” may be used to refer to macroblocks, partitions, and subblocks as specified in MPEG-4 / AVC or other video coding standards, and more generally, to refer to arrays of samples of a large number of sizes.

[0045] In this application, the terms “reconstructed” and “decoded” may be used interchangeably, the terms “pixel” and “sample” may be used interchangeably, and the terms “image,” “picture,” “subpicture,” “slice,” and “frame” may be used interchangeably.

[0046] Figure 2 schematically illustrates a method for encoding a video stream, which is performed by the encoding module. While variations of this method for encoding are conceivable, for clarity, the encoding method shown in Figure 2 will be described below without mentioning all anticipated variations.

[0047] Encoding the current original image 201 begins with the division of the current original image 201 during step 202, as described in relation to Figure 1. This divides the current image 201 into CTU, CU, PU, ​​TU, etc. For each block, the encoding module determines the encoding mode between intra-prediction and inter-prediction.

[0048] Intra-prediction, as shown in step 203, consists of predicting a sample of the current block from a predicted block derived from a sample of a reconstructed block located in a causal neighborhood of the current block being coded, according to the intra-prediction method. The result of intra-prediction is a prediction direction indicating which sample of the neighboring block to use, and a residual block resulting from the calculation of the difference between the current block and the predicted block.

[0049] Interpretation involves predicting the sample of the current image from a block of samples called a reference block, which is a preceding or succeeding image of the current image. This image is referred to as the reference image. During the encoding of the current block by the interpretation method, the reference image block closest to the current block is determined by the motion estimation step 204 according to a similarity criterion. During step 204, a motion vector indicating the position of the reference block in the reference image is determined. This motion vector is used in the motion compensation step 205, during which the residual block is calculated in the form of the difference between the current block and the reference block.

[0050] In the first video compression standards, the one-way interpredictive mode described above was the only intermode available. As video compression standards have evolved, the family of intermodes has grown significantly and now includes many different intermodes.

[0051] During selection step 206, the coding module selects a prediction mode from among the tested prediction modes (e.g., intra-prediction mode, inter-prediction mode) that optimizes compression performance according to a rate / distortion criterion (i.e., RDO criterion).

[0052] When prediction mode is selected, the residual block is transformed in step 207 and quantized in step 209. During quantization, in the transformed region, the transformed coefficients are weighted by a scaling matrix in addition to the quantization parameters. The scaling matrix is ​​a coding tool that allows prioritizing certain frequencies at the expense of others. Generally, lower frequencies are preferred. Some video compression methods allow the application of a user-defined scaling matrix instead of the default scaling matrix. In this case, the scaling matrix parameters must be sent to the decoder. In some implementations, the parameters of a non-default scaling matrix are specified using a signaling tool such as a signaling container (i.e., a Network Abstraction layer (NAL) unit). In some implementations, the NAL unit used to signal the scaling matrix parameters is called an Adaptive Parameter Set (APS).

[0053] Note that the encoding module can skip the transformation and directly apply quantization to the untransformed residual signal.

[0054] When the current block is coded according to the intra-prediction mode, the prediction direction and the transformed and quantized residual block are encoded by the entropy encoder during step 210.

[0055] When the current block is encoded according to the interprediction mode, the motion data associated with this interprediction mode is encoded in step 208.

[0056] Generally, two modes can be used to encode motion data, called AMVP (Adaptive Motion Vector Prediction) and merge, respectively.

[0057] AMVP essentially involves signaling a reference image, a motion vector predictor index, and a motion vector difference (also known as a motion vector residual) used to predict the current block.

[0058] The merge mode signals indices of several motion data collected in a list of motion data predictors. The list consists of five or seven candidates and is configured similarly on the decoder and encoder sides. Thus, the merge mode aims to derive several motion data to be extracted from the merge list. The merge list typically contains motion data associated with several spatially and temporally adjacent blocks, which are available in a reconfigured state while the current block is being processed.

[0059] If predicted, the motion information is then encoded by the entropy encoder during step 210, along with the transformed and quantized residual blocks. Note that the encoding module can bypass both transformation and quantization; i.e., entropy encoding is applied to the residuals without applying any transformation or quantization processes. The result of entropy encoding is inserted into the encoded video stream (i.e., bitstream) 211.

[0060] It should be noted that entropy encoders can be implemented in the form of context adaptive binary arithmetic coders (CABACs). CABACs encode binary symbols, keeping complexity low and enabling probabilistic modeling of more frequently used bits for any given symbol.

[0061] After the quantization step 209, the current block is reconstructed so that the pixels corresponding to that block can be used for future predictions. This reconstruction stage is also called the prediction loop. Thus, inverse quantization is applied to the residual block that was transformed and quantized in step 212, and the inverse transformation is applied in step 213. The prediction block of the block is reconstructed by the prediction mode used for the block obtained in step 214. If the current block is encoded according to the inter-prediction mode, the encoding module applies reference block motion compensation using the motion vector of the current block in step 216, where appropriate. If the current block is encoded according to the intra-prediction mode, in step 215, the prediction direction corresponding to the current block is used to reconstruct the reference block of the current block. The reference block and the reconstructed residual block are added to obtain the reconstructed current block.

[0062] After reconstruction, during step 217, in-loop post-filtering is applied to the reconstructed blocks, intended to reduce encoding artifacts. This post-filtering is called in-loop post-filtering because it is performed in the prediction loop to avoid drift between the encoding and decoding processes, by acquiring the same reference image in the encoder as the decoder. For example, in-loop post-filtering includes deblocking filtering, SAO (sample adaptive offset) filtering, and adaptive loop filtering (ALF) with block-based filter adaptation.

[0063] In ALF, for the luma component, one of several filters is selected for each 4x4 block of the image based on the direction and activity of the local gradient. Filter selection is based on the classification of the 4x4 blocks. The ALF filter parameters must be sent to the decoder. In some implementations, the ALF filter parameters are signaled in the Adaptive Parameter Set (APS).

[0064] A parameter representing the activation or deactivation of the in-loop deblocking filter, and, when activated, the properties of the in-loop deblocking filter, are introduced into the encoded video stream 211 during the entropycoding step 210.

[0065] A new coding tool that emerged in the last generation of video compression methods added a new processing block before in-loop post-filtering. This coding tool is called Luma Mapping with Chroma Scaling (LMCS) and has two main components: in-loop mapping of the luma component based on an adaptive piecewise linear model, and luma-dependent residual scaling applied to the chroma component. In-loop mapping of the luma component adjusts the dynamic range of the input signal by redistributing codewords across the dynamic range to improve compression efficiency. Chroma residual scaling is designed to compensate for the interaction between the luma signal and its corresponding chroma signal. The LMCS parameters need to be sent to the decoder. In some implementations, the LMCS parameters are signaled in an Adaptive Parameter Set (APS).

[0066] Another new coding tool found in the latest generation of video compression methods is called Gradual Decoding Refresh (GDR). GDR provides a virtual boundary for reconstructed images, some of which are not available as predictive criteria. When GDR is activated for an image, its NAL unit type is signaled as GDR_NUT.

[0067] Once a block is reconstructed, it is inserted into the reconstructed image stored in the decoded picture buffer (DPB) 219 during step 218. The reconstructed image thus stored can serve as a reference image for other images to be coded.

[0068] Figure 3 schematically illustrates a method for decoding an encoded video stream (i.e., bitstream) 211, encoded according to the method described in relation to Figure 2. This decoding method is performed by a decoding module. While variations of this decoding method are possible, for clarity, the decoding method shown in Figure 3 will be described below without describing all anticipated variations.

[0069] Decoding is performed block by block. For the current block, this begins with entropy decoding of the current block during step 310. Entropy decoding allows us to obtain the predicted mode of the block.

[0070] If the current block is encoded according to the intra-prediction mode, entropy decoding allows us to obtain information representing the prediction direction and residual block.

[0071] If the current block is encoded according to inter-prediction mode, entropy decoding allows the acquisition of motion data and data representing the residual block. Where appropriate, during step 308, the motion data is reconstructed for the current block according to AMVP or merge mode. In merge mode, the motion data acquired by entropy decoding includes an index in a list of motion vector predictor candidates. The decoding module applies the same process as the encoding module to construct lists of candidates for normal merge mode and sub-block merge mode. Using the reconstructed lists and indices, the decoding module can extract the motion vectors used to predict the motion vectors of the block.

[0072] The decoding method includes steps 312, 313, 315, 316, and 317, which are identical in all respects to steps 212, 213, 215, 216, and 217 of the encoding method, respectively. At the encoding module level, step 214 includes a mode selection process that evaluates each mode according to a rate-distortion criterion and selects the best mode, and step 314 simply reads information representing the selected mode in bitstream 211. In step 318, the decoded blocks are stored in the decoded image, and the decoded image is stored in DPB319. When the decoding module decodes a given image, the image stored in DPB319 is identical to the image stored in DPB219 by the encoding module during the encoding of the given image. The decoded image can also be output by the decoding module for display, for example.

[0073] In certain cases where the current block is encoded using ALF, LMCS, or a non-default scaling matrix, the decoder needs to obtain the ALF, LMCS, and non-default scaling matrix parameters. As mentioned above, the ALF, LMCS, and non-default scaling matrix parameters are provided by the APS. However, in some situations, the bitstream received by the decoder may not contain the APS while the use of ALF and / or LMCS, and / or a non-default scaling matrix, is activated for the current block. Such situations can occur when the APS is lost during transmission. Such situations can also occur when the bitstream is natively encoded without an APS. In particular, some video compression methods allow specifying that the encoded video stream does not contain any APS. In some cases, this feature is specified in the encoded video stream by a flag, for example, called no_aps_constraint_flag at the sequence level. If the flag no_aps_constraint_flag is equal to 1, the presence of an APS in the encoded video stream is not permitted. Instead, if the flag no_aps_constraint_flag is equal to zero, there is no constraint on the presence of APS in the encoded video stream. The flag no_aps_constraint_flag is encoded into a syntactic element called general_constraint_info(), for example, the syntactic element general_constraint_info() is encoded into a syntactic element profile_tier_level(), and the syntactic element profile_tier_level() is embedded in a signal container DPS (decoding Parameter Set), VPS (Video Parameter Set), or SPS (Sequence Parameter Set).The embodiments described below propose a solution that enables consistent behavior of an encoder or decoder when the APS is not present in the bitstream, while a coding tool that references parameters provided by the APS is activated.

[0074] Similar to the no_aps_constraint_flag, there is another constraint flag that disables the use of NAL units of type GDR_NUT. This flag is named no_gdr_constraint_flag. Instead of deactivating GDR itself, it disables the use of GDR NAL units.

[0075] Figure 4A schematically shows an example of a hardware architecture of a processing module 40 that can implement an encoding module or a decoding module that can implement the encoding method of Figure 2 and the decoding method of Figure 3, respectively, modified according to different aspects and embodiments. The processing module 40 is connected by a communication bus 405 and includes, in non-limiting examples, one or more microprocessors, general-purpose computers, dedicated computers, and processors based on multi-core architectures, a processor or CPU (central processing unit) 400, random access memory (RAM) 401, read-only memory (ROM) 402, electrically erasable programmable read-only memory (EEPROM), read-only memory (ROM), programmable read-only memory (PROM), random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), flash memory, magnetic disk drive and / or optical disk drive, or SD (secure digital) card reader and / or hard disk drive (Hard Disc) The system includes a storage device 403 that may include non-volatile memory and / or volatile memory, including but not limited to storage media readers such as drives and HDDs, and / or network-accessible storage devices, and at least one communication interface 404 for exchanging data with other modules, devices, or equipment. The communication interface 404 may include, but is not limited to, transceivers configured to transmit and receive data over a communication channel. The communication interface 404 may include, but is not limited to, a modem or a network card.

[0076] If the processing module 40 implements a decoding module, the communication interface 404 enables, for example, the processing module 40 to receive an encoded video stream and provide a decoded video stream. If the processing module 40 implements an encoding module, the communication interface 404 enables, for example, the processing module 40 to receive original image data, encode it, and provide an encoded video stream.

[0077] The processor 400 can execute instructions loaded into the RAM 401 from the ROM 402, external memory (not shown), a storage medium, or a communication network. When the processing module 40 is powered on, the processor 400 can read instructions from the RAM 401 and execute them. These instructions form a computer program that causes the processor 400 to implement, for example, the decoding method described in relation to Figure 3 or the encoding method described in relation to Figure 2, and the decoding method and encoding method include various aspects and embodiments described herein.

[0078] All or part of the algorithm and steps of the encoding or decoding method may be implemented in software form by executing an instruction set by a programmable machine such as a DSP (Digital Signal Processor) or microcontroller, or in hardware form by a machine or dedicated component such as an FPGA (Field Programmable Gate Array) or ASIC (Application-Specific Integrated Circuit).

[0079] Figure 4B shows a block diagram of an example of System 4 in which various aspects and embodiments are implemented. System 4 can be embodied as a device including various components described below and is configured to perform one or more of the aspects and embodiments described in this document. Examples of such devices include, but are not limited to, various electronic devices such as personal computers, laptop computers, smartphones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected home appliances, and servers. The elements of System 4 can be embodied individually or in combination in a single integrated circuit (IC), multiple ICs, and / or separate components. For example, in at least one embodiment, System 4 comprises one processing module 40 that implements a decoding module or an encoding module. However, in another embodiment, System 4 may comprise a first processing module 40 that implements a decoding module and a second processing module 40 that implements a decoding module, or one processing module 40 that implements a decoding module and an encoding module. In various embodiments, system 40 is communicably coupled to one or more other systems or other electronic devices, for example, via a communication bus or through dedicated input and / or output ports. In various embodiments, system 4 is configured to implement one or more of the embodiments described in this document.

[0080] System 4 includes at least one processing module 40 that can implement one or both of the encoding module and / or the decoding module.

[0081] Inputs to the processing module 40 may be provided through various input modules, as shown in block 42. Such input modules include, but are not limited to, (i) an RF module for receiving radio frequency (RF) signals transmitted wirelessly from a broadcasting station, (ii) a component (COMP) input module (or a set of COMP input modules), (iii) a Universal Serial Bus (USB) input module, and / or (iv) a High Definition Multimedia Interface (HDMI) input module. Another example not shown in Figure 4B is composite video.

[0082] In various embodiments, the input module of block 42 has associated input processing elements, as known in the Art. For example, an RF module may be associated with elements suitable for (i) selecting a desired frequency (also referred to as selecting a signal or band-limiting a signal to a frequency band), (ii) down-converting the selected signal, (iii) in a particular embodiment, band-limiting again to a narrower frequency band in order to select a signal frequency band that may be referred to as a channel, (iv) demodulating the down-converted and band-limited signal, (v) performing error correction, and (vi) multiplexing to select a desired stream of data packets. RF modules in various embodiments include one or more elements that perform these functions, e.g., frequency selectors, signal selectors, band limiters, channel selectors, filters, downconverters, demodulators, error correctors, and demultiplexers. The RF portion may include a tuner that performs various functions of these functions, e.g., down-converting a received signal to a lower frequency (e.g., an intermediate frequency or a frequency close to the baseband) or to the baseband. In one embodiment of a set-top box, the RF module and its associated input processing elements receive an RF signal transmitted via a wired (e.g., cable) medium and perform frequency selection by filtering, down-converting, and re-filtering it to a desired frequency band. Various embodiments may involve rearranging the order of the elements described above (and others), removing some of these elements, and / or adding other elements that perform similar or different functions. Adding elements may include inserting elements between existing elements, such as inserting an amplifier and an analog-to-digital converter. In various embodiments, the RF module includes an antenna.

[0083] Furthermore, the USB module and / or HDMI module may include their respective interface processors for connecting system 4 to other electronic devices via USB and / or HDMI connections. It should be understood that various forms of input processing, such as Reed-Solomon error correction, can be implemented, if necessary, for example, in a separate input processing IC or within the processing module 40. Similarly, forms of USB or HDMI interface processing can be implemented, if necessary, in a separate interface IC or within the processing module 40. The demodulated, error-corrected, and demultiplexed stream is provided to the processing module 40.

[0084] Various elements of System 4 can be provided within an integrated housing. Within the integrated housing, the various elements can be interconnected and transmit data between them using internal buses known in the art, such as inter-IC (I2C) buses, wiring, and printed circuit boards, with appropriate connection arrangements. For example, in System 4, the processing module 40 is interconnected with other elements of System 4 by bus 405.

[0085] The communication interface 404 of the processing module 40 enables the system 4 to communicate over the communication channel 41. The communication channel 41 can be implemented, for example, within a wired and / or wireless medium.

[0086] In various embodiments, data is streamed to system 4 or otherwise provided using a wireless network such as a Wi-Fi network, e.g., IEEE 802.11 (IEEE stands for the Institute of Electrical and Electronics Engineers). The Wi-Fi signals in these embodiments are received via a communication channel 41 and a communication interface 404 adapted for Wi-Fi communication. The communication channel 41 in these embodiments is typically connected to an access point or router that provides access to an external network, including the Internet, to enable streaming applications and other over-the-top communications. In other embodiments, streaming data is provided to system 4 using a set-top box that distributes data via an HDMI connection in input block 42. In yet another embodiment, streaming data is provided to system 4 using an RF connection in input block 42. As shown above, various embodiments provide data in a non-streaming manner. In addition, various embodiments use wireless networks other than Wi-Fi, e.g., cellular networks or Bluetooth networks.

[0087] System 4 can provide output signals to various output devices, including a display 46, a speaker 47, and other peripheral devices 48. In various embodiments, the display 46 includes, for example, one or more of a touchscreen display, an organic light-emitting diode (OLED) display, a curved display, and / or a foldable display. The display 46 may be for a television, tablet, laptop, mobile phone, or other device. The display 46 may also be integrated into other components (e.g., as in a smartphone) or separate (e.g., an external monitor for a laptop). Other peripheral devices 46, in various examples of embodiments, include one or more of a standalone digital video disc (or digital versatile disc) (DVR, abbreviated as both terms), a disc player, a stereo system, and / or a lighting system. Various embodiments use one or more peripheral devices 48 that provide functions based on the output of System 4. For example, a disc player performs the function of playing back the output of System 4.

[0088] In various embodiments, control signals are communicated between the system 4 and the display 46, speaker 47, or other peripheral devices 48 using signaling such as AV.Link, Consumer Electronics Control (CEC), or other communication protocols that enable control between devices with or without user intervention. Output devices can be communicably coupled to the system 4 via dedicated connections through their respective interfaces 43, 44, and 45. Alternatively, output devices can be connected to the system 4 using a communication channel 41 via a communication interface 404. The display 46 and speaker 47 can be integrated into a single unit with other components of the system 4 in an electronic device such as a television. In various embodiments, the display interface 43 includes a display driver, such as a timing controller (TCon) chip.

[0089] Alternatively, for example, if the RF module of input 42 is part of a separate set-top box, the display 46 and speaker 47 can be isolated from one or more of the other components. In various embodiments where the display 46 and speaker 47 are external components, the output signals can be provided via dedicated output connections, such as an HDMI port, a USB port, or a COMP output.

[0090] Various implementations include decoding. As used in this application, “decoding” may encompass all or part of the processes performed on a received encoded video stream to, for example, produce a final output suitable for display. In various embodiments, such processing includes one or more of the processes commonly performed by a decoder, such as entropy decoding, inverse quantization, inverse transform, and prediction. In various embodiments, such processing may further, or alternatively, include processes performed by the decoder of the various implementations or embodiments described in this application to, for example, determine whether an APS exists in the bitstream, or to adapt the decoding of the current block when the use of ALF and / or LMCS and / or non-default scaling matrices is activated for the current block while no APS is available to the decoder.

[0091] As a further example, in one embodiment, “decoding” refers only to in-loop post-filtering (step 317 in Figure 3) or inverse quantization (step 312 in Figure 3). Whether the phrase “decoding process” is intended to refer specifically to a subset of operations or to a broader decoding process in general will become clear from the context of the particular description and will be well understood by those skilled in the art.

[0092] Various implementations include encoding. As with the above considerations regarding "decoding," as used in this application, "encoding" may encompass all or part of the processes performed on the input video sequence to generate an encoded video stream. In various embodiments, such processes include one or more of the processes typically performed by an encoder, such as splitting, prediction, transformation, quantization, in-loop post-filtering, and entropy coding. In various embodiments, such processes may further, or alternatively, include processes performed by the encoder of the various implementations or embodiments described in this application to adapt the encoding of blocks depending on the presence or absence of APS in the bitstream, for example.

[0093] As a further example, in one embodiment, “encoding” refers to quantization and dequantization (steps 209 and 212 in Figure 2) and in-loop post-filtering (step 217 in Figure 2). Whether the phrase “encoding process” is intended to refer specifically to a subset of operations or to a broader encoding process in general will become clear from the context of the particular description and will be well understood by those skilled in the art.

[0094] It should be noted that the syntactic element names, flag names, container names, and coding tool names used herein are descriptive terms. Therefore, they do not preclude the use of other syntactic element names, flag names, container names, or coding tool names.

[0095] If a diagram is presented as a flowchart, it should be understood that the diagram also provides a block diagram of the corresponding device. Similarly, if a diagram is presented as a block diagram, it should be understood that the diagram also provides a flowchart of the corresponding method / process.

[0096] Various embodiments refer to rate-distortion optimization. In particular, a balance or trade-off between rate and distortion is usually considered during the coding process. Rate-distortion optimization is typically formulated to minimize a rate-distortion function, which is a weighted sum of rate and distortion. There are different approaches to solving rate-distortion optimization problems. For example, these approaches are obtained based on extensive testing of all coding options, including all considered mode or coding parameter values, and involve a complete evaluation of their coding costs, as well as the associated distortions of the reconstructed signals after coding and decoding. Alternatively, to reduce coding complexity, faster approaches can be used, in particular, using the calculation of approximate distortion based on the predicted or predicted residual signal rather than the reconstructed signal. These two approaches can also be used in combination, for example, by using approximate distortion for only some of the possible coding options and full distortion for others. Other approaches evaluate only a subset of the possible coding options. More generally, many approaches employ one of various techniques to perform the optimization, but the optimization is not necessarily a complete evaluation of both the coding costs and associated distortions.

[0097] The implementation forms and embodiments described herein can be implemented, for example, in methods or processes, apparatus, software programs, data streams, or signals. Even if considered only in the context of a single implementation form (for example, considered only as a method), the implementation forms of the considered features can also be implemented in other forms (for example, apparatus or programs). Apparatus can be implemented, for example, in appropriate hardware, software, and firmware. Methods can be implemented, for example, in a processor, where a processor refers to a general processing device including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. Processors also include communication devices such as, for example, computers, mobile phones, portable / personal digital assistants ("PDAs," personal digital assistants) and other devices that facilitate the communication of information between end users.

[0098] The references to “one embodiment,” “one implementation,” or “implementation,” and other variations thereof, mean that certain features, structures, characteristics, etc., described in relation to the embodiments are included in at least one embodiment. Therefore, the appearances of the phrases “in one embodiment,” “in one embodiment,” or “in one implementation,” and any other variations, appearing in various places in this specification, do not necessarily all refer to the same embodiment.

[0099] In addition, this application may refer to "determining" various types of information. Determining information may include, for example, one or more of the following: estimating information, calculating information, predicting information, inferring information from other information, retrieving information from memory, or obtaining information from another device, module, or user, for example.

[0100] Furthermore, this application may refer to "accessing" various types of information. Accessing information may include, for example, receiving information, retrieving information (e.g., from memory), storing information, moving information, copying information, calculating information, determining information, predicting information, inferring information, or estimating information.

[0101] In addition, this application may refer to "receiving" various types of information. Receiving is intended to be a broad term, similar to "accessing." Receiving information may include, for example, accessing information or retrieving information (for example, from memory). Furthermore, "receiving" is typically included in some way during operations such as, for example, storing information, processing information, transmitting information, moving information, copying information, erasing information, calculating information, determining information, predicting information, inferring information, or estimating information.

[0102] The use of any of the following phrases, for example, " / ", "and / or", "at least one of", or "one or more", should be understood as being intended to include the selection of only the first listed option (A), or only the second listed option (B), or the selection of both options (A and B). As further examples, in the case of "A, B, and / or C" and "at least one of A, B, and C", or "one or more of A, B, and C", such phrases are intended to include the selection of only the first listed option (A), or only the second listed option (B), or only the third listed option (C), or only the first and second listed options (A and B), or only the first and third listed options (A and C), or only the second and third listed options (B and C), or the selection of all three options (A, B, and C). This can be extended to the number of listed items, as will be obvious to those skilled in the art in the relevant and related fields.

[0103] Furthermore, as used herein, the term “signaling” specifically means indicating something to the corresponding decoder. For example, in a particular embodiment, the encoder signals syntactic elements or parameters related to the ALF, LMCS, and scaling matrix. Thus, in a particular embodiment, the same parameter is used on both the encoder and decoder sides. Therefore, for example, the encoder can transmit a particular parameter to the decoder (explicit signaling) so that the decoder can use the same particular parameter. Conversely, if the decoder already has that particular parameter and other parameters, it can use non-transmitting signaling (implicit signaling) so that the decoder can simply recognize and select that particular parameter. Bit saving is achieved in various embodiments by avoiding the transmission of any actual function. It should be understood that signaling can be achieved in various ways. For example, one or more syntactic elements, flags, etc., are used in various embodiments to signal information to the corresponding decoder. The above concerns the verb form of the word “signal,” but the word “signal” may also be used as a noun herein.

[0104] As will be apparent to those skilled in the art, the implementation can generate a variety of signals formatted to carry information that can be stored or transmitted. The information may include, for example, instructions for performing a method or data generated by one of the implementations described. For example, a signal can be formatted to carry an encoded video stream of the embodiment described. Such a signal may be formatted, for example, as an electromagnetic wave (e.g., using the radio frequency portion of the spectrum) or as a baseband signal. Formatting may include, for example, encoding the encoded video stream and modulating the carrier wave with the encoded video stream. The information carried by the signal may be, for example, analog information or digital information. The signal may be transmitted over a variety of different wired or wireless links, as is known. The signal may be stored in a processor-readable medium.

[0105] Figure 5 schematically illustrates a solution for adapting the decoding process when APS is unavailable on the decoder side.

[0106] The process shown in Figure 5 is executed by the processing module 40 when the processing module 40 implements the decoding module.

[0107] In Figure 501, the processing module 40 obtains the encoded video stream 211. During step 501, the processing module 40 initiates the decoding process by applying the decoding method shown in Figure 3 to the encoded video stream 211. At the end of step 501, the processing module is ready to decrypt the current block.

[0108] In step 502, the processing module 40 obtains information indicating whether the APS is not present (i.e., missing) in the encoded video stream. In the first embodiment of step 502, the processing module 40 determines from the flag no_aps_constraint_flag obtained from the encoded video stream 211 whether the presence of the APS in the encoded video stream 211 is permitted. If the presence of the APS in the encoded video stream is permitted, the processing module 40 performs the normal decoding process for the current block.

[0109] If APS is not available in the encoded video stream 211, step 503 follows step 502. In the first embodiment of step 502, APS is not available in the encoded video stream 211 when the presence of APS in the encoded video stream 211 is not authorized according to the flag no_aps_constraint_flag (no_aps_constraint_flag=1).

[0110] In step 503, the processing module 40 checks the value of a syntax element indicating whether a coding tool using at least one coding parameter provided by APS is activated for the current block. In the first embodiment of step 503, the syntax element indicating whether a coding tool using at least one coding parameter provided by APS is activated for the current block is one of the flags sps_alf_enabled_flag, sps_lmcs_enabled_flag, and sps_scaling_list_enabled_flag. The flag sps_alf_enabled_flag, when equal to zero at the sequence level (sequence parameter set (SPS)), specifies that the adaptive loop filter is disabled. The flag sps_alf_enabled_flag, when equal to 1 at the SPS level, specifies that the adaptive loop filter is enabled. The flag sps_lmcs_enabled_flag, when equal to 1 at the SPS level, specifies that LMCS is used in the coded video stream. The `sps_lmcs_enabled_flag` flag, when equal to zero, specifies that LMCS is not used in the encoded video stream. The `sps_scaling_list_enabled_flag` flag, at the SPS level, when equal to 1, specifies that a non-default scaling matrix is ​​used in the scaling process of the transformation factors. The `sps_scaling_list_enabled_flag` flag, when equal to zero, specifies that a non-default scaling matrix is ​​not used in the scaling process of the transformation factors.

[0111] In the case of GDR, a syntactic element that may be called gdr_enabled_flag is signaled at the SPS level, allowing GDR to be deactivated when it is equal to zero.

[0112] If the syntactic elements do not indicate that a coding tool is activated using at least one coding parameter provided by APS, then step 504 follows step 503. Otherwise, if at least one syntactic element indicates that a coding tool is activated using at least one parameter provided by APS, the processing module 40 adapts to decode the current block in step 505. In the first embodiment of step 503, step 505 is performed when at least one of the flags sps_alf_enabled_flag, sps_lmcs_enabled_flag, and sps_scaling_list_enabled_flag is equal to 1.

[0113] In the first embodiment of step 505, the processing module 40 considers the flags sps_alf_enabled_flag, sps_lmcs_enabled_flag, and sps_scaling_list_enabled_flag to be equal to zero, even if they are equal to 1. In that case, the adaptation of the decryption process is to ignore the value of each syntactic element that indicates that a coding tool using at least one parameter provided by APS is activated.

[0114] In a second embodiment of step 505, if the APS is not available and an encoding tool using at least one parameter provided by the APS is activated, the processing module 40 outputs non-conformance information. The non-conformance information is, for example, information indicating that the encoded video stream 211 is not decodeable. The non-conformance information is output to the display 46 for display to the user, for example.

[0115] In a third embodiment of step 505, if the APS is unavailable and a coding tool is activated that uses at least one parameter provided by the APS, instead of searching for that parameter in the APS, the processing module 40 retrieves each parameter that is normally provided by the APS from at least one container of at least one second type. In this case, the processing module 40 applies the retrieved parameters to the coding tool (using ALF, LMCS, or a non-default matrix) to decode the current block.

[0116] For example, in the first modification of the third embodiment of step 505, the ALF, LMCS, and scaling matrix parameters are signaled at the SPS level.

[0117] The syntax at the SPS level in the first variant of the third embodiment of step 505 is shown in Table TAB1.

[0118] [Table 1]

[0119] The bolded portions in Table TAB1 correspond to syntactic elements defined for the first variant of the third embodiment in step 505.

[0120] Examples of the meanings of the flags sps_alf_parameters_in_sps_flag, sps_lmcs_parameters_in_sps_flag, and sps_scaling_list_parameters_in_sps_flag are as follows: • When sps_alf_parameters_in_sps_flag is equal to zero, it specifies that ALF parameters are not signaled at the SPS level. When sps_alf_parameters_in_sps_flag is equal to 1, it specifies that ALF parameters are signaled at the SPS level. If it does not exist, the value of sps_alf_parameters_in_sps_flag is presumed to be zero. • sps_lmcs_parameters_in_sps_flag, when equal to zero, specifies that LMCS parameters are not signaled at the SPS level. sps_lmcs_parameters_in_sps_flag, when equal to 1, specifies that LMCS parameters are signaled at the SPS level. If it does not exist, the value of sps_lmcs_parameters_in_sps_flag is presumed to be zero. The sps_scaling_list_parameters_in_sps_flag, when equal to zero, specifies that the scaling matrix parameters are not signaled at the SPS level. The sps_scaling_list_parameters_in_sps_flag, when equal to 1, specifies that the scaling matrix is ​​signaled at the SPS level. If it does not exist, the value of sps_scaling_list_parameters_in_sps_flag is presumed to be zero.

[0121] Tables TAB2 and TAB3 describe examples of syntax at the picture header level and slice header level adapted to the first modification of the third embodiment in step 505.

[0122] [Table 2]

[0123] [Table 3]

[0124] The parts in bold represent modifications to existing syntax caused by the proposed syntax at the SPS level, as shown in Table TAB1.

[0125] In the first modification of the third embodiment of step 505, when ALF is used, if the flag no_aps_constraint_flag is equal to 1, then the flag sps_alf_parameters_in_sps_flag is equal to 1. In addition, in that case, the flag alf_info_in_ph_flag is equal to zero. When alf_info_in_ph_flag is equal to 1, it specifies that ALF information is present in the picture header syntax structure but not in the slice header referring to a PPS that does not incorporate the picture header syntax structure. When alf_info_in_ph_flag is equal to zero, it specifies that ALF information is not present in the image header syntax structure but may be present in the slice header referring to a PPS that does not incorporate the image header syntax structure.

[0126] In the first modification of the third embodiment of step 505, if LMCS is used when no_aps_constraint_flag is equal to 1, then the flag sps_lmcs_parameters_in_sps_flag is equal to 1.

[0127] In the first variation of the third embodiment of step 505, if a non-default scaling matrix is ​​used when the flag no_aps_constraint_flag is equal to 1, then the flag sps_scaling_list_parameters_in_sps_flag is equal to 1.

[0128] In the alternative example of the first modification of the third embodiment of step 505, instead of adding three SPS level flags (i.e., sps_alf_parameters_in_sps_flag, sps_lmcs_parameters_in_sps_flag, and sps_scaling_list_parameters_in_sps_flag), a single SPS level flag sps_aps_parameters_signaling is used to signal ALF, LMCS, and scaling lists at the SPS level. The flag sps_aps_parameters_signaling is coded if ALF, LMCS, or scaling lists are activated by those SPS flags. The SPS level syntax in that alternative example of the first modification of the third embodiment of step 505 is described in Table TAB1_Bis.

[0129] [Table 4]

[0130] The bolded portions in Table TAB1_Bis correspond to the syntactic elements defined for the alternative example of the first modification in the third embodiment of step 505.

[0131] Tables TAB2_Bis and TAB3_Bis describe examples of the syntax at the picture header level and slice header level adapted to the first modification of the third embodiment in step 505.

[0132] [Table 5]

[0133] [Table 6]

[0134] The parts in bold represent modifications to existing syntax caused by the proposed syntax at the SPS level shown in Table TAB1_Bis.

[0135] In a second modification of the third embodiment of step 505, the ALF, LMCS, and scaling matrix parameters are signaled at the PPS level. One advantage is that PPS can signal more frequently than SPS; that is, one or more PPS can signal a single sequence.

[0136] The syntax at the PPS level in the second modification of the third embodiment of step 505 is shown in Table TAB4.

[0137] [Table 7]

[0138] A new syntax adapted to the second variant of the third embodiment of step 505 is shown in bold in Table TAB4.

[0139] Examples of the meanings of the flags pps_alf_parameters_in_pps_flag, pps_lmcs_parameters_in_pps_flag, and pps_scaling_list_parameters_in_pps_flag are as follows: • pps_alf_parameters_in_pps_flag, when equal to zero, specifies that ALF parameters are not signaled at the PPS level. pps_alf_parameters_in_pps_flag, when equal to 1, specifies that ALF parameters are signaled at the PPS level. • pps_lmcs_parameters_in_pps_flag, when equal to zero, specifies that LMCS parameters are not signaled at the PPS level. pps_lmcs_parameters_in_pps_flag, when equal to 1, specifies that LMCS parameters are signaled at the PPS level. • pps_scaling_list_parameters_in_pps_flag, when equal to zero, specifies that scaling matrix parameters are not signaled at the PPS level. pps_scaling_list_parameters_in_pps_flag, when equal to 1, specifies that scaling matrices are signaled at the PPS level.

[0140] Tables TAB5 and TAB6 describe examples of syntax at the picture header level and slice header level adapted to the second modification of the third embodiment of step 505.

[0141] [Table 8]

[0142] [Table 9]

[0143] The parts in bold represent the modifications to existing syntax caused by the proposed syntax at the PPS level shown in Table TAB4.

[0144] In the second variation of the third embodiment of step 505, if ALF is used when the flag no_aps_constraint_flag is equal to 1, then the flag pps_alf_parameters_in_pps_flag is equal to 1.

[0145] In the second variation of the third embodiment of step 505, if LMCS is used when the flag no_aps_constraint_flag is equal to 1, then the flag pps_lmcs_parameters_in_pps_flag is equal to 1.

[0146] In the second variation of the third embodiment of step 505, if a non-default scaling matrix is ​​used when the flag no_aps_constraint_flag is equal to 1, then the flag pps_scaling_list_parameters_in_pps_flag is equal to 1.

[0147] In the alternative example of the second modification of the third embodiment in step 505, a single flag, pps_aps_parameters_signaling, is used instead of defining three PPS level flags (pps_alf_parameters_in_pps_flag, pps_lmcs_parameters_in_pps_flag, and pps_scaling_list_parameters_in_pps_flag). The PPS level syntax in the alternative example of the second modification of the third embodiment in step 505 is described in Table TAB4_Bis.

[0148] [Table 10]

[0149] Tables TAB5_Bis and TAB6_Bis describe examples of picture header level and slice header level syntax adapted to the alternative example of the second modification of the third embodiment in step 505.

[0150] [Table 11]

[0151] [Table 12]

[0152] In a third variation of the third embodiment of step 505, the ALF, LMCS, and scaling matrix parameters are signaled at the picture header level. One advantage is that the picture header is signaled more frequently than the SPS and PPS.

[0153] The syntax at the picture header (PH) level and slice level in the third modification of the third embodiment of step 505 is described in Tables TAB7 and TAB_7_Bis.

[0154] [Table 13]

[0155] [Table 14]

[0156] A new syntax adapted to the third modification of the third embodiment of step 505 is shown in bold in Table TAB7.

[0157] Examples of the meanings of the flags ph_alf_parameters_in_ph_flag, ph_lmcs_parameters_in_ph_flag, and ph_scaling_list_parameters_in_ph_flag are as follows: • ph_alf_parameters_in_ph_flag, when equal to zero, specifies that the ALF parameters are not signaled at the PH level. ph_alf_parameters_in_ph_flag, when equal to 1, specifies that the ALF parameters are signaled at the PH level. If it does not exist, the value of ph_alf_parameters_in_ph_flag is presumed to be zero. • ph_lmcs_parameters_in_ph_flag, when equal to zero, specifies that LMCS parameters are not signaled at the PH level. ph_lmcs_parameters_in_ph_flag, when equal to 1, specifies that LMCS parameters are signaled at the PH level. If it does not exist, the value of ph_lmcs_parameters_in_ph_flag is presumed to be zero. • ph_scaling_list_parameters_in_ph_flag, when equal to zero, specifies that scaling matrix parameters are not signaled at the PH level. ph_scaling_list_parameters_in_ph_flag, when equal to 1, specifies that the scaling list is signaled at the PH level. If it does not exist, the value of ph_scaling_list_parameters_in_ph_flag is presumed to be zero.

[0158] In the third variation of the third embodiment of step 505, if ALF is used when the flag no_aps_constraint_flag is equal to 1, then the flag ph_alf_parameters_in_ph_flag is equal to 1.

[0159] In the third variation of the third embodiment of step 505, if LMCS is used when the flag no_aps_constraint_flag is equal to 1, then the flag ph_lmcs_parameters_in_ph_flag is equal to 1.

[0160] In the third variation of the third embodiment of step 505, if a non-default scaling matrix is ​​used when the flag no_aps_constraint_flag is equal to 1, then the flag ph_scaling_list_parameters_in_ph_flag is equal to 1.

[0161] In the fourth variation of the third embodiment of step 505, the ALF, LMCS, and scaling matrix parameters are signaled at the slice header level.

[0162] The syntax at the slice header (SH) level in the fourth variation of the third embodiment of step 505 is shown in Table TAB8.

[0163] [Table 15]

[0164] A new syntax adapted to the fourth variant of the third embodiment of step 505 is shown in bold in Table TAB7.

[0165] Examples of the meanings of the flags sh_alf_parameters_in_sh_flag, sh_lmcs_parameters_in_sh_flag, and sh_scaling_list_parameters_in_sh_flag are as follows: • sh_alf_parameters_in_sh_flag, when equal to zero, specifies that ALF parameters are not signaled at SH levels. sh_alf_parameters_in_sh_flag, when equal to 1, specifies that ALF parameters are signaled at SH levels. If it does not exist, the value of sh_alf_parameters_in_sh_flag is presumed to be zero. • sh_lmcs_parameters_in_sh_flag, when equal to zero, specifies that LMCS parameters are not signaled at the SH level. sh_lmcs_parameters_in_sh_flag, when equal to 1, specifies that LMCS parameters are signaled at the SH level. If it does not exist, the value of sh_lmcs_parameters_in_sh_flag is presumed to be zero. • sh_scaling_list_parameters_in_sh_flag, when equal to zero, specifies that scaling matrix parameters are not signaled at the SH level. sh_scaling_list_parameters_in_sh_flag, when equal to 1, specifies that the scaling matrix is ​​signaled at the SH level. If it does not exist, the value of sh_scaling_list_parameters_in_sh_flag is presumed to be zero.

[0166] In the fourth variation of the third embodiment of step 505, if ALF is used when the flag no_aps_constraint_flag is equal to 1, then the flag sh_alf_parameters_in_sh_flag is equal to 1.

[0167] In the fourth variation of the third embodiment of step 505, if LMCS is used when the flag no_aps_constraint_flag is equal to 1, then the flag sh_lmcs_parameters_in_sh_flag is equal to 1.

[0168] In the third variation of the third embodiment of step 505, if a non-default scaling matrix is ​​used when the flag no_aps_constraint_flag is equal to 1, then the flag sh_scaling_list_parameters_in_sh_flag is equal to 1.

[0169] In the fifth variation of the third embodiment of step 505, the ALF, LMCS, and scaling matrix parameters are signaled at any level via flags indicating their use. In this case, for example, a flag indicating the code at the SPS level is present in SPS, another flag in PPS, another flag in PH, and another flag in SH. Parameters coded at a higher level are not coded at a lower level. The corresponding syntax is described in Tables TAB9, TAB10, TAB11, and TAB12 (the meaning remains the same as in the previous variation of the third embodiment of step 505).

[0170] [Table 16]

[0171] [Table 17]

[0172] [Table 18-1]

[0173] [Table 18-2]

[0174] [Table 19-1]

[0175] [Table 19-2]

[0176] The new syntax adapted to the fifth variant of the third embodiment of step 505 is shown in bold in Tables TAB9, TAB10, TAB11, and TAB12.

[0177] In the fifth modification of the third embodiment in step 505, • The flag pps_alf_parameters_in_pps_flag is equal to zero if sps_alf_parameters_in_sps_flag is equal to 1. • The flag pps_lmcs_parameters_in_pps_flag is equal to zero if sps_lmcs_parameters_in_sps_flag1 is equal to zero. • The flag pps_scaling_list_parameters_in_pps_flag is equal to zero if sps_scaling_list_parameters_in_sps_flag is equal to 1. If no_aps_constraint_flag is equal to 1, the ALF, LMCS, and scaling matrix parameters are coded at the SPS and / or PPS and / or PH and / or SH levels (if activated).

[0178] In some cases, parameters of tools that are typically signaled at the APS level (ALF, LMCS, and non-default scaling matrices) can be spread to other containers. For example, one parameter of a first coding tool might be coded at the SPS level, a parameter of a second coding tool at the PPS level, and a parameter of a third coding tool at the PH level.

[0179] In the second embodiment of step 502, the information indicating whether the APS is not present in the encoded video stream acquired by the processing module 40 is information indicating whether the APS was lost during transmission of the encoded video stream 211.

[0180] In the third embodiment of step 502, the information indicating whether or not an APS is present in the encoded video stream acquired by the processing module 40 is information indicating that the processing module 40 is not designed to take APS into account. In that case, any APS that is ultimately present in the encoded video stream received by the processing module 40 is ignored by the processing module 40.

[0181] In a second embodiment of step 503, a syntactic element indicating whether a coding tool using at least one coding parameter provided by APS is activated for the current block checked by the processing module 40 is, for example, the syntactic element slice_alf_enabled_flag at the slice level. When slice_alf_enabled_flag is equal to 1, it specifies that ALF is enabled and can be applied to Y, Cb, or Cr color components in the slice. When slice_alf_enabled_flag is equal to zero, it specifies that ALF is disabled for all color components in the slice. If it does not exist, the value of slice_alf_enabled_flag is inferred to be equal to ph_alf_enabled_flag.

[0182] In a third embodiment of step 503, the syntax element indicating whether a coding tool using at least one coding parameter provided by APS is activated for the current block checked by the processing module 40 is a syntax element at the CTU level, for example, the syntax element alf_ctb_flag[cIdx][xCtb][yCtb]. When alf_ctb_flag[cIdx][xCtb][yCtb] is equal to 1, it specifies that ALF is applied to the coding unit of the color component indicated by cIdx of the CTU at luma location (xCtb,yCtb). When alf_ctb_flag[cIdx][xCtb][yCtb] is equal to zero, it specifies that ALF is not applied to the CU of the color component indicated by cIdx of the CTU at luma location (xCtb,yCtb). When alf_ctb_flag[cIdx][xCtb][yCtb] does not exist, it is inferred to be equal to zero.

[0183] In a similar case with GDR, the flag gdr_enabled_flag is equal to zero when no_gdr_constraint_flag is equal to 1. In the first embodiment related to GDR, the meanings of the constraint flags are as follows:

[0184] When no_gdr_constraint_flag is equal to 1, it specifies that there are no NAL units of type GDR_NUT present in the encoded video stream output by the encoder, and that gdr_enabled_flag is zero. When no_gdr_constraint_flag is equal to zero, no such constraint is imposed.

[0185] In a second embodiment related to GDR, the constraint flag no_gdr_constraint_flag restricts only the value of the SPS level flag gdr_enabled_flag, as follows:

[0186] `no_gdr_constraint_flag`, when equal to 1, specifies that `gdr_enabled_flag` should be zero. When `no_gdr_constraint_flag` is equal to zero, it means no such constraint is imposed.

[0187] In a third embodiment related to GDR, a conformance constraint is added to ensure that the SPS level flag gdr_enabled_flag is set to zero when the SPS level flag no_gdr_constraint_flag is 1.

[0188] For bitstream conformance to work, the value of gdr_enabled_flag must be zero when no_gdr_constraint_flag is equal to 1.

[0189] In all of the embodiments described above, the encoding module and method conform to the decoding module and method. In particular, in embodiments that include syntax modification (for example, in the third embodiment of step 505), the encoding module and method respect the syntax.

[0190] Figure 6 schematically illustrates a solution for adapting the encoding process when APS cannot be used.

[0191] The process shown in Figure 6 is executed by the processing module 40 when the processing module 40 is implementing the encoding module.

[0192] In step 601, the processing module 40 obtains the original video sequence to encode it in the format of the encoded video stream 211.

[0193] In step 602, the processing module 40 obtains information indicating whether the use of APS is authorized to encode the original video sequence. This information is provided by the user in the form of configuration parameters for the processing module 40.

[0194] If the use of APS is authorized, during step 602, this information is signaled by the processing module 40 in the encoded video stream 211 using the flag no_aps_constraint_flag. In that case, the flag no_aps_constraint_flag is set to zero. If the use of APS is not authorized, the flag no_aps_constraint_flag is set to 1.

[0195] If the use of APS is authorized, in step 603, the processing module 40 applies the normal encoding process.

[0196] Otherwise, the encoding process for the image blocks of the original video sequence is adapted so that APS is unavailable during step 604.

[0197] In the first embodiment of step 604, when APS is not authorized, each coding tool for which at least one parameter is provided by APS is removed from the list of coding tools considered for coding blocks of the video sequence. As a result, when the flag no_aps_constraint_flag is equal to 1, ALF, LMCS, and non-default scaling matrices are not considered tools that can be used to code blocks of the original video sequence. In this first embodiment of step 604, when no_aps_constraint_flag=1, the SPS level flags sps_alf_enabled_flag, sps_lmcs_enabled_flag, and sps_scaling_list_enabled_flag are constrained to be equal to zero. In a variation of the first embodiment of step 604, when no_aps_constraint_flag=1, the flag no_alf_constraint_flag is constrained to 1. The flag no_alf_constraint_flag is encoded in a syntactic element called general_constraint_info(), for example. When equal to 1, the flag no_alf_constraint_flag specifies that sps_alf_enabled_flag should be equal to zero. When no_alf_constraint_flag is equal to zero, no such constraint is imposed. Similarly, the flags no_lmcs_enabled_flag and no_scaling_list_enabled_flag are used to constrain the values ​​of sps_lmcs_enabled_flag and sps_scaling_list_enabled_flag.

[0198] In a second embodiment of step 604, the adaptation of the encoding process includes encoding parameters that are normally encoded in APS in SPS and / or PPS and / or PH and / or SH, if the use of an encoding tool that uses these parameters is authorized to encode the current block. As a result, the ALF parameter, LMCS parameter, and / or non-default scaling matrix parameter are encoded in SPS and / or PPS and / or PH, and / or SH is the use of ALF, and the LMCS and non-default scaling matrix are authorized for the block of the original video sequence. This embodiment conforms to a modification of the third embodiment of step 505 of the decoding process. In particular, the second embodiment of step 604 uses the syntax described in relation to the third embodiment of step 505.

[0199] In an alternative example of the solution in Figure 6, a single SPS-level syntax element sps_no_aps_signaling is used to specify whether the APS, LMCS, and scaling list parameters are signaled at levels other than the APS level. When this flag is set to 1, signaling of these parameters is permitted at either the slice level or the picture level. This embodiment allows for reduced signaling overhead, and at least three flags are used in the previous embodiment. The flag sps_no_aps_signaling is signaled if at least ALF, LMCS, or scaling lists are activated by their SPS level flags, and is presumed to be zero otherwise. If sps_no_aps_signaling is equal to 1, alternative coding is permitted. Furthermore, when the APS constraint flag (i.e., no_aps_constraint_flag) is set to 1, this flag must also be 1 in order that APS is not allowed, but signaling of APS, LMCS, and scaling list parameters is permitted.

[0200] The corresponding syntax is described in Tables TAB13, TAB14, and TAB15.

[0201] [Table 20]

[0202] [Table 21]

[0203] [Table 22]

[0204] Furthermore, embodiments may include, individually or in combination, one or more of the following features, devices, or aspects across various categories and types of claims: • A bitstream or signal containing syntax for carrying information generated according to any of the embodiments described, Inserting syntactic elements into the signaling that allow the decoder to adapt the decoding process in a manner corresponding to the method used by the encoder. • Creating and / or transmitting and / or receiving and / or decoding a bitstream or signal that contains one or more of the described syntactic elements or their variations. • To create and / or transmit and / or receive and / or decode in accordance with any of the embodiments described, • A method, process, apparatus, medium for storing instructions, medium for storing data, or signal according to any of the embodiments described, • TVs, set-top boxes, mobile phones, tablets, or other electronic devices that perform an adaptation of the encoding or decoding process according to any of the embodiments described. • Adapting the encoding or decoding process according to any of the embodiments described, and displaying the resulting image (e.g., using a monitor, screen, or other type of display) on a TV, set-top box, mobile phone, tablet, or other electronic device. A TV, set-top box, mobile phone, tablet, or other electronic device that selects a channel (for example, using a tuner) to receive a signal containing an encoded image and performs an adaptation of the decoding process according to any of the embodiments described. A TV, set-top box, mobile phone, tablet, or other electronic device that receives a radio signal containing an encoded image (for example, using an antenna) and performs an adaptation of the decoding process according to any of the embodiments described.

Claims

1. A decoding method, Obtaining video data representing a video sequence, From the aforementioned video data, obtain a first syntax element that indicates the existence of a type-adaptive parameter set container is permitted with a first value, and the existence of a type-adaptive parameter set container is not permitted with a second value, The method involves checking the value of a first sequence parameter set level syntax element indicating the activation or deactivation of the use of a non-default scaling matrix in the scaling process of transformation coefficients, wherein the non-default scaling matrix is ​​based on at least one scaling parameter provided by the container of type adaptive parameter sets, In response to the values ​​of the first syntax element indicating that the existence of a type-adaptive parameter set container is not authorized and the first sequence parameter set level syntax element indicating activation of the use of the non-default scaling matrix, information representing the non-conformity of the video data is output. Decryption methods including [specific methods].

2. An encoding method, Obtaining a video sequence to encode into video data, Signaling a first syntax element of the video data such that a first value indicates the existence of a type-adaptive parameter set container is authorized, and a second value indicates the existence of a type-adaptive parameter set container is not authorized, Setting the value of a first sequence parameter set level syntax element indicating the activation or deactivation of the use of a non-default scaling matrix in the scaling process of transformation coefficients, based on the value of the first syntax element, wherein the non-default scaling matrix is ​​based on at least one scaling parameter provided by the container of type adaptive parameter sets, An encoding method that includes this.

3. A decoding device, Obtaining video data representing a video sequence, From the aforementioned video data, obtain a first syntax element that indicates the existence of a type-adaptive parameter set container is permitted with a first value, and the existence of a type-adaptive parameter set container is not permitted with a second value, The method involves checking the value of a first sequence parameter set level syntax element indicating the activation or deactivation of the use of a non-default scaling matrix in the scaling process of transformation coefficients, wherein the non-default scaling matrix is ​​based on at least one scaling parameter provided by the container of type adaptive parameter sets, In response to the values ​​of the first syntax element indicating that the existence of a type-adaptive parameter set container is not authorized and the first sequence parameter set level syntax element indicating activation of the use of the non-default scaling matrix, information representing the non-conformity of the video data is output. A decoding device equipped with electronic circuitry configured to perform the following.

4. An encoding device, Obtaining a video sequence to encode into video data, Signaling a first syntax element of the video data such that a first value indicates the existence of a type-adaptive parameter set container is authorized, and a second value indicates the existence of a type-adaptive parameter set container is not authorized, Setting the value of a first sequence parameter set level syntax element indicating the activation or deactivation of the use of a non-default scaling matrix in the scaling process of transformation coefficients, based on the value of the first syntax element, wherein the non-default scaling matrix is ​​based on at least one scaling parameter provided by the container of type adaptive parameter sets, A coding device equipped with electronic circuitry configured to perform a certain action.

5. A non-temporary computer-readable medium for storing program code instructions for causing one or more processors to perform the method according to claim 1.

6. A non-temporary computer-readable medium for storing program code instructions for causing one or more processors to perform the method according to claim 2.

7. The third value of the sequence-level syntax element checks that an adaptive loop filter is enabled using at least one adaptive loop filter parameter provided by the container of type adaptive parameter sets, and the fourth value indicates that the adaptive loop filter is disabled. The first syntax element indicates that the existence of a container for type adaptive parameter sets is not authorized, and in response that the value of the sequence-level syntax element is equal to the third value, information representing the non-conformity of the video data is output. The method according to claim 1, further comprising:

8. The method according to claim 2, further comprising setting the value of a sequence-level syntax element based on the value of the first syntax element, wherein the third value indicates that an adaptive loop filter is enabled using at least one adaptive loop filter parameter provided by a container of type adaptive parameter sets, and the fourth value indicates that the adaptive loop filter is disabled.

9. The aforementioned electronic circuit is The third value of the sequence-level syntax element checks that an adaptive loop filter is enabled using at least one adaptive loop filter parameter provided by the container of type adaptive parameter sets, and the fourth value indicates that the adaptive loop filter is disabled. The first syntax element indicates that the existence of a container for type adaptive parameter sets is not authorized, and in response that the value of the sequence-level syntax element is equal to the third value, information representing the non-conformity of the video data is output. The device according to claim 3, further configured to perform the following:

10. The aforementioned electronic circuit is The device according to claim 4, further configured to perform setting the value of a sequence-level syntax element based on the value of the first syntax element, the third value indicating that an adaptive loop filter is enabled using at least one adaptive loop filter parameter provided by a container of type adaptive parameter sets, and the fourth value indicating that the adaptive loop filter is disabled.