Method and device for image encoding and decoding

Adaptive methods in video compression address the issue of missing APS by using alternative parameter sets, ensuring consistent decoding and encoding performance and maintaining video quality.

JP7807383B2Active Publication Date: 2026-01-27INTERDIGITALCE PATENT HLDG SAS
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2022554958
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-04-17
Filing Date
2021-03-15
Publication Date
2026-01-27
Estimated Expiration
2041-03-15

AI Technical Summary

Technical Problem

Existing video compression methods face challenges when a signaling container, such as the Adaptive Parameter Set (APS), is absent in the bitstream, leading to inconsistent behavior of encoding and decoding processes due to activated coding tools that rely on parameters provided by the APS.

Method used

Adaptive methods are implemented to determine the absence of the APS and adjust decoding or encoding processes by using alternative parameter sets, such as sequence, picture, or picture headers, to ensure consistent behavior and parameter application for blocks without the APS.

Benefits of technology

Ensures consistent decoding and encoding performance even when the APS is missing, maintaining video quality and compression efficiency by utilizing alternative parameter sets.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007807383000025
    Figure 0007807383000025
  • Figure 0007807383000026
    Figure 0007807383000026
  • Figure 0007807383000027
    Figure 0007807383000027
Patent Text Reader

Abstract

A method for decoding, the method comprising: obtaining (501) a bitstream representing an encoded video sequence; obtaining (502) first information indicating whether a first type of container providing at least one coding parameter is absent from the bitstream; checking 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 an image sample of the video sequence; and adapting decoding of the current block in the absence of a container when a second syntax element indicates activation of the coding tool.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

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

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

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

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

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

[0006] In a first aspect, one or more of the present embodiments provide a method for decoding, the method including: obtaining a bitstream representing an encoded video sequence; obtaining first information indicating whether a first type of container providing at least one coding parameter is absent from the bitstream; checking 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 a sample of an image of the video sequence; and adapting decoding of the current block in the absence of a container when a second syntax element indicates activation of the coding tool.

[0007] In one embodiment, the first information is obtained from a second syntax element 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 indicative of the non-compliance of the bitstream.

[0010] In one embodiment, adapting the decoding of the current block includes deactivating the coding tool for decoding the current block.

[0011] In one embodiment, adapting the decoding includes obtaining at least one parameter from at least one container of at least one second type, and applying the obtained parameter to the coding tool 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 of the present embodiments provide a method for encoding, the method comprising obtaining a video sequence for encoding in a bitstream, and adapting encoding of blocks of images of the video sequence depending on first information indicating whether the presence in the bitstream of a first type of container is authorized, the container providing at least one coding parameter to a coding tool.

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

[0017] In one embodiment, the adaptation of the encoding comprises encoding at least one coding parameter in at least one container of at least one second type if the use of the encoding tool is authorized for encoding 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 of the present embodiments provide a device for decoding, the device comprising an electronic circuit adapted to: obtain a bitstream representing an encoded video sequence; obtain first information indicating whether a first type of container providing at least one coding parameter is absent from 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 a sample of an image of the video sequence; and adapt decoding of the current block in the absence of a container when a second syntax element indicates activation of the coding tool.

[0020] In one embodiment, the first information is obtained from a second syntax element 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 indicative of the non-compliance of the bitstream.

[0023] In one embodiment, adapting the decoding of the current block includes deactivating the coding tool for decoding the current block.

[0024] In one embodiment, adapting the decoding includes obtaining at least one parameter from at least one container of at least one second type, and applying the obtained parameter to the coding tool 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 of the present embodiments provide a device for encoding, the device comprising electronic circuitry adapted to obtain a video sequence for encoding in a bitstream, and adapt encoding of blocks of samples of images of the video sequence depending on first information indicating whether the presence in the bitstream of a first type of container is authorized, the first type of container providing at least one coding parameter to a coding tool.

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

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

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

[0030] In one embodiment, the adaptation of the encoding comprises encoding at least one coding parameter in at least one container of at least one second type if the use of the encoding tool is authorized for encoding 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 present embodiments provide a signal comprising data generated in accordance with a method for encoding according to the second aspect or by a device for encoding according to the fourth aspect.

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

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

[0035] [Figure 1] 1 shows an example of an image segmentation of pixels of an original video. [Figure 2] 2 illustrates schematically a method for encoding a video stream performed by an encoding module; [Figure 3] 1 illustrates schematically a method for decoding an encoded video stream (ie, a bitstream). [Figure 4A] 1 illustrates schematically an example of a hardware architecture of a processing module that may implement an encoding module or a decoding module in which various aspects and embodiments are implemented; [Figure 4B] 1 illustrates a block diagram of an example system in which various aspects and embodiments may be implemented. [Figure 5] 1 shows a schematic solution for adapting the decoding process when APS is not available at the decoder side. [Figure 6] 1 shows a schematic representation of a solution for adapting the encoding process when APS can be used. DETAILED DESCRIPTION OF THE INVENTION

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

[0037] 1 shows an example of the division that an image of a sample 11 of an original video 10 undergoes. Here, a sample is considered to consist of three components, namely a luminance component and two chrominance components. In that case, a sample corresponds to a pixel. However, the following embodiments are also applicable to samples that contain another number of components, for example an image where the sample is made up of gray level samples containing one component, or an image where the sample is made up of samples containing three color components and a transparency component and / or a depth component. The following embodiments are applied to one component of the image. In that case, a sample corresponds to the value of one component.

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

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

[0040] As shown by reference numeral 14 in FIG. 1, a CTU may be divided 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 may be divided into multiple CUs (i.e., child nodes). Each CU becomes a leaf of the hierarchical tree if it is not further divided into smaller CUs, or becomes a parent node of smaller CUs (i.e., child nodes) if it is further divided. Several types of hierarchical trees can be applied, including, for example, a quadtree, a binary tree, and a ternary tree. In a quadtree, a CTU (each CU) can be divided into (i.e., can be its parent node) four rectangular CUs of equal size. In a binary tree, a CTU (each CU) can be divided horizontally or vertically into two rectangular CUs of equal size. In a ternary tree, a CTU (each CU) can be divided horizontally or vertically into three rectangular CUs. For example, a CU of height N and width M is divided vertically (and horizontally) into a first CU of height N (respectively N / 4) and width M / 4 (respectively M), a second CU of height N (respectively N / 2) and width M / 2 (respectively M), and a third CU of height N (respectively N / 4) and width M / 4 (respectively M).

[0041] In the example of FIG. 1, CTU 14 is first divided into "4" rectangular CUs using a quadtree-type division. The top-left CU is not further divided and is therefore a leaf of the hierarchical tree, i.e., it is not a parent node of other CUs. The top-right CU is further divided into "4" smaller square CUs, also using a quadtree-type division. The bottom-right CU is divided vertically into "2" rectangular CUs using a binary tree-type division. The bottom-left CU is divided vertically into "3" rectangular CUs using a ternary tree-type division.

[0042] During image coding, the partitioning is adaptive, and each CTU is partitioned to optimize the compression efficiency of the CTU basis.

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

[0044] In this application, the terms "block" or "image block" or "sub-block" may be used to refer to any one of a CTU, a CU, a PU, and a TU. Furthermore, the terms "block" or "image block" may 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 refer to arrays of samples of multiple sizes.

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

[0046] 2 shows a schematic diagram of a method for encoding a video stream executed by an encoding module. Variations of this method for encoding are contemplated, but for the sake of clarity, the following describes the method for encoding in FIG. 2 without describing all possible variations.

[0047] Encoding the current original image 201 begins with the division of the current original image 201 during step 202, as described in connection with Figure 1. This divides the current image 201 into CTUs, CUs, PUs, TUs, etc. For each block, the encoding module determines the coding mode between intra prediction and inter prediction.

[0048] Intra prediction, indicated by step 203, consists in predicting samples of the current block from a prediction block derived from samples of reconstructed blocks located in the causal neighborhood of the current block to be coded, according to an intra prediction method. The results of intra prediction are a prediction direction indicating which sample of the neighboring block to use, and a residual block resulting from the calculation of the difference between the current block and the prediction block.

[0049] Inter prediction consists in predicting the samples of the current block from a block of samples, called a reference block, of an image preceding or succeeding the current image, this image being called the reference image. During the coding of the current block by the inter prediction method, the block of the reference image that is closest to the current block according to a similarity criterion is determined by a motion estimation step 204. 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.

[0050] In the first video compression standards, the unidirectional inter prediction mode described above was the only inter mode available. As video compression standards have evolved, the family of inter modes has grown significantly and now includes many different inter modes.

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

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

[0053] It should be noted that the encoding module may skip the transform and apply quantization directly to the untransformed residual signal.

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

[0055] When the current block is coded according to an inter-prediction mode, the motion data associated with this inter-prediction mode is coded in step 208 .

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

[0057] AMVP essentially consists in signaling the reference picture used to predict the current block, the motion vector predictor index, and the motion vector difference (also called motion vector residual).

[0058] The merge mode consists in signaling the index of some motion data collected in a list of motion data predictors. The list consists of 5 or 7 candidates and is configured the same on the decoder and encoder sides. Thus, the merge mode aims to derive some motion data taken from the merge list. The merge list typically contains motion data associated with some spatially and temporally neighboring blocks, which are available in a reconstructed state when the current block is being processed.

[0059] Once predicted, the motion information, together with the transformed and quantized residual block, is then coded by an entropy encoder during step 210. Note that the coding module can bypass both the transform and the quantization, i.e., the entropy coding is applied to the residual without applying the transform or quantization processes. The result of the entropy coding is inserted into the coded video stream (i.e., bitstream) 211.

[0060] Note that the entropy encoder can be implemented in the form of a context adaptive binary arithmetic coder (CABAC), which encodes binary symbols, keeps complexity low, and allows probability modeling of the more frequently used bits of any symbol.

[0061] After the quantization step 209, the current block is reconstructed so that its corresponding pixels can be used for future prediction. This reconstruction phase is also called a prediction loop. Thus, inverse quantization is applied to the transformed and quantized residual block during step 212, and an inverse transform is applied during step 213. Depending on the prediction mode used for the block obtained during step 214, a prediction block of the block is reconstructed. If the current block is coded according to an inter prediction mode, the coding module applies reference block motion compensation using the motion vector of the current block, when appropriate, during step 216. If the current block is coded according to an intra prediction mode, the prediction direction corresponding to the current block is used to reconstruct the reference block of the current block during step 215. The reference block and the reconstructed residual block are added to obtain the reconstructed current block.

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

[0063] In ALF, for the luma component, one of multiple filters is selected for each 4x4 block of an image based on the local gradient direction and activity. The filter selection is based on the classification of the 4x4 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).

[0064] Parameters representing the activation or deactivation of an in-loop deblocking filter, and, when activated, the characteristics of said in-loop deblocking filter, are introduced into the coded video stream 211 during the entropy coding step 210 .

[0065] A new coding tool that emerged in the last generation of video compression methods added a new processing block before in-loop post-filtering. This coding tool, called Luma Mapping with Chroma Scaling (LMCS), has two main components: in-loop mapping of the luma component based on an adaptive piecewise linear model and luma-dependent residual scaling applied to the chroma components. The in-loop mapping of the luma component adjusts the dynamic range of the input signal by redistributing codewords across the dynamic range to improve compression efficiency. The chroma residual scaling is designed to compensate for the interaction between a 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).

[0066] Another new coding tool found in last-generation video compression methods is called Gradual Decoding Refresh (GDR). GDR provides a virtual boundary for reconstructed pictures where some of the picture is not available as a prediction reference. When GDR is activated for a picture, its NAL unit type is signaled as GDR_NUT.

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

[0068] Figure 3 shows a schematic diagram of a method for decoding an encoded video stream (i.e., bitstream) 211, which has been encoded according to the method described in relation to Figure 2. The method for decoding is performed by a decoding module. Variations of this method for decoding are possible, but for the sake of clarity, the method for decoding of Figure 3 will be described below without describing all possible variations.

[0069] The decoding is performed block by block. For the current block, this starts with entropy decoding of the current block during step 310. The entropy decoding makes it possible to obtain the prediction mode of the block.

[0070] If the current block is coded according to an intra prediction mode, entropy decoding makes it possible to obtain information representative of the prediction direction and the residual block.

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

[0072] The method for decoding 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 method for encoding. At the encoding module level, step 214 includes a mode selection process that evaluates each mode according to a rate-distortion criterion and selects the best mode, while step 314 simply reads information representing the selected mode in bitstream 211. In step 318, the decoded blocks are saved to 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 identical to the image stored in DPB 219 by the encoding module during the encoding of the given image. The decoded image may also be output by the decoding module, for example for display.

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

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

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

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

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

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

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

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

[0081] Input to processing module 40 may be provided through various input modules, as shown in block 42. Such input modules may include, but are not limited to, (i) a radio frequency (RF) module that receives, for example, a radio frequency (RF) signal transmitted over the air from a broadcast station, (ii) a component (COMP) input module (or a set of COMP input modules), (iii) a Universal Serial Bus (USB) input module, and / or (iv) a High Definition Multimedia Interface (HDMI) input module. Other examples not shown in FIG. 4B include composite video.

[0082] In various embodiments, the input modules of block 42 have associated respective input processing elements, as is known in the art. For example, the RF module may be associated with appropriate elements to (i) select a desired frequency (also referred to as selecting a signal or bandlimiting a signal to a frequency band), (ii) downconvert the selected signal, (iii) bandlimit again to a narrower frequency band to select a signal frequency band, which in particular embodiments may be referred to as a channel (for example), (iv) demodulate the downconverted and bandlimited signal, (v) perform error correction, and (vi) demultiplex to select a desired stream of data packets. The RF module of various embodiments includes one or more elements that perform 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, for example, a tuner that performs various of these functions, including downconverting a received signal to a lower frequency (e.g., an intermediate frequency or a frequency near baseband) or to baseband. In one set-top box embodiment, the RF module and its associated input processing elements receive RF signals transmitted over a wired (e.g., cable) medium and perform frequency selection by filtering, downconverting, and re-filtering to a desired frequency band. Various embodiments rearrange the order of the above-described (and other) elements, remove some of these elements, and / or add other elements that perform similar or different functions. Adding elements may include inserting elements between existing elements, such as inserting an amplifier and an analog-to-digital converter. In various embodiments, the RF module includes an antenna.

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

[0084] The various elements of system 4 may be provided within a unitary housing, where the various elements may be interconnected and transmit data between them using any suitable connection arrangement, 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 to the other elements of system 4 by bus 405.

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

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

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

[0088] In various embodiments, control signals are communicated between system 4 and display 46, speakers 47, or other peripheral devices 48 using signaling such as AV.Link, Consumer Electronics Control (CEC), or other communication protocols that allow control between devices 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 using communication channel 41 via communication interface 404. Display 46 and speakers 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 a timing controller (TCon) chip.

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

[0090] Various implementations include decoding. As used herein, "decoding" may encompass all or part of the processes performed on a received encoded video stream, e.g., to generate a final output suitable for a display. In various embodiments, such processes include one or more of the processes typically performed by a decoder, such as entropy decoding, inverse quantization, inverse transform, and prediction. In various embodiments, such processes also or alternatively include processes performed by the decoder of various implementations or embodiments described herein, e.g., to determine whether an APS is present in the bitstream, or to adapt decoding of a current block when use of ALF and / or LMCS and / or a non-default scaling matrix is ​​activated for the current block while no APS is available to the decoder.

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

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

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

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

[0095] Where a figure is presented as a flowchart, it should be understood that the figure also provides a block diagram of the corresponding apparatus. Similarly, where a figure is presented as a block diagram, it should be understood that the figure also provides a flowchart of the corresponding method / process.

[0096] Various embodiments refer to rate-distortion optimization. In particular, a balance or trade-off between rate and distortion is usually considered during the encoding process. Rate-distortion optimization is usually formulated to minimize 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 encoding options, including all considered modes or coding parameter values, with a thorough evaluation of their coding costs and the associated distortion of the reconstructed signal after coding and decoding. Also, to reduce the coding complexity, faster approaches may be used, particularly calculation of approximate distortion based on a prediction or prediction residual signal rather than the reconstructed signal. These two approaches may also be used in combination, e.g., using approximate distortion for only some of the possible encoding options and full distortion for others. Other approaches evaluate only a subset of the possible encoding options. More generally, many approaches employ any of a variety of techniques to perform the optimization, but the optimization does not necessarily involve a thorough evaluation of both the coding cost and the associated distortion.

[0097] Implementations and aspects described herein may be implemented in, for example, 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 implementation (e.g., discussed only as a method), the implementation of the discussed feature may also be implemented in other forms (e.g., an apparatus or a program). An apparatus may be implemented in, for example, appropriate hardware, software, and firmware. A method may be implemented in, for example, a processor, where a processor refers to a general processing device including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. Processors also include, for example, communication devices such as computers, mobile phones, handheld / personal digital assistants ("PDAs"), and other devices that facilitate communication of information between end users.

[0098] References to "one embodiment" or "embodiment" or "one implementation" or "implementation," as well as other variations thereof, mean that a particular feature, structure, characteristic, etc. described in connection with an embodiment is included in at least one embodiment. Thus, appearances of the phrases "in one embodiment" or "in an embodiment" or "in one implementation" or "in an implementation" appearing in various places throughout this specification, as well as any other variations thereof, do not necessarily all refer to the same embodiment.

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

[0100] Additionally, the application may refer to "accessing" various information. Accessing information may include, for example, one or more of receiving information, retrieving information (e.g., from a memory), storing information, moving information, copying information, calculating information, determining information, predicting information, inferring information, or deducing information.

[0101] Additionally, the present application may refer to "receiving" various information. Receiving, like "accessing," is intended to be a broad term. Receiving information may include, for example, one or more of accessing information or retrieving information (e.g., from a memory). Furthermore, "receiving" is typically involved in some way in operations such as, for example, storing information, processing information, transmitting information, moving information, copying information, erasing information, calculating information, determining information, predicting information, inferring information, or deducing information.

[0102] Use of any of " / ", "and / or", "at least one of", "one or more of", e.g., "A / B", "A and / or B", "at least one of A and B", "one or more of A and B" should be understood to be intended to encompass the selection of only the first listed alternative (A), or the selection of only the second listed alternative (B), or the selection of both alternatives (A and B). As a further example, "A, B, and / or C" and "at least one of A, B, and C", "one or more of A, B, and C" are intended to encompass the selection of only the first listed alternative (A), or the selection of only the second listed alternative (B), or the selection of only the third listed alternative (C), or the selection of only the first and second listed alternatives (A and B), or the selection of only the first and third listed alternatives (A and C), or the selection of only the second and third listed alternatives (B and C), or the selection of all three alternatives (A, B, and C). This can be expanded to include as many items as listed, as would be apparent to one of ordinary skill in this and related arts.

[0103] Also, as used herein, the term "signaling" specifically refers to indicating something to a corresponding decoder. For example, in certain embodiments, an encoder signals syntax elements or parameters related to ALF, LMCS, and scaling matrices. Thus, in some embodiments, the same parameters are used on both the encoder and decoder sides. Thus, for example, an encoder can transmit a specific parameter to a decoder (explicit signaling) so that the decoder can use the same specific parameter. Conversely, if the decoder already has that specific parameter and other parameters, it can use signaling without transmission (implicit signaling) to simply allow the decoder to recognize and select that specific parameter. By avoiding transmitting any actual function, bit savings are realized in various embodiments. It should be understood that signaling can be achieved in various manners. For example, one or more syntax elements, flags, etc. are used to signal information to a corresponding decoder in various embodiments. Although the above refers to the verb form of the word "signal," the word "signal" can also be used as a noun herein.

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

[0105] Figure 5 shows schematically a solution for adapting the decoding process when APS is not available at the decoder side.

[0106] The process of FIG. 5 is performed by processing module 40 when processing module 40 implements the decoding module.

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

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

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

[0110] In step 503, processing module 40 checks the value of a syntax element indicating whether a coding tool using 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 using at least one coding parameter provided by the APS is activated for the current block is one of the flags sps_alf_enabled_flag, sps_lmcs_enabled_flag, and sps_scaling_list_enabled_flag. The flag sps_alf_enabled_flag specifies, at the sequence level (Sequence Parameter Set (SPS)), when equal to zero, that the adaptive loop filter is disabled. The flag sps_alf_enabled_flag specifies, at the SPS level, when equal to one, that the adaptive loop filter is enabled. The flag sps_lmcs_enabled_flag specifies, at the SPS level, when equal to one, that LMCS is used in the coded video stream. The flag sps_lmcs_enabled_flag, when equal to zero, specifies that LMCS is not used in the coded video stream. The flag sps_scaling_list_enabled_flag, when equal to one, specifies that a non-default scaling matrix is ​​used in the scaling process of the transform coefficients at the SPS level. The flag sps_scaling_list_enabled_flag, when equal to zero, specifies that a non-default scaling matrix is ​​not used in the scaling process of the transform coefficients.

[0111] In the case of GDR, a syntax element that may be called gdr_enabled_flag is signaled at the SPS level, which allows deactivating the GDR when equal to zero.

[0112] If the syntax elements do not indicate 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 the at least one syntax element indicates that a coding tool using at least one parameter provided by the APS is activated, the processing module 40 adapts to decoding the current block in step 505. In a first embodiment of step 503, step 505 is executed when at least one of the flags sps_alf_enabled_flag, sps_lmcs_enabled_flag, and sps_scaling_list_enabled_flag is equal to 1.

[0113] In 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 1. In that case, the adaptation of the decoding process is to ignore the value of each syntax element that indicates that a coding tool that uses at least one parameter provided by the APS is activated.

[0114] In a second embodiment of step 505, if an APS is not available and a coding tool that uses at least one parameter provided by the APS is activated, the processing module 40 outputs non-conformance information, 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, to display it to the user.

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

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

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

[0118] [Table 1]

[0119] The bolded parts in table TAB1 correspond to the syntax elements defined for the first variant of the third embodiment of step 505.

[0120] Examples of the meanings of the flags sps_alf_parameters_in_sps_flag, sps_lmcs_parameters_in_sps_flag, and sps_scaling_list_parameters_in_sps_flag are as follows: sps_alf_parameters_in_sps_flag, when equal to zero, specifies that ALF parameters are not signaled at the SPS level. sps_alf_parameters_in_sps_flag, when equal to 1, specifies that ALF parameters are signaled at the SPS level. If not present, the value of sps_alf_parameters_in_sps_flag is inferred to be zero. sps_lmcs_parameters_in_sps_flag, when equal to zero, specifies that LMCS parameters are not signaled at the SPS level. sps_lmcs_parameters_in_sps_flag, when equal to 1, specifies that LMCS parameters are signaled at the SPS level. If not present, the value of sps_lmcs_parameters_in_sps_flag is inferred to be zero. sps_scaling_list_parameters_in_sps_flag, when equal to zero, specifies that scaling matrix parameters are not signaled at the SPS level. sps_scaling_list_parameters_in_sps_flag, when equal to 1, specifies that scaling matrices are signaled at the SPS level. If not present, the value of sps_scaling_list_parameters_in_sps_flag is inferred to be zero.

[0121] In tables TAB2 and TAB3, examples of syntax at the picture header level and slice header level adapted to the first variant of the third embodiment of step 505 are given.

[0122] [Table 2]

[0123] [Table 3]

[0124] The bolded parts represent the modifications in the existing syntax caused by the proposed syntax at the SPS level represented in Table TAB1.

[0125] In a first variant of the third embodiment of step 505, if ALF is used, then if the flag no_aps_constraint_flag is equal to 1, then the flag sps_alf_parameters_in_sps_flag is equal to 1. In addition, in that case the flag alf_info_in_ph_flag is equal to zero. When alf_info_in_ph_flag is equal to 1, it specifies that ALF information is present in the picture header syntax structure and not present in slice headers referencing PPSs that do not incorporate a picture header syntax structure. When alf_info_in_ph_flag is equal to zero, it specifies that ALF information is not present in the picture header syntax structure and may be present in slice headers referencing PPSs that do not incorporate a picture header syntax structure.

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

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

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

[0129] [Table 4]

[0130] The bolded parts in table TAB1_Bis correspond to the syntax elements defined for the alternative of the first variant of the third embodiment of step 505.

[0131] In tables TAB2_Bis and TAB3_Bis, examples of syntax at the picture header level and slice header level adapted to the first variant of the third embodiment of step 505 are given.

[0132] [Table 5]

[0133] [Table 6]

[0134] The bolded parts represent the modifications in the existing syntax caused by the proposed syntax at the SPS level represented in table TAB1_Bis.

[0135] In a second variant 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, i.e., more than one PPS can be signaled for a single sequence.

[0136] The syntax at the PPS level for the second variant of the third embodiment of step 505 is set out in table TAB4.

[0137] [Table 7]

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

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

[0140] In tables TAB5 and TAB6, examples of syntax at the picture header level and slice header level adapted to the second variant of the third embodiment of step 505 are given.

[0141] [Table 8]

[0142] [Table 9]

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

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

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

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

[0147] In an alternative to 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. The PPS level syntax in this alternative to the second variant of the third embodiment of step 505 is set out in table TAB4_Bis.

[0148] [Table 10]

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

[0150] [Table 11]

[0151] [Table 12]

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

[0153] In the third variant of the third embodiment of step 505, the syntax at the picture header (PH) level and slice level is described in tables TAB7 and TAB_7_Bis.

[0154] [Table 13]

[0155] [Table 14]

[0156] The new syntax adapted to the third variant of the third embodiment of step 505 is shown in bold in table TAB7.

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

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

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

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

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

[0162] In the fourth variant of the third embodiment of step 505, the syntax at the slice header (SH) level is set forth in Table TAB8.

[0163] [Table 15]

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

[0165] Examples of the meanings of the flags sh_alf_parameters_in_sh_flag, sh_lmcs_parameters_in_sh_flag, and sh_scaling_list_parameters_in_sh_flag are as follows: sh_alf_parameters_in_sh_flag, when equal to zero, specifies that ALF parameters are not signaled at the SH level. sh_alf_parameters_in_sh_flag, when equal to 1, specifies that ALF parameters are signaled at the SH level. If not present, the value of sh_alf_parameters_in_sh_flag is inferred to be zero. sh_lmcs_parameters_in_sh_flag, when equal to zero, specifies that LMCS parameters are not signaled at the SH level. sh_lmcs_parameters_in_sh_flag, when equal to 1, specifies that LMCS parameters are signaled at the SH level. If not present, the value of sh_lmcs_parameters_in_sh_flag is inferred to be zero. sh_scaling_list_parameters_in_sh_flag, when equal to zero, specifies that scaling matrix parameters are not signaled at the SH level. sh_scaling_list_parameters_in_sh_flag, when equal to 1, specifies that scaling matrices are signaled at the SH level. If not present, the value of sh_scaling_list_parameters_in_sh_flag is inferred to be zero.

[0166] In a fourth variant of the third embodiment 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.

[0167] In a fourth variant of the third embodiment 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.

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

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

[0170] [Table 16]

[0171] [Table 17]

[0172] [Table 18-1]

[0173] [Table 18-2]

[0174] [Table 19-1]

[0175] [Table 19-2]

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

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

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

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

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

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

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

[0183] In the analogous case of GDR, the flag gdr_enabled_flag is equal to zero when no_gdr_constraint_flag is equal to 1. In the first embodiment relating to GDR, the meaning of the constraint flags is as follows:

[0184] When no_gdr_constraint_flag is equal to 1, it 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 zero. When no_gdr_constraint_flag is equal to zero, it imposes no such constraint.

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

[0186] When no_gdr_constraint_flag is equal to 1, it specifies that gdr_enabled_flag shall be zero. When no_gdr_constraint_flag is equal to zero, it does not impose such a constraint.

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

[0188] It is a requirement for bitstream conformance that when no_gdr_constraint_flag is equal to 1, the value of gdr_enabled_flag shall be zero.

[0189] In all the above embodiments, the encoding module and method are compliant with the decoding module and method. In particular, in embodiments that include syntax modifications (e.g., in the third embodiment of step 505), the encoding module and method respects the syntax.

[0190] FIG. 6 shows a schematic solution for adapting the encoding process when APS is not available.

[0191] The process of FIG. 6 is performed by processing module 40 when processing module 40 implements the encoding module.

[0192] In step 601 , the processing module 40 obtains an original video sequence for encoding in the form of an encoded video stream 211 .

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

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

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

[0196] If not, the encoding process of the block of images of the original video sequence is adapted during step 604 to disable APS.

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

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

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

[0200] The corresponding syntax is given in tables TAB13, TAB14, and TAB15.

[0201] [Table 20]

[0202] [Table 21]

[0203] [Table 22]

[0204] Furthermore, embodiments may include one or more of the following features, devices, or aspects, alone or in combination, across various claim categories and types. A bitstream or signal containing syntax carrying information generated according to any of the described embodiments; Inserting syntax elements into the signaling that allow the decoder to adapt the decoding process in a way that corresponds to the method used by the encoder; Creating and / or transmitting and / or receiving and / or decoding a bitstream or signal comprising one or more of the described syntax elements or variations thereof; Creating and / or transmitting and / or receiving and / or decoding according to any of the described embodiments; a method, process, apparatus, instruction storage medium, data storage medium, or signal according to any of the described embodiments; a TV, set-top box, mobile phone, tablet, or other electronic device that performs the adaptation of the encoding or decoding process according to any of the described embodiments; a TV, set-top box, mobile phone, tablet, or other electronic device that performs the adaptation of the encoding or decoding process according to any of the described embodiments and displays the resulting images (e.g., using a monitor, screen, or other type of display); a TV, set-top box, mobile phone, tablet, or other electronic device that selects a channel (e.g., using a tuner) to receive a signal containing encoded images and performs an adaptation of the decoding process according to any of the described embodiments; A TV, set-top box, mobile phone, tablet, or other electronic device that receives an over-the-air signal (e.g., using an antenna) containing an encoded image and performs an adaptation of the decoding process according to any of the described embodiments.

Claims

1. 1. A decoding method comprising: obtaining video data representing a video sequence; obtaining from the video data a first syntax element having a first value indicating that the presence of a type adaptation parameter set container is authorized and a second value indicating that the presence of a type adaptation parameter set container is not authorized; checking a value of a first sequence parameter set level syntax element indicating activation or deactivation of a luma mapping and chroma scaling (LMCS) mode, said LMCS mode using at least one coding parameter provided by a container of type adaptation parameter set; outputting information indicative of non-compliance of the video data in response to a value of the first syntax element indicating that the presence of a type adaptation parameter set container is not authorized and a value of the first sequence parameter set level syntax element indicating activation of the LMCS mode for the block of video data; A decryption method including:

2. 1. A decoding device, comprising: obtaining video data representing a video sequence; obtaining from the video data a first syntax element having a first value indicating that the presence of a type adaptation parameter set container is authorized and a second value indicating that the presence of a type adaptation parameter set container is not authorized; checking a value of a first sequence parameter set level syntax element indicating activation or deactivation of a luma mapping and chroma scaling (LMCS) mode, said LMCS mode using at least one coding parameter provided by a container of type adaptation parameter set; outputting information indicative of non-compliance of the video data in response to a value of the first syntax element indicating that the presence of a type adaptation parameter set container is not authorized and a value of the first sequence parameter set level syntax element indicating activation of the LMCS mode for the block of video data; 1. A decoding device comprising an electronic circuit configured to perform

3. A non-transitory information storage medium storing program code instructions for performing the method of claim 1.

Citation Information

Patent Citations

  • Constrains for high level syntax elements

    WO2021170091A1

  • High level bitstream syntax for quantization parameters

    WO2021180165A1