Entropy coding and decoding for video coding and decoding
By identifying and using the encoding and decoding context of syntax elements that do not use adjacent blocks in video encoding and decoding, the problem of context derivation complexity in the entropy encoding and decoding process is solved, and a more efficient encoding and decoding process is achieved.
Patent Information
- Application Number
- CN202411899916.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2019-03-11
- Filing Date
- 2020-03-05
- Publication Date
- 2025-03-18
AI Technical Summary
In the existing video encoding and decoding technologies, the context derivation complexity of syntax elements during entropy encoding and decoding is high, which affects the encoding and decoding efficiency and complexity.
The number of contexts is reduced by identifying the codec context associated with the syntax elements of the current codec unit without using the syntax elements of the adjacent blocks and encoding or decoding the syntax elements based on the context.
The number and complexity of operations in the entropy encoding and decoding process are reduced, the encoding and decoding efficiency is improved, and resource consumption is reduced.
Smart Images

Figure CN119653117A_ABST
Abstract
Description
[0001] This divisional application is a divisional application with a filing date of March 5, 2020, application number 202080020745.8, and invention name “Entropy coding and decoding for video encoding and decoding”. Technical Field
[0002] The present disclosure relates to video encoding and decoding. Background Art
[0003] In order to achieve high compression efficiency, image and video coding schemes usually use prediction and transformation to exploit spatial and temporal redundancy in video content. Typically, intra-frame or inter-frame prediction is used to exploit intra-frame or inter-frame correlation, and then the difference between the original picture block and the predicted picture block (usually expressed as a prediction error or prediction residual) is transformed, quantized, and entropy encoded and decoded. In order to reconstruct the video, the compressed data is decoded by the reverse process corresponding to prediction, transformation, quantization, and entropy encoding and decoding. Summary of the invention
[0004] In general, one aspect of the present disclosure is directed to providing various methods or modifications to entropy coding and decoding.
[0005] At least one example of an embodiment is provided, which relates to an encoder and / or decoder for applying a form of entropy coding and decoding based on information provided by at least one syntax element, and deriving a number of contexts for the at least one syntax element, wherein the derivation includes reducing the number of contexts.
[0006] At least one other example of an embodiment of a method for encoding syntax information associated with video information is provided, the method comprising: identifying a codec context associated with syntax elements of a current codec unit of the video information, wherein the identification occurs without using syntax elements of neighboring blocks; and encoding the syntax elements of the current codec unit based on the codec context.
[0007] At least one other example of an embodiment of a method for decoding syntax information associated with video information is provided, the method comprising: identifying a codec context associated with syntax elements of a current codec unit of the video information, wherein the identification occurs without using syntax elements of neighboring blocks; and decoding the syntax elements of the current codec unit based on the codec context.
[0008] At least one other example of an embodiment is provided involving an apparatus for encoding syntax information associated with video information, the apparatus comprising: one or more processors configured to identify a codec context associated with a syntax element of a current codec unit without using syntax elements of neighboring blocks; and encode the syntax element of the current codec unit based on the codec context.
[0009] At least one other example of an embodiment is provided involving an apparatus for decoding syntax information associated with video information, the apparatus comprising: one or more processors configured to identify a codec context associated with a syntax element of a current codec unit without using syntax elements of neighboring blocks; and decode the syntax element of the current codec unit based on the codec context.
[0010] At least one other example of an embodiment may involve one or more of: a syntax element including an adaptive motion vector resolution (AMVR) flag, or an entropy coding form including context adaptive binary arithmetic coding (CABAC), or reducing the number of contexts of one or more syntax elements using left and above neighboring syntax elements, or reducing the number of contexts of one or more syntax elements based on sharing contexts with multiple different binary bit (binary bit) indices for the same block size or sharing context index sets for different block sizes, for example, when signaling the coordinates of the last significant coefficient.
[0011] As explained below, various modifications and embodiments are envisioned that may provide improvements to video encoding and / or decoding systems including, but not limited to, one or both of increased compression or codec efficiency and reduced complexity.
[0012] In order to provide a basic understanding of some aspects of the present disclosure, a brief overview of the subject matter is given above. This overview is not a broad overview of the subject matter. It is not intended to identify the key / important elements of each embodiment or to describe the scope of the subject matter. Its sole purpose is to present some concepts of the subject matter in a simplified form as a preface to the more detailed description provided below. BRIEF DESCRIPTION OF THE DRAWINGS
[0013] The present disclosure may be better understood by considering the following detailed description in conjunction with the accompanying drawings, in which:
[0014] Figure 1 A block diagram depicting an example of an embodiment of a video encoder is provided;
[0015] Figure 2 A block diagram depicting an example of an embodiment of a video decoder is provided;
[0016] Figure 3illustrates the concept of a codec tree unit (CTU) and a codec tree that can be used to represent a compressed picture;
[0017] Figure 4 The diagram illustrates a codec tree unit (CTU) and the division of a CTU into a codec unit (CU), a prediction unit (PU), and a transform unit (TU);
[0018] Figure 5 An example of a quadtree plus binary tree (QTBT) representation is illustrated;
[0019] Figure 6 An example of a three-pronged partitioning pattern for a codec unit (CU) is shown, which includes a horizontal partitioning pattern ( Figure 6 ) and vertical split mode ( Figure 6 on the right side);
[0020] Figure 7 Examples of various CU partitioning modes are illustrated;
[0021] Figure 8 A flow chart illustrating an example of a CABAC encoding and decoding process is provided: context-based arithmetic encoding and decoding from a syntax element to its binarized value, to some of its bins, and to bypass encoding and decoding to some other of its bins;
[0022] Fig. 9 illustrates an example of neighboring blocks used in at least one embodiment, for example, for context model derivation of inter_affine_flag,
[0023] Figures 10 to 14 and Fig.16 Provides flowcharts illustrating various examples of embodiments according to one or more aspects of the present disclosure; and
[0024] Fig.15 Block diagrams illustrating examples of embodiments of apparatuses according to various aspects and embodiments described herein are provided.
[0025] It should be understood that the drawings are intended to illustrate examples of various aspects and embodiments and are not necessarily the only possible configurations. In the various drawings, the same reference numerals represent the same or similar features. DETAILED DESCRIPTION
[0026] Turning now to the attached drawings, Figure 1 An example of a video encoder 100, such as a HEVC encoder, is shown. HEVC is a video Joint Team on Codecs (JCT-VC)compression standards being developed (see, for example, “ITU-T H.265 ITU-T Telecommunication Standardization Sector (October 2014), Series H: Audiovisual and multimedia systems, Infrastructure of audiovisual services - Codecs for mobile video, High efficiency video codecs, Recommendation ITU-T H.265”). Figure 1 Encoders in which improvements have been made to the HEVC standard or encoders that employ techniques similar to HEVC may also be illustrated, such as encoders based on or improved upon by the JEM (Joint Detection Model) developed by the Joint Video Experts Group (JVET), for example, associated with the Versatile Video Codec (VVC) specified in the development work.
[0027] In this application, the terms "reconstructed" and "decoded" may be used interchangeably, the terms "pixel" and "sample" may be used interchangeably, and the terms "picture" and "frame" may be used interchangeably. Typically, but not necessarily, the term "reconstructed" is used on the encoder side, while "decoded" is used on the decoder side.
[0028] The HEVC specification distinguishes between "blocks", which address a specific area in the sample array (e.g., luma, Y), and "units", which include a co-located block of all coded color components (Y, Cb, Cr, or monochrome), syntax elements, and prediction data (e.g., motion vectors) associated with the block.
[0029] For codecs, pictures are partitioned into codec tree blocks (CTBs) of square shape with configurable size, and continuous sets of codec tree blocks are grouped into slices. The codec tree unit (CTU) contains the CTB of the coded color component. The CTB is the root of the quadtree partitioned into codec blocks (CBs), and the codec block can be partitioned into one or more prediction blocks (PBs) and forms the root of the quadtree partitioned into transform blocks (TBs). Corresponding to the codec block, prediction block, and transform block, the codec unit (CU) contains a tree structure set of prediction units (PUs) and transform units (TUs), the PU contains prediction information for all color components, and the TU contains the residual codec syntax structure for each color component. The size of the CB, PB, and TB of the luminance component is applicable to the corresponding CU, PU, and TU. In this application, the term "block" may be used to refer to any one of CTU, CU, PU, TU, CB, PB, and TB. In addition, "block" may also be used to refer to macroblocks and partitions specified in H.264 / AVC or other video codec standards, and more generally refers to data arrays of various sizes.
[0030] exist Figure 1In the encoder 100, a picture is encoded by the encoder elements as described below. The picture to be encoded is processed in units of CUs. Each CU is encoded using intra or inter mode. When the CU is encoded in intra mode, it performs intra prediction (160). In inter mode, motion estimation (175) and compensation (170) are performed. The encoder decides (105) which of intra mode or inter mode is used to encode the CU, and indicates the intra / inter decision by a prediction mode flag. The prediction residual is calculated by subtracting (110) the predicted block from the original image block.
[0031] The prediction residual is then transformed (125) and quantized (130). The quantized transform coefficients as well as the motion vectors and other syntax elements are entropy encoded (145) to output a bitstream. The encoder can also skip the transform and apply quantization directly to the untransformed residual signal on a 4×4TU basis. The encoder can also bypass both the transform and quantization, i.e., encode and decode the residual directly without applying the transform or quantization process. In direct PCM encoding and decoding, prediction is not applied and the codec unit samples are encoded and decoded directly into the bitstream.
[0032] The encoder decodes the coded block to provide a reference for further prediction. The quantized transform coefficients are dequantized (140) and inverse transformed (150) to decode the prediction residual. The image block is reconstructed by combining (155) the decoded prediction residual and the prediction block. For example, a loop filter (165) is applied to the reconstructed picture to perform deblocking / SAO (sample adaptive offset) filtering to reduce coding artifacts. The filtered image is stored in a reference picture buffer (180).
[0033] Figure 2 A block diagram of an example of a video decoder 200, such as a HEVC decoder, is illustrated. In the exemplary decoder 200, a signal or bitstream is decoded by decoder elements as described below. The video decoder 200 generally performs the same Figure 1 A decoding path that is the reverse of the encoding path described in , which performs video decoding as part of encoding the video data. Figure 2 Decoders in which improvements are made to the HEVC standard or decoders that employ techniques similar to HEVC, such as decoders based on or improved by JEM, may also be illustrated.
[0034] Specifically, the decoder input contains can be represented by Figure 1A video signal or bitstream is generated by a video encoder of the video encoder 100. The signal or bitstream is first entropy decoded (230) to obtain transform coefficients, motion vectors and other encoded information. The transform coefficients are dequantized (240) and inverse transformed (250) to decode the prediction residual. The image block is reconstructed by combining (255) the decoded prediction residual and the prediction block. The prediction block (270) can be obtained from intra-frame prediction (260) or motion compensated prediction (i.e., inter-frame prediction) (275). Advanced motion vector prediction (AMVP) and merge mode techniques can be used to derive motion vectors for motion compensation, which can use interpolation filters to calculate interpolated values of sub-integer samples of a reference block. A loop filter (265) is applied to the reconstructed image. The filtered image is stored in a reference picture buffer (280).
[0035] In the HEVC video compression standard, motion compensated temporal prediction is used to exploit the redundancy existing between consecutive pictures of a video. To do this, a motion vector is associated with each prediction unit (PU). Each codec tree unit (CTU) is represented by a codec tree (CT) in the compressed domain. This is a quadtree partition of the CTU, where each leaf is called a codec unit (CU), such as Figure 3 As shown in the picture.
[0036] Each CU is then given some intra-frame or inter-frame prediction parameters or prediction information. To this end, it is split into one or more prediction units (PUs) in the spatial domain, and each PU is assigned some prediction information. Figure 4 As shown, intra or inter coding mode is allocated at the CU level. Figure 4 An example of partitioning a codec tree unit into codec units, prediction units, and transform units is shown. To encode and decode a CU, a prediction block or prediction unit (PU) is constructed from adjacent reconstructed samples (intra-frame prediction) or from a previously reconstructed picture stored in a decoded picture buffer (DPB) (inter-frame prediction). Next, the residual samples calculated as the difference between the original samples and the PU samples are transformed and quantized.
[0037] Codecs and video compression tools other than HEVC, such as the Joint Exploration Model (JEM) and codecs and video compression tools developed by the JVET (Joint Video Exploration Team) group in the generic video codec (VVC) reference software (called the VVC Test Model (VTM)), may provide a CTU representation in the compressed domain that represents picture data in a more flexible way in the compressed domain. A more flexible representation of the codec tree may provide increased compression efficiency compared to approaches such as the CU / PU / TU arrangement of the HEVC standard. An example of a more flexible representation is the Quadtree Plus Binary Tree (QTBT) codec tool. In Figure 5 An example of a representation such as QTBT is illustrated in , which shows a codec tree with a codec unit that can be divided in a quadtree and a binary tree manner. The division of the codec unit can be decided at the encoder side based on an optimization process (e.g., a rate-distortion optimization process) that determines the QTBT representation of the CTU with the minimum rate-distortion cost.
[0038] In the QTBT technique, the CU may have a square or rectangular shape. The size of the codec unit may be a power of 2 and range from 4 to 128, for example. In addition to the various rectangular shapes used for the codec unit, the representation of the CTU such as QTBT may have the following features that differ from methods such as HEVC:
[0039] The QTBT decomposition of a CTU consists of two stages: first, the CTU is partitioned in a quadtree fashion, and then each quadtree leaf is further partitioned in a binary fashion. Figure 5 The solid line represents the quadtree decomposition stage, and the dotted line represents the binary decomposition embedded in the quadtree leaves in the spatial domain.
[0040] In intra slices, the luminance (Luma) and chrominance (Chroma) block partitioning structures are separated and determined independently.
[0041] CUs that are partitioned into prediction units or transform units are not employed, i.e., each CU systematically consists of a single prediction unit (2N×2N prediction unit partition type) and a single transform unit (not partitioned into transform trees).
[0042] Some systems may use one or more of various other CU partitioning modes. For example, the VVC (Versatile Video Codec) video compression standard provides Figure 6 Horizontal or vertical trident division pattern as shown. Figure 6 As shown in , the three-pronged partitioning may involve partitioning the CU into three sub-coding units (sub-CUs), each of which has a size equal to 1 / 4, 1 / 2, and 1 / 4 of the parent CU size in the direction of the considered spatial partition. Figure 7 Various other partitioning patterns are illustrated in FIG.
[0043] After using partitioning, intra-frame or inter-frame prediction to exploit intra-frame or inter-frame correlation, the difference between the original block and the predicted block (usually expressed as a prediction error or prediction residual) is transformed, quantized, and entropy coded. In order to reconstruct the video, the compressed data is decoded by the reverse process corresponding to entropy coding, quantization, transformation, and prediction.
[0044] In general, an aspect of the present disclosure may involve one or more of entropy coding of transform coefficients, an inter prediction flag, and a partition flag. In at least one embodiment, the complexity of signaling and parsing of at least some syntax elements associated with entropy coding may be reduced. For example, in at least one embodiment, reducing complexity may involve reducing the number of operations in a decoder process and / or the number of contexts used for forms of entropy coding, such as context-based adaptive binary arithmetic coding (CABAC).
[0045] CABAC can be used to encode syntax elements into a bitstream. To encode using CABAC, non-binary syntax element values are mapped to a binary sequence, called a binary bit string. For a binary bit, a context model is selected. The context model stores the probability of each binary bit being "1" or "0" and can be either adaptive or static. The static model triggers the codec engine with equal probability for a binary bit being "0" and "1". In an adaptive codec engine, the context model is updated based on the actual codec value of the binary bit. The operating modes corresponding to the adaptive and static models are called regular mode and bypass mode, respectively, as shown in Figure 8 shown.
[0046] For normal mode, the context for decoding the current bin is obtained. The context is given by the context modeler, as Figure 8 The context objective is to obtain the conditional probability that the current bin has the value “0” given some context prior information X. The prior X can be the value of some already decoded syntax element available at the encoder and decoder side in a synchronized manner when the current bin is decoded.
[0047] Typically, the previous X used for bin decoding is specified in the standard and is chosen because it is statistically correlated with the current bin to be decoded. The benefit of using this contextual information is that it reduces the rate cost of encoding and decoding the bin. This is based on the fact that the conditional entropy of a bin given X is lower because the bin and X are correlated. The following relationship is well known in information theory:
[0048] H(bin|X) <H(bin)
[0049] This means that if the bin (binary bit) and X are statistically correlated, then the conditional entropy of the bin given X is lower than the entropy of the bin. The contextual information X is therefore used to obtain the probability of the bin being "1" or "0". Given these conditional probabilities, Figure 8 The conventional decoding engine of performs arithmetic decoding of binary value bins. Given the current context information X, the value of the bin is then used to update the value of the conditional probability associated with the current bin, which is Figure 8The context model update step is called context model update step. Updating the context model of each bin allows to gradually refine the context modeling of each binary element as long as the bin is decoded (or encoded). Therefore, the CABAC decoder gradually learns the statistical behavior of each conventionally encoded bin.
[0050] Note that the context modeler and context model update steps are the same operations on the encoder and decoder side. This provides the inverse of the binarization step done by the encoder. Therefore, the inverse conversion performed here includes obtaining the values of these syntax elements based on their corresponding decoded binarized versions.
[0051] Multiple contexts may be used to signal one syntax element. For example, in a system such as that proposed for VVC (e.g., VTM-4), there are 387 contexts for 12 syntax elements, which means approximately 32 contexts per syntax. As described above, the CABAC decoder needs to accumulate a certain amount of statistical data in order to gradually learn the statistical behavior of each conventionally coded bit. When there are many contexts for one codec bit, the statistics for each context may not be sufficient for the convergence and stability of the context model, which may affect the efficiency of the CABAC decoder.
[0052] In general, at least one embodiment may involve reducing the number of CABAC contexts (transform coefficients, intra and inter prediction flags, adaptive loop filter flags, and split flags, etc.) for conventional (or context-based) coded bins. As a result, the complexity of the decoding process may be reduced. For example, in at least one embodiment, 48 contexts associated with both the last x and last y coordinates (syntax elements last_sig_coeff_x_prefix and last_sig_coeff_y_prefix), 3 contexts for one of the intra prediction flags (syntax element pred_mode_ibc_flag), 18 contexts for some inter prediction flags (syntax elements cu_skip_flag, inter_affine_flag, amvrflag, and merge_triangle_flag), 9 contexts for the adaptive loop filter flag (syntax element alf_ctb_flag), and 15 contexts for some split flags (syntax elements split_cu_flag and qt_split_cu_flag) may be reduced. In general, at least one example of an embodiment may involve reducing the complexity of a context derivation process for entropy coding (e.g., CABAC) based on reducing the number of contexts for certain syntax elements using left-neighboring syntax elements and above-neighboring syntax elements. In general, at least one example of an embodiment may involve sharing the same context, such as a CABAC context, for more different bin indices of the same block size, or sharing the same set of context indices for different block sizes when signaling the coordinates of the last significant coefficient.
[0053] In more detail, a method for a context derivation process for entropy coding will be described based on an example such as CABAC, which may involve using neighboring syntax elements for various syntax elements. Then, various examples of embodiments for reducing the complexity of context derivation for these syntax elements will be described. Next, a method for context selection for the last significant coefficient in an example embodiment will be described for an example of entropy coding such as CABAC. Then, an example of an embodiment for reducing the complexity of the context for signaling the last significant coefficient coordinates will be described.
[0054] In one or more examples of the system, in order to indicate whether some prediction tools or modes are used, a flag can be signaled into the bitstream and then to the decoder. For examples of entropy codecs such as CABAC, some flags are encoded with several contexts derived using adjacent syntax elements. For example, a flag, namely inter_affine_flag, can be signaled to indicate whether affine model-based motion compensation is used to generate prediction samples for the current CU. For examples of CABAC-based entropy codec methods, inter_affine_flag is CABAC encoded with 3 context models, and the context model is derived by the sum of the inter_affine_flag of the left block L and the block A above, such as Fig. 9 As depicted. And the CABAC context ctxlnc derivation process can be described as follows:
[0055] ctxlnc=(L is available &&L is affine)+(A is available &&A is affine)
[0056] Fig.10 The flowchart shown in illustrates an example of an embodiment of providing context model ctxlnc derivation for inter_affine_flag. A similar process can also be applied to derive CABAC contexts for syntax elements for skip mode (cu-skip-flag), AMVR mode (amvr_flag), triangle prediction mode (merge_triangle_flag), current picture reference mode (pred_mode_ibc_flag), adaptive loop filter (alf_ctb_flag) and partitioning (split_cu_flag and qt_split_cu_lag).
[0057] In at least one example of an embodiment, the inputs to the described CABAC derivation process may be the luma position (x0, y0), which specifies the upper left luma sample of the current luma block relative to the upper left sample of the current picture, the color component cldx, the current coding quadtree depth cqDepth, and the width cbWidth and height cbHeight of the current codec block in luma samples. The output of the described process is ctxlnc.
[0058] Other parameters or variables can include:
[0059] The position of the left block (xNbL, yNbL) which can be set equal to (x0-1, y0),
[0060] availableL which specifies the availability of the block directly to the left of the current block,
[0061] The position of the block above (xNbA, yNbA) which can be set equal to (x0, y0-1), and
[0062] • availableA that specifies the availability of the codec block directly above the current block.
[0063] For the CABAC example, the value of ctxlnc may be determined as follows using condL and condA as specified in Table 1:
[0064] ctxlnc=(condL&&availableL)+(condA&&availableA)+ctxSetldx*3.
[0065]
[0066] Table 1: Using left and above syntax elements to specify CABAC context
[0067] In at least one example of an embodiment, the complexity of the context derivation process of the above syntax element can be reduced by deriving only two context models based on the syntax elements on the left and above. As described above, the inter_affine_flag for the example of CABAC can be encoded and decoded with three context models, and the context model is derived by the sum of the inter_affine-_flag of the left block L and the upper block A.
[0068] However, instead of using adjacent block information to generate three context models, only two context models can be derived to reduce redundant context. In a first example of an embodiment, the context model can be derived using the OR value of the inter_affine_flag of the left block L and the upper block A, and if the condition (condL) of the left block L or the condition (condA) of the upper block A is true, the context of the syntax element indicated by the OR value will be set to 1. The corresponding ctxlnc assignment format is specified as follows:
[0069] ctxlnc=(condL&&availableL)||(condA&&availableA)+ctxSetldx*2.
[0070] In a second example of an embodiment, the context model can be derived using the AND value of the inter-affine-flag of the left block L and the upper block A, which indicates that the context of the syntax element will be set to 1 only when the conditions condlL and condA are both true. The corresponding ctxlnc assignment format is specified as follows:
[0071] ctxlnc=(condL&&availableL)&&(condA&&availableA)+ctxSetldx*2.
[0072] As an example, the context model ctxlnc derivation process based on the inter_affine_flag of the first exemplary embodiment described is as follows: Fig.11 Flowchart illustration shown in . Applying the described method to these syntax elements can reduce the number of ctxlnc as shown in Table 2, i.e., resulting in 14 potential context reductions:
[0073] Syntax elements ctxlnc quantity alf_ctb_flag[x0][y0][cldx] 9→6 split_cu_flag 9→6 qt_split_cu_flag 6→4 cu_skip_flag[x0][y0] 3→2 pred_mode_ibc_flag[x0][y0] 3→2 amvr_flag[xo][y0] 6→4 merge_triangle_flag[x0][y0] 3→2 inter_affine_flag[x0][y0] 3→2
[0074] Table 2: Using left and above syntax elements to reduce the number of CABAC contexts
[0075] At least one other embodiment may provide for encoding and decoding these syntax elements using only one context model to avoid using neighboring blocks. Fig.16 An example of this embodiment is shown in FIG. Fig.16 In the embodiment of the present invention, at 1610, a codec context associated with a syntax element (e.g., amvr_flag) of a current codec unit is identified or determined without using syntax elements of neighboring blocks (e.g., without using amvr_flag of neighboring blocks). Then, at 1620, the syntax element is encoded based on the codec context. This embodiment of context derivation can reduce line buffer size and parsing complexity because the syntax elements to the left and above are not used in the context derivation process. Applying the described embodiments to these syntax elements can reduce the number of ctxlncs as shown in Table 3, that is, resulting in 28 potential context reductions:
[0076] Syntax elements ctxlnc quantity alf_ctb_flag[x0][y0][cldx] 9→3 split_cu_flag 9→3 qt_split_cu__flag 6→2 cu_skip_flag[x0][y0] 3→1 pred_mode_ibc_flag[x0][y0] 3→1 amvr_flag[x0][y0] 6→2 merge_triangle_flag[x0][y0] 3→1 inter_affine_flag[x0][y0] 3→1
[0077] Table 3: Reducing the number of CABAC contexts without using left and above syntax elements
[0078] At least one example of an embodiment based on CABAC may provide for the derivation of CABAC context for syntax elements last_sig_coeff_x_prefix and last_sig_coeff_y_prefix. An example of a system may include the position of the last significant coefficient in a block that is encoded by explicitly signaling its (X, Y) coordinates. The coordinate X represents the column number and Y represents the row number. The coordinates are binarized into two parts, a prefix and a suffix. The first part represents the index of the interval (syntax elements last_sig_coeff_x_prefix and last_sig_coeff_y_prefix). The prefix has a truncated unary representation and the bins are encoded and decoded in a regular mode. The second part or suffix has a fixed length representation and is encoded and decoded in a bypass mode, which represents the offset within the interval. For block sizes of 4, 8, 16, 32, and 64, the maximum length of the truncated unary code for a coordinate (which is also the number of bins for regular encoding and decoding) is 3, 5, 7, 9, and 11, respectively. As an example, Table 4 shows the binarization for a block width (height) equal to 64. The last significant coefficient coordinate x(y) is first mapped to 11 bits, and the corresponding bits are encoded and decoded in a regular manner.
[0079]
[0080] Table 4: Binarization of the last position of the prefix part for a block size equal to 64
[0081] Different bins within the truncated unary part with similar statistics share contexts in order to reduce the total number of contexts. The number of contexts for one coordinate prefix is 24 (21 for luma and 3 for chroma), so the total number of contexts for the final position encoding is 48. Table 5 shows the context allocation for different bins for a given coordinate over all block sizes T, luma and chroma components.
[0082]
[0083] Table 5: Last position context index for each truncated unary code bin and block size T
[0084] In at least one embodiment, the input to this process may include the variable binldx, the color component index cldx, the binary logarithm of the transform block width log2TbWidth, and the binary logarithm of the transform block height log2TbHeight. The output of this process is the variable ctxlnc. The variable log2TbSize is derived as follows:
[0085] - If the syntax element to be parsed is last_sig_coeff_x_prefix, then set log2TbSize equal to log2TbWidth.
[0086] - Otherwise (the syntax element to be parsed is last_sig_coeff_y prefix), set log2TbSize equal to log2TbHeight.
[0087] The variables ctxOffset and ctxShift are derived as follows:
[0088] - If cldx is equal to 0, set ctxOffset equal to (log2TbSize - 2) *
[0089] 3+((log2TbSize—1)>>2), and set ctxShift equal to (log2TbSize+1)>>2.
[0090] - Otherwise (cldx is greater than 0), set ctxOffset equal to 21 and set ctxShift equal to Clip3 (0,2,2log2TbSize>>3).
[0091] The variable ctxlnc is derived as follows:
[0092] ctxlnc=(binldx>>ctxShift)+ctxOffset
[0093] Fig.12 The flowchart of illustrates an example of an embodiment of providing a context model ctxlnc derivation of last_sig_coeff_x_prefix and last_sig_coeff_y_prefix.
[0094] In general, at least one example of an embodiment may provide a CABAC context for deriving syntax elements last_sig_coeff_x_prefix and last_sig_coeff_y_prefix for a luma component. As mentioned with respect to the above examples, different bins within a truncated unary portion with similar statistics share contexts in order to reduce the total number of contexts. One or more embodiments may further reduce the number of contexts for syntax elements last_sig_coeff_x_prefix and last_sig_coeff_y_prefix for a luma component.
[0095] In at least one embodiment, multiple different bin indices for the same block size may share the same context. A variable ctxShift may be provided to determine or indicate how many bin indices will share the same context, and the value of ctxShift is related to the block size log2TbSize. For example, when the block width (height) is equal to 4, each bin index will use one context; when the block width (height) is greater than 4, every 2 bin indices will share one context. Instead of sharing one context for every 2 bin indices for large block sizes (i.e., when the block size is equal to 64), every 3 or 4 bin indices may share one context. Table 6 shows a modified context allocation for a block size of 64, a luma component, where every four bin indices share the same context. The six contexts for both the syntax elements last_sig_coeff_x_prefix and last_sig_coeff_y_prefix may be reduced by the described embodiments.
[0096]
[0097] Table 6: Last position context index for each truncated unary code bit for block size 64
[0098] And the corresponding modification of the variable ctxShift for the described embodiment can be derived as follows:
[0099]
[0100] Fig.13 The flowchart shown in illustrates an example of an embodiment such as described above, which provides a context model ctxlnc derivation for last_sig_coeff_x_prefix and last_sig_coeff_y_prefix, where more bin indices for block size 64 share the same context.
[0101] In the above description and Fig.13 In at least one variant of the illustrated embodiment, sharing the same context between every four bin indices may also be applied to other block sizes. In at least one other variant, sharing the same context between every x (x>2) bin indices may also be applied to other block sizes. In at least one other variant, sharing the same context between every x (x>2) bin indices may also be applied to other block sizes of chroma components.
[0102] In at least one example of an embodiment, different block sizes may share the same context set. For example, in at least one system, for the luma component, 3, 3, 4, 5, and 6 contexts may be used for block sizes of 4, 8, 16, 32, and 64, respectively. And the variable ctxOffset may be associated with the block size log2TbSize (ctxOffset = [0, 3, 6, 10, 15, 21]), which indicates the context set for each block size. In an example of the present embodiment, the same context may be shared for the same context set across different block sizes, rather than assigning different context sets to different block sizes. Table 7 shows a modified context set assignment for block sizes 4 and 8, luma components using the same variable ctxOffset value. And for this example, the corresponding modified variable ctxOffset value set is ctxOffset = [0, 0, 3, 7, 12, 18]. The six contexts of both the syntax elements last_sig_coeff_x_prefix and last_sig_coeff_y_prefix may be reduced based on the example of the described embodiment.
[0103]
[0104] Table 7: Last position context index set shared by block sizes 4 and 8
[0105] Fig.14 The flowchart shown in illustrates an example of an embodiment such as described, which provides context model ctxlnc derivation for last_sig_coeff_x_prefix and last_sig_coeff_y_prefix, where the same context set is shared for block sizes 4 and 8.
[0106] As described above and Fig.14 At least one variation of the illustrated embodiment may involve sharing context indices between all block sizes. At least one other variation may involve sharing context indices between any of various combinations of different block sizes. At least one other variation may involve sharing context indices between luma and chroma components.
[0107] A system involving video encoding and / or decoding according to one or more embodiments described herein may provide one or more of the following non-limiting feature examples, alone or in combination in various arrangements:
[0108] The context index for various syntax elements derived by the sum of the syntax elements on the left and above can be derived by the OR value of these two adjacent elements;
[0109] The context index for various syntax elements derived by the sum of the left and above syntax elements can be derived by the AND value of these two adjacent elements;
[0110] The context index for various syntax elements derived by the sum of the syntax elements to the left and above can be derived without using the neighboring elements;
[0111] The context index used to signal the coordinates of the last significant coefficient can share the same context for more different bin indices of the same block size; and
[0112] • The context index used to signal the coordinates of the last significant coefficient can share the same context set for different block sizes.
[0113] This document describes various examples of embodiments, features, models, methods, etc. Many of these examples are described with specificity, and at least to show individual features, are generally described in a manner that may appear limited. However, this is for the purpose of clarity of description and does not limit the application or scope. In fact, various examples of the embodiments, features, etc. described herein can be combined and interchanged in various ways to provide further examples of the embodiments.
[0114] In general, the examples of the embodiments described and contemplated in this document may be implemented in many different forms. Figure 1 and Figure 2 and the following description Fig.10 Some embodiments are provided, but other embodiments are contemplated, and Figure 1 , 2 The discussion of 15 does not limit the breadth of implementation. At least one embodiment generally provides examples involving video encoding and / or decoding, and at least one other embodiment generally involves transmitting the generated or encoded bitstream or signal. These and other embodiments can be implemented as methods, apparatus, computer-readable storage media having stored thereon instructions for encoding or decoding video data according to any of the described methods, and / or computer-readable storage media having stored thereon bitstreams or signals generated according to any of the described methods.
[0115] In this application, the terms "reconstructed" and "decoded" are used interchangeably, the terms "pixel" and "sample" are used interchangeably, and the terms "image", "picture" and "frame" are used interchangeably. Usually, but not necessarily, the term "reconstructed" is used on the encoder side, while "decoded" is used on the decoder side.
[0116] The terms HDR (high dynamic range) and SDR (standard dynamic range) are used in this disclosure. These terms generally convey a specific value of dynamic range to one of ordinary skill in the art. However, additional embodiments are also contemplated in which references to HDR are understood to mean "higher dynamic range" and references to SDR are understood to mean "lower dynamic range". Such additional embodiments are not constrained by any specific value of dynamic range that may often be associated with the terms "high dynamic range" and "standard dynamic range".
[0117] Various methods are described herein, and each method includes one or more steps or actions for implementing the described method. Unless a specific order of steps or actions is required for proper operation of the method, the order and / or use of specific steps and / or actions may be modified or combined.
[0118] Various methods and other aspects described in this document can be used to modify modules of a video encoder and / or decoder, such as Figure 1 The module 145 of the encoder 100 shown in FIG. Figure 2 Module 230 of decoder 200 shown in . In addition, aspects of the present invention are not limited to VVC or HEVC, and can be applied to (for example) other standards and recommendations that are existing or developed in the future, as well as extensions of any such standards and recommendations (including VVC and HEVC). Unless otherwise specified or technically excluded, the aspects described herein can be used alone or in combination.
[0119] For example, various numerical values are used in this document. These specific values are for illustrative purposes, and the described aspects are not limited to these specific values.
[0120] Fig.15 A block diagram of an example of a system in which various aspects and embodiments can be implemented is illustrated. System 1000 can be implemented as a device comprising various components described below, and is configured to perform one or more aspects described in this document. Examples of such devices include, but are not limited to, various electronic devices, such as personal computers, laptop computers, smart phones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected home appliances and servers. The elements of system 1000 can be implemented individually or in combination in a single integrated circuit, multiple ICs and / or discrete components. For example, in at least one embodiment, the processing and encoder / decoder elements of system 1000 are distributed on multiple ICs and / or discrete components. In various embodiments, system 1000 is communicatively coupled to other similar systems or other electronic devices via, for example, a communication bus or by dedicated input and / or output ports. In various embodiments, system 1000 is configured to implement one or more of the aspects described herein.
[0121] The system 1000 includes at least one processor 1010 configured to execute instructions loaded therein to implement, for example, various aspects described in this document. The processor 1010 may include embedded memory, input-output interfaces, and various other circuits known in the art. The system 1000 includes at least one memory 1020 (e.g., a volatile memory device and / or a non-volatile memory device). The system 1000 includes a storage device 1040, which may include a non-volatile memory and / or a volatile memory, including but not limited to an EEPROM, ROM, PROM, RAM, DRAM, SRAM, flash memory, a magnetic disk drive, and / or an optical disk drive. As a non-limiting example, the storage device 1040 may include an internal storage device, an additional storage device, and / or a network accessible storage device.
[0122] The system 1000 includes an encoder / decoder module 1030, which is configured to, for example, process data to provide encoded video or decoded video, and the encoder / decoder module 1030 may include its own processor and memory. The encoder / decoder module 1030 represents a module 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 the encoding and decoding modules. In addition, the encoder / decoder module 1030 may be implemented as a separate element of the system 1000 or may be incorporated into the processor 1010 as a combination of hardware and software as known to those skilled in the art.
[0123] Program code to be loaded onto the processor 1010 or the encoder / decoder 1030 to perform various aspects described herein may be stored in the storage device 1040 and subsequently loaded onto the memory 1020 for execution by the processor 1010. According to various embodiments, one or more of the processor 1010, the memory 1020, the storage device 1040, and the encoder / decoder module 1030 may store one or more of various items during the execution of the processes described herein. Such stored items may include, but are not limited to, input video, decoded video or portions of decoded video, bitstreams or signals, matrices, variables, and intermediate or final results from the processing of equations, formulas, operations, and operation logic.
[0124] In several embodiments, memory within the processor 1010 and / or encoder / decoder module 1030 is used to store instructions and provide working memory for processing required during encoding or decoding. However, in other embodiments, memory external to the processing device (e.g., the processing device may be the processor 1010 or the encoder / decoder module 1030) is used for one or more of these functions. The external memory may be a memory 1020 and / or a storage device 1040, such as a dynamic volatile memory and / or a non-volatile flash memory. In several embodiments, an external non-volatile flash memory is used to store the operating system of the television. In at least one embodiment, a fast external dynamic volatile memory such as RAM is used as working memory for video encoding and decoding operations such as MPEG-2, HEVC, or VVC (universal video codec).
[0125] Input to the elements of system 1000 may be provided through various input devices, as shown at block 1130. Such input devices include, but are not limited to, (i) an RF section that receives RF signals transmitted over the air, for example, by a broadcaster, (ii) a composite input terminal, (iii) a USB input terminal, and / or (iv) an HDMI input terminal.
[0126] In various embodiments, the input device of block 1130 has associated corresponding input processing elements, as known in the art. For example, the RF section may be associated with elements for: (i) selecting a desired frequency (also referred to as selecting a signal, or band limiting a signal to a frequency band), (ii) down-converting the selected signal, (iii) again band-limiting to a narrower frequency band to select a signal frequency band that may be referred to as a channel in some embodiments, (iv) demodulating the down-converted and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select a desired data packet stream. The RF section of various embodiments includes one or more elements to perform these functions, such as a frequency selector, a signal selector, a band limiter, a channel selector, a filter, a down-converter, a demodulator, an error corrector, and a demultiplexer. The RF section may include a tuner that performs various of 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. In a set-top box embodiment, the RF part and its associated input processing element receive the RF signal sent by wired (for example, cable) medium, and filter to the desired frequency band to perform frequency selection by filtering, down-conversion and filtering again. Various embodiments rearrange the order of above-mentioned (and other) elements, remove some in these elements, and / or add other elements that perform similar or different functions. The interpolation element can be included in and inserts element between existing elements, for example, inserts amplifier and analog-to-digital converter. In various embodiments, the RF part comprises antenna.
[0127] In addition, the USB and / or HDMI terminals may include corresponding interface processors for connecting the system 1000 to other electronic devices via USB and / or HDMI connections. It should be understood that various aspects of input processing, such as Reed-Solomon error correction, may be implemented, for example, within a separate input processing IC or processor 1010. Similarly, various aspects of USB or HDMI interface processing may be implemented within a separate interface IC or within processor 1010. The demodulated, error corrected, and demultiplexed streams are provided to various processing elements, including, for example, processor 1010 and encoder / decoder 1030, which operate in conjunction with memory and storage elements to process the data streams for presentation on output devices.
[0128] The various components of system 1000 may be disposed within an integrated housing, and the various components may be interconnected and transmit data therebetween using a suitable connection arrangement 1140, such as an internal bus known in the art (including an I2C bus, wiring, and printed circuit boards).
[0129] The system 1000 includes a communication interface 1050 that allows communication with other devices via a communication channel 1060. The communication interface 1050 may include, but is not limited to, a transceiver configured to send and receive data over the communication channel 1060. The communication interface 1050 may include, but is not limited to, a modem or a network card, and the communication channel 1060 may be implemented, for example, within a wired and / or wireless medium.
[0130] In various embodiments, a Wi-Fi network such as IEEE 802.11 is used to transmit data streams to the system 1000. The Wi-Fi signals of these embodiments are received through a communication channel 1060 and a communication interface 1050 suitable for Wi-Fi communication. The communication channel 1060 of these embodiments is typically connected to an access point or router that provides access to an external network including the Internet to allow streaming applications and other top-level communications. Other embodiments use a set-top box that passes data through an HDMI connection of an input block 1130 to provide streaming data to the system 1000. Still other embodiments use an RF connection of an input block 1130 to provide streaming data to the system 1000.
[0131] The system 1000 can provide output signals to various output devices, including a display 1100, speakers 1110, and other peripherals 1120. In various examples of embodiments, the other peripherals 1120 include one or more of a stand-alone DVR, a disc player, a stereo system, a lighting system, and other devices that provide functions based on the output of the system 1000. In various embodiments, control signals are transmitted between the system 1000 and the display 1100, speakers 1110, or other peripherals 1120 using signaling such as AV.Link, CEC, or other communication protocols that implement device-to-device control with or without user intervention. These output devices can be communicatively coupled to the system 1000 via dedicated connections through respective interfaces 1070, 1080, and 1090. Alternatively, the output devices can be connected to the system 1000 using a communication channel 1060 via a communication interface 1050. The display 1100 and speakers 1110 can be integrated into a single unit with other components of the system 1000 in an electronic device (e.g., a television). In various embodiments, the display interface 1070 includes a display driver, such as a timing controller (T Con) chip.
[0132] For example, if the RF portion of input 1130 is part of a separate set-top box, the display 1100 and speaker 1110 may alternatively be separate from one or more other components. In various embodiments where the display 1100 and speaker 1110 are external components, the output signal may be provided via a dedicated output connection including, for example, an HDMI port, a USB port, or a COMP output.
[0133] These embodiments may be implemented by computer software implemented by the processor 1010 or by hardware or by a combination of hardware and software. As a non-limiting example, the embodiments may be implemented by one or more integrated circuits. The memory 1020 may be of any type suitable for the technical environment and may be implemented using any appropriate data storage technology, such as, as a non-limiting example, optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory. As a non-limiting example, the processor 1010 may be of any type suitable for the technical environment and may include one or more of a microprocessor, a general-purpose computer, a special-purpose computer, and a processor based on a multi-core architecture.
[0134] Throughout the content of this disclosure, various implementations involve decoding. "Decoding" as used in this application may include, for example, all or part of the processing performed on the received coded sequence to produce a final output suitable for display. In various embodiments, such processing includes one or more processes typically performed by a decoder, such as entropy decoding, inverse quantization, inverse transformation, and differential decoding. In various embodiments, such processes also or alternatively include processes performed by the decoders of the various embodiments described in the present application, for example, extracting pictures from tiled (titled) (packed) pictures, determining upsampling filters to use and upsampling pictures, and flipping pictures back to their intended orientation.
[0135] As a further example, in one embodiment, "decoding" refers only to entropy decoding, in another embodiment, "decoding" refers only to differential decoding, and in another embodiment, "decoding" refers to a combination of entropy decoding and differential decoding. Whether the phrase "decoding process" is intended to refer specifically to a subset of operations or generally to a broader decoding process will be clear based on the context of the specific description and is considered to be well understood by those skilled in the art.
[0136] In addition, various implementations involve encoding. In a manner similar to the above discussion of "decoding", "encoding" as used in this application may include, for example, all or part of the processing performed on an input video sequence to produce an encoded bitstream or signal. In various embodiments, such processing includes one or more processes typically performed by an encoder, such as segmentation, differential encoding, transforms, quantization, and entropy encoding and decoding. In various embodiments, such processes also or alternatively include processes performed by encoders of the various implementations described in this application.
[0137] As a further example, in one embodiment, "encoding" refers only to entropy encoding, in another embodiment "encoding" refers only to differential encoding, and in another embodiment "encoding" refers to a combination of differential encoding and entropy encoding. Based on the context of the specific description, whether the phrase "encoding process" is intended to refer specifically to a subset of operations or generally to a broader encoding process will be clear and is considered to be well understood by those skilled in the art.
[0138] Note that the syntax elements used in this article are descriptive terms. Also, they do not exclude the use of other syntax element names.
[0139] When a diagram is presented as a flow chart, it should be understood that it also provides a block diagram of the corresponding apparatus. Similarly, when a diagram is presented as a block diagram, it should be understood that it also provides a flow chart of the corresponding method / process.
[0140] Various embodiments relate to rate-distortion optimization. In particular, during the encoding process, a balance or trade-off between rate and distortion is usually considered, usually given a constraint on computational complexity. Rate-distortion optimization is usually formulated as minimizing a rate-distortion function, which is a weighted sum of rate and distortion. There are different methods to solve the rate-distortion optimization problem. For example, these methods can be based on extensive testing of all coding options, including all considered modes or codec parameter values, and a complete evaluation of their coding and decoding costs and the associated distortion of the reconstructed signal after encoding and decoding. Faster methods can also be used to save coding complexity, in particular, to calculate approximate distortion based on prediction or prediction residual signals rather than reconstructed signals. A mixture of these two methods can also be used, such as by using approximate distortion only for some possible coding options and full distortion for other coding options. Other methods only evaluate a subset of possible coding options. More generally, many methods use any of a variety of techniques to perform optimization, but optimization is not necessarily a complete evaluation of both coding and decoding costs and associated distortions.
[0141] The implementations and aspects described herein can be implemented in, for example, a method or process, a device, a software program, a data stream, or a signal. Even if only discussed in the context of a single form of implementation (e.g., discussed only as a method), the implementation of the discussed features can also be implemented in other forms (e.g., a device or program). The device can be implemented with, for example, appropriate hardware, software, and firmware. The 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, such as a computer, a cellular phone, a portable / personal digital assistant ("PDA"), and other devices that facilitate information communication between end users.
[0142] Reference to "one embodiment" or "an embodiment" or "an implementation" or "an implementation" and other variations thereof means that a particular feature, structure, characteristic, etc. described in connection with the embodiment is included in at least one embodiment. Thus, the appearances of the phrases "in one embodiment" or "in an embodiment" or "in one implementation" or "in an implementation" and any other variations thereof appearing in various places in this document are not necessarily all referring to the same embodiment.
[0143] Additionally, this document may refer to "obtaining" various information. Obtaining information may include, for example, one or more of determining information, estimating information, calculating information, predicting information, or retrieving information from a memory.
[0144] Additionally, this document may refer to "accessing" various information. Accessing information may include, for example, one or more of receiving information, retrieving information (e.g., from a memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or estimating information.
[0145] Additionally, this document may refer to "receiving" various information. Like "accessing," receiving is a broad term. Receiving information may include, for example, one or more of accessing information or retrieving information (e.g., from a memory). Furthermore, during operations such as storing information, processing information, sending information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information, "receiving" is typically involved in one way or another.
[0146] It should be understood that, for example, in the case of "A / B," "A and / or B," and "at least one of A and B," use of any of the following " / ," "and / or," and "at least one of" is intended to include selecting only the first listed option (A), or only the second listed option (B), or both options (A and B). As a further example, in the case of "A, B, and / or C" and "at least one of A, B, and C," such phrases are intended to include selecting only the first listed option (A), or only the second listed option (B), or only the third listed option (C), or only the first and second listed options (A and B), or only the first and third listed options (A and C), or only the second and third listed options (B and C), or all three options (A and B and C). As will be apparent to one of ordinary skill in this and related arts, this can be extended to as many items as listed.
[0147] In addition, as used herein, the word "signal" especially refers to a corresponding decoder indicating something. For example, in some embodiments, the encoder sends a specific one of a plurality of parameters for refinement with a signal. In this way, in an embodiment, the same parameters are used on both the encoder side and the decoder side. Therefore, for example, the encoder can send (explicitly signal) a specific parameter to the decoder so that the decoder can use the same specific parameter. On the contrary, if the decoder already has specific parameters and other parameters, signaling can be used without sending (implicitly signaling) to simply allow the decoder to know and select specific parameters. By avoiding the transmission of any actual function, bit saving is achieved in various embodiments. It should be understood that signaling can be implemented in various ways. For example, in various embodiments, one or more grammatical elements, flags, etc. are used to send information to the corresponding decoder with a signal. Although the verb form of the word "signal" is related to the above, the word "signal" can also be used as a noun in this article.
[0148] It will be apparent to one of ordinary skill in the art that implementations may generate various signals formatted to carry information that may, for example, be stored or transmitted. The information may include, for example, instructions for executing the method or data generated by one of the described implementations. For example, a signal may be formatted to carry a bit stream or signal of the described embodiment. Such a signal may be formatted as, for example, an electromagnetic wave (e.g., using a radio frequency portion of a spectrum) or a baseband signal. Formatting may include, for example, encoding a data stream and modulating a carrier with the encoded data stream. The information carried by the signal may be, for example, analog or digital information. As is known, the signal may be sent via a variety of different wired or wireless links. The signal may be stored on a processor readable medium.
[0149] Various general and specific embodiments are also supported and considered throughout this disclosure.Examples of embodiments according to the present disclosure include but are not limited to the following.
[0150] Generally, at least one example of an embodiment may relate to a method for encoding syntax information associated with video information, the method comprising: identifying a codec context associated with syntax elements of a current codec unit of the video information, wherein the identification occurs without using syntax elements of neighboring blocks; and encoding the syntax elements of the current codec unit based on the codec context.
[0151] Generally, at least one example of an embodiment may relate to a method for decoding syntax information associated with video information, the method comprising: identifying a codec context associated with syntax elements of a current codec unit of the video information, wherein the identification occurs without using syntax elements of neighboring blocks; and decoding the syntax elements of the current codec unit based on the codec context.
[0152] Generally, at least one example of an embodiment may relate to an apparatus for encoding syntax information associated with video information, the apparatus comprising: one or more processors configured to identify a codec context associated with a syntax element of a current codec unit without using syntax elements of neighboring blocks; and encode the syntax element of the current codec unit based on the codec context.
[0153] Generally, at least one example of an embodiment may relate to an apparatus for decoding syntax information associated with video information, the apparatus comprising: one or more processors configured to identify a codec context associated with syntax elements of a current codec unit without using syntax elements of neighboring blocks; and decode the syntax elements of the current codec unit based on the codec context.
[0154] Generally, at least one example of an embodiment may involve a method or apparatus according to the present invention, wherein a syntax element of a current codec unit indicates the use of a video encoding mode or a video decoding mode and includes one or more of a skip mode flag, an adaptive motion vector resolution mode flag, a triangle prediction mode, a current picture reference mode, an adaptive loop filter mode, a partitioning mode, or an affine mode.
[0155] Generally, at least one example of an embodiment may involve a method or apparatus according to the present invention, wherein a syntax element of a current codec unit indicates the use of an adaptive motion vector resolution mode to encode or decode the current codec unit, and a syntax element of a neighboring block indicates the adaptive motion vector resolution mode to encode or decode the neighboring block.
[0156] Generally, at least one example of an embodiment may relate to a method or apparatus according to what is described herein, wherein encoding and / or decoding comprises entropy encoding and / or entropy decoding.
[0157] Generally, at least one example of an embodiment may relate to a method or apparatus according to what is described herein, wherein entropy encoding and / or entropy decoding comprises CABAC.
[0158] Generally, at least one example of an embodiment may relate to a method or apparatus according to the present disclosure, wherein the neighboring blocks of the current codec unit include at least one of the neighboring blocks to the left of the current codec unit or the neighboring blocks above the current codec unit.
[0159] Generally, at least one example of an embodiment may relate to a method or apparatus according to the present invention, wherein syntax elements of a current codec unit include adaptive motion vector resolution (AMVR) syntax elements, and identifying, or one or more processors are configured to identify, a codec context associated with the syntax elements of the current codec unit is based on determining an affine mode of the current codec unit.
[0160] Generally, at least one example of an embodiment may relate to a method or apparatus according to what is described herein, wherein determining an affine mode of a current codec unit is based on an inter-affine flag.
[0161] Generally, at least one example of an embodiment may relate to a method for encoding syntax information associated with video information, the method comprising: identifying a codec context associated with syntax elements of a current codec unit of the video information, wherein the identification avoids using syntax elements of neighboring blocks; and encoding the syntax elements of the current codec unit based on the codec context.
[0162] Generally, at least one example of an embodiment may relate to a method for decoding syntax information associated with video information, the method comprising: identifying a codec context associated with syntax elements of a current codec unit of the video information, wherein the identification avoids using syntax elements of neighboring blocks; and decoding the syntax elements of the current codec unit based on the codec context.
[0163] Generally, at least one example of an embodiment may relate to an apparatus for encoding syntax information associated with video information, the apparatus comprising: one or more processors configured to identify a codec context associated with a syntax element of a current codec based on avoiding use of syntax elements of neighboring blocks; and encode the syntax element of the current codec unit based on the codec context.
[0164] Generally, at least one example of an embodiment may relate to an apparatus for decoding syntax information associated with video information, the apparatus comprising: one or more processors configured to identify a codec context associated with a syntax element of a current codec unit based on avoiding use of syntax elements of neighboring blocks; and decode the syntax element of the current codec unit based on the codec context.
[0165] Generally, at least one example of an embodiment may involve a method or apparatus according to the present invention, wherein a syntax element of a current codec unit indicates the use of a video encoding mode or a video decoding mode and includes one or more of a skip mode flag, an adaptive motion vector resolution mode flag, a triangle prediction mode, a current picture reference mode, an adaptive loop filter mode, a partitioning mode, or an affine mode.
[0166] Generally, at least one example of an embodiment may involve a method or apparatus according to the present invention, wherein a syntax element of a current codec unit indicates the use of an adaptive motion vector resolution mode to encode or decode the current codec unit, and a syntax element of a neighboring block indicates an adaptive motion vector resolution mode to encode or decode the neighboring block.
[0167] Generally, at least one example of an embodiment may relate to a method or apparatus according to what is described herein, wherein encoding and / or decoding comprises entropy encoding and / or entropy decoding.
[0168] Generally, at least one example of an embodiment may relate to a method or apparatus according to what is described herein, wherein entropy encoding and / or entropy decoding comprises CABAC.
[0169] Generally, at least one example of an embodiment may relate to a method or apparatus according to the present disclosure, wherein the neighboring blocks of the current codec unit include at least one of the neighboring blocks to the left of the current codec unit or the neighboring blocks above the current codec unit.
[0170] Generally, at least one example of an embodiment may relate to a method or apparatus according to the present invention, wherein syntax elements of a current codec unit include adaptive motion vector resolution (AMVR) syntax elements, and identifying, or one or more processors are configured to identify, a codec context associated with the syntax elements of the current codec unit is based on determining an affine mode of the current codec unit.
[0171] Generally, at least one example of an embodiment may relate to a method or apparatus according to what is described herein, wherein determining an affine mode of a current codec unit is based on an inter-affine flag.
[0172] Generally, at least one example of an embodiment may relate to a method for encoding syntax information associated with video information, the method comprising: identifying a codec context associated with an adaptive motion vector resolution AMVR syntax element of a current codec unit of the video information without using AMVR syntax elements of neighboring blocks; and encoding the AMVR syntax element of the current codec unit based on the codec context.
[0173] Generally, at least one example of an embodiment may relate to a method for decoding syntax information associated with video information, the method comprising: identifying a codec context associated with an AMVR syntax element of a current codec unit of the video information without using AMVR syntax elements of neighboring blocks; and decoding the AMVR syntax element of the current codec unit based on the codec context.
[0174] Generally, at least one example of an embodiment may relate to an apparatus for encoding syntax information associated with video information, the apparatus comprising: one or more processors configured to identify a codec context associated with an AMVR syntax element of a current codec unit without using AMVR syntax elements of neighboring blocks; and encode the AMVR syntax element of the current codec unit based on the codec context.
[0175] Generally, at least one example of an embodiment may relate to an apparatus for decoding syntax information associated with video information, the apparatus comprising: one or more processors configured to identify a codec context associated with a syntax element of a current codec unit without using AMVR syntax elements of neighboring blocks; and decode the AMVR syntax element of the current codec unit based on the codec context.
[0176] Generally, at least one example of an embodiment may relate to a method or apparatus according to what is described herein, wherein encoding and / or decoding comprises entropy encoding and / or entropy decoding.
[0177] Generally, at least one example of an embodiment may relate to a method or apparatus according to what is described herein, wherein entropy encoding and / or entropy decoding comprises CABAC.
[0178] Generally, at least one example of an embodiment may relate to a method or apparatus according to the present disclosure, wherein the neighboring blocks of the current codec unit include at least one of the neighboring blocks to the left of the current codec unit or the neighboring blocks above the current codec unit.
[0179] Generally, at least one example of an embodiment may relate to a method or apparatus according to the present invention, wherein identifying a codec context associated with an AMVR syntax element of a current codec unit or one or more processors are configured to identify a codec context associated with an AMVR syntax element of the current codec unit is based on determining an affine mode of the current codec unit.
[0180] Generally, at least one example of an embodiment may relate to a method or apparatus according to what is described herein, wherein determining an affine mode of a current codec unit is based on an inter-affine flag.
[0181] Generally, at least one example of the embodiments may involve a computer program product comprising instructions that, when executed by a computer, cause the computer to perform a method according to one or more examples of the embodiments described herein.
[0182] Generally, at least one example of the embodiments may involve a non-transitory computer-readable medium storing executable program instructions that cause a computer executing the instructions to perform a method according to one or more examples of the embodiments described herein.
[0183] In general, at least one example of the embodiments may involve a signal including data generated according to any one or more examples of the embodiments described herein.
[0184] In general, at least one example of the embodiments may involve a bitstream formatted to contain syntax elements and coded image information generated according to any one or more of the examples of the embodiments described herein.
[0185] Generally, at least one example of an embodiment may involve a device comprising: an apparatus according to any one or more of the examples of the embodiments described herein; and at least one of: (i) an antenna configured to receive a signal comprising data representing image information, (ii) a band limiter configured to limit the received signal comprising data representing image information to a frequency band, and (iii) a display configured to display an image from the image information.
[0186] In general, at least one example of an embodiment may be directed to a device according to the description herein, wherein the device comprises one of a television, a television signal receiver, a set-top box, a gateway device, a mobile device, a cellular phone, a tablet, or other electronic devices.
[0187] Various examples of embodiments have been described. These and other embodiments according to the present disclosure may include any of the following features or entities, alone or in any combination, across various claim categories and types:
[0188] • Provision is made in an encoder and / or decoder for applying a form of entropy coding based on information provided by at least one syntax element, and deriving a number of contexts for the at least one syntax element, wherein the deriving comprises reducing the number of contexts.
[0189] Provision is made in an encoder and / or decoder for applying a form of entropy coding based on information provided by at least one syntax element, and deriving a number of contexts for the at least one syntax element, wherein the deriving comprises reducing the number of contexts, and wherein the reducing is based on using left and above syntax elements.
[0190] Provision is made in an encoder and / or decoder for applying a form of entropy coding based on information provided by at least one syntax element, and deriving a number of contexts for the at least one syntax element, wherein the deriving comprises reducing the number of contexts, and wherein the reducing is based on using left and above neighboring syntax elements.
[0191] Provision is made in an encoder and / or decoder for applying a form of entropy coding based on information provided by at least one syntax element, and deriving a number of contexts for the at least one syntax element, wherein the deriving comprises reducing the number of contexts, and wherein the reducing is based on sharing the same contexts by different bin indices for the same block size.
[0192] Provision is made in an encoder and / or decoder for applying a form of entropy coding based on information provided by at least one syntax element, and deriving a number of contexts for the at least one syntax element, wherein the derivation comprises reducing the number of contexts, and wherein the reduction is based on sharing the same set of context indices for different block sizes when signaling the coordinates of the last significant coefficient.
[0193] Provided in an encoder and / or decoder for applying a form of entropy coding based on information provided by at least one syntax element, and deriving a number of contexts for the at least one syntax element, wherein the deriving comprises reducing the number of contexts, and wherein the reducing is based on a sum of a left syntax element and an above syntax element, and wherein the sum of the left and above syntax elements can be derived based on an OR value of a left neighboring element and an above neighboring element or based on an AND value of the left neighboring element and the above neighboring element.
[0194] Provision is made in an encoder and / or decoder for applying a form of entropy coding based on information provided by at least one syntax element, and deriving a number of contexts for the at least one syntax element, wherein the deriving comprises reducing the number of contexts, and wherein the reducing is based on a sum of a left syntax element and an above syntax element, and wherein the sum of the left syntax element and the above syntax element can be derived based on not using neighboring elements.
[0195] • In an encoder and / or decoder, as described herein, a form of entropy coding and decoding according to any one of the embodiments, features or entities alone or in any combination is provided, wherein the form of entropy coding and decoding comprises CABAC.
[0196] - In an encoder and / or decoder, providing a form of entropy coding and decoding according to any one of the embodiments, features or entities alone or in any combination based on providing reduced complexity and / or improved compression efficiency as described herein.
[0197] • Inserting syntax elements in signaling that enable an encoder and / or decoder to provide encoding and / or decoding according to any of the embodiments, features or entities, alone or in any combination, as described herein.
[0198] • Selection based on those syntax elements, features or entities described herein, alone or in any combination, to be applied to the decoder.
[0199] A bitstream or signal containing one or more syntax elements or their variants.
[0200] Inserting syntax elements in the signaling that enable the decoder to provide decoding in a manner that corresponds to the encoding used by the encoder.
[0201] • Creating and / or sending and / or receiving and / or decoding a bitstream or signal containing one or more syntax elements or variants thereof.
[0202] A TV, set-top box, cellular phone, tablet or other electronic device providing for applying encoding and / or decoding according to any of the embodiments, features or entities as described herein, alone or in any combination.
[0203] A TV, set-top box, cellular phone, tablet computer, or other electronic device that performs encoding and / or decoding according to any of the embodiments, features, or entities as described herein, alone or in any combination, and displays (e.g., using a monitor, screen, or other type of display) the resulting image.
[0204] A TV, set-top box, cellular phone, tablet computer, or other electronic device that tunes (e.g., using a tuner) to a channel to receive a signal containing an encoded image and performs encoding and / or decoding according to any of the embodiments, features, or entities as described herein, alone or in any combination.
[0205] A TV, set-top box, cellular phone, tablet computer, or other electronic device that receives over the air (e.g., using an antenna) a signal containing an encoded image and performs encoding and / or decoding according to any of the embodiments, features, or entities as described herein, alone or in any combination.
[0206] A computer program product storing a program code which, when executed by a computer, encodes and / or decodes according to any of the embodiments, features or entities as described herein, alone or in any combination.
[0207] • A non-transitory computer-readable medium containing executable program instructions that cause a computer to execute instructions to implement encoding and / or decoding according to any of the embodiments, features or entities as described herein, alone or in any combination.
[0208] Various other general and specific embodiments are also supported and contemplated throughout this disclosure.
Claims
1. A method for encoding at least one binary bit of binarization of a syntax element related to a block of a luma component in a video, the method comprising: obtaining a set of context models associated with the binarized bin indices of the syntax element, wherein more than 2 bin indices share the same context model in the set, deriving a context shift variable based on the size of the block, deriving a context model for the at least one bin from the set based on an index of the at least one bin in the binarization and the context shift variable to provide a derived context model, The at least one bin is entropy encoded using the derived context model.
2. A method for decoding at least one binary bit of binarization of a syntax element related to a block of a luma component in a video, the method comprising: obtaining a set of context models associated with the binarized bin indices of the syntax element, wherein more than 2 bin indices share the same context model in the set, deriving a context shift variable based on the size of the block, deriving a context model for the at least one bin from the set based on an index of the at least one bin in the binarization and the context shift variable to provide a derived context model, The at least one bin is entropy decoded using the derived context model.
3. The method according to claim 1 or 2, wherein: The context shift variable provides an indication of the number of bin indices that share the same context model in the set of context models.
4. The method according to claim 1 or 2, wherein: The syntax element represents the coordinates of the last significant coefficient in the block.
5. The method according to claim 1 or 2, wherein: The more than 2 bin indices correspond to the binarized consecutive bins of the syntax element.
6. The method of claim 1 or 2, wherein for the block having a size of at least 64, more than 2 binary bit indices share the same context model in the set.
7. The method according to claim 6, wherein: In case the block size is 64, the context shift variable is set to 2.
8. The method according to claim 7, wherein: In case the block size is less than 64, the context shift variable is derived as (log2TbSize+1)>>2, where log2TbSize is the binary logarithm of the block size and >> is a right binary shift.
9. The method according to claim 4, wherein: If the coordinate is a coordinate along the x-axis, then the size of the block is the width of the block, otherwise, if the coordinate is a coordinate along the y-axis, then the size of the block is the height of the block.
10. The method according to claim 1 or 2, wherein: For the block of size at least 64, every 3 or 4 consecutive bin indices of the binarization share the same context model in the set.
11. The method according to claim 1 or 2, wherein: The set of context models is associated with different block sizes, and wherein at least two of the more than 2 bin indices sharing the same context model in the set correspond to at least two bin indices of the binarization of the syntax element for at least two blocks of different sizes.
12. The method according to claim 11, further comprising: A context offset is derived based on a size of the block, wherein at least two different block sizes share the same context offset, and wherein the context model is derived using the context offset.
13. The method according to claim 12, wherein: At least one bin index of the binarization of the syntax element for a block of size 4 and at least one bin index of the binarization of the syntax element for a block of size 8 share the same context model.
14. The method according to claim 1 or 2, wherein: The at least one bin is one bin of a binarized prefix of the syntax element having a truncated unary representation.
15. An apparatus for encoding at least one binary bit of binarization of a syntax element related to a block of a luma component in a video, the apparatus comprising one or more processors, the one or more processors being configured to: obtaining a set of context models associated with the binarized bin indices of the syntax element, wherein more than 2 bin indices share the same context model in the set, deriving a context shift variable based on the size of the block, deriving a context model for the at least one bin from the set based on an index of the at least one bin in the binarization and the context shift variable to provide a derived context model, The at least one bin is entropy encoded using the derived context model.
16. An apparatus for decoding at least one binary bit of binarization of a syntax element associated with a block of a luma component in a video, the apparatus comprising one or more processors configured to: obtaining a set of context models associated with the binarized bin indices of the syntax element, wherein more than 2 bin indices share the same context model in the set, deriving a context shift variable based on the size of the block, deriving a context model for the at least one bin from the set based on an index of the at least one bin in the binarization and the context shift variable to provide a derived context model, The at least one bin is entropy decoded using the derived context model.
17. The device according to claim 15 or 16, wherein: The entropy encoding and / or entropy decoding includes CABAC.
18. The device according to claim 15 or 16, wherein: The context shift variable provides an indication of the number of bin indices that share the same context model in the set of context models.
19. The device according to claim 15 or 16, wherein: The syntax element represents the coordinates of the last significant coefficient in the block.
20. The apparatus of claim 15 or 16, wherein for the block having a size of at least 64, more than 2 bin indices share the same context model in the set.
21. The device according to claim 20, wherein: In case the block size is 64, the context shift variable is set to 2.
22. The device according to claim 21, wherein In case the block size is less than 64, the context shift variable is derived as (log2TbSize+1)>>2, where log2TbSize is the binary logarithm of the block size and >> is a right binary shift.
23. The device according to claim 19, wherein: If the coordinate is a coordinate along the x-axis, then the size of the block is the width of the block, otherwise, if the coordinate is a coordinate along the y-axis, then the size of the block is the height of the block.
24. The device according to claim 15 or 16, wherein: For the block of size at least 64, every 3 or 4 consecutive bin indices of the binarization share the same context model in the set.
25. The device according to claim 15 or 16, wherein: The set of context models is associated with different block sizes, and wherein at least two of the more than 2 bin indices sharing the same context model in the set correspond to at least two bin indices of the binarization of the syntax element for at least two blocks of different sizes.
26. The apparatus according to claim 25, further comprising: A context offset is derived based on a size of the block, wherein at least two different block sizes share the same context offset, and wherein the context model is derived using the context offset.
27. The device according to claim 26, wherein: At least one bin index of the binarization of the syntax element for a block of size 4 and at least one bin index of the binarization of the syntax element for a block of size 8 share the same context model.
28. A non-transitory computer-readable medium storing executable program instructions, the executable program instructions causing a computer executing the instructions to perform the method according to claim 1 or 2.
29. An apparatus comprising: The device according to claim 16; as well as At least one of: (i) an antenna configured to receive a signal, the signal comprising data representing a video, (ii) a band limiter configured to limit the signal to a frequency band comprising the data representing the video, and (iii) a display configured to display the video.
30. The apparatus of claim 29, wherein: The device includes one of a television, a television signal receiver, a set-top box, a gateway device, a mobile device, a cellular phone, a tablet, or other electronic devices.