Method and apparatus for image encoding and decoding

By checking the bitstream syntax elements in video encoding, determining the existence of containers, and adaptively adjusting the encoding tools, the problem of inconsistent encoder and decoder behavior is solved, and a stable encoding and decoding process is achieved.

CN115398922BActive Publication Date: 2025-10-10INTERDIGITAL CE PATENT HOLDINGS SAS
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202180027261.0
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-04-17
Filing Date
2021-03-15
Publication Date
2025-10-10
Estimated Expiration
2041-03-15

AI Technical Summary

Technical Problem

During video encoding, when the signaling container is not present in the bitstream, the activation states of the coding tools are inconsistent, resulting in inconsistent encoder and decoder behaviors.

Method used

By checking the syntax elements in the bitstream, it is determined whether there is a container that provides coding parameters. If not, adaptive processing is performed, including disabling or adjusting the use of coding tools, and using containers such as sequence parameter sets and picture parameter sets to provide parameters for decoding or encoding.

Benefits of technology

Ensuring consistent behavior between encoders and decoders when the bitstream lacks a signaling container improves encoding stability and decoding accuracy.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115398922B_ABST
    Figure CN115398922B_ABST
Patent Text Reader

Abstract

The invention relates to a method for decoding, the method comprising: obtaining (501) a bitstream, the bitstream representing an encoded video sequence; obtaining (502) first information, the first information being indicative of an absence, in the bitstream, of a container of a first type providing at least one encoding parameter; checking a value of a first syntax element, the value of the first syntax element being indicative of whether a coding tool using the at least one encoding parameter is activated for a current block of samples of a picture of the video sequence; and, when the second syntax element is indicative of an activation of the coding tool, adapting the decoding of the current block in the absence of the container.
Need to check novelty before this filing date? Find Prior Art

Description

1. Technical Field

[0001] At least one of the embodiments of the present invention generally relates to methods and apparatus for image encoding and decoding, and more particularly to methods and apparatus for ensuring consistent interaction of some signaling tools with some encoding tools. 2. Background Technology

[0002] To achieve high compression efficiency, video coding schemes typically employ prediction and transforms to exploit spatial and temporal redundancies in video content. During encoding, the image of the video content is divided into blocks of samples (i.e., pixels), which are then partitioned into one or more sub-blocks, hereinafter referred to as original sub-blocks. Intra-frame or inter-frame prediction is then applied to each sub-block to exploit intra-frame or inter-frame image correlations. Regardless of the prediction method used (intra-frame or inter-frame), a predicted value sub-block is determined for each original sub-block. The sub-block representing the difference between the original sub-block and the predicted value sub-block (often denoted as a prediction error sub-block, a prediction residual sub-block, or simply a residual block) is then transformed, quantized, and entropy coded to generate a coded video stream. To reconstruct the video, the compressed data is decoded using the inverse process of transform, quantization, and entropy coding.

[0003] Compared to the first video compression methods, such as MPEG-1 (ISO / CEI-11172), MPEG-2 (ISO / CEI 13818-2), or MPEG-4 / AVC (ISO / CEI 14496-10), the complexity of video compression methods has increased significantly. In fact, many new coding tools have appeared, or existing coding tools have been improved in the previous generations of video compression standards (for example, in the international standard named Versatile Video Coding (VVC), which is being developed by a joint collaboration of ITU-T and ISO / IEC experts called the Joint Video Experts Group (JVET), or in the standard HEVC (ISO / IEC 23008-2 - MPEG-H Part 2, High Efficiency Video Coding / ITU-T H.265)). At the same time, some signaling tools have been proposed, allowing, for example, the signaling parameters of some coding tools to be shared by many sub-blocks along a 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) that provides parameters for the Adaptive Loop Filtering (ALF) coding tool, the Luma Mapping with Chroma Scaling (LMCS) coding tool, and the scaling matrix used for quantization.

[0004] In some cases, when a coding tool that uses APS as a signaling parameter is activated, the APS may not be present in the bitstream.

[0005] It is desirable to propose a solution that allows consistent behavior of an encoder or decoder when no signaling container is present in the bitstream and coding tools that refer to parameters provided by the signaling container are activated. 3. Summary of the Invention

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

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

[0008] 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.

[0009] In one embodiment, adapting the decoding of the current block includes outputting second information representative of a non-conformance of the bitstream.

[0010] In one embodiment, adapting decoding of the current block includes disabling encoding tools for use in decoding the current block.

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

[0012] In one embodiment, the at least one container of the 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.

[0013] In a second aspect, one or more embodiments of the present invention provide a method for encoding, the method comprising: obtaining a video sequence for encoding in a bitstream; adapting the encoding of sample blocks of an image of the video sequence according to first information, the first information indicating whether a first type of container providing at least one encoding parameter to an encoding tool is authorized to be present in the bitstream.

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

[0015] 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.

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

[0017] In one embodiment, adapting the encoding comprises encoding at least one encoding parameter in at least one container of at least one second type if use of the encoding tool is authorized to encode the current block.

[0018] In one embodiment, the at least one container of the 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.

[0019] In a third aspect, one or more embodiments of the present invention provide a device for decoding, the device comprising an electronic circuit adapted to: obtain a bitstream, the bitstream representing a coded video sequence; obtain first information indicating whether a container of a first type providing at least one coding parameter is not present in the bitstream; check a value of a first syntax element indicating whether a coding tool using the at least one coding parameter is activated for a current block of samples of an image of the video sequence; and, when a second syntax element indicates activation of the coding tool, adapt decoding of the current block in the absence of the container.

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

[0021] 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.

[0022] In one embodiment, adapting the decoding of the current block includes outputting second information representative of a non-conformance of the bitstream.

[0023] In one embodiment, adapting decoding of the current block includes disabling encoding tools for use in decoding the current block.

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

[0025] In one embodiment, the at least one container of the 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 embodiments of the present invention provide a device for encoding, the device comprising an electronic circuit adapted to: obtain a video sequence for encoding in a bitstream; and adapt an encoding of sample blocks of an image of the video sequence according to first information, the first information indicating whether a first type of container providing at least one encoding parameter to an encoding tool is authorized to be present in the bitstream.

[0027] In one embodiment, the first information is encoded in a 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, adapting the encoding includes removing a coding tool from a list of coding tools that was considered for encoding the current block if the presence of the container is not authorized.

[0030] In one embodiment, adapting the encoding comprises encoding at least one encoding parameter in at least one container of at least one second type if use of the encoding tool is authorized to encode the current block.

[0031] In one embodiment, the at least one container of the 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 embodiments of the present invention provide a signal comprising data generated according to the method for encoding according to the second aspect or by the apparatus for encoding according to the fourth aspect.

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

[0034] In a seventh aspect, one or more embodiments of the present invention provide an information storage device, which stores program code instructions for implementing the method according to the first aspect or the second aspect. 4. Description of the Figures

[0035] Figure 1 An example of the partitioning that a pixel image of an original video undergoes is shown;

[0036] Figure 2 schematically depicts a method for encoding a video stream performed by an encoding module;

[0037] Figure 3 schematically depicts a method for decoding an encoded video stream (i.e., a bitstream);

[0038] Figure 4A Schematically illustrates an example of a hardware architecture of a processing module capable of implementing an encoding module or a decoding module, in which various aspects and embodiments are implemented;

[0039] Figure 4B A block diagram illustrating an example of a system in which various aspects and embodiments may be implemented;

[0040] Figure 5 schematically depicts a solution for adapting the decoding process when APS is not available at the decoder side; and,

[0041] Figure 6 A solution for adapting the encoding process when APS cannot be used is schematically depicted. 5. Specific implementation methods

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

[0043] Figure 1 An example of the partitioning that a pixel sample 11 of an original video 10 undergoes is shown. Here, a sample is considered to consist of three components: one luma component and two chroma components. In this case, a sample corresponds to a pixel. However, the following embodiments are applicable to images composed of samples comprising another number of components (e.g., grayscale samples where a sample comprises one component), or to images composed of samples comprising three color components and a transparency component and / or a depth component. The following embodiments are applicable to one component of an image. In this case, a sample corresponds to the value of one component.

[0044] The image is divided into multiple coding entities. First, Figure 1As indicated by reference numeral 13 in the , the image is divided into a grid of blocks called coding tree units (CTUs). A CTU consists of an N×N block of luma samples and two corresponding blocks of chroma samples. N is typically a power of two, such as a maximum value of "128". Secondly, the image is divided into one or more CTU groups. For example, the image may 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 may be divided into one or more bricks, each brick consisting of at least one CTU row within the tile. On top of the concepts of tiles and bricks, there is another coding entity called a slice, which may contain at least one tile of an image or at least one brick of a tile.

[0045] exist Figure 1 In the example of FIG. 1 , as indicated by reference numeral 12 , the image 11 is divided into three slices S1 , S2 and S3 , each slice including a plurality of tiles (not shown).

[0046] like Figure 1 As indicated by reference numeral 14 in FIG, a CTU can be partitioned into a hierarchical tree of one or more sub-blocks called coding units (CUs). The CTU is the root (i.e., parent node) of the hierarchical tree and can be partitioned into multiple CUs (i.e., child nodes). Each CU becomes a leaf of the hierarchical tree if it is not further partitioned into smaller CUs; ​​or each CU becomes a parent node of a smaller CU if it is further partitioned into smaller CUs (i.e., child nodes). Several types of hierarchical trees can be applied, including, for example, quadtrees, binary trees, and ternary trees. In a quadtree, a CTU (or CU) can be partitioned into "4" equally sized square CUs (i.e., can be the parent node of "4" equally sized square CUs). In a binary tree, a CTU (or CU) can be partitioned horizontally or vertically into "2" equally sized rectangular CUs. In a ternary tree, a CTU (or CU) can be partitioned horizontally or vertically into "3" rectangular CUs. For example, a CU with a height of N and a width of M is vertically (or horizontally) partitioned into a first CU with a height of N (or N / 4) and a width of M / 4 (or M), a second CU with a height of N (or N / 2) and a width of M / 2 (or M), and a third CU with a height of N (or N / 4) and a width of M / 4 (or M).

[0047] exist Figure 1 In the example shown in FIG1 , first, CTU 14 is partitioned into 4 square CUs using quadtree partitioning. The top-left CU is a leaf of the hierarchical tree because it is not further partitioned, i.e., it is not the parent of any other CU. The top-right CU is further partitioned into 4 smaller square CUs using quadtree partitioning again. The bottom-right CU is vertically partitioned into 2 rectangular CUs using binary tree partitioning. The bottom-left CU is vertically partitioned into 3 rectangular CUs using ternary tree partitioning.

[0048] During the encoding of an image, the partitioning is adaptive, each CTU being partitioned in order to optimize the compression efficiency of the CTU criteria.

[0049] In some compression methods, the concepts of prediction unit (PU) and transform unit (TU) appear. In this case, the coding entities for prediction, i.e. PUs, and for transform, i.e. TUs, can be sub-divisions of a CU. For example, as represented in Figure 1 , a CU of size 2Nx2N can be divided into PUs 1411 of size Nx2N or of size 2NxN. In addition, the CU can be divided into "4" TUs 1412 of size NxN or "16" TUs of size (N / 2)x(N / 2).

[0050] In the present application, the terms "block" or "image block" or "sub-block" can be used to refer to any of a CTU, a CU, a PU and a TU. In addition, the terms "block" or "image block" can be used to refer to macroblocks, partitions and sub-blocks as specified in MPEG-4 / AVC or other video coding standards, and more generally to arrays of samples of numerous sizes.

[0051] In the present application, the terms "reconstruction" and "decoding" are used interchangeably, the terms "pixel" and "sample" are used interchangeably, the terms "image", "picture", "sub-picture", "slice" and "frame" are used interchangeably.

[0052] Figure 2 A method for encoding a video stream performed by an encoding module is schematically depicted. Variations of this method for encoding are envisaged, but for the sake of clarity, the method for encoding of Figure 2 is described below without describing all the intended variations.

[0053] The encoding of the current original image 201 starts during a step 202 with the partitioning of the current original image 201, as described in relation with Figure 1 . Thus, the current image 201 is partitioned into CTUs, CUs, PUs, TUs, etc. For each block, the encoding module determines the coding mode between intra prediction and inter prediction.

[0054] The intra prediction, represented by a step 203, consists in predicting the samples of the current block from a prediction block derived from the samples of the reconstructed blocks located in the causal vicinity of the current block to be encoded, according to an intra prediction method. The result of the intra prediction is a prediction direction indicating which samples of the nearby blocks are used, and a residual block obtained by computing the difference between the current block and the prediction block.

[0055] Inter-frame prediction involves predicting the samples of a current block from a block of samples (called reference blocks) of an image preceding or following the current image (this image is called the reference image). During the encoding of the current block according to the inter-frame prediction method, a motion estimation step 204 determines the block of the reference image that is closest to the current block according to a similarity criterion. During step 204, a motion vector is determined that indicates the position of the reference block in the reference image. This motion vector is used during a motion compensation step 205, during which a residual block is calculated in the form of the difference between the current block and the reference block.

[0056] In the first video compression standards, the above-mentioned unidirectional inter prediction mode was the only inter mode available.With the evolution of video compression standards, the family of inter modes has grown significantly and now includes many different inter modes.

[0057] During the selection step 206 , the encoding module selects the prediction mode that optimizes compression performance according to a rate / distortion criterion (ie, RDO criterion) among the tested prediction modes (intra-frame prediction mode, inter-frame prediction mode).

[0058] When a prediction mode is selected, the residual block is transformed during step 207 and quantized during step 209. During quantization, in the transform domain, the transform coefficients are weighted by a scaling matrix in addition to the quantization parameters. The scaling matrix is ​​a coding tool that allows some frequencies to be favored at the expense of other frequencies. Generally speaking, low frequencies are favored. Some video compression methods allow the application of a user-defined scaling matrix instead of a default scaling matrix. In this case, the parameters of the scaling matrix need to be transmitted to the decoder. In some embodiments, a signaling tool such as a signaling container (i.e., a NAL (Network Abstraction Layer) unit) is used to specify the parameters of the non-default scaling matrix. In some embodiments, the NAL unit used to signal the scaling matrix parameters is called an Adaptation Parameter Set (APS).

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

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

[0061] When the current block is encoded according to the inter prediction mode, the motion data associated with the inter prediction mode is encoded in step 208 .

[0062] Generally speaking, two modes can be used to encode motion data, namely AMVP (Adaptive Motion Vector Prediction) mode and merge mode.

[0063] The AMVP mode basically consists in signaling a reference picture for predicting the current block, a motion vector predictor index and a motion vector difference (also called motion vector residual).

[0064] The merge mode consists in signaling an index of some motion data collected in a motion data predictor list. This list is composed of "5" or "7" candidates and is built in the same way on the decoder and encoder side. Thus, the merge mode aims at deriving some motion data taken from the merge list. The merge list usually contains motion data associated with some spatially and temporally neighboring blocks which are available in their reconstructed state when processing the current block.

[0065] Once predicted, the motion information is next encoded by the entropy encoder during step 210 together with the transformed and quantized residual block. It is noted that the encoding module can bypass the transform and quantization, i.e. apply entropy encoding on the residual without applying the transform or quantization process. The result of the entropy encoding is inserted into the encoded video stream, i.e. bitstream 211.

[0066] It is noted that the entropy encoder can be implemented in the form of a Context- Adaptive Binary Arithmetic Coder (CABAC). The CABAC encodes binary symbols which keeps the low complexity and allows for probability modeling of more frequently used bits of any symbol.

[0067] After the quantization step 209, the current block is reconstructed so that the pixels corresponding to this block are available for future predictions. This reconstruction phase is also called the prediction loop. Thus, during step 212, an inverse quantization is applied to the transformed and quantized residual block and during step 213, an inverse transform is applied. Depending on the prediction mode used for the current block obtained during step 214, a predicted block of the current block is reconstructed. If the current block is encoded according to an inter prediction mode, the encoding module applies motion compensation on the reference block using the motion information of the current block during step 216 if appropriate. If the current block is encoded according to an intra prediction mode, the reference block of the current block is reconstructed during step 215 using the prediction direction corresponding to the current block. The reference block and the reconstructed residual block are added in order to obtain the reconstructed current block.

[0068] After reconstruction, during step 217, in-loop post-filtering aiming at reducing encoding artifacts is applied to the reconstructed block. This post-filtering is called in-loop post-filtering because it occurs in the prediction loop in order to obtain the same reference pictures at the encoder as at the decoder, avoiding drift between the encoding process and the decoding process. For example, the in-loop post-filtering includes a deblocking filter, a SAO (Sample Adaptive Offset) filter and an adaptive loop filter (ALF) with block-based filter adaptation.

[0069] In ALF, for the luma component, one of multiple filters is selected for each 4×4 block of the image based on the direction and activity of the local gradient. Filter selection is based on the classification of the 4×4 block. The ALF filter parameters need to be transmitted to the decoder. In some implementations, the ALF filter parameters are signaled in an adaptive parameter set (APS).

[0070] During the entropy coding step 210 , parameters representative of the activation or deactivation of the in-loop deblocking filter and, when activated, its characteristics are introduced in the coded video stream 211 .

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

[0072] Another new coding tool that appeared in the previous generation of video compression methods is called Gradual Decoding Refresh (GDR). GDR provides a virtual boundary of the reconstructed picture, a portion of which cannot be used as a prediction reference. When GDR is activated for a picture, its NAL unit type is signaled as GDR_NUT.

[0073] When a block is reconstructed, it is inserted into a reconstructed image stored in a decoded picture buffer (DPB) 219 during a step 218. The reconstructed image thus stored can then be used as a reference image for other images to be encoded.

[0074] Figure 3 Schematically depicts a method for Figure 2 The method described herein is a method for decoding a coded video stream (ie, bitstream) 211 encoded by the method. The decoding method is performed by a decoding module. Variations of the method for decoding are envisioned, but for clarity, the following description is of Figure 3 methods for decoding, without describing all contemplated variations.

[0075] The decoding is performed block by block. For the current block, it starts with entropy decoding of the current block during a step 310. Entropy decoding allows to obtain the prediction mode of the current block.

[0076] If the current block has been encoded according to an intra prediction mode, entropy decoding allows obtaining information representative of the intra prediction direction and the residual block.

[0077] If the current block has been encoded according to inter-frame prediction mode, entropy decoding allows obtaining information representing motion data and residual blocks. During step 308, motion data is reconstructed for the current block according to AMVP mode or merge mode, as appropriate. In merge mode, the motion data obtained by entropy decoding includes an index into a list of motion vector predictor candidates. The decoding module applies the same process as the encoding module to reconstruct the candidate lists for normal merge mode and sub-block merge mode. Using the reconstructed lists and indices, the decoding module is able to retrieve the motion vector used to predict the motion vector of the block.

[0078] 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, respectively, of the encoding method. While at the encoding module level, step 214 includes a mode selection process that evaluates each mode based on rate-distortion criteria and selects the optimal mode, step 314 simply involves reading information from bitstream 211 indicating the selected mode. In step 318, the decoded block is saved in a decoded image and the decoded image is stored in DPB 319. When the decoding module decodes a given image, the image stored in DPB 319 is the same image that was stored in DPB 219 by the encoding module during encoding of the given image. The decoded image can also be output by the decoding module, for example, for display.

[0079] In the specific case of a current block 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 cases, when the use of ALF and / or LMCS and / or non-default scaling matrices is activated for the current block, the bitstream received by the decoder may not include the APS. This situation may occur when the APS has been lost during transmission. This situation may also occur when the bitstream is locally encoded without the APS. Specifically, some video compression methods allow the coded video stream to be specified as not to include any APS. In some cases, this feature is specified in the coded video stream, for example, at the sequence header level, by a flag called no_aps_constraint_flag. If the flag no_aps_constraint_flag is equal to one, then the provision of the APS in the coded video stream is not authorized. Otherwise, if the flag no_aps_constraint_flag is equal to zero, then there is no constraint on the presence of the APS in the coded video stream. The flag no_aps_constraint_flag is, for example, coded in a syntax element called general_constraint_info(), which is coded in a syntax element profile_tier_level(), which is embedded in a signal container DPS (Decoding Parameter Set), VPS (Video Parameter Set) or SPS (Sequence Parameter Set). The embodiment described below proposes a solution that allows consistent behavior of an encoder or decoder when no APS is present in the bitstream and coding tools that refer to parameters provided by the APS are activated.

[0080] Similar to marking no_aps_constraint_flag , there is another constraint flag to prohibit the use of NAL units of type GDR_NUT. This flag is named no_gdr_constraint_flag. It prohibits the use of GDR NAL units, rather than disabling GDR itself.

[0081] Figure 4A Schematically illustrates an example of a hardware architecture of a processing module 40 capable of implementing an encoding module or a decoding module according to different aspects and embodiments. Figure 2 The method used for encoding and Figure 3Method for decoding. As a non-limiting example, the processing module 40 includes the following items connected by a communication bus 405: a processor or CPU (central processing unit) 400 including one or more microprocessors, a general-purpose computer, a special-purpose computer, and a processor based on a multi-core architecture; a random access memory (RAM) 401; a read-only memory (ROM) 402; a storage unit 403, which may include non-volatile memory and / or volatile memory, including but not limited to 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, a magnetic disk drive and / or an optical disk drive, or a storage medium reader, such as an SD (Secure Digital) card reader and / or a hard disk drive (HDD) and / or a network accessible storage device; at least one communication interface 404, the at least one communication interface for exchanging data with other modules, devices, or equipment. The communication interface 404 may include but is not limited to a transceiver configured to transmit and receive data via a communication channel. The communication interface 404 may include, but is not limited to, a modem or a network card.

[0082] 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 raw image data to be encoded and provide an encoded video stream.

[0083] The processor 400 is capable of executing instructions loaded into the RAM 401 from the ROM 402, an external memory (not shown), a storage medium, or a communication network. When the processing module 40 is powered on, the processor 400 is capable of reading instructions from the RAM 401 and executing these instructions. These instructions form a computer program that enables, for example, the processor 400 to implement the instructions for the processing module 401. Figure 3 Decoding method described or about Figure 2 The encoding method described, the decoding and encoding methods include the following various aspects and embodiments described in this document.

[0084] All or part of the algorithms and steps of the encoding or decoding method can be implemented in software form by executing a set of instructions by a programmable machine such as a DSP (digital signal processor) or a microcontroller, or can be implemented in hardware form by a machine or dedicated component such as an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).

[0085] Figure 4BA block diagram of an example of a system 4 in which various aspects and embodiments are implemented is shown. System 4 can be embodied as a device including the various components described below and is configured to perform one or more 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, smart phones, 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 discrete components. For example, in at least one embodiment, system 4 includes a processing module 40 that implements a decoding module or an encoding module. However, in another embodiment, system 4 may include a first processing module 40 that implements a decoding module and a second processing module 40 that implements an encoding module, or a processing module 40 that implements a decoding module and an encoding module. In various embodiments, system 40 is communicatively coupled to one or more other systems or other electronic devices via, for example, a communication bus or by dedicated input and / or output ports. In various embodiments, system 4 is configured to implement one or more aspects described in this document.

[0086] The system 4 includes at least one processing module 40 that can implement one or both of an encoding module or a decoding module.

[0087] Inputs to 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) a radio frequency (RF) module that receives an RF signal transmitted over the air, for example, by a broadcaster; (ii) a component (COMP) input module (or a group of COMP input modules); (iii) a universal serial bus (USB) input module; and / or (iv) a high-definition multimedia interface (HDMI) input module. Figure 4B Other examples not shown include composite video.

[0088] In various embodiments, the input module of block 42 has associated corresponding input processing elements as are known in the art. For example, the RF module may be associated with elements adapted to: (i) select a desired frequency (also referred to as selecting a signal, or band-limiting a signal to a frequency band), (ii) downconvert the selected signal, (iii) again band-limit to a narrower frequency band to select a signal band, which in some embodiments may be referred to as a channel, (iv) demodulate the downconverted and band-limited signal, (v) perform error correction, and (vi) demultiplex to select the desired packet stream. The RF module of various embodiments includes one or more elements for performing these functions, such as a frequency selector, a signal selector, a band limiter, a channel selector, a filter, a downconverter, a demodulator, an error corrector, and a demultiplexer. The RF section may include a tuner that performs various of these functions, including, for example, downconverting a received signal to a lower frequency (e.g., an intermediate frequency or near-baseband frequency) or to baseband. In a set-top box embodiment, RF module and its associated input processing element receive the RF signal transmitted by wired (for example, cable) medium, and by filtering, down-conversion and filtering to required frequency band again to perform frequency selection.Various embodiments rearrange the order of above-mentioned (and other) element, remove some elements in these elements, and / or add other elements of execution similar or different functions.Adding element can be included in and inserts element between existing element, for example, inserts amplifier and analog to digital converter.In various embodiments, RF module comprises antenna.

[0089] In addition, the USB and / or HDMI modules may include corresponding interface processors for connecting the system 4 to other electronic devices across the USB and / or HDMI connections. It should be understood that various aspects of input processing (e.g., Reed-Solomon error correction) may be implemented, for example, within a separate input processing IC or within the processing module 40, as desired. Similarly, various aspects of USB or HDMI interface processing may be implemented, for example, within a separate interface IC or within the processing module 40, as desired. The demodulated, error-corrected, and demultiplexed stream is provided to the processing module 40.

[0090] The various components of system 4 can be disposed within an integrated housing. Within the integrated housing, the various components can be interconnected and data can be transferred between these components using suitable connection arrangements (e.g., internal buses known in the art, including inter-IC (I2C) buses, wiring, and printed circuit boards). For example, in system 4, processing module 40 is interconnected with the other components of system 4 via bus 405.

[0091] The communication interface 404 of the processing module 40 allows the system 4 to communicate over a communication channel 41. For example, the communication channel 41 may be implemented in a wired and / or wireless medium.

[0092] In various embodiments, data is streamed or otherwise provided to system 4 using a wireless network such as a Wi-Fi network, for example IEEE 802.11 (IEEE refers to the Institute of Electrical and Electronics Engineers). The Wi-Fi signal in these embodiments is received via a communication channel 41 and a communication interface 404 suitable for Wi-Fi communication. The communication channel 41 of these embodiments is typically connected to an access point or router that provides access to an external network including the Internet to allow streaming applications and other cloud communications. Other embodiments use a set-top box that transmits data via an HDMI connection of an input block 42 to provide streaming data to system 4. Still other embodiments use an RF connection of an input block 42 to provide streaming data to system 4. As described above, various embodiments provide data in a non-streaming manner. In addition, various embodiments use a wireless network other than Wi-Fi, such as a cellular network or a Bluetooth network.

[0093] System 4 can provide output signals to various output devices, including display 46, speakers 47 and other peripheral devices 48. The display 46 of various embodiments includes, for example, one or more of a touch screen display, an organic light emitting diode (OLED) display, a curved display and / or a foldable display. The display 46 can be used for a television, a tablet computer, a laptop computer, a cellular phone (mobile phone) or other device. The display 46 can also be integrated with other components (for example, as in a smartphone) or be separate (for example, an external monitor for a laptop computer). In various examples of the embodiments, other peripheral devices 46 include one or more of a stand-alone digital video disc (or digital versatile disc, both terms are DVRs), 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 the output of system 4.

[0094] In various embodiments, control signals are transmitted between system 4 and 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 device-to-device control with or without user intervention. Output devices can be communicatively coupled to system 4 via dedicated connections through respective interfaces 43, 44, and 45. Alternatively, output devices can be connected to system 4 via communication interface 404 using communication channel 41. Display 46 and speaker 47 can be integrated into a single unit with other components of system 4 in an electronic device such as a television. In various embodiments, display interface 43 includes a display driver, such as, for example, a timing controller (TCon) chip.

[0095] For example, if the RF portion of input 42 is part of a separate set-top box, the display 46 and speakers 47 can alternatively be separate from one or more of the other components. In various implementations in which the display 46 and speakers 47 are external components, the output signal can be provided via a dedicated output connection, including for example an HDMI port, a USB port, or a COMP output.

[0096] Various implementations participate in decoding. As used in this application, “decoding” can encompass all or a portion of the processes performed, for example, on a received encoded video stream in order to produce a final output suitable for display. In various implementations, such processes include one or more processes typically performed by a decoder, such as entropy decoding, inverse quantization, inverse transform, and prediction. In various implementations, such processes also include or alternatively include processes performed by decoders of various implementations or embodiments described in this application, such as, for example, for determining whether an APS is present in a bitstream, or for adapting the decoding of a current block when the use of ALF and / or LMCS and / or non-default scaling matrices are activated for the current block while no APS is available to the decoder.

[0097] As a further example, in one embodiment, “decoding” refers only to the step 317 in-loop post-filtering ( Figure 3 or the step 312 inverse quantization ( Figure 3 ). Whether the phrase “decoding process” refers specifically to a subset of operations or refers broadly to a wider decoding process will be clear based on the context of the specific description, and is believed to be well understood by those skilled in the art.

[0098] Various implementations participate in encoding. In a similar manner as discussed above with respect to “decoding,” as used in this application, “encoding” can encompass all or a portion of the processes performed on an input video sequence in order to produce an encoded video stream. In various implementations, such processes include one or more processes typically performed by an encoder, such as partitioning, prediction, transform, quantization, in-loop post-filtering, and entropy encoding. In various implementations, such processes also include or alternatively include processes performed by encoders of various implementations or embodiments described in this application, such as, for example, for adapting the encoding of a block depending on the presence or absence of an APS in a bitstream.

[0099] As a further example, in one embodiment, “encoding” refers to quantization and inverse quantization (steps 209 and 212 in Figure 2 and in-loop post-filtering (step 217 in Figure 2 ). Whether the phrase “encoding process” refers specifically to a subset of operations or refers broadly to a wider encoding process will be clear based on the context of the specific description, and is believed to be well understood by those skilled in the art.

[0100] It should be noted that the syntax element names, tag names, container names, and coding tool names used herein are descriptive terms. Therefore, they do not exclude the use of other syntax element, tag, container, or coding tool names.

[0101] When the figures are presented as flow charts, it should be understood that they also provide block diagrams of the corresponding apparatus. Similarly, when the figures are presented as block diagrams, it should be understood that they also provide flow charts of the corresponding methods / processes.

[0102] Various implementations refer to rate-distortion optimization. Specifically, during the encoding process, a balance or trade-off between rate and distortion is often considered. Rate-distortion optimization is often formulated as minimizing a rate-distortion function, which is a weighted sum of rate and distortion. There are different approaches to solving the rate-distortion optimization problem. For example, these approaches may be based on extensive testing of all coding options (including all considered modes or coding parameter values) and a complete evaluation of their coding costs and the associated distortion of the reconstructed signal after encoding and decoding. Faster approaches can also be used to reduce coding complexity, particularly for calculating approximate distortion based on predictions or prediction residual signals rather than reconstructed residual signals. A hybrid of these two approaches may also be used, such as by using approximate distortion for only some of the possible coding options and full distortion for others. Other approaches only evaluate a subset of the possible coding options. More generally, many methods employ any of a variety of techniques to perform optimization, but optimization does not necessarily involve a complete evaluation of both coding costs and associated distortion.

[0103] Implementations and aspects described herein may be implemented, for example, in a method or process, an apparatus, a software program, a data stream, or a signal. Even if discussed only in the context of a single form of implementation (e.g., discussed only as a method), the implementation of the features discussed may also be implemented in other forms (e.g., an apparatus or program). An apparatus may be implemented, for example, in appropriate hardware, software, and firmware. A method may be implemented, for example, in a processor, which generally refers to a processing device,

[0104] The processing device includes, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. Processors also include communication devices, such as, for example, computers, cell phones, portable / personal digital assistants ("PDAs"), and other devices that facilitate information communication between end users.

[0105] Reference to“one implementation” or“an implementation” or“one specific implementation” or“a specific implementation,” and the like, means that a particular feature, structure, characteristic, etc. being referred to is included in at least one implementation. Therefore, appearances of the phrases“in one implementation” or“in an implementation” or“in one specific implementation” or“in a specific implementation,” as well as any other variations of these phrases, throughout the present application are not necessarily all referring to the same implementation, although they can. Differently labeled implementations can employ employment of the same techniques to yield disparate result or same techniques to yield the same result, but are not employed per se to yield the same result or per se to yield disparate results.

[0106] In addition, the application can relate to“determining” various pieces of information. Determining the information can include one or more of, for example, estimating the information, calculating the information, predicting the information, inferring the information from other information, retrieving the information from memory, or obtaining the information from another device, module, or from a user.

[0107] In addition, the application can relate to“determining” various pieces of information. Determining the information can include one or more of, for example, estimating the information, calculating the information, predicting the information, inferring the information from other information, retrieving the information from memory, or obtaining the information from another device, module, or from a user.

[0108] In addition, the application can relate to“determining” various pieces of information. Determining the information can include one or more of, for example, estimating the information, calculating the information, predicting the information, inferring the information from other information, retrieving the information from memory, or obtaining the information from another device, module, or from a user.

[0109] It should be understood that any of the following“ / ,”“and / or,” and“at least one of’ when used in the context of for example“A / B,”“A and / or B,” and“at least one of A and B,”“one or more of A, B, and / or C,” are intended to cover the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of both options (A and B). As a further example, in the case of“A, B, and / or C” and“at least one of A, B, and C,” such phrasing is intended to cover the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of the third listed option (C) only, or the selection of the first and the second listed options (A and B) only, or the selection of the first and third listed options (A and C) only, or the selection of the second and third listed options (B and C) only, or the selection of all three options (A and B and C). This can be extended, as is apparent to one of ordinary skill in this and related arts, for as many items in a list as is desired for a given implementation.

[0110] Furthermore, as used herein, the term "signaling" means (among other things) indicating something to a corresponding decoder. For example, in certain embodiments, an encoder signals syntax elements or parameters related to the ALF, LMCS, and scaling matrix. Thus, in one embodiment, the same parameters are used on both the encoder and decoder sides. Thus, for example, the encoder may transmit specific parameters to the decoder (explicit signaling) so that the decoder can use the same specific parameters. Conversely, if the decoder already has specific parameters and others, signaling may be used without transmitting them (implicit signaling) to simply allow the decoder to know and select the specific parameters. By avoiding transmitting any actual functionality, bit savings are achieved in various embodiments. It should be understood that signaling can be implemented in various ways. For example, in various embodiments, information is signaled to the corresponding decoder using one or more syntax elements, flags, etc. Although the verb form of the word "signal" is mentioned above, the word "signal" may also be used as a noun herein.

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

[0112] Figure 5 A solution for adapting the decoding process when APS is not available at the decoder side is schematically depicted.

[0113] When the processing module 40 implements the decoding module, the processing module 40 executes Figure 5 process.

[0114] In step 501, the processing module 40 obtains the encoded video stream 211. During step 501, the processing module 40 converts the encoded video stream 211 into Figure 3 The decoding method shown is applied to the encoded video stream 211 to start the decoding process. At the end of step 501, the processing module is ready to decode the current block.

[0115] In step 502, processing module 40 obtains information indicating whether an APS is not present in the coded video stream. In a first embodiment of step 502, processing module 40 determines whether provision of an APS is authorized in coded video stream 211 based on a flag no_aps_constraint_flag obtained from coded video stream 211. If provision of an APS is authorized in the coded video stream, processing module 40 performs a conventional decoding process on the current block.

[0116] If no APS is available in the coded video stream 211, step 502 is followed by step 503. In a first implementation of step 502, when provision of APS in the coded video stream 211 is not authorized according to the flag no_aps_constraint_flag (no_aps_constraint_flag=1), no APS is available in the coded video stream 211.

[0117] In step 503, processing module 40 checks the value of a syntax element indicating whether a coding tool that uses at least one coding parameter provided by the APS is activated for the current block. In a first embodiment of step 503, the syntax element indicating whether a coding tool that uses at least one coding parameter provided by the APS is activated for the current block is one of the following: a flag sps_alf_enabled_flag, a flag sps_lmcs_enabled_flag, and a flag sps_scaling_list_enabled_flag. The flag sps_alf_enabled_flag specifies that adaptive loop filtering is disabled at the sequence level (sequence parameter set (SPS)) when equal to zero. The flag sps_alf_enabled_flag specifies that adaptive loop filtering is enabled when equal to one. The flag sps_lmcs_enabled_flag specifies that LMCS is used in the coded video stream when equal to one at the SPS level. The flag sps_lmcs_enabled_flag specifies that LMCS is not used in the coded video stream when equal to zero. When equal to one, the flag sps_scaling_list_enabled_flag specifies at the SPS level that non-default scaling matrices are used for the scaling process of transform coefficients. sps_scaling_list_enabled_flag equal to zero specifies that no non-default scaling matrices are used for the scaling process of transform coefficients.

[0118] In the case of GDR, a syntax element called gdr_enabled_flag is signaled at the SPS level and when equal to zero allows disabling of GDR.

[0119] When no syntax element indicates that a coding tool using at least one coding parameter provided by the APS is activated, step 503 is followed by step 504. Otherwise, if at least one syntax element indicates that a coding tool using at least one parameter provided by the APS is activated, processing module 40 adapts decoding of the current block in step 505. In a first implementation 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 one.

[0120] In a 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 one. In this case, the adaptation of the decoding process consists in ignoring the value of each syntax element indicating that a coding tool using at least one parameter provided by the APS is activated.

[0121] In a second embodiment of step 505, when no APS is 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 decodable. The non-conformance information is output to the display 46, for example, so as to be displayed to the user.

[0122] In a third embodiment of step 505, when no APS is available and a coding tool using at least one parameter provided by the APS is activated, the processing module 40 obtains each parameter typically provided by the APS from at least one container of at least one second type, instead of searching for the parameter in the APS. In this case, the processing module 40 applies the coding tool (ALF, LMCS, use of a non-default matrix) using the obtained parameters to decode the current block.

[0123] For example, in a first variant of the third implementation of step 505, the ALF, LMCS and scaling matrix parameters are signaled at the SPS level.

[0124] In this first variant of the third implementation of step 505, the syntax of the SPS level is described in table TAB1:

[0125]

[0126] Table TAB1

[0127] The bold parts in table TAB1 correspond to the syntax elements defined for the first variant of the third implementation of step 505 .

[0128] Examples of the semantics 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:

[0129] sps_alf_parameters_in_sps_flag equal to zero specifies that ALF parameters are not signaled at the SPS level. sps_alf_parameters_in_sps_flag equal to one specifies that ALF parameters are signaled at the SPS level. When not present, the value of sps_alf_parameters_in_sps_flag is inferred to be zero.

[0130] sps_lmcs_parameters_in_sps_flag equal to zero specifies that LMCS parameters are not signaled at the SPS level. sps_lmcs_parameters_in_sps_flag equal to one specifies that LMCS parameters are signaled at the SPS level. When not present, the value of sps_lmcs_parameters_in_sps_flag is inferred to be zero.

[0131] sps_scaling_list_parameters_in_sps_flag equal to zero specifies that the scaling matrix parameters are not signaled at the SPS level. sps_scaling_list_parameters_in_sps_flag equal to one specifies that the scaling matrix is ​​signaled at the SPS level. When not present, the value of sps_scaling_list_parameters_in_sps_flag is inferred to be zero.

[0132] In Tables TAB2 and TAB3 , examples of syntax of the picture header and slice header levels applicable to the first variant of the third implementation of step 505 are described.

[0133]

[0134]

[0135] Table TAB2

[0136]

[0137] Table TAB3

[0138] The parts in bold represent modifications to the existing syntax caused by the proposed syntax of the SPS level represented in Table TAB1.

[0139] In a first variation of the third implementation of step 505, if ALF is used when the flag no_aps_constraint_flag is equal to one, the flag sps_alf_parameters_in_sps_flag is equal to one. Furthermore, in this case, the flag alf_info_in_ph_flag is equal to zero. alf_info_in_ph_flag equal to one specifies that ALF information is present in the picture header syntax structure and is not present in slice headers that reference a PPS that does not have a picture header syntax structure. alf_info_in_ph_flag equal to zero specifies that ALF information is not present in the picture header syntax structure and may be present in slice headers that reference a PPS that does not have a picture header syntax structure.

[0140] In a first variant of the third implementation of step 505 , if LMCS is used when the flag no_aps_constraint_flag is equal to one, the flag sps_lmcs_parameters_in_sps_flag is equal to one.

[0141] In a first variant of the third implementation of step 505 , if a non-default scaling matrix is ​​used when the flag no_aps_constraint_flag is equal to one, the flag sps_scaling_list_parameters_in_sps_flag is equal to one.

[0142] In an alternative form of the first variant 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 list parameters at the SPS level. The flag sps_aps_parameters_signaling is coded if ALF, LMCS, or scaling list are activated by their SPS flags. In this alternative form of the first variant of the third embodiment of step 505, the syntax of the SPS level is described in table TAB1_Bis:

[0143]

[0144] Table TAB1_Bis

[0145] The bold parts in table TAB1_Bis correspond to the syntax elements defined for the alternative form of the first variant of the third implementation of step 505 .

[0146] In Tables TAB2_Bis and TAB3_Bis, examples of the syntax of the picture header and slice header levels applicable to the first variant of the third implementation of step 505 are described.

[0147]

[0148] Table TAB2_Bis

[0149]

[0150] Table TAB3_Bis

[0151] The parts in bold represent modifications to the existing syntax caused by the proposed syntax of the SPS level represented in table TAB1_Bis.

[0152] In a second variation of the third embodiment of step 505, the ALF, LMCS, and scaling matrix parameters are signaled at the PPS level. One advantage is that the PPS can be signaled more frequently than the SPS. That is, for a single sequence, one or more PPSs can be signaled.

[0153] In this second variant of the third embodiment of step 505, the syntax of the PPS level is described in table TAB4:

[0154]

[0155] Table TAB4

[0156] The new syntax applicable to the second variant of the third embodiment of step 505 is shown in bold in Table TAB4.

[0157] Examples of the semantics 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:

[0158] • pps_alf_parameters_in_pps_flag equal to zero specifies that ALF parameters are not signaled at the PPS level. pps_alf_parameters_in_pps_flag equal to one specifies that ALF parameters are signaled at the PPS level.

[0159] • pps_lmcs_parameters_in_pps_flag equal to zero specifies that LMCS parameters are not signaled at the PPS level. pps_lmcs_parameters_in_pps_flag equal to one specifies that LMCS parameters are signaled at the PPS level.

[0160] • pps_scaling_list_parameters_in_pps_flag equal to zero specifies that the scaling matrix parameters are not signaled at the PPS level. pps_scaling_list_parameters_in_pps_flag equal to one specifies that the scaling matrix is ​​signaled at the PPS level.

[0161] In Tables TAB5 and TAB6 , examples of syntax of the picture header and slice header levels applicable to the second variant of the third implementation of step 505 are described.

[0162]

[0163] Table TAB5

[0164]

[0165] Table TAB6

[0166] The parts in bold indicate modifications to the existing syntax caused by the proposed syntax of the PPS level shown in Table TAB4.

[0167] In a second variant of the third implementation of step 505 , if ALF is used when the flag no_aps_constraint_flag is equal to one, the flag pps_alf_parameters_in_pps_flag is equal to one.

[0168] In a second variant of the third implementation of step 505 , if LMCS is used when the flag no_aps_constraint_flag is equal to one, the flag pps_lmcs_parameters_in_pps_flag is equal to one.

[0169] In a second variant of the third implementation of step 505 , if a non-default scaling matrix is ​​used when the flag no_aps_constraint_flag is equal to one, the flag pps_scaling_list_parameters_in_pps_flag is equal to one.

[0170] In an alternative form of the second variant of the third embodiment of step 505, 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), a single flag pps_aps_parameters_signaling is used. In this alternative form of the second variant of the third embodiment of step 505, the syntax of the PPS level is described in table TAB4_Bis:

[0171]

[0172] Table TAB4_Bis

[0173] In tables TAB5_Bis and TAB6_Bis examples of syntax of alternative forms of picture header and slice header levels applicable to the second variant of the third implementation of step 505 are described.

[0174]

[0175] Table TAB5_Bis

[0176]

[0177] Table TAB6_Bis

[0178] In a third variation of the third implementation 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.

[0179] In this third variant of the third implementation of step 505, the syntax of the picture header (PH) level and the slice level is described in Tables TAB7 and TAB_7_Bis:

[0180]

[0181] Table TAB7

[0182]

[0183] Table TAB7_Bis

[0184] The new syntax applicable to the third variant of the third implementation of step 505 is shown in bold in Table TAB7.

[0185] Examples of the semantics 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:

[0186] ph_alf_parameters_in_ph_flag equal to zero specifies that ALF parameters are not signaled at the PH level. ph_alf_parameters_in_ph_flag equal to one specifies that ALF parameters are signaled at the PH level. When not present, the value of ph_alf_parameters_in_ph_flag is inferred to be zero.

[0187] ph_lmcs_parameters_in_ph_flag equal to zero specifies that LMCS parameters are not signaled at the PH level. ph_lmcs_parameters_in_ph_flag equal to 1 specifies that LMCS parameters are signaled at the PH level. When not present, the value of ph_lmcs_parameters_in_ph_flag is inferred to be zero.

[0188] ph_scaling_list_parameters_in_ph_flag equal to zero specifies that scaling matrix parameters are not signaled at the PH level. ph_scaling_list_parameters_in_ph_flag equal to one specifies that scaling lists are signaled at the PH level. When not present, the value of ph_scaling_list_parameters_in_ph_flag is inferred to be zero.

[0189] In a third variant of the third implementation of step 505 , if ALF is used when the flag no_aps_constraint_flag is equal to one, the flag ph_alf_parameters_in_ph_flag is equal to one.

[0190] In a third variant of the third implementation of step 505 , if LMCS is used when the flag no_aps_constraint_flag is equal to one, the flag ph_lmcs_parameters_in_ph_flag is equal to one.

[0191] In a third variant of the third implementation of step 505 , if a non-default scaling matrix is ​​used when the flag no_aps_constraint_flag is equal to one, the flag ph_scaling_list_parameters_in_ph_flag is equal to one.

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

[0193] In a fourth variant of the third implementation of step 505, the syntax of the slice header (SH) level is described in Table TAB8:

[0194]

[0195]

[0196] Table TAB8

[0197] The new syntax applicable to the fourth variant of the third embodiment of step 505 is shown in bold in Table TAB7.

[0198] Examples of the semantics 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:

[0199] sh_alf_parameters_in_sh_flag equal to zero specifies that ALF parameters are not signaled at the SH level. sh_alf_parameters_in_sh_flag equal to one specifies that ALF parameters are signaled at the SH level. When not present, the value of sh_alf_parameters_in_sh_flag is inferred to be zero.

[0200] sh_lmcs_parameters_in_sh_flag equal to zero specifies that LMCS parameters are not signaled at the SH level. sh_lmcs_parameters_in_sh_flag equal to one specifies that LMCS parameters are signaled at the SH level. When not present, the value of sh_lmcs_parameters_in_sh_flag is inferred to be zero.

[0201] • sh_scaling_list_parameters_in_sh_flag equal to zero specifies that scaling matrix parameters are not signaled at the SH level. sh_scaling_list_parameters_in_sh_flag equal to one specifies that scaling matrix are signaled at the SH level. When not present, the value of sh_scaling_list_parameters_in_sh_flag is inferred to be zero.

[0202] In a fourth variant of the third implementation of step 505, if ALF is used when the flag no_aps_constraint_flag is equal to one, the flag sh_alf_parameters_in_sh_flag is equal to one.

[0203] In a fourth variant of the third implementation of step 505, if LMCS is used when the flag no_aps_constraint_flag is equal to one, the flag sh_lmcs_parameters_in_sh_flag is equal to one.

[0204] In a third variant of the third implementation of step 505, if non-default scaling matrices are used when the flag no_aps_constraint_flag is equal to one, the flag sh_scaling_list_parameters_in_sh_flag is equal to one.

[0205] In a fifth variant of the third implementation of step 505, ALF, LMCS and scaling matrix parameters are signaled at any level via flags indicating their use. In that case, for example, there is one flag in the SPS indicating the coding of the SPS level, another flag in the PPS indicating the coding of the PPS level, another flag in the PH indicating the coding of the PH level and another flag in the SH indicating the coding of the SH level. Parameters coded at a higher level should not be coded at a lower level. The corresponding syntaxes are described in tables TAB9, TAB10, TAB11 and TAB12 (semantics remain the same as in the previous variants of the third implementation of step 505):

[0206]

[0207] Table TAB9

[0208]

[0209] Table TAB10

[0210]

[0211]

[0212] Table TAB11

[0213]

[0214]

[0215] Table TAB12 The new syntax applicable to the fifth variant of the third embodiment of step 505 is indicated in bold in Tables TAB9, TAB10, TAB11 and TAB12.

[0216] In a fifth variation of the third embodiment of step 505:

[0217] If sps_alf_parameters_in_sps_flag is equal to one, then the flag pps_alf_parameters_in_pps_flag is equal to zero;

[0218] If sps_lmcs_parameters_in_sps_flag is equal to one, then the flag pps_lmcs_parameters_in_pps_flag is equal to zero;

[0219] If sps_scaling_list_parameters_in_sps_flag is equal to one, then the flag pps_scaling_list_parameters_in_pps_flag is equal to zero;

[0220] • If no_aps_constraint_flag is equal to one, ALF, LMCS and scaling matrix parameters are coded at SPS and / or PPS and / or PH and / or SH level (if activated).

[0221] In some cases, the parameters of tools that are usually signaled at the APS level (ALF, LMCS, and non-default scaling matrices) can be extended in other containers. For example, the parameters of the first coding tool are encoded at the SPS level, the parameters of the second coding tool are encoded at the PPS level, and the parameters of the third coding tool are encoded at the PH level.

[0222] In the second embodiment of step 502 , the information indicating whether the APS is absent in the encoded video stream obtained by the processing module 40 is information indicating whether the APS has been lost during transmission of the encoded video stream 211 .

[0223] In the third embodiment of step 502, the information indicating whether the APS does not exist in the encoded video stream obtained by the processing module 40 is information indicating that the processing module 40 is not designed to consider the APS. In this case, the APS that ultimately exists in the encoded video stream received by the processing module 40 is ignored by the processing module 40.

[0224] In a second embodiment of step 503, the syntax element indicating whether a coding tool that uses at least one coding parameter provided by the APS is activated for the current block examined by processing module 40 is a slice-level syntax element, such as a syntax element slice_alf_enabled_flag. Slice_alf_enabled_flag being equal to one specifies that ALF is enabled and can be applied to the Y, Cb, or Cr color components in the slice. Slice_alf_enabled_flag being equal to zero specifies that ALF is disabled for all color components in the slice. When not present, the value of slice_alf_enabled_flag is inferred to be equal to ph_alf_enabled_flag.

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

[0226] In the analogous case of GDR, when no_gdr_constraint_flag is equal to one, the flag gdr_enabled_flag is equal to zero. In the first implementation involving GDR, the semantics of the constraint flag are as follows:

[0227] no_gdr_constraint_flag equal to one specifies that no NAL units of type GDR_NUT shall be present in the coded video stream output by the encoder, and gdr_enabled_flag shall be 0. no_gdr_constraint_flag equal to zero does not impose this constraint.

[0228] In the second implementation involving GDR, the constraint flag no_gdr_constraint_flag only constrains the value of the SPS level flag gdr_enabled_flag as follows:

[0229] no_gdr_constraint_flag equal to one specifies that gdr_enabled_flag should be zero. no_gdr_constraint_flag equal to zero does not impose this constraint.

[0230] In a third implementation involving GDR, a conformant constraint is added to ensure that the SPS level flag gdr_enabled_flag is set to zero when the constraint flag no_gdr_constraint_flag is one:

[0231] Bitstream conformance requirements are that when no_gdr_constraint_flag is equal to one, the value of gdr_enabled_flag shall be zero.

[0232] For all the above embodiments, the encoding modules and methods are compatible with the decoding modules and methods. Specifically, in embodiments that result in grammar modification (such as the third embodiment in step 505), the encoding modules and methods comply with the grammar.

[0233] Figure 6 A solution for adapting the encoding process when APS cannot be used is schematically depicted.

[0234] When the processing module 40 implements the encoding module, the processing module 40 executes Figure 6 process.

[0235] In step 601 , the processing module 40 obtains an original video sequence to be encoded in the form of an encoded video stream 211 .

[0236] In step 602 , the processing module 40 obtains information indicating whether the original video sequence is authorized to be encoded using the APS. This information may be provided by the user in the form of configuration parameters of the processing module 40 .

[0237] If the use of APS is authorized, the processing module 40 signals this information in the coded video stream 211 using the flag no_aps_constraint_flag during step 602. In this 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 one.

[0238] If the use of APS is authorized, then in step 603 a conventional encoding process is applied by the processing module 40 .

[0239] Otherwise, the encoding process of the image blocks of the original video sequence is adapted to the impossibility of using the APS during step 604 .

[0240] In a first embodiment of step 604, when APS is not authorized, each coding tool for which the APS provides at least one parameter is removed from the list of coding tools considered for encoding blocks of the video sequence. Thus, when the flag no_aps_constraint_flag is equal to one, the ALF, LMCS, and non-default scaling matrices are not considered as tools that can be used to encode 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 variant of the first embodiment of step 604, when no_aps_constraint_flag=1, the flag no_alf_constraint_flag is constrained to be one. The flag no_alf_constraint_flag is, for example, encoded in a syntax element called general_constraint_info(). When equal to one, the flag no_alf_constraint_flag specifies that sps_alf_enabled_flag should be equal to zero. No_alf_constraint_flag being equal to zero does not impose this constraint. Similarly, the flags no_lmcs_enabled_flag and no_scaling_list_enabled_flag can be used to constrain the values ​​of sps_lmcs_enabled_flag and sps_scaling_list_enabled_flag.

[0241] In a second embodiment of step 604, adapting the encoding process includes encoding parameters that are typically encoded in the APS in the SPS and / or PPS and / or PH and / or SH, if the current block is authorized to be encoded using an encoding tool that utilizes these parameters. Thus, ALF parameters, LMCS parameters, and / or non-default scaling matrix parameters are encoded in the SPS and / or PPS and / or PH and / or SH, authorizing the use of ALF, LMCS, and non-default scaling matrices for the block in the original video sequence. This embodiment is compatible with a variation of the third embodiment of step 505 of the decoding process. Specifically, the second embodiment of step 604 uses the syntax described in conjunction with the third embodiment of step 505.

[0242] exist Figure 6 In an alternative form of the solution, a single SPS level syntax element sps_no_aps_signaling is used to specify whether APS, LMCS and scaling list parameters are signaled at a level other than the APS level. When this flag is set to one, signaling of these parameters at the slice level or picture level is allowed. This implementation allows for a reduction in signaling overhead, where in the previous implementation at least three flags were used. The flag sps_no_aps_signaling is signaled if at least ALF, LMCS or scaling list is activated by its SPS level flag, otherwise it is inferred to be zero. If sps_no_aps_signaling is equal to one, alternative encoding is allowed. Furthermore, when the constraint flag for APS (i.e. no_aps_constraint_flag) is set to one, this flag must also be one to allow signaling of APS, LMCS and scaling list parameters, but not the use of APS.

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

[0244]

[0245] Table TAB13

[0246]

[0247]

[0248] Table TAB14

[0249]

[0250] Table TAB15

[0251] Additionally, embodiments may include one or more of the following features, devices, or aspects, alone or in any combination, across the various claim categories and types:

[0252] a bitstream or signal comprising syntax conveying information generated according to any of the described embodiments;

[0253] Inserting syntax elements in the signaling, which enables the decoder to adapt the decoding process in a way that corresponds to that used by the encoder;

[0254] Creating and / or transmitting and / or receiving and / or decoding a bitstream or signal comprising one or more of said syntax elements or variants thereof;

[0255] Creating and / or transmitting and / or receiving and / or decoding according to any of the described embodiments;

[0256] A method, process, apparatus, medium storing instructions, medium storing data, or signal according to any one of the embodiments;

[0257] An adaptive television, set-top box, mobile phone, tablet or other electronic device that performs encoding or decoding according to any of the described embodiments;

[0258] a television, set-top box, mobile phone, tablet computer or other electronic device that performs adaptation of the encoding or decoding process according to any of the described embodiments and displays the resulting image (e.g. using a monitor, screen or other type of display);

[0259] An adaptive television, set-top box, cellular phone, tablet computer, or other electronic device that selects (e.g., using a tuner) a channel to receive a signal comprising an encoded image and performs a decoding process according to any of the described embodiments;

[0260] • An adapted television, set-top box, cell phone, tablet or other electronic device that receives over-the-air (e.g., using an antenna) a signal comprising an encoded image and performs a decoding process according to any of the described embodiments.

Claims

1. A method for decoding, the method comprising: obtaining video data, the video data representing an encoded video sequence; obtaining a first syntax element from the video data, the first syntax element indicating with a first value that a container of the adaptation parameter set type is allowed and with a second value that a container of the adaptation parameter set type is not allowed; checking a value of a first sequence parameter set level syntax element, the value of the first sequence parameter set level syntax element indicating activation or deactivation of a luma mapping and chroma scaling (LMCS) mode, the LMCS mode using at least one coding parameter provided by a container of type adaptation parameter set; as well as, In response to the first syntax element indicating that a container of type adaptation parameter set is not allowed and the value of the first sequence parameter set level syntax element indicates that the LMCS mode is activated for the block of the video data, outputting information indicating non-compliance of the video data.

2. The method according to claim 1, further comprising: checking a value of a second sequence parameter set level syntax element, the value of the second sequence parameter set level syntax element indicating with a third value that a non-default scaling matrix is ​​used for a scaling process for transform coefficients by using at least one scaling parameter provided by a container of type adaptation parameter set and indicating with a fourth value that a default scaling matrix is ​​used for the scaling process for transform coefficients; as well as In response to the first syntax element indicating that a container of the adaptation parameter set type is not allowed and the value of the second sequence parameter set level syntax element is equal to the third value, outputting information indicating non-conformance of the video data.

3. The method according to claim 1, further comprising: checking a value of a sequence parameter set level syntax element, the value of the sequence parameter set level syntax element indicating with a third value that adaptive loop filtering using at least one adaptive loop filtering parameter provided by a container of type adaptation parameter set is enabled and with a fourth value that adaptive loop filtering is disabled; as well as In response to the first syntax element indicating that a container of the adaptation parameter set type is not allowed and the value of the sequence parameter set level syntax element is equal to the third value, outputting information indicating non-conformance of the video data. The method of claim 1 , wherein the at least one coding parameter is at least one LMCS parameter.

5. A method for encoding, the method comprising: obtaining a video sequence to encode in video data; signaling, in the video data, a first syntax element, the first syntax element indicating with a first value that a container of the adaptation parameter set type is allowed, and with a second value that a container of the adaptation parameter set type is not allowed; as well as The value of a first sequence parameter set level syntax element is set based on the value of the first syntax element, wherein the value of the first sequence parameter set level syntax element indicates activation or deactivation of a luma mapping and chroma scaling LMCS mode, wherein the LMCS mode uses at least one coding parameter provided by a container of type adaptation parameter set.

6. The method according to claim 5, further comprising: The value of a second sequence parameter set level syntax element is set based on the value of the first syntax element, the value of the second sequence parameter set level syntax element indicates with a third value that a non-default scaling matrix is ​​used for a scaling process for transform coefficients by using at least one scaling parameter provided by a container of type adaptive parameter set, and indicates with a fourth value that a default scaling matrix is ​​used for the scaling process for transform coefficients.

7. The method according to claim 5, further comprising: The value of a sequence parameter set level syntax element is set based on the value of the first syntax element, the value of the sequence parameter set level syntax element indicating with a third value that adaptive loop filtering using at least one adaptive loop filtering parameter provided by a container of type adaptation parameter set is enabled, and with a fourth value that adaptive loop filtering is disabled.

8. The method of claim 5, wherein the at least one coding parameter is at least one LMCS parameter.

9. A device for decoding, the device comprising an electronic circuit adapted to: obtaining video data, the video data representing an encoded video sequence; obtaining a first syntax element from the video data, the first syntax element indicating with a first value that a container of the adaptation parameter set type is allowed and with a second value that a container of the adaptation parameter set type is not allowed; checking a value of a first sequence parameter set level syntax element, the value of the first sequence parameter set level syntax element indicating activation or deactivation of a luma mapping and chroma scaling (LMCS) mode, the LMCS mode using at least one coding parameter provided by a container of type adaptation parameter set; as well as, In response to the first syntax element indicating that a container of type adaptation parameter set is not allowed and the value of the first sequence parameter set level syntax element indicates that the LMCS mode is activated for the block of the video data, outputting information indicating non-compliance of the video data.

10. The apparatus of claim 9, wherein the electronic circuit is further configured to: checking a value of a second sequence parameter set level syntax element, the value of the second sequence parameter set level syntax element indicating with a third value that a non-default scaling matrix is ​​used for a scaling process for transform coefficients by using at least one scaling parameter provided by a container of type adaptation parameter set, and indicating with a fourth value that a default scaling matrix is ​​used for the scaling process for transform coefficients; and In response to the first syntax element indicating that a container of the adaptation parameter set type is not allowed and the value of the second sequence parameter set level syntax element is equal to the third value, outputting information indicating non-conformance of the video data.

11. The apparatus of claim 9, wherein the electronic circuit is further configured to: checking a value of a sequence parameter set level syntax element, the value of the sequence parameter set level syntax element indicating with a third value that adaptive loop filtering using at least one adaptive loop filtering parameter provided by a container of type adaptation parameter set is enabled and with a fourth value that adaptive loop filtering is disabled; and In response to the first syntax element indicating that a container of the adaptation parameter set type is not allowed and the value of the sequence parameter set level syntax element is equal to the third value, outputting information indicating non-conformance of the video data.

12. The apparatus of claim 9, wherein the at least one coding parameter is at least one LMCS parameter.

13. A device for encoding, the device comprising an electronic circuit adapted to: obtaining a video sequence to encode in video data; signaling a first syntax element in the video data, the first syntax element indicating with a first value that containers of the type adaptation parameter set are allowed and with a second value that containers of the type adaptation parameter set are not allowed; and The value of a first sequence parameter set level syntax element is set based on the value of the first syntax element, wherein the value of the first sequence parameter set level syntax element indicates activation or deactivation of a luma mapping and chroma scaling LMCS mode, wherein the LMCS mode uses at least one coding parameter provided by a container of type adaptation parameter set.

14. The apparatus of claim 13 , wherein the electronic circuit is further configured to set a value of a second sequence parameter set level syntax element based on the value of the first syntax element, the value of the second sequence parameter set level syntax element indicating with a third value that a non-default scaling matrix is ​​used for a scaling process for transform coefficients by using at least one scaling parameter provided by a container of type adaptive parameter set, and indicating with a fourth value that a default scaling matrix is ​​used for the scaling process for transform coefficients.

15. The apparatus of claim 13 , wherein the electronic circuitry is further configured to set a value of a sequence parameter set level syntax element based on the value of the first syntax element, the value of the sequence parameter set level syntax element indicating with a third value that adaptive loop filtering using at least one adaptive loop filtering parameter provided by a container of type adaptation parameter set is enabled, and with a fourth value that adaptive loop filtering is disabled.

16. The apparatus of claim 13, wherein the at least one coding parameter is at least one LMCS parameter. 17 . A non-transitory computer-readable storage medium storing program code instructions that, when executed by one or more processors, cause the one or more processors to implement the method of claim 1 .

18. A non-transitory computer-readable storage medium storing program code instructions that, when executed by one or more processors, cause the one or more processors to implement the method of claim 5.

19. A computer program product comprising program code instructions which, when executed by one or more processors, cause the one or more processors to carry out the method according to claim 1.

20. A computer program product comprising program code instructions which, when executed by one or more processors, cause the one or more processors to carry out the method according to claim 5.