Signaling coding and decoding block data and in-loop filtering parameters of video sequence
By first notifying the CTU codec block data in the bitstream and then notifying the filter parameters in the CTU loop, and independently processing the CTU block reconstruction and filtering process, the encoding and codec performance limitations caused by the dependence of filter parameters in the CTU loop in the prior art are solved, and the parallelism and real-time processing capabilities of encoding and decoding are improved.
Patent Information
- Application Number
- CN202380082292.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-12-28
- Filing Date
- 2023-05-29
- Publication Date
- 2025-07-08
AI Technical Summary
During the encoding and decoding process of existing video encoding and decoding, the signaling notification of filtering parameters in the CTU loop depends on CTU block reconstruction, resulting in limited encoding and decoding performance and parallel processing capabilities, affecting the encoding and decoding runtime performance.
The CTU coded block data is first signaled in the bitstream, and then the filtering parameters in the CTU loop are then signaled. By interleaving syntax elements at different levels, the CTU block reconstruction and filtering process are independently processed, so as to achieve parallelism.
It improves the parallelism of encoding and decoding processes, reduces the lag between syntax parsing and CTU block reconstruction processes, enhances the real-time processing capabilities of video encoding and decoding, and supports higher resolution and higher bit rate video encoding.
Smart Images

Figure CN120283406A_ABST
Abstract
Description
[0001] Cross - reference to related applications
[0002] This application claims priority based on European Patent Application No. “22307053.3” filed on December 28, 2022, the entire content of which is incorporated herein by reference. Technical field
[0003] This application generally relates to video sequence encoding and decoding. Specifically, but not exclusively, the technical field of this application relates to signaling block data and parameters for encoding / decoding / reconstructing / filtering a video sequence. Background art
[0004] This section is intended to introduce the reader to aspects of the field that may be related to aspects of at least one exemplary embodiment of the present application described and / or claimed below. This discussion is considered to help provide background information to the reader to facilitate a better understanding of the aspects of the present application. Thus, it should be understood that these statements should be read in this light and not as an admission of prior art.
[0005] A pixel corresponds to the smallest display unit on a screen and can consist of one or more light sources (1 for a monochrome screen and 3 or more for a color screen).
[0006] A video sequence consists of consecutive video frames that have a temporal relationship between them.
[0007] A video frame, also called a frame or picture frame, includes at least one component (also called a picture component or channel) determined by a specific picture / video format, which specifies all information related to pixel values and all information that can be used by a display unit and / or any other device to display and / or decode video frame data related to the said video frame.
[0008] A video frame includes at least one component that is typically represented in the form of a sample array.
[0009] A monochrome video frame includes a single component, while a color video frame can include three components.
[0010] For example, when the picture / video format is the well - known (Y, Cb, Cr) format, a color video frame can include a luminance (or brightness) component and two chrominance components, and when the picture / video format is the well - known (R, G, B) format, a color video frame can include three color components (one for red, one for green, and one for blue).
[0011] Each component of a video picture can include a number of samples relative to the number of pixels of a screen on which the video picture is to be displayed. In a variant, the number of samples included in a component can be a multiple (or fraction) of the number of samples included in another component of the same video picture.
[0012] For example, in a case where a video format includes one luminance component and two chrominance components (such as the (Y, Cb, Cr) format), depending on the color format considered, the chrominance components can include half the number of samples in width and / or height relative to the luminance component.
[0013] A sample is the smallest visual information unit that makes up a component of a video picture. A sample value can be, for example, a luminance or chrominance value, or a color value in the (R, G, B) format. A luminance sample is a luminance value, and a chrominance sample is a chrominance or color value.
[0014] A pixel value is the value of a pixel of a screen. For a monochrome video picture, the pixel value can be represented by one sample, while for a color video picture, the pixel value can be represented by multiple co - located samples. Co - located samples associated with a pixel refer to the samples corresponding to the position of the pixel in the screen.
[0015] A video picture is generally considered as a set of pixel values, each pixel being represented by at least one sample.
[0016] A block of a video picture is a set of samples of a component of the video picture. When the picture / video format is the well - known (Y, Cb, Cr) format, a block of at least one luminance sample (abbreviated as luminance block) or a block of at least one chrominance sample (abbreviated as chrominance block) can be considered; while when the picture / video format is the well - known (R, G, B) format, a block of at least one color sample can be considered.
[0017] At least one exemplary embodiment is not limited to a specific picture / video format.
[0018] In state-of-the-art video compression systems, such as HEVC (ISO / IEC 23008-2 High Efficiency Video Coding, ITU-T Recommendation H.265, https: / / www.itu.int / rec / T-REC-H.265-202108-P / en) or VVC (Rec. ITU-T H.266|ISO / IEC 23090-3 Versatile Video Coding”, 2020), low-level and high-level picture partitions are provided to divide a video picture into picture regions, so-called coding tree units (CTUs), the size of which is typically between 16x16 and 64x64 pixels for HEVC and between 32x32, 64x64 or 128x128 pixels for VVC.
[0019] The CTU partitioning of a video picture forms a grid consisting of CTUs of a fixed size, i.e., a CTU grid, the upper and left boundaries of which spatially coincide with the upper and left boundaries of the video picture. The CTU grid represents the spatial partitioning of the video picture.
[0020] In VVC and HEVC, the CTU sizes (CTU width and CTU height) of all CTUs in the CTU grid are equal to the same default CTU size (default CTU width CTU DW and default CTU height CTU DH). For example, the default CTU size (default CTU height, default CTU width) can be equal to 128 (CTU DW = CTU DH = 128). The default CTU size (height, width) is encoded into the bitstream, e.g., at the sequence level in the sequence parameter set (SPS).
[0021] The spatial position of a CTU in the CTU grid is determined according to the CTU address ctuAddr, which defines the spatial position of the upper left corner of the CTU relative to the origin. As Figure 1 illustrated, the CTU address can define the spatial position starting from the upper left corner of a higher-level spatial structure S that contains the CTU.
[0022] Each CTU is associated with a coding tree to determine the tree partitioning of the CTU.
[0023] As Figure 1As illustrated, in HEVC, the coding tree is a quadtree partitioning of CTUs, where each leaf is called a coding unit (CU). The spatial position of a CU in the video picture is defined by the CU index cuIdx, which indicates the spatial position starting from the upper left corner of the CTU. A CU is spatially partitioned into one or more prediction units (PUs). The spatial position of a PU in the video picture VP is defined by the PU index puIdx, which defines the spatial position starting from the upper left corner of the CTU, and the spatial position of the elements of the partitioned PU is defined by the PU partition index puPartIdx, which defines the spatial position starting from the upper left corner of the PU. Each PU is assigned some intra or inter prediction data.
[0024] The intra or inter coding mode is assigned at the CU level. This means that, although the prediction parameters vary for each PU, the same intra / inter coding mode is assigned to each PU of a CU.
[0025] According to a quadtree called the transform tree, a CU can also be spatially partitioned into one or more transform units (TUs). A transform unit is a leaf of the transform tree. The spatial position of a TU in the video picture is defined by the TU index tuIdx, which defines the spatial position starting from the upper left corner of the CU. Each TU is assigned some transform parameters. The transform type is assigned at the TU level, and a 2D separate transform is performed at the TU level during the coding or decoding of a picture block.
[0026] Figure 2 The above figure shows the existing PU partition types in HEVC. They include square partitions (2Nx2N and NxN), which are the only partitions used in both intra and inter prediction CUs, symmetric non-square partitions (2NxN, Nx2N, only used in inter prediction CUs) and asymmetric partitions (only used in inter prediction CUs). For example, the PU type 2NxnU represents an asymmetric horizontal partition of the PU, where the smaller partition is at the top of the PU. According to another example, the PU type 2NxnL represents an asymmetric horizontal partition of the PU, where the smaller partition is at the top of the PU.
[0027] As Figure 3 As illustrated above, in VVC, the coding tree starts from the root node (i.e., the CTU). Next, a quadtree (or quaternary tree) split divides the root node into 4 nodes, corresponding to 4 sub-blocks of equal size (solid lines). Next, the quadtree (or quaternary tree) leaves can be further divided by a so-called multi-type tree, which involves a binary or ternary split according to Figure 4 one of the 4 split patterns illustrated above. These split types are the vertical and horizontal binary split patterns (denoted as SBTV and SBTH) and the vertical and horizontal ternary split patterns SPTTV and STTH.
[0028] In the case of a joint coding and decoding tree where the luminance and chrominance components are shared, the leaves of the coding and decoding tree of a CTU are CUs.
[0029] In an intra-predicted picture, a separate coding and decoding tree can be used, with one side for the luminance component and the other side for the chrominance component. The luminance component part of a CTU is called a luminance coding and decoding tree block. The luminance coding and decoding tree block (luminance CTB) is then associated with a coding and decoding tree whose leaves are associated with luminance coding and decoding blocks. Additionally, in the case of a separate luminance / chrominance coding and decoding tree and a 3-component picture, two chrominance CTBs share the same coding and decoding tree.
[0030] Contrary to HEVC, in VVC, in most cases, CUs, PUs, and TUs have equal sizes, which means that, except in some specific coding and decoding modes, coding and decoding units are generally not partitioned into PUs or TUs.
[0031] In VVC, advanced picture partitioning is also provided, where a video picture can basically be partitioned into sub-pictures, slices, and tiles.
[0032] A tile is a sequence of CTUs that cover a rectangular picture area of a video picture. The CTUs in a tile are usually scanned in raster scan order within that tile. The tile size (width and height) is an integer multiple of the default CTU size (default CTU width and default CTU height).
[0033] A slice consists of an integer number of tiles or an integer number of consecutive complete CTU rows within a tile. Thus, each vertical slice boundary is always also a vertical tile boundary. The horizontal boundaries of a slice may not be tile boundaries but are composed of horizontal CTU boundaries within a tile; this occurs when a tile is split into multiple rectangular slices, each consisting of an integer number of consecutive complete CTU rows within the tile. The slice size (width and height) is an integer multiple of the default CTU size (default CTU width and default CTU height).
[0034] Two slice modes are supported, namely, the raster scan slice mode and the rectangular slice mode. In the raster scan slice mode, a slice contains a sequence of complete tiles in the tile raster scan order of the video picture. In the rectangular slice mode, a slice either contains multiple complete tiles that together form a rectangular picture area or contains several consecutive complete CTU rows of a tile that together form a rectangular picture area. The tiles within a rectangular slice are scanned in the tile raster scan order within the rectangular picture area corresponding to that slice.
[0035] The sub - pictures contain one or more slices that jointly cover the rectangular picture area. Thus, each sub - picture boundary is always a slice boundary, and each vertical sub - picture boundary is always a vertical tile boundary. The sub - picture dimensions (width and height) are integer multiples of the default CTU dimensions (default CTU width and default CTU height).
[0036] For each sub - picture and tile, one or both of the following conditions shall be met:
[0037] · All CTUs in the sub - picture belong to the same tile.
[0038] · All CTUs in the tile belong to the same sub - picture.
[0039] Figure 5 and Figure 6 An overview of video encoding / decoding methods used, for example, in current video standard compression systems such as HEVC or VVC is provided.
[0040] Figure 5 A schematic block diagram showing the steps of a method 100 for encoding a video picture VP of a video sequence according to the prior art is shown.
[0041] In step 110, the video picture VP is partitioned into sample blocks and the partitioning information data is signaled in the bitstream. Each block includes samples of one component of the video picture VP. Thus, these blocks include samples that define each component of the video picture VP.
[0042] For example, in HEVC, the video picture is divided into coding tree units (CTUs). Each CTU can be further subdivided using quadtree partitioning, where each leaf of the quadtree represents a coding unit (CU). Then, the partitioning information data can include data describing the CTUs and the quadtree subdivisions of each CTU.
[0043] Thus, each sample block (referred to simply as a block) can be either a CU (if the CU includes a single PU) or a PU of a CU.
[0044] Each block is encoded along the encoding loop (also referred to as "in - loop") using either an intra - frame or an inter - frame prediction mode.
[0045] Intra - frame prediction (step 120) uses intra - frame prediction data. Intra - frame prediction includes predicting the current block by means of an intra - frame prediction block based on samples that have been encoded, decoded, and reconstructed, which are located around the current block, typically at the top and left of the current block. Intra - frame prediction is performed in the spatial domain.
[0046] In the inter - frame prediction mode, motion estimation (step 130) and motion compensation (135) are performed. Motion estimation searches for a reference block that is a good predictor of the current block in one or more reference pictures used for predictively encoding the current video picture. In uni - directional motion estimation / compensation, the candidate reference blocks belong to a single reference picture of a reference picture list denoted as L0 or L1, while in bi - directional motion estimation / compensation, the candidate reference blocks are derived from the reference blocks of reference picture list L0 and the reference blocks of reference picture list L1.
[0047] For example, a good predictor of the current block is a candidate reference block that is similar to the current block. It can also correspond to a reference block that provides a good trade - off between the similarity to the current block and the rate cost of the motion information required to indicate its use for temporal prediction of the current block.
[0048] The output of the motion estimation step 130 is inter - frame prediction data, which includes motion information associated with the current block and other information for obtaining the same predicted block on the encoding / decoding side. Generally, the motion information includes one motion vector and a reference picture index for uni - directional estimation / compensation and two motion vectors and two reference picture indexes for bi - directional estimation / compensation. Next, motion compensation (step 135) obtains the predicted block by means of the (one or more) motion vectors and reference picture index(es) determined by the motion estimation step 130. Basically, the reference block that belongs to the selected reference picture and is pointed to by the motion vector can be used as the predicted block of the current block. Additionally, since the motion vectors are expressed as fractions of integer pixel positions (which is referred to as sub - pixel accurate motion vector representation), motion compensation generally involves spatial interpolation of some reconstructed samples of the reference picture to calculate the predicted block.
[0049] The prediction information data is signaled into the bitstream. The prediction information can include the prediction mode (intra, inter, or skip), intra / inter prediction data, and any other information for obtaining the same predicted block on the decoding side.
[0050] Taking into account the encoding of the calculated prediction residual block (e.g., by subtracting the candidate prediction block from the current block) and the signaling of the prediction information data required to determine the candidate prediction block on the decoding side, method 100 selects a prediction mode (intra or inter - frame prediction mode) by optimizing the rate - distortion trade - off.
[0051] Generally, the best prediction mode is given as the prediction mode of the best codec mode p* of the current block given by:
[0052]
[0053] where P is the set of all candidate codec modes of the current block, p represents a candidate codec mode in this set, and RD cost(p) is the rate - distortion cost of candidate coding / decoding mode p, which is typically expressed as:
[0054] RD cost(p) = D(p)+λ.R(p)
[0055] D(p) is the distortion between the current block and the reconstructed block obtained after encoding / decoding the current block with candidate coding / decoding mode p, R(p) is the rate cost associated with encoding / decoding the current block with coding / decoding mode p, and λ is the Lagrange parameter representing the rate constraint for encoding / decoding the current block and is typically calculated according to the quantization parameter used for encoding the current block.
[0056] The current block is typically encoded from the prediction residual block PR. More precisely, for example, the prediction residual block PR is calculated by subtracting the best prediction block from the current block. Then, the prediction residual block PR is transformed (step 140) by using, for example, a DCT (Discrete Cosine Transform) or DST (Discrete Sine Transform) type transform or any other suitable transform, and the obtained transformed coefficient block is quantized (step 150).
[0057] In a variant, method 100 may also skip the transformation step 140 according to the so - called transform - skip coding / decoding mode and directly apply quantization to the prediction residual block PR (step 150).
[0058] The quantized transform coefficient block (or quantized prediction residual block) is entropy - encoded into the bitstream (step 160).
[0059] Next, as part of the encoding loop, the quantized transform coefficient block (or quantized residual block) is de - quantized (step 170) and inverse - transformed (180) (or not), thus obtaining the decoded prediction residual block. Then, the decoded prediction residual block and the prediction block are combined (usually by summing) to provide the reconstructed block.
[0060] The block data representation for CTU coding / decoding is all the coding / decoding tree (CT) data and parameters for coding / decoding / reconstructing the blocks of all CTUs of a video picture of a video sequence. The block data for CTU coding / decoding is signaled in the bitstream according to the coding / decoding tree syntax (i.e., a set of syntax elements carrying the block data for CTU coding / decoding). The block data for CTU coding / decoding includes the parameters for defining the coding / decoding tree (partition information data), the entropy - encoded quantized transform coefficient blocks (or quantized prediction residual blocks) included in the CTU, the prediction information data related to the blocks of the CTU, and other information data for coding / decoding / reconstructing the samples of the blocks of the CTU.
[0061] The reconstructed blocks or filtered reconstructed blocks of all CTUs of a video picture form a reference picture, which can be stored in a decoded picture buffer (DPB) so that it can be used as a reference picture for the next current block of a CTU of a video picture VP or the next video picture to be encoded.
[0062] In step 190, filters can be applied to the reconstructed picture, i.e., the video picture including the reconstructed blocks of each CTU of the video picture.
[0063] These filters are designed to improve the picture quality by removing compression artifacts such as blockiness discontinuities and quantization noise. In VVC, there are various filters such as luminance mapping with chroma scaling (LMCS), deblocking filter (DBF), sample adaptive offset (SAO), adaptive loop filter (ALF), and cross-component adaptive loop filter (CC-ALF).
[0064] These filters are called "in-loop" filters because they are applied within the encoding and decoding loops, i.e., before the filtered reconstructed video picture is stored as a reference picture in the DPB. The in-loop filters can be parameterized according to the CTU in-loop filtering parameters to indicate that the in-loop filters are parameterized at the CTU level. If these filters are used during encoding, they should be applied during decoding to ensure a good decoding process, i.e., to reconstruct the video picture in the same way as on the encoder side.
[0065] LMCS does not specifically address the issue of codec artifact reduction, but is designed to improve codec efficiency by applying two strategies to better utilize the signal range:
[0066] · Reassign the luminance code values of the input video signal from the original sample domain to the mapped sample domain. For example, a video segment with a signal that only uses a narrow range of luminance codes will be mapped to a suitable sample domain to improve the overall compression process.
[0067] · Chroma residual scaling is designed to compensate for the luminance mapping in the bit cost repartition between the luminance and chroma signals.
[0068] The LMCS parameters are carried in a dedicated adaptive parameter set (LMCS APS).
[0069] Therefore, when the same LMCS parameters are used for multiple slices in the same or different video pictures, redundant transmission of the LMCS parameters can be avoided. When LMCS is applied to a video picture or slice, only the index of the referenced LMCS APS is signaled in the picture or slice header.
[0070] The LMCS data contains two different parts:
[0071] · Syntax related to a piecewise linear model with up to 16 segments to map luminance codes to a more appropriate sample domain and vice versa.
[0072] · Chrominance scaling offset values.
[0073] Flexible adjustment between luminance and chrominance signals can be achieved by enabling or disabling chrominance scaling at the sequence or picture level, or by further adjusting chrominance scaling by applying a chrominance scaling offset (LMCS on / off flag).
[0074] The LMCS on / off flag and LMCS data are CTU loop filter parameters signaled in the bitstream before the block data of the new signal notification CTU encoding / decoding. The LMCS on / off flag can be signaled at the CTU level to enable or disable this filter, or to signal the LMCS data.
[0075] In the VVC standard, DBF is applied after LMCS. It aims to reduce the discontinuities (referred to as blocking artifacts) that may occur at the transform and block boundaries. When applied, it will smooth the transition across block boundaries while avoiding the removal of natural edges.
[0076] The VVC deblocking filter based on HEVC design has been enhanced to support larger block sizes, reduce specific visible artifacts, and also benefit from greater flexibility and support new control modes based on the average local luminance sample level.
[0077] Contrary to other filters, DBF does not need to be signaled at the CTU level. All DBF parameters (filter length and strength) are derived from the CU mode, quantization parameter, motion vector difference, and spatial activity.
[0078] In VVC, chrominance and luminance deblocking can be independently performed on block units of 8x8 and 16x16 samples respectively. Therefore, SAO aims to reduce the artifacts caused by the quantization of transform coefficients that may occur inside the block. It will attenuate ringing artifacts and correct local average intensity variations.
[0079] VVC SAO is similar to HEVC and includes reducing sample distortion by first classifying the reconstructed samples into different categories. For each category, an offset is calculated and then added to each sample in that category. Each offset is appropriately calculated at the encoder and explicitly signaled to the decoder to reduce sample distortion. However, the classification of each sample is performed at both the encoder and decoder to significantly save side information. To achieve low latency for only one CTU, a CTU-based syntax design is specified to adapt the SAO parameters for each CTU. SAO can also be controlled at the sequence and picture levels.
[0080] First, in the bitstream at the sequence, slice, and CTU levels, signal the SAO on / off flag. Second, at the CTU level, if SAO is enabled at that level, then signal the SAO parameters (band or edge offsets and class).
[0081] The SAO on / off flag and SAO parameters are CTU loop filtering parameters signaled in the bitstream before signaling the block data for CTU encoding / decoding.
[0082] In VVC, ALF and CC-ALF perform final correction steps that are typically intended to improve signal fidelity and are thus placed in the last loop filtering step 190. It is applied to reduce the mean squared error (MSE) between the original samples and the reconstructed samples using Wiener-based filtering.
[0083] For each non-overlapping 4x4 block, ALF is applied to sample-gradient-based classification and the block is filtered according to that classification.
[0084] CC-ALF exploits the correlation between luma and chroma samples and is only applied to chroma samples. CC-ALF uses a version of linear filtering of luma samples located around the same relative position as the chroma samples to generate corrections for the chroma samples.
[0085] In addition to luma 4x4 block level filter adaptation, ALF also supports CTB level filter adaptation. The luma CTB can use the filter bank computed for the current slice, or one of the filter banks computed for already decoded slices.
[0086] First, signal the ALF on / off flag at the sequence, picture, slice, and CTU levels. Second, signal the ALF parameters (filter usage information and an index indicating which ALF filter to use) in the bitstream: If ALF is enabled at the picture, slice, and CTU levels and the index is signaled in the bitstream at the CTU level, then the filter usage information is sent at the picture, slice, and CTU levels.
[0087] The ALF parameters can be carried in an encoded syntax container called the Adaptive Parameter Set (APS). The APS is intended to convey slice-level information that can be shared by multiple slices (attached to one or several video pictures). The APS can contain some ALF parameters, in which case the decoder considers these parameters to perform the adaptive loop filtering operation. The Adaptive Parameter Set (APS) concept helps avoid redundancy between encoded slices.
[0088] The ALF on / off flag and ALF parameters are filtering parameters in the CTU loop, and are signaled in the bitstream for this CTU loop before signaling the data for CTU block encoding / decoding.
[0089] Figure 6 FIG. shows a schematic block diagram of steps of a method 200 for decoding a video picture VP of a video sequence according to the prior art.
[0090] In step 210, block data for CTU encoding / decoding and filtering parameters in the CTU loop are obtained by parsing and entropy decoding a bitstream of encoded video picture data. For example, this bitstream has been generated according to method 100.
[0091] Other information data may also be parsed and entropy decoded to decode the current block of the video picture VP from the bitstream.
[0092] In step 220, the reconstructed picture is partitioned into current blocks based on partition information data (block data for CTU encoding / decoding). Each current block is entropy decoded from the bitstream along a decoding loop (also referred to as "in-loop"). Each decoded current block is either a quantized transform coefficient block or a quantized prediction residual block (block data for CTU encoding / decoding).
[0093] In step 230, the current block is dequantized and possibly inverse-transformed (step 240) to obtain a decoded prediction residual block.
[0094] On the other hand, prediction information data (block data for CTU encoding / decoding) are used to predict the current block. A prediction block is obtained through its intra prediction (step 250) or its motion-compensated temporal prediction (step 260). The prediction process performed on the decoding side is exactly the same as the prediction process performed on the encoding side.
[0095] Next, the decoded prediction residual block and the prediction block are combined (usually by summation), which provides the reconstructed block.
[0096] In step 270, the in-loop filter using the filtering parameters in the CTU loop is applied to the reconstructed picture (including the reconstructed blocks), and the filtered reconstructed blocks form a reference picture, which may be stored in the decoded picture buffer (DPB), as discussed above ( Figure 5 ).
[0097] In VVC, motion information is stored in each video picture in units of 4x4 blocks. This means that once the reference picture is stored in the decoded picture buffer (DPB, Figure 5 or Figure 6) In it, the motion vectors and reference picture indices for the temporal prediction of video picture blocks are stored on a 4x4 block basis. They can be used for the temporal prediction of motion information for encoding / decoding subsequent inter-predicted video pictures.
[0098] Whether in HEVC, VVC or future standards, or in the Enhanced Compression Model (ECM, M. Coban, F. Le Léannec, K. Naser, J. L. Zhang, "Algorithm description of Enhanced CompressionModel6 (ECM 6)", JVET-AA2025, October 2022), in the CTU loop, the in-loop filter parameters are signaled in the bitstream before the block data of the CTU encoding / decoding, and the in-loop filter is applied after the CTU reconstruction.
[0099] Figure 7 FIG. shows a schematic block diagram illustrating the order of steps for encoding block data of CTU encoding / decoding for a CTU relative to a video picture in the bitstream and for performing in-loop filtering on the reconstructed blocks of the CTU with CTU in-loop filter parameters.
[0100] First, in step 710, the block data of the CTU (denoted as the CTU block) is obtained by encoding according to the Figure 5 method. Then, the CTU block is reconstructed. Next, in step 720, the reconstructed CTU block is filtered (in-loop filtering) using the CTU in-loop filter parameters associated with the CTU. Next, in step 730, the CTU in-loop filter parameters are entropy-coded and signaled in the bitstream. Then, in step 740, the block data of the CTU encoding / decoding is entropy-coded and signaled in the bitstream.
[0101] Therefore, the CTU in-loop filter parameters are signaled in the bitstream before the block data of the CTU encoding / decoding.
[0102] Figure 8 FIG. shows a schematic block diagram illustrating the order of steps for decoding block data of CTU encoding / decoding for a CTU block for decoding a video picture from the bitstream and for performing in-loop filtering on the reconstructed blocks of the CTU with CTU in-loop filter parameters.
[0103] First, in step 810, the CTU in-loop filter parameters are obtained by parsing the bitstream and by applying entropy decoding. Then, in step 820, the block data of the CTU encoding / decoding is obtained by parsing the bitstream and by applying entropy decoding. Figure 6The method decodes a CTU block by using block data of CTU encoding / decoding and obtains a reconstructed CTU block in step 830. Then, in step 840, the reconstructed CTU block is filtered (in-loop filtering) by using in-loop filtering parameters of the CTU loop.
[0104] Figure 9 FIG. shows an example of a coding_tree_unit of an encoding / decoding structure with respect to a CTU according to the prior art.
[0105] The encoding / decoding structure coding_tree_unit indicates that in-loop filtering parameters in the CTU loop, i.e., in-loop filtering parameters for filtering a reconstructed block of the CTU, are signaled in a bitstream before the block data of CTU encoding / decoding, i.e., a syntax element carrying in-loop parameters of the CTU loop is written in the bitstream on the encoding side before a syntax element carrying block data of CTU encoding / decoding is written in the bitstream.
[0106] In the video standards discussed above, there are dependencies during the CTU decoding (or encoding) process. First, when the entropy decoding of the block data of CTU encoding / decoding is completed, CTU block reconstruction can start. Moreover, only when the CTU block reconstruction process is completed can in-loop filtering of the CTU start. Generally, there is a lag of at least one CTU between in-loop filtering of the CTU and CTU block reconstruction because the in-loop filter can be applied to CTU boundaries. Finally, entropy decoding is continuous, so only when the entropy decoding of in-loop filter parameters of the CTU is completed can the decoding of CTU encoding / decoding parameters start. The block data of CTU encoding / decoding and the in-loop filtering parameters of the CTU are independent, but entropy decoding (or encoding) creates a dependency between the two.
[0107] One of the problems solved by the present invention is to increase the encoding and decoding runtime performance of existing video encoding / decoding standards without sacrificing encoding / decoding performance.
[0108] At least one exemplary embodiment of the present application is designed in consideration of the above situation. SUMMARY OF THE INVENTION
[0109] The following section provides a brief overview of at least one exemplary embodiment to provide a basic understanding of some aspects of the present application. This overview is not an exhaustive overview of the exemplary embodiments. Its purpose is not to identify the key or core elements of the exemplary embodiments. The following overview only presents some aspects of at least one exemplary embodiment in a simplified form as a preamble to the more detailed description provided elsewhere in this document.
[0110] According to a first aspect of the present application, there is provided a method for signaling block data for encoding and decoding of a video sequence including video pictures and in-loop filtering parameters in a bitstream. Each video picture is split into a plurality of coding tree units, denoted as CTUs. Each CTU includes CTU blocks. By encoding the blocks of each CTU, CTU-encoded block data for the CTU is obtained. By decoding the CTU-encoded block data associated with the CTU, a reconstructed CTU block associated with the CTU is obtained. The reconstructed CTU block associated with the CTU is filtered using in-loop filtering parameters associated with the CTU (denoted as CTU in-loop filtering parameters), wherein the CTU-encoded block data associated with the CTU is signaled in the bitstream before signaling the CTU in-loop filtering parameters associated with the CTU.
[0111] In one exemplary embodiment, the CTU-encoded block data associated with all CTUs of a coding structure including more than one CTU is signaled in the bitstream before signaling the CTU in-loop filtering parameters associated with all CTUs of the coding structure.
[0112] In one exemplary embodiment, a first syntax element is signaled in the bitstream to indicate whether to enable signaling the CTU-encoded block data associated with the CTU or with all CTUs of a coding structure in the bitstream before signaling the CTU in-loop filtering parameters associated with the CTU or with all CTUs of the coding structure.
[0113] In one exemplary embodiment, a first syntax element is signaled at the video level to indicate whether to enable signaling the CTU-encoded block data associated with the CTU or with all CTUs of a coding structure in the bitstream before signaling the CTU in-loop filtering parameters associated with the CTU or with all CTUs of the coding structure for different layers.
[0114] In one exemplary embodiment, if the first syntax element indicates to enable signaling the CTU-encoded block data associated with the CTU or with all CTUs of a coding structure in the bitstream before signaling the CTU in-loop filtering parameters associated with the CTU or with all CTUs of the coding structure for different layers, then a second syntax element is signaled at the video level in the bitstream to indicate whether to allow enabling signaling the CTU-encoded block data associated with the CTU or with all CTUs of a coding structure in the bitstream before signaling the CTU in-loop filtering parameters associated with the CTU or with all CTUs of the coding structure at a level different from the video level for different layers.
[0115] In an exemplary embodiment, a first syntax element is signaled at the sequence level to indicate whether to signal in the bitstream the block data of the CTU coding associated with the CTU or all CTUs of the coding structure before signaling the filtering parameters in the CTU cycle associated with the CTU or all CTUs of the coding structure for the entire video sequence.
[0116] In an exemplary embodiment, if the first syntax element indicates to signal in the bitstream the block data of the CTU coding associated with the CTU or all CTUs of the coding structure before signaling the filtering parameters in the CTU cycle associated with the CTU or all CTUs of the coding structure for the entire video sequence, then a second syntax element is signaled at the sequence level to indicate whether it is allowed to signal in the bitstream the block data of the CTU coding associated with the CTU or all CTUs of the coding structure before signaling the filtering parameters in the CTU cycle associated with the CTU or all CTUs of the coding structure at a level different from the sequence level.
[0117] In an exemplary embodiment, a first syntax element is signaled at the picture level to indicate whether to signal in the bitstream the block data of the CTU coding associated with the CTU or all CTUs of the coding structure before signaling the filtering parameters in the CTU cycle associated with the CTU or all CTUs of the coding structure for at least one picture.
[0118] In an exemplary embodiment, if the first syntax element indicates to signal in the bitstream the block data of the CTU coding associated with the CTU or all CTUs of the coding structure before signaling the filtering parameters in the CTU cycle associated with the CTU or all CTUs of the coding structure for at least one picture, then a second syntax element is signaled at the picture level to indicate whether it is allowed to signal in the bitstream the block data of the CTU coding associated with the CTU or all CTUs of the coding structure before signaling the filtering parameters in the CTU cycle associated with the CTU or all CTUs of the coding structure at a level different from the picture level.
[0119] In an exemplary embodiment, a first syntax element is signaled at the slice level to indicate whether to signal in the bitstream the block data of the CTU coding associated with the CTU or all CTUs of the coding structure before signaling the filtering parameters in the CTU cycle associated with the CTU or all CTUs of the coding structure at the slice level.
[0120] In an exemplary embodiment, the loop filter parameters associated with a CTU or all CTUs of a codec structure are signaled by picture component.
[0121] In an exemplary embodiment, the loop filter parameters associated with a CTU or all CTUs of a codec structure are signaled by filter type.
[0122] According to a second aspect of the present application, there is provided a method for encoding a video sequence including video pictures in a bitstream. Each video picture is split into a plurality of codec tree units, denoted as CTUs. Each CTU includes CTU blocks. The block data of the CTU codec for the CTU is obtained by encoding the blocks of each CTU. The reconstructed CTU blocks associated with the CTU are obtained by decoding the block data of the CTU codec associated with the CTU. The reconstructed CTU blocks associated with the CTU are filtered using the loop filter parameters associated with the CTU (denoted as CTU loop filter parameters), wherein the block data of the CTU codec associated with the CTU and the CTU loop filter parameters are signaled according to the method of the first aspect of the present invention.
[0123] According to a third aspect of the present application, there is provided a method for decoding a video sequence including video pictures from a bitstream. Each video picture is split into a plurality of codec tree units, denoted as CTUs. Each CTU includes CTU blocks. The block data of the CTU codec for each CTU is obtained by parsing the bitstream. The reconstructed CTU blocks associated with the CTU are obtained by decoding the block data of the CTU codec associated with the CTU. The reconstructed CTU blocks associated with the CTU are filtered using the loop filter parameters associated with the CTU (denoted as CTU loop filter parameters), wherein the block data of the CTU codec associated with the CTU and the CTU loop filter parameters are signaled according to the method of the first aspect of the present invention.
[0124] According to a fourth aspect of the present application, there is provided a bitstream formatted to include encoded video picture data and information data obtained from the method according to the second aspect.
[0125] According to a fifth aspect of the present application, there is provided an apparatus including components for performing one of the methods according to the first, second, or third aspect of the present invention.
[0126] According to a sixth aspect of the present application, there is provided a computer program product including instructions that, when executed by one or more processors, cause the one or more processors to perform the methods according to the first, second, or third aspect of the present invention.
[0127] According to a seventh aspect of the present application, there is provided a non-transitory storage medium carrying instructions of program code for performing the methods in the methods according to the first, second, or third aspect of the present invention.
[0128] The specific nature of at least one of the exemplary embodiments and other objects, advantages, features, and uses of the at least one exemplary embodiment will become apparent from the following exemplary description in conjunction with the drawings. BRIEF DESCRIPTION OF THE DRAWINGS
[0129] Now, exemplary embodiments of the present application will be referred to by way of example with reference to the drawings, in which:
[0130] Figure 1 An example of a coding tree unit according to HEVC is shown;
[0131] Figure 2 An example of partitioning a coding unit into prediction units according to HEVC is shown;
[0132] Figure 3 An example of CTU partitioning according to VVC is shown;
[0133] Figure 4 An example of split patterns supported in multi-type tree partitioning according to VVC is shown;
[0134] Figure 5 A schematic block diagram showing the steps of a method 100 for encoding a video picture VP of a video sequence according to the prior art is shown;
[0135] Figure 6 A schematic block diagram showing the steps of a method 200 for decoding a video picture VP of a video sequence according to the prior art is shown;
[0136] Figure 7 A schematic block diagram showing the order of steps for generating block data for CTU coding / decoding with respect to a CTU of a video picture and CTU loop filter parameters for performing loop filter on the reconstructed blocks of the CTU according to the prior art is shown;
[0137] Figure 8 A schematic block diagram showing the order of steps for generating block data for CTU coding / decoding with respect to a CTU of a video picture and CTU loop filter parameters for performing loop filter on the reconstructed blocks of the CTU on the decoding side according to the prior art is shown;
[0138] Figure 9 An example of a coding structure coding_tree_unit with respect to a CTU according to the prior art is shown;
[0139] Figure 10 A schematic block diagram showing the order of steps for generating block data for CTU codec of a CTU relative to a video picture on the encoding side and CTU in-loop filtering parameters for performing in-loop filtering on the reconstructed blocks of the CTU;
[0140] Figure 11 A schematic block diagram showing the order of steps for generating block data for CTU codec of a CTU relative to a video picture on the decoding side and CTU in-loop filtering parameters for performing in-loop filtering on the reconstructed blocks of the CTU;
[0141] Figure 12 Shows Figure 10 a schematic block diagram of a variant of the method;
[0142] Figure 13 Shows Figure 11 a schematic block diagram of a variant of the method;
[0143] Figure 14 Shows an example of the coding_tree_unit codec structure according to an exemplary embodiment of the present invention;
[0144] Figure 15 Shows an example of the seq_parameter_set_rbsp codec structure according to an exemplary embodiment of the present invention;
[0145] Figure 16 A schematic block diagram showing the order of steps for generating a series of block data for CTU codec of a CTU of a codec structure relative to a video picture on the encoding side and CTU in-loop filtering parameters for performing in-loop filtering on the reconstructed blocks of the CTU;
[0146] Figure 17 A schematic block diagram showing the order of steps for generating a series of block data for CTU codec of a CTU of a codec structure relative to a video picture on the decoding side and CTU in-loop filtering parameters for performing in-loop filtering on the reconstructed blocks of the CTU;
[0147] Figure 18 Shows an example of the slice_data codec structure relative to a slice according to an exemplary embodiment of the present invention;
[0148] Figure 19 Shows an example of the coding_tree_unit codec structure relative to a slice according to an exemplary embodiment of the present invention;
[0149] Figure 20 Shows an example of an in-loopfilter_coding_tree_unit of an encoding / decoding structure relative to a slice according to an exemplary embodiment of the present invention;
[0150] Figure 21 Shows an example of a seq_parameter_set_rbsp encoding / decoding structure according to an exemplary embodiment of the present invention;
[0151] Figure 22 Illustrates a schematic block diagram of an example of a system in which various aspects and exemplary embodiments are implemented.
[0152] Similar or identical elements are referenced with the same reference numerals. Detailed Description
[0153] At least one of the exemplary embodiments will be described more fully hereinafter with reference to the accompanying drawings, in which examples of at least one of the exemplary embodiments are depicted. However, the exemplary embodiments may be implemented in many alternative forms and should not be construed as limited to the examples set forth herein. Accordingly, it should be understood that the present invention is not intended to limit the exemplary embodiments to the particular forms disclosed. On the contrary, this application is intended to cover all modifications, equivalents, and alternatives falling within the spirit and scope of this application.
[0154] At least one of the aspects generally relates to video picture encoding and decoding, another aspect generally relates to transmitting the provided or encoded bitstream, and another aspect relates to receiving / accessing the decoded bitstream.
[0155] At least one of the exemplary embodiments is described for encoding / decoding video pictures, but extends to encoding / decoding video pictures (a sequence of pictures) because each video picture is encoded / decoded sequentially as described below.
[0156] Moreover, for example, at least one exemplary embodiment is not limited to MPEG standards such as AVC (ISO / IEC 14496-10 Advanced Video Coding for generic audio-visual services, ITU-T Recommendation H.264, https: / / www.itu.int / rec / T-REC-H.264-202108-P / en), EVC (ISO / IEC 23094-1 Essential video coding), HEVC (ISO / IEC 23008-2 High Efficiency Video Coding, ITU-T Recommendation H.265, https: / / www.itu.int / rec / T-REC-H.265-202108-P / en), VVC (ISO / IEC 23090-3 Versatile Video Coding, ITU-T Recommendation H.266, https: / / www.itu.int / rec / T-REC-H.266-202008-I / en), but can be applied to other standards and recommendations such as AV1 (AOMedia Video 1, http: / / aomedia.org / av1 / specification / ). At least one exemplary embodiment can be applied to existing or future developments and extensions of any such standards and recommendations. Unless otherwise specified or technically excluded, the aspects described in this application can be used alone or in combination.
[0157] Generally, the present application relates to a method for signaling block data of CTU encoding / decoding and CTU loop filter parameters in a bitstream, wherein the block data of CTU encoding / decoding is signaled in the bitstream before the CTU loop filter parameters.
[0158] The present invention improves the signaling of syntax related to block data of CTU encoding / decoding and CTU loop filter parameters. The present invention takes advantage of reordering the bitstream syntax to discard irrelevant dependencies and enable a further level of parallelism in the encoding and decoding processes without sacrificing video compression efficiency.
[0159] On the encoder side, bitstream entropy encoding / decoding can start earlier, thereby increasing potential parallelism and enabling real-time support for higher resolutions and higher bitrates.
[0160] In fact, aligning the bitstream structure with the decoding steps allows reducing the latency between the syntax parsing and the CTU block reconstruction process. Moreover, on the decoder side, the level of parallelism enables the CTU reconstruction to start earlier, thereby reducing the total decoding time of the frame, i.e., the time between the start of the entropy decoding and the end of the in-loop filtering. By reducing the total decoding time, the decoder can be able to support real-time decoding for higher resolutions and / or higher bitrates.
[0161] According to the present invention, signaling the block data of CTU encoding / decoding and the in-loop filtering parameters of CTU is compatible with both legacy encoding / decoding standards that only allow one parallel processing mechanism to be implemented at a time and video encoding / decoding that can allow more than one parallel processing mechanism to be implemented simultaneously.
[0162] Figure 10 Fig. shows a schematic block diagram illustrating the order of steps for generating, on the encoding side, the block data of CTU encoding / decoding for a CTU relative to a video picture and the in-loop filtering parameters of CTU for performing in-loop filtering on the blocks of the reconstruction of the CTU.
[0163] First, steps 710 and 720 are performed. Then, step 740 is performed, and finally step 730 is performed.
[0164] Figure 11 Fig. shows a schematic block diagram illustrating the order of steps for generating, on the decoding side, the block data of CTU encoding / decoding for a CTU relative to a video picture and the in-loop filtering parameters of CTU for performing in-loop filtering on the blocks of the reconstruction of the CTU.
[0165] First, step 820 is performed. Then, step 810 is performed. Finally, steps 830 and 840 are performed.
[0166] Multiple exemplary embodiments of the method propose interleaving the signaling of the block data of CTU encoding / decoding and the in-loop filter parameters of CTU at different levels to discard the inheritance dependency between the CTU block reconstruction and the in-loop filtering parameter signaling process. Thus, these two processes are independent and can be performed in parallel.
[0167] Figure 12 Fig. shows Figure 10 an example of the parallelism of steps 720 and 740 of the method in
[0168] Figure 13 Fig. shows Figure 11 an example of the parallelism of steps 810 and 830 of the method in
[0169] Figure 14Shows an example of the coding_tree_unit of the codec structure according to an exemplary embodiment of the present invention.
[0170] The coding_tree_unit of the codec structure is similar to Figure 9 the coding_tree_unit of, except that the syntax related to the block data of the CTU codec is signaled in the bitstream before the filter parameters in the CTU loop.
[0171] In the first exemplary embodiment, before signaling the filter parameters in the CTU loop associated with the CTU (i.e., the filter parameters in the CTU loop for filtering the reconstructed blocks of the CTU), the block data of the CTU codec associated with the CTU is signaled in the bitstream.
[0172] Signaling the block data of the CTU codec associated with the CTU (for encoding / decoding / reconstructing the blocks of the CTU) in the bitstream before signaling the filter parameters in the CTU loop (for filtering the blocks) can be done with high-level syntax to enable adaptation at the sequence parameter set (SPS), picture parameter set (PPS), video parameter set (VPS), adaptive parameter set (APS), and the slice header (HS) of a video codec such as VVC, ECM, or any with a similar high-level syntax container.
[0173] In the first variant of the first exemplary embodiment, a first syntax element (e.g., binary data) is signaled in the bitstream to indicate whether to enable signaling the block data of the CTU codec associated with the CTU in the bitstream before signaling the filter parameters in the CTU loop associated with the CTU.
[0174] In the first exemplary embodiment of the first variant, the first syntax element is signaled at the video level (e.g., in the VPS) to indicate whether to enable signaling the block data of the CTU codec associated with the CTU in the bitstream before signaling the filter parameters in the CTU loop associated with the CTU for different layers.
[0175] In VCC (Rec.ITU-T H.266|ISO / IEC 23090-3, "Versatile Video Coding", 2020) and ECM, a layer is a set of VCL NAL units that produce decoded content. Multiple layers in the bitstream enable the production of alternative or supplementary decoded content, thus providing content with different qualities, different spatial resolutions, or different views. As an example, VVC supports temporal scalability, quality scalability (also known as signal-to-noise ratio (SNR) scalability), spatial scalability, and multi-view scalability.
[0176] In the video coding and decoding standardization community, specifically in the Joint Video Exploration Team (JVET) of ITU-T and ISO / IEC, the system interface is modeled as the Network Abstraction Layer (NAL), and the data structures carried by this interface are called NAL units. The coded video bitstream consists of a series of NAL units. The NAL units representing the values of color component samples are called Video Coding Layer (VCL) NAL units or coded slice NAL units. The compressed data within a VCL NAL unit is called slice data, and the slice data in each slice consists of a series of CTUs sent according to a specific scan order.
[0177] In a variant of the first variant, if a first syntax element indicates that for different layers, signaling of the block data of the CTU coding associated with the CTU in the bitstream before signaling the filter parameters in the CTU loop associated with the CTU is enabled, then at the video level (e.g., in the VPS), a second syntax element (e.g., binary data) is signaled in the bitstream to indicate whether at a level different from the video level (e.g., at the sequence level), signaling of the block data of the CTU coding associated with the CTU in the bitstream before signaling the filter parameters in the CTU loop associated with the CTU is allowed for different layers.
[0178] In Figure 15 In a second exemplary embodiment of the first variant illustrated in
[0179] In a variant of the second exemplary embodiment, if the sps_inloopFilterCtuReordering_enabled_flag indicates that signaling of block data for CTU encoding / decoding associated with a CTU in the bitstream is enabled before signaling of CTU loop filter parameters associated with the CTU for the entire video sequence, then a second syntax element (e.g., binary data), denoted as sps_inloopFilterCtuReordering_allowed_flag, is signaled at the sequence level (e.g., in the SPS) to indicate whether signaling of block data for CTU encoding / decoding associated with a CTU in the bitstream is allowed at a level different from the sequence level (e.g., at the picture level) before signaling of CTU loop filter parameters associated with the CTU.
[0180] In Figure 15 In a third exemplary embodiment of the first variant illustrated in, a first syntax element, denoted as pps_inloopFilterCtuReordering_enable_flag, is signaled at the picture level (e.g., in the PPS) to indicate whether signaling of block data for CTU encoding / decoding associated with a CTU in the bitstream is enabled before signaling of CTU loop filter parameters associated with the CTU for at least one picture (e.g., for pictures referring to the same PPS).
[0181] In a variant of the third exemplary embodiment, if the pps_inloopFilterCtuReordering_enable_flag indicates that signaling of block data for CTU encoding / decoding associated with a CTU in the bitstream is enabled before signaling of CTU loop filter parameters associated with the CTU for at least one picture, then a second syntax element (e.g., binary data), denoted as pps_inloopFilterCtuReordering_allowed_flag, is signaled at the picture level (e.g., in the PPS) to indicate whether signaling of block data for CTU encoding / decoding associated with a CTU in the bitstream is allowed at a level different from the picture level (e.g., at the slice level) before signaling of CTU loop filter parameters associated with the CTU.
[0182] This exemplary embodiment is advantageous because using the PPS with different second syntax elements helps reduce the amount of data to be signaled.
[0183] In Figure 15In a fourth exemplary embodiment of the first variant illustrated herein, a syntax element (e.g., binary data), denoted as ph_inloopFilterCtuReordering_enable_flag, is signaled at a slice level (e.g., in a picture_header_structure) to indicate whether, for a slice, block data of CTU encoding / decoding associated with the CTU is signaled in a bitstream before signaling filtering parameters in a CTU loop associated with the CTU (for filtering the block).
[0184] In a second exemplary embodiment, block data of CTU encoding / decoding associated with all CTUs of an encoding / decoding structure is signaled in a bitstream before signaling filtering parameters in a CTU loop associated with all CTUs of the encoding / decoding structure (i.e., filtering parameters in a CTU loop for filtering reconstructed blocks of each CTU of the encoding / decoding structure). Block data of CTU encoding / decoding associated with all CTUs of an encoding / decoding structure is signaled in a bitstream before signaling filtering parameters in a CTU loop associated with all CTUs of the encoding / decoding structure.
[0185] The second exemplary embodiment includes separating block data of CTU encoding / decoding associated with all CTUs of an encoding / decoding structure and filtering parameters in a CTU loop associated with all CTUs of the encoding / decoding structure.
[0186] The second exemplary embodiment enables a higher level of parallelism by completely separating block data of CTU encoding / decoding from filtering parameters in a CTU loop.
[0187] Regarding a decoding process, entropy decoding processes of CTU reconstruction and filtering parameters in a CTU loop can be processed in parallel at a level higher than the CTU level.
[0188] Figure 16 A schematic block diagram is shown illustrating an order of steps for generating, at an encoding side, block data of a series of CTU encoding / decoding of a CTU with respect to an encoding / decoding structure of a video picture and filtering parameters in a CTU loop for performing in-loop filtering on reconstructed blocks of the CTU.
[0189] In Figure 16 , the encoding / decoding structure is a slice, but the present invention can be extended to any other encoding / decoding structure, such as a tile or a sub-picture.
[0190] First, in step 700, a CTU index is initialized. The CTU index refers to the current CTU of the encoding / decoding structure, which is a slice here. In step 710, by according to Figure 5The method encodes the blocks of the current CTU to obtain the CTU block codec data. Then, the blocks of the current CTU are reconstructed.
[0191] Next, in step 740, the CTU codec block data of the current CTU is entropy encoded and signaled in the bitstream.
[0192] The CTU index is incremented and steps 710 and 740 are iterated until all CTUs of the slice have been considered.
[0193] In step 700, the CTU index is initialized. The CTU index refers to the current CTU of the codec structure, which is the slice here. In step 720, the reconstructed CTU blocks of the current CTU are filtered (in-loop filtering) using the CTU in-loop filtering parameters associated with the current CTU. Next, in step 730, the CTU in-loop filtering parameters associated with the current CTU are entropy encoded and signaled in the bitstream.
[0194] The CTU index is incremented and steps 720 and 730 are iterated until all CTUs of the slice have been considered.
[0195] Figure 17 Fig. shows a schematic block diagram illustrating the order of steps for generating, at a decoding side, a series of CTU codec block data for CTUs of a codec structure relative to a video picture and CTU in-loop filtering parameters for performing in-loop filtering on the reconstructed blocks of the CTUs.
[0196] In Figure 17 the codec structure is a slice, but the present invention can be extended to any other codec structure, such as a tile or a sub-picture.
[0197] First, in step 700, the CTU index is initialized. The CTU index refers to the current CTU of the codec structure, which is the slice here. In step 820, the CTU codec block data associated with the current CTU is obtained by parsing the bitstream and by applying entropy decoding. Figure 6 The method of
[0198] decodes the blocks of the current CTU by using the CTU codec block data associated with the current CTU and obtains the reconstructed CTU blocks associated with the current CTU in step 830.
[0199] In step 700, the CTU index is initialized. The CTU index refers to the current CTU of the coding structure, which is the slice here. In step 810, by parsing the bitstream and by applying entropy decoding, the CTU loop filter parameters associated with the current CTU are obtained. In step 840, the reconstructed CTU block associated with the current CTU is filtered (in-loop filtering) using the CTU loop filter parameters associated with the current CTU.
[0200] The CTU index is incremented and steps 810 and 840 are iterated until all CTUs of the slice have been considered.
[0201] Figure 18 An example of the coding structure slice_data with respect to a slice according to an exemplary embodiment of the present invention is shown.
[0202] Figure 18 The coding structure slice-data in is an updated version of the coding structure slice_data as defined in VVC.
[0203] Figure 18 The coding structure slice-data in includes the syntax element coding_tree_slice_data that carries the block data of the CTU coding associated with all CTUs (the slice here) of the coding structure, and the coding structure loopfilter_slice_data that carries the CTU loop filter parameters associated with all CTUs (the slice here) of the coding structure.
[0204] The coding structure coding_tree_slice_data includes the coding structure coding_tree_unit as illustrated Figure 19 above. The coding structure coding_tree_unit includes the syntax elements related to the block data of the CTU coding of the coding structure coding_tree_unit in Figure 14 The coding structure loopfilter_slice_data includes the coding structure in-loopfilter_coding_tree_unit as illustrated
[0205] in. The coding structure in-loopfilter_coding_tree_unit includes the syntax elements related to the CTU loop filter parameters of the coding structure coding_tree_unit in Figure 20 The coding structure in-loopfilter_coding_tree_unit includes the syntax elements related to the CTU loop filter parameters of the coding structure coding_tree_unit in Figure 14 The coding structure in-loopfilter_coding_tree_unit includes the syntax elements related to the CTU loop filter parameters of the coding structure coding_tree_unit in
[0206] Signaling the block data of CTU coding associated with all CTUs of the coding structure in the bitstream before signaling the in-loop filter parameters associated with all CTUs of the coding structure can be done with advanced syntax to enable adaptation at the sequence picture set (SPS), picture parameter set (PPS), video parameter set (VPS), adaptive parameter set (APS), and slice header (HS) of the current VVC.
[0207] In a first variant of the second exemplary embodiment, a first syntax element (e.g., binary data) is signaled in the bitstream to indicate whether to signal the block data of CTU coding associated with all CTUs of the coding structure in the bitstream before signaling the in-loop filter parameters associated with all CTUs of the coding structure.
[0208] In an exemplary embodiment of the first variant, the first syntax element is signaled at the video level (e.g., in the VPS) to indicate whether to signal the block data of CTU coding associated with all CTUs of the coding structure in the bitstream before signaling the in-loop filter parameters associated with all CTUs of the coding structure for different layers.
[0209] In a variant of the first variant, if the first syntax element indicates to signal the block data of CTU coding associated with all CTUs of the coding structure in the bitstream before signaling the in-loop filter parameters associated with all CTUs of the coding structure for different layers, then a second syntax element (e.g., binary data) is signaled in the bitstream at the video level (e.g., in the VPS) to indicate whether to allow signaling the block data of CTU coding associated with all CTUs of the coding structure in the bitstream before signaling the in-loop filter parameters associated with all CTUs of the coding structure for different layers at a level different from the video level (e.g., at the sequence level).
[0210] In Figure 21 In a second exemplary embodiment of the first variant illustrated in Figure 21 a first syntax element (represented as sps_inloopFilterSdReordering_enabled_flag in
[0211] In a variant of the second exemplary embodiment, if the sps_inloopFilterSdReordering_enabled_flag indicates that block data of CTU coding associated with the CTU or all CTUs of the coding structure is signaled before signaling the CTU loop filter parameters associated with the CTU or all CTUs of the coding structure for the entire video sequence, then a second syntax element (e.g., binary data), denoted as pps_inloopFilterSdReordering_allowed_flag, is signaled at the sequence level (e.g., in the SPS) to indicate whether it is allowed to signal block data of CTU coding associated with the CTU or all CTUs of the coding structure before signaling the CTU loop filter parameters associated with the CTU or all CTUs of the coding structure at a level different from the sequence level (e.g., at the picture level).
[0212] In Figure 21 In a third exemplary embodiment of the first variant illustrated in, a first syntax element, denoted as pps_inloopFilterSdReordering_enable_flag, is signaled at the picture level (e.g., in the PPS) to indicate whether block data of CTU coding associated with the CTU or all CTUs of the coding structure is enabled before signaling the CTU loop filter parameters associated with the CTU or all CTUs of the coding structure for at least one picture (e.g., for pictures referring to the same PPS).
[0213] In a variant of the third exemplary embodiment, if the pps_inloopFilterSdReordering_enable_flag indicates that block data of CTU coding associated with the CTU or all CTUs of the coding structure is enabled before signaling the CTU loop filter parameters associated with the CTU or all CTUs of the coding structure for at least one picture, then a second syntax element (e.g., binary data), denoted as pps_inloopFilterSdReordering_allowed_flag, is signaled at the picture level (e.g., in the PPS) to indicate that it is allowed to signal block data of CTU coding associated with the CTU or all CTUs of the coding structure before signaling the CTU loop filter parameters associated with the CTU or all CTUs of the coding structure at a level different from the picture level (e.g., at the slice level).
[0214] This exemplary embodiment is advantageous because using the PPS with different second syntax elements helps reduce the amount of data to be signaled.
[0215] In Figure 21 the fourth exemplary embodiment of the first variant illustrated in Figure 21 , if the pps_inloopFilterSdReordering_allowed_flag indicates that it is allowed to signal the block data of CTU coding associated with a CTU or all CTUs of the coding structure before signaling the loop filter parameters in the CTU loop associated with the CTU or all CTUs of the coding structure at a level different from the picture level (e.g., at the slice level), then a second syntax element (e.g., binary data) (denoted as ph_inloopFilterSdReordering_enable_flag) is signaled in the syntax elements at said level (e.g., in the slice header when said level is the slice level) to indicate whether to enable signaling the block data of CTU coding associated with a CTU or all CTUs of the coding structure before signaling the loop filter parameters in the CTU loop associated with the CTU or all CTUs of the coding structure at said level (e.g., at the slice level).
[0216] In a variant of the second exemplary embodiment, the loop filter parameters in the CTU loop associated with a CTU or all CTUs of the coding structure are signaled by picture component.
[0217] This variant is advantageous because the in-loop filter can have specific syntax for different picture components. For example, different in-loop filter syntax can be signaled, one for the luminance component and one for each chrominance picture component.
[0218] In one exemplary embodiment, Figure 18 the loopfilter_slice_data of the coding structure can be used to signal the loop filter parameters in the CTU loop associated with a CTU or all CTUs of the coding structure by picture component.
[0219] In another variant of the exemplary embodiment, the loop filter parameters in the CTU loop associated with a CTU or all CTUs of the coding structure are signaled by filter type.
[0220] For example, the loop filter parameters in the CTU loop associated with a CTU or some CTUs of the coding structure can be signaled for SAO, and the parameters in the other CTU loop associated with another CTU or other CTUs of the coding structure can be signaled for ALF.
[0221] In one exemplary embodiment, Figure 18A modified version of the loopfilter_slice_data codec structure can be used to signal the filtering parameters in the CTU loop used by a particular filter.
[0222] The modification is very simple and consists of separating all the loops on the CTUs in the Figure 18 loopfilter_slice_data codec structure into up to as many different loops as there are existing filters.
[0223] Figure 22 FIG. 9 shows a schematic block diagram of an example of a system 900 in which various aspects and exemplary embodiments are implemented.
[0224] System 900 may be embedded as one or more devices, including the various components described below. In various exemplary embodiments, system 900 may be configured to implement one or more aspects described in this application.
[0225] Examples of equipment that may form all or part of system 900 include personal computers, laptop computers, smart phones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected household appliances, connected vehicles and their associated processing systems, head-mounted display devices (HMDs, see-through glasses), projectors, "caves" (systems including multiple displays), servers, video encoders, video decoders, post-processors that process the output from a video decoder, pre-processors that provide input to a video encoder, web servers, video servers (e.g., broadcast servers, video-on-demand servers, or web servers), still or video cameras, encoding or decoding chips, or any other communication device. The elements of system 900 may be implemented singly or in combination in a single integrated circuit (IC), multiple ICs, and / or discrete components. For example, in at least one exemplary embodiment, the processing and encoder / decoder elements of system 900 may be distributed across multiple ICs and / or discrete components. In various exemplary embodiments, system 900 may be communicatively coupled to other similar systems or other electronic devices via, for example, a communication bus or through dedicated input and / or output ports.
[0226] System 900 may include at least one processor 910 configured to execute instructions loaded therein for implementing various aspects described in, for example, the present application. The processor 910 may include embedded memory, input / output interfaces, and various other circuits known in the art. System 900 may include at least one memory 920 (e.g., volatile memory devices and / or non-volatile memory devices). System 900 may include a storage device 940, 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, disk drives, and / or optical disk drives. As a non-limiting example, the storage device 940 may include internal storage devices, attached storage devices, and / or network-accessible storage devices.
[0227] System 900 may include an encoder / decoder module 930 configured to, for example, process data to provide encoded / decoded video picture data, and the encoder / decoder module 930 may include its own processor and memory. The encoder / decoder module 930 may represent one or more modules that may be included in a device to perform encoding and / or decoding functions. As is known, a device may include one or both of an encoding and a decoding module. Additionally, the encoder / decoder module 930 may be implemented as a separate element of System 900 or may be incorporated within the processor 910 as a combination of hardware and software known to those skilled in the art.
[0228] The program code to be loaded onto the processor 910 or the encoder / decoder 930 to execute the various aspects described in the present application may be stored in the storage device 940 and subsequently loaded onto the memory 920 for execution by the processor 910. According to various exemplary embodiments, during the execution of the processes described in the present application, one or more of the processor 910, the memory 920, the storage device 940, and the encoder / decoder module 930 may store one or more of various items. Such stored items may include but are not limited to video picture data, information data for encoding / decoding video picture data, bitstreams, matrices, variables, and intermediate or final results of equations, formulas, operations, and operation logic processing.
[0229] In several exemplary embodiments, the memory internal to the processor 910 and / or the encoder / decoder module 930 may be used to store instructions and provide a working memory for processing that may be performed during encoding or decoding.
[0230] However, in other exemplary embodiments, a memory external to the processing device (e.g., the processing device can be the processor 910 or the encoder / decoder module 930) is used for one or more of these functions. The external memory can be the memory 920 and / or the storage device 940, e.g., dynamic volatile memory and / or non-volatile flash memory. In several exemplary embodiments, the external non-volatile flash memory is used to store the operating system of the television. In at least one exemplary embodiment, a fast external dynamic volatile memory such as RAM can be used as a working memory for video encoding and decoding operations, e.g., for MPEG-2 Part 2 (also known as ITU-T Recommendation H.262 and ISO / IEC 13818-2, also known as MPEG-2 video), AVC, HEVC, EVC, VVC, AV1, etc.
[0231] As indicated in block 990, input to the elements of the system 900 can be provided through various input devices. Such input devices include, but are not limited to, (i) an RF portion that can receive an RF signal, e.g., transmitted over the air by a broadcast device, (ii) composite input terminals, (iii) USB input terminals, (iv) HDMI input terminals, (v) a bus when the present invention is implemented in the automotive field, such as a CAN (Controller Area Network), CAN FD (Controller Area Network Flexible Data Rate), FlexRay (ISO 17458), or Ethernet (ISO / IEC 802-3) bus.
[0232] In various exemplary embodiments, the input devices of block 990 have associated respective input processing elements, as known in the art. For example, the RF portion can be associated with elements necessary for (i) selecting a desired frequency (also known as selecting a signal or band-limiting a signal to a frequency band), (ii) down-converting the selected signal, (iii) band-limiting again to a narrower frequency band to select a signal frequency band that can be referred to as a channel in some exemplary embodiments, (iv) demodulating the down-converted and band-limited signal, (v) performing error correction, and (vi) de-multiplexing to select a desired stream of data packets. The RF portion of various exemplary embodiments can include one or more elements that perform these functions, e.g., a frequency selector, a signal selector, a band limiter, a channel selector, a filter, a down-converter, a demodulator, an error corrector, and a de-multiplexer. The RF portion can include a tuner that performs various functions among these functions, including, for example, down-converting a received signal to a lower frequency (e.g., an intermediate frequency or a near-baseband frequency) or a baseband.
[0233] In one embodiment of a set-top box, the RF section and its associated input processing elements may receive RF signals transmitted over a wired (e.g., cable) medium. The RF section may then perform frequency selection by filtering, down-converting, and filtering again to a desired frequency band.
[0234] Various exemplary embodiments rearrange the order of the above (and other) elements, remove some of these elements, and / or add other elements that perform similar or different functions.
[0235] Adding elements may include inserting elements between existing elements, such as, for example, inserting an amplifier and an analog-to-digital converter. In various exemplary embodiments, the RF section may include an antenna.
[0236] In addition, the USB and / or HDMI terminals may include respective interface processors for connecting the system 900 to other electronic devices via a USB and / or HDMI connection. 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 processor 910 when necessary. Similarly, various aspects of USB or HDMI interface processing may be implemented within a separate interface IC or within the processor 910 when necessary. The demodulated, error-corrected, and demultiplexed stream may be provided to various processing elements, including, for example, the processor 910 and the encoder / decoder 930, which operate in conjunction with memory and storage elements to process the data stream, when necessary, for presentation on an output device.
[0237] The various elements of the system 900 may be provided within an integrated housing. Within the integrated housing, a suitable connection arrangement 990, such as, for example, an internal bus (including the I2C bus), wiring, and a printed circuit board known in the art, may be used to interconnect the various elements and transfer data between them.
[0238] The system 900 may include a communication interface 950 that enables communication with other devices via a communication channel 951. The communication interface 950 may include, but is not limited to, a transceiver configured to transmit and receive data over the communication channel 951. The communication interface 950 may include, but is not limited to, a modem or a network card, and the communication channel 951 may be implemented, for example, within a wired and / or wireless medium.
[0239] In various exemplary embodiments, Wi-Fi networks such as IEEE 802.11 can be used to stream data to system 900. The Wi-Fi signals of these exemplary embodiments can be received through a communication channel 951 and a communication interface 950 adapted for Wi-Fi communication. The communication channel 951 of these exemplary embodiments can generally be connected to an access point or a router that provides access to an external network including the Internet to allow streaming applications and other over-the-top communications.
[0240] Other exemplary embodiments can use a set-top box to provide streaming data to system 900, and the set-top box transfers data through the HDMI connection of input box 990.
[0241] Still other exemplary embodiments can use the RF connection of input box 990 to provide streaming data to system 900.
[0242] The streaming data can be used as a way of signaling information used by system 900. The signaling information can include bitstream B and / or information such as the number of video picture pixels and / or any encoding / decoding setting parameters.
[0243] It should be recognized that signaling can be implemented in various ways. For example, in various exemplary embodiments, one or more syntax elements, flags, etc. can be used to signal information to the corresponding decoder.
[0244] System 900 can provide output signals to various output devices, including a display 961, speakers 971, and other peripheral devices 981. In various examples of the exemplary embodiments, other peripheral devices 981 can include one or more of a standalone DVR, a disc player, a stereo system, a lighting system, and other devices based on the output providing functions of system 900.
[0245] In various exemplary embodiments, control signals can be communicated between system 900 and the display 961, speakers 971, or other peripheral devices 981 using signaling of communication protocols such as AV.Link (Audio / Video Link), CEC (Consumer Electronics Control), or other communication protocols that enable device-to-device control with or without user intervention.
[0246] The output devices can be communicatively coupled to system 900 through dedicated connections via corresponding interfaces 960, 970, and 980.
[0247] Alternatively, the output device can be connected to system 900 via communication interface 950 using communication channel 951. Display 961 and speaker 971 can be integrated in a single unit with other components of the system 900 in an electronic device such as, for example, a television set.
[0248] In various exemplary embodiments, display interface 960 can include a display driver such as, for example, a timing controller (TCon) chip.
[0249] For example, if the RF portion of input terminal 990 is part of a separate set-top box, then display 961 and speaker 971 can optionally be separate from one or more of the other components. In various exemplary embodiments where display 961 and speaker 971 can be 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.
[0250] In Figures 1 - 22 this document, various methods are described and each method includes one or more steps or actions to implement the described method. Unless the correct operation of the method requires a specific order of steps or actions, the order and / or use of specific steps and / or actions can be modified or combined.
[0251] Some examples are described with respect to block diagrams and / or operational flowcharts. Each block represents a circuit element, module, or portion of code that includes one or more executable instructions for implementing the specified logical function(s). It should also be noted that in other implementations, the functions labeled in the blocks may not occur in the order indicated. For example, depending on the functions involved, two blocks shown in succession may actually be executed substantially concurrently, or sometimes the blocks may be executed in the reverse order.
[0252] The embodiments and aspects described herein can be implemented in, for example, a method or process, an apparatus, a computer program, a data stream, a bit stream, or a signal. Even if discussed only in the context of a single form of implementation (e.g., only as a method), the embodiments of the features discussed can be implemented in other forms (e.g., an apparatus or a computer program).
[0253] A method can be implemented in, for example, a processor, which generally refers to a processing device including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. The processor also includes a communication device.
[0254] In addition, the method can be implemented by instructions executed by a processor, and such instructions (and / or data values generated by the embodiments) can be stored on a computer-readable storage medium. The computer-readable storage medium can take the form of a computer-readable program product implemented in one or more computer-readable media and having computer-readable program code executable by a computer implemented thereon. A computer-readable storage medium can be considered a non-transitory storage medium given its inherent ability to store information and the inherent ability to retrieve information provided therefrom. The computer-readable storage medium can be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. It should be recognized that the following, while providing more specific examples of computer-readable storage media to which this exemplary embodiment can be applied, is merely illustrative and not an exhaustive list: a portable computer floppy disk; a hard disk; a read-only memory (ROM); an erasable programmable read-only memory (EPROM or flash memory); a portable compact disc read-only memory (CD-ROM); an optical storage device; a magnetic storage device; or any suitable combination of the foregoing.
[0255] The instructions can form an application program tangibly implemented on a processor-readable medium.
[0256] For example, the instructions can be in hardware, firmware, software, or a combination. For example, the instructions can be found in an operating system, a separate application, or a combination of both. Thus, a processor can be characterized as, for example, a device configured to execute a process and a device including a processor-readable medium (such as a storage device) having instructions for executing the process. Additionally, in addition to or instead of the instructions, the processor-readable medium can store data values generated by the embodiments.
[0257] The apparatus can be implemented in, for example, appropriate hardware, software, and firmware. Examples of such apparatus include personal computers, laptop computers, smart phones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected household appliances, head-mounted display devices (HMDs, see-through glasses), projectors, "caves" (systems including multiple displays), servers, video encoders, video decoders, post-processors that process the output from a video decoder, pre-processors that provide input to a video encoder, web servers, set-top boxes, and any other device for processing video frames, or other communication devices. It should be clear that the equipment can be mobile and even installed in a moving vehicle.
[0258] Computer software can be implemented by the processor 910 or by hardware, or by a combination of hardware and software. As a non-limiting example, the exemplary embodiments can also be implemented by one or more integrated circuits. The memory 920 can be of any type suitable for the technical environment and can be implemented using any appropriate data storage technology (such as optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory, as non-limiting examples). The processor 910 can be of any type suitable for the technical environment and can encompass one or more of a microprocessor, a general-purpose computer, a special-purpose computer, and a processor based on a multi-core architecture, as non-limiting examples).
[0259] As will be apparent to those of ordinary skill in the art, the implementations can generate various signals that are formatted to carry information such as can be stored or transmitted. The information can include, for example, instructions for performing a method or data generated by one of the described implementations. For example, the signal can be formatted to carry a bitstream of the described exemplary embodiments. Such a signal can be formatted, for example, as an electromagnetic wave (e.g., using the radio frequency part of the spectrum) or a baseband signal. The formatting can include, for example, encoding a data stream and modulating a carrier wave with the encoded data stream. The information carried by the signal can be, for example, analog or digital information. As is known, the signal can be transmitted via various different wired or wireless links. The signal can be stored on a processor-readable medium.
[0260] The terms used herein are for the purpose of describing particular exemplary embodiments only and are not intended to be limiting. As used herein, the singular forms "a", "an", and "the" may also be intended to include the plural forms, unless the context clearly indicates otherwise. It will be further understood that when used in this specification, the terms "include / comprise" and / or "including / comprising" may specify the presence of the stated features, integers, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof. Also, when an element is referred to as "responsive to" or "connected to" or "associated with" another element, it can be directly responsive or connected to or associated with the other element, or there can be intervening elements. In contrast, when an element is referred to as "directly responsive to" or "directly connected to" or "directly associated with" another element, there are no intervening elements.
[0261] It should be recognized that, for example, in the cases of "A / B", "A and / or B", and "at least one of A and B", the use of any one of the symbols / terms " / ", "and / or", and "at least one" can be intended to cover the selection of only the first-listed option (A), or only the second-listed option (B), or the selection of both options (A and B). As a further example, in the cases of "A, B, and / or C" and "at least one of A, B, and C", such phrasing is intended to cover the selection of only the first-listed option (A), or only the second-listed option (B), or only the third-listed option (C), or the selection of only the first and second-listed options (A and B), or the selection of only the first and third-listed options (A and C), or the selection of only the second and third-listed options (B and C), or the selection of all three options (A and B and C). As will be clear to those of ordinary skill in the art and related fields, this can be extended to as many items as are listed.
[0262] A variety of numerical values can be used in this application. Specific values can be used for illustrative purposes and the aspects described are not limited to these specific values.
[0263] It will be understood that although the terms first, second, etc. may be used herein to describe various elements, these elements are not limited by these terms. These terms are only used to distinguish one element from another. For example, without departing from the teachings of this application, a first element may be referred to as a second element, and similarly, a second element may be referred to as a first element. No ordering is implied between the first element and the second element.
[0264] References to "an exemplary embodiment" or "exemplary embodiments" or "an embodiment" or "embodiments" and other variations thereof are frequently used to convey that a particular feature, structure, characteristic, etc. (described in connection with the exemplary embodiment / embodiment) is included in at least one exemplary embodiment / embodiment. Thus, the appearance of the phrases "in an exemplary embodiment" or "in exemplary embodiments" or "in an embodiment" or "in embodiments" and any other variations thereof throughout this application does not necessarily refer to the same exemplary embodiment.
[0265] Similarly, references in this document to "according to an exemplary embodiment / example / implementation" or "in an exemplary embodiment / example / implementation" and other variations are frequently used to convey that a particular feature, structure, or characteristic (described in connection with an exemplary embodiment / example / implementation) may be included in at least one exemplary embodiment / example / implementation. Thus, the phrases "according to an exemplary embodiment / example / implementation" or "in an exemplary embodiment / example / implementation" that appear throughout this application do not necessarily refer to the same exemplary embodiment / example / implementation, nor do the individual or alternative exemplary embodiments / examples / implementations have to be mutually exclusive of other exemplary embodiments / examples / implementations.
[0266] The reference numerals that appear in the claims are for illustration only and shall have no limiting effect on the scope of the claims. Although not explicitly described, this exemplary embodiment / example and variations can be employed in any combination or sub-combination.
[0267] When a figure is presented as a flowchart, it should be understood that it also provides a block diagram of the corresponding apparatus. Similarly, when a figure is presented as a block diagram, it should be understood that it also provides a flowchart of the corresponding method / process.
[0268] Although some figures include arrows on communication paths to indicate the main direction of communication, it should be understood that communication can occur in a direction opposite to the depicted arrows.
[0269] Various embodiments relate to decoding. As used in this application, "decoding" can cover, for example, all or part of the process of performing on a received video picture (which may include a received bitstream encoding one or more video pictures) to produce a final output suitable for display or further processing in a reconstructed video domain. In various exemplary embodiments, such processes include one or more of the processes typically performed by a decoder. In various exemplary embodiments, for example, such processes also or optionally include processes performed by the decoders of the various embodiments described in this application.
[0270] As a further example, in one exemplary embodiment "decoding" can refer only to dequantization, in one exemplary embodiment "decoding" can refer to entropy decoding, in another exemplary embodiment, "decoding" can refer only to differential decoding, and in another exemplary embodiment, "decoding" can refer to a combination of dequantization, entropy decoding, and differential decoding. Based on the context of the specific description, whether the phrase "decoding process" is intended to specifically refer to a subset of operations or generally to a broader decoding process will be clear and is believed to be well understood by those skilled in the art.
[0271] Various embodiments relate to encoding. In a manner similar to the above discussion regarding "decoding", "encoding" as used in this application may cover, for example, all or part of a process performed on an input video picture to produce an output bitstream. In various exemplary embodiments, such processes include one or more of the processes typically performed by an encoder. In various exemplary embodiments, such processes also include or alternatively include processes performed by the encoders of the various embodiments described in this application.
[0272] As a further example, in one exemplary embodiment, "encoding" may refer only to quantization, in one exemplary embodiment, "encoding" may refer only to entropy encoding, in another exemplary embodiment, "encoding" may refer only to differential encoding, and in another exemplary embodiment, "encoding" may refer to a combination of quantization, differential encoding, and entropy encoding. Based on the context of a particular description, whether the phrase "encoding process" is intended to specifically refer to a subset of operations or generally to a broader encoding process will be clear and is believed to be well understood by those skilled in the art.
[0273] In addition, this application may refer to "obtaining" each piece of information. Obtaining information may include, for example, one or more of the following: estimating information, calculating information, predicting information, or retrieving information from a memory, processing information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information.
[0274] In addition, this application may refer to "receiving" each piece of information. Receiving information may include, for example, one or more of the following: accessing information or receiving information from a communication network.
[0275] Moreover, as used herein, the word "signal" especially refers to indicating something to a corresponding decoder, etc. For example, in certain exemplary embodiments, an encoder signals specific information, such as block data for CTU encoding and decoding, filtering parameters in a CTU loop, or encoded video picture data. In this way, in an exemplary embodiment, the same parameters can be used on the encoder side and the decoder side. Thus, for example, an encoder can transmit (explicit signaling) specific parameters to a decoder so that the decoder can use the same specific parameters. Conversely, if the decoder already has specific parameters and other parameters, then signaling can be used without transmission (implicit signaling) simply to allow the decoder to know and select the specific parameters. By avoiding the transmission of any actual functionality, bit savings are achieved in various exemplary embodiments. It should be recognized that signaling can be done in various ways. For example, in various exemplary embodiments, one or more syntax elements, flags, etc. are used to signal information to a corresponding decoder. Although the foregoing relates to the verb form of the word "signal", the word "signal" can also be used as a noun herein.
[0276] Multiple embodiments have been described. However, it should be understood that various modifications can be made. For example, elements of different embodiments can be combined, supplemented, modified, or removed to produce other embodiments. In addition, those of ordinary skill in the art will understand that other structures and processes can replace the disclosed structures and processes, and the resulting embodiments will perform at least substantially the same function(s) in at least substantially the same manner(s) to achieve at least substantially the same result(s) as the disclosed embodiments. Accordingly, this application contemplates these and other embodiments.
Claims
1. A method for signaling block data for encoding and decoding of a video sequence including video pictures and in-loop filtering parameters in a bitstream, each video picture being split into a plurality of coding tree units, denoted as CTUs, each CTU including CTU blocks, obtaining CTU-encoded block data for the CTU by encoding the blocks of each CTU, obtaining a reconstructed CTU block associated with the CTU by decoding the CTU-encoded block data associated with the CTU, filtering the reconstructed CTU block associated with the CTU using in-loop filtering parameters associated with the CTU (denoted as CTU in-loop filtering parameters), wherein the CTU-encoded block data associated with the CTU is signaled in the bitstream before signaling the CTU in-loop filtering parameters associated with the CTU.
2. The method according to claim 1, wherein the CTU-encoded block data associated with all CTUs of a coding structure including more than one CTU is signaled in the bitstream before signaling the CTU in-loop filtering parameters associated with all CTUs of the coding structure.
3. The method according to claim 1 or 2, wherein a first syntax element is signaled in the bitstream to indicate whether to enable signaling the CTU-encoded block data associated with the CTU or with all CTUs of a coding structure in the bitstream before signaling the CTU in-loop filtering parameters associated with the CTU or with all CTUs of the coding structure.
4. The method according to claim 3, wherein the first syntax element is signaled at the video level to indicate whether to enable signaling the CTU-encoded block data associated with the CTU or with all CTUs of a coding structure in the bitstream before signaling the CTU in-loop filtering parameters associated with the CTU or with all CTUs of the coding structure for different layers.
5. The method according to claim 4, wherein, If the first syntax element indicates to enable signaling the CTU-encoded block data associated with the CTU or with all CTUs of a coding structure in the bitstream before signaling the CTU in-loop filtering parameters associated with the CTU or with all CTUs of the coding structure for different layers, then a second syntax element is signaled at the video level in the bitstream to indicate whether it is allowed to enable signaling the CTU-encoded block data associated with the CTU or with all CTUs of a coding structure in the bitstream before signaling the CTU in-loop filtering parameters associated with the CTU or with all CTUs of the coding structure at a level different from the video level for different layers.
6. The method according to claim 3, wherein at the sequence level, signaling the first syntax element to indicate whether to signal in the bitstream the block data of the CTU coding associated with the CTU or all CTUs of the coding structure before signaling the filtering parameters in the CTU cycle associated with the CTU or all CTUs of the coding structure for the entire video sequence.
7. The method according to claim 6, wherein, If the first syntax element indicates to signal in the bitstream the block data of the CTU coding associated with the CTU or all CTUs of the coding structure before signaling the filtering parameters in the CTU cycle associated with the CTU or all CTUs of the coding structure for the entire video sequence, then at the sequence level, signaling a second syntax element in the bitstream to indicate whether to allow signaling in the bitstream the block data of the CTU coding associated with the CTU or all CTUs of the coding structure before signaling the filtering parameters in the CTU cycle associated with the CTU or all CTUs of the coding structure at a level different from the sequence level.
8. The method according to claim 3, wherein at the picture level, signaling the first syntax element to indicate whether to signal in the bitstream the block data of the CTU coding associated with the CTU or all CTUs of the coding structure before signaling the filtering parameters in the CTU cycle associated with the CTU or all CTUs of the coding structure for at least one picture.
9. The method according to claim 8, wherein, If the first syntax element indicates to signal in the bitstream the block data of the CTU coding associated with the CTU or all CTUs of the coding structure before signaling the filtering parameters in the CTU cycle associated with the CTU or all CTUs of the coding structure for at least one picture, then at the picture level, signaling a second syntax element to indicate whether to allow signaling in the bitstream the block data of the CTU coding associated with the CTU or all CTUs of the coding structure before signaling the filtering parameters in the CTU cycle associated with the CTU or all CTUs of the coding structure at a level different from the picture level.
10. The method according to claim 3, wherein at the slice level, signaling the first syntax element to indicate whether to signal in the bitstream the block data of the CTU coding associated with the CTU or all CTUs of the coding structure before signaling the filtering parameters in the CTU cycle associated with the CTU or all CTUs of the coding structure at the slice level.
11. The method according to any one of claims 1 to 10, wherein the filtering parameters in the CTU cycle associated with the CTU or all CTUs of the coding structure are signaled by picture component.
12. The method according to any one of claims 1 to 11, wherein the in-loop filtering parameters associated with a CTU or all CTUs of the coding / decoding structure are signaled according to filter type.
13. A method for encoding a video sequence including video pictures in a bitstream, each video picture being split into a plurality of coding tree units, denoted as CTUs, each CTU including CTU blocks, obtaining block data of CTU coding / decoding of the CTU by encoding the blocks of each CTU, obtaining a reconstructed CTU block associated with the CTU by decoding the block data of CTU coding / decoding associated with the CTU, filtering the reconstructed CTU block associated with the CTU using in-loop filtering parameters associated with the CTU (denoted as CTU in-loop filtering parameters), wherein the block data of CTU coding / decoding associated with the CTU and the CTU in-loop filtering parameters are signaled according to the method according to any one of claims 1 to 12.
14. A method for decoding a video sequence including video pictures from a bitstream, each video picture being split into a plurality of coding tree units, denoted as CTUs, each CTU including CTU blocks, obtaining block data of CTU coding / decoding for each CTU by parsing the bitstream, obtaining a reconstructed CTU block associated with the CTU by decoding the block data of CTU coding / decoding associated with the CTU, filtering the reconstructed CTU block associated with the CTU using in-loop filtering parameters associated with the CTU (denoted as CTU in-loop filtering parameters), wherein the block data of CTU coding / decoding associated with the CTU and the CTU in-loop filtering parameters are signaled according to the method according to any one of claims 1 to 12.
15. A bitstream formatted to include encoded video picture data and information data obtained from the method according to claim 13.
16. An apparatus comprising components for performing one of the methods according to any one of claims 1 to 14.
17. A computer program product comprising instructions which, when executed by one or more processors, cause the one or more processors to perform the method according to any one of claims 1 to 14.
18. A non-transitory storage medium carrying instructions for a program code for performing the method according to any one of claims 1 to 14.