Entropy coding for video encoding and decoding
Patent Information
- Application Number
- JP2025000767
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2019-03-11
- Filing Date
- 2025-01-06
- Publication Date
- 2025-03-26
- Estimated Expiration
- 2040-03-05
Smart Images

Figure 2025041977000001_ABST
Abstract
Description
[Technical field]
[0001] This disclosure includes video encoding and decoding. [Background technology]
[0002] To achieve high compression efficiency, image and video coding schemes usually use prediction and transformation to leverage spatial and temporal redundancy in video content. In general, intra- or inter-prediction is used to exploit correlation within or between frames, and then the difference between the original and predicted picture blocks, often denoted as prediction error or prediction residual, is transformed, quantized, and entropy coded. To reconstruct the video, the compressed data is decoded by the inverse processes corresponding to prediction, transformation, quantization, and entropy coding. Summary of the Invention
[0003] In general, aspects of this disclosure include providing various approaches or modifications to entropy coding.
[0004] At least one example embodiment is provided that includes an encoder and / or decoder that applies a form of entropy coding based on information provided by at least one syntax element to derive a context number for the at least one syntax element, the deriving including reducing the context number.
[0005] At least one other example of an aspect is provided that includes a method for encoding syntax information associated with video information, the method including identifying an encoding context associated with a syntax element of a current coding unit of the video information, the identifying being performed without using syntax elements of adjacent blocks, and encoding the syntax element of the current coding unit based on the encoding context.
[0006] At least one other example of an aspect is provided that includes a method of decoding syntax information associated with video information, the method including identifying an encoding context associated with a syntax element of a current coding unit of the video information, the identifying being performed without using syntax elements of adjacent blocks, and decoding the syntax element of the current coding unit based on the encoding context.
[0007] At least one other example of an aspect is provided that includes an apparatus for encoding syntax information associated with video information, the apparatus including one or more processors configured to identify a coding context associated with a syntax element of a current coding unit without using syntax elements of a neighboring block, and encode the syntax element of the current coding unit based on the coding context.
[0008] At least one other example of an aspect is provided that includes an apparatus for decoding syntax information associated with video information, the apparatus including one or more processors configured to identify a coding context associated with a syntax element of a current coding unit without using syntax elements of neighboring blocks, and decode the syntax element of the current coding unit based on the coding context.
[0009] At least one other example of an aspect may include one or more of: a syntax element including an Adaptive Motion Vector Resolution (AMVR) flag, or a form of entropy coding including Context Adaptive Binary Arithmetic Coding (CABAC), or reducing the number of contexts for one or more syntax elements using left and top adjacent syntax elements, or reducing the number of contexts for one or more syntax elements based on sharing contexts for multiple different bin indices for the same block size, or sharing a context index set for different block sizes, for example when signaling the coordinates of the last significant coefficient.
[0010] As described 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 coding efficiency, and reduced complexity.
[0011] The foregoing presents a simplified summary of the subject matter in order to provide a basic understanding of some aspects of the disclosure. This summary is not an extensive overview of the subject matter. It is not intended to identify key / critical elements of the aspects or to delineate the scope of the subject matter. Its sole purpose is to present some concepts of the subject matter in a simplified form as a prelude to the more detailed description provided below.
[0012] The present disclosure may be better understood from consideration of the following detailed description in conjunction with the accompanying drawings. [Brief description of the drawings]
[0013] [Figure 1] 1 provides a block diagram illustrating an example embodiment of a video encoder. [Diagram 2] 1 provides a block diagram illustrating an example of an embodiment of a video decoder. [Diagram 3] 1 illustrates the concepts of a Coding Tree Unit (CTU) and a Coding Tree that can be used to represent a compressed picture. [Figure 4] 1 illustrates a coding tree unit (CTU) and the partitioning of the CTU into coding units (CUs), prediction units (PUs), and transform units (TUs). [Diagram 5] Here is an example of QTBT (Quad-Tree plus Binary-Tree) representation. [Figure 6] 6 illustrates an example of a triple-tree splitting mode for a coding unit (CU), including a horizontal splitting mode (left side of FIG. 6) and a vertical splitting mode (right side of FIG. 6). [Figure 7] 1 illustrates examples of various CU splitting modes. [Figure 8] A flow diagram illustrating an example of a CABAC encoding process from syntax elements to binarized values, to context-based arithmetic coding of some of the bins, and to bypass coding of some other of the bins is provided. [Figure 9] 1 illustrates an example of neighboring blocks used in at least one aspect of context model derivation, for example, for inter_affine_flag. [Figure 10] 1 provides flow diagrams illustrating various examples of embodiments according to one or more aspects of the present disclosure. [Figure 11] 1 provides flow diagrams illustrating various examples of embodiments according to one or more aspects of the present disclosure. [Figure 12] 1 provides flow diagrams illustrating various examples of embodiments according to one or more aspects of the present disclosure. [Figure 13]1 provides flow diagrams illustrating various examples of embodiments according to one or more aspects of the present disclosure. [Figure 14] 1 provides flow diagrams illustrating various examples of embodiments according to one or more aspects of the present disclosure. [Figure 15] 1 provides block diagrams illustrating example aspects of apparatus according to various aspects and aspects described herein. [Figure 16] 1 provides flow diagrams illustrating various examples of embodiments according to one or more aspects of the present disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0014] It should be understood that the drawings are for purposes of illustrating examples of various aspects and embodiments and are not necessarily the only possible configurations. Like reference characters throughout the various drawings refer to the same or similar functionality.
[0015] Turning now to the drawings, FIG. 1 illustrates an example of a video encoder 100, such as, for example, an HEVC encoder. HEVC is a compression standard being developed by the Joint Collaborative Team on Video Coding (JCT-VC) (see, for example, “ITU-T H.265 TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU (10 / 2014), SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS, Infrastructure of audiovisual services - Coding of moving video, High efficiency video coding, Recommendation ITU-T H.265”). FIG. 1 may also illustrate an encoder in which improvements have been made to the HEVC standard, or an encoder using technology similar to HEVC, such as, for example, an encoder based on or improved upon the Joint Exploration Model (JEM) under development by the Joint Video Experts Team (JVET), associated with a development effort called Versatile Video Coding (VVC).
[0016] 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.
[0017] The HEVC specification distinguishes between "blocks" and "units", where a "block" refers to a particular region in the sample array (e.g., luma, Y) and a "unit" includes the co-located blocks of all encoded color components (Y, Cb, Cr, or monochrome), syntax elements, and prediction data associated with the block (e.g., motion vectors).
[0018] For coding, a picture is divided into coding tree blocks (CTBs) in the shape of a mass with a configurable size, and a contiguous set of coding tree blocks is grouped into a slice. A coding tree unit (CTU) includes the CTB of an encoded color component. The CTB is the root of a quadtree that is divided into coding blocks (CBs), and a coding block may form the root of a quadtree that is divided into one or more prediction blocks (PBs) and transform blocks (TBs). Corresponding to the coding blocks, prediction blocks, and transform blocks, a coding unit (CU) includes a prediction unit (PU) and a tree structure set of transform units (TUs), where a PU includes prediction information for all color components, and a TU includes a residual coding syntax structure for each color component. The sizes of the CB, PB, and TB of the luma component are applied to the corresponding CU, PU, and TU. In this application, the term "block" can be used to refer to any of the CTU, CU, PU, TU, CB, PB, and TB. Moreover, "block" can also be used to refer to macroblocks and partitions specified in H.264 / AVC or other video coding standards, or more generally to refer to arrays of data of various sizes.
[0019] In the encoder 100 of FIG. 1, a picture is encoded by the encoder elements described below. The picture to be encoded is processed in units of CUs. Each CU is encoded using either intra mode or inter mode. If the CU is encoded in intra mode, intra prediction is performed (160). In inter mode, motion estimation (175) and compensation (170) are performed. The encoder decides (105) which one of the intra or inter modes to use to encode the CU, and indicates the intra / inter decision with a prediction mode flag. The prediction residual is calculated by subtracting (110) the predicted block from the original image block.
[0020] 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 coded (145) to output a bitstream. Additionally, the encoder may skip the transform and directly apply quantization on a 4x4 TU basis to the untransformed residual signal. Additionally, the encoder may bypass both the transform and quantization, i.e., the residual is directly coded without application of the transform or quantization processes. In direct PCM coding, there is no prediction applied and the samples of the coding units are directly coded into the bitstream.
[0021] The encoder decodes the encoded 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 decoded prediction residual and the predicted block are combined (155) to reconstruct an image block. An in-loop filter (165) is applied to the reconstructed picture, for example performing deblocking / Sample Adaptive Offset (SAO) filtering, to reduce encoding artifacts. The filtered image is stored in a reference picture buffer (180).
[0022] FIG. 2 illustrates a block diagram of an example video decoder 200, such as, for example, an HEVC decoder. In the example decoder 200, a signal or bitstream is decoded by the decoder elements described below. In general, the video decoder 200 performs a decoding path that is an inverse of the encoding path described in FIG. 1, and performs video decoding as part of encoding the video data. Additionally, FIG. 2 may illustrate a decoder in which improvements have been made to the HEVC standard, or a decoder using technology similar to HEVC, such as, for example, a decoder based on or improved upon JEM.
[0023] In particular, the input of the decoder includes a video signal or bitstream, which may be generated by a video encoder, such as the video encoder 100 of FIG. 1. First, the signal or bitstream is entropy decoded (230) to obtain transform coefficients, motion vectors, and other coding information. The transform coefficients are dequantized (240) and inverse transformed (250) to decode the prediction residual. The decoded prediction residual and the predicted block are combined (255) to reconstruct an image block. The predicted block may be obtained (270) from intra prediction (260) or motion compensated prediction (i.e., inter prediction) (275). Advanced Motion Vector Prediction (AMVP) and merge mode techniques may be used to derive motion vectors for motion compensation, and an interpolation filter may be used to calculate interpolated values for sub-integer samples of the reference block. An in-loop filter (265) is applied to the reconstructed image. The filtered image is stored in a reference picture buffer (280).
[0024] In the HEVC video compression standard, motion compensated temporal prediction is used to exploit the redundancy that exists between successive pictures of a video. To do so, a motion vector is associated for each prediction unit (PU). Each CTU (Coding Tree Unit) is represented in the compressed domain by a Coding Tree (CT). What has just been described is a partition of the quadtree of CTUs, with each leaf called a Coding Unit (CU), as illustrated in Figure 3.
[0025] Then, each CU is given some intra prediction or inter prediction parameters or prediction information. To do so, it is spatially divided into one or more Prediction Units (PUs), and each PU is assigned some prediction information. The intra or inter coding mode is assigned at the CU level, as illustrated in FIG. 4, which shows an example of the division of a coding tree unit into a coding unit, a prediction unit, and a transform unit. To code a CU, a prediction block or prediction unit (PU) is constructed from adjacent reconstructed samples (intra prediction) or from a previously reconstructed picture stored in a Decoded Pictures Buffer (DPB) (inter prediction). Then, the residual sample calculated as the difference between the original sample and the PU sample is transformed and quantized.
[0026] Codecs and video compression tools other than HEVC, such as the Joint Exploration Model (JEM) and the JEM developed by the Joint Video Exploration Team (JVET) group in the VVC reference software known as the Versatile Video Coding Test Model (VTM), may allow for a CTU representation in the compressed domain that represents picture data in a more flexible manner in the compressed domain. A more flexible representation of the coding tree can provide increased compression efficiency compared to approaches such as the CU / PU / TU ordering of the HEVC standard. One example of a more flexible representation is the Quad-Tree plus Binary-Tree (QTBT) coding tool. An example of a representation such as QTBT is illustrated in FIG. 5, which shows a coding tree with coding units that can be split both in a quad-tree and in a binary-tree fashion. The splitting of the coding units can be decided at the encoder side based on an optimization procedure, such as a rate-distortion optimization procedure, that determines the QTBT representation of the CTU with the minimum rate-distortion cost.
[0027] In the QTBT technique, CUs can have either square or rectangular shapes. The size of the coding unit is a power of 2 and can range, for example, from 4 to 128. In addition to the various rectangular shapes for coding units just mentioned, a representation of a CTU, such as QTBT, can have the following characteristics that differ from approaches such as HEVC: The QTBT decomposition of a CTU is made up of two stages: first, the CTU is split in a quadtree fashion, then each quadtree leaf can be further partitioned in a binary fashion. What has just been said is illustrated on the right side of Figure 5, where the solid lines represent the quadtree decomposition phase and the dashed lines represent the binary decomposition spatially embedded in the quadtree leaves. In intra-slice, the division structures of the luma block and chroma block are separated and determined independently. ●CU splitting into prediction units or transform units is not used, i.e., each CU is systematically made from a single prediction unit (2Nx2N prediction unit split type) and a single transform unit (no partition into transform tree).
[0028] A system may use one or more of various other CU split modes. For example, the Versatile Video Coding (VVC) video compression standard provides for a horizontal or vertical triple-tree splitting mode, as shown in FIG. 6. As shown in FIG. 6, triple-tree splitting may include partitioning a CU into three sub-coding-units (sub-CUs) with respective sizes equal to ¼, ½, and ¼ of the size of the parent CU in the direction of the considered spatial partition. Various other splitting modes are illustrated in FIG. 7.
[0029] After splitting, intra- or inter-prediction is used to exploit correlation within or between frames, and then the difference between the original and predicted blocks, often denoted as prediction error or prediction residual, is transformed, quantized, and entropy coded. To reconstruct the video, the compressed data is decoded by an inverse process corresponding to the entropy coding, quantization, transformation, and prediction.
[0030] In general, aspects of the disclosure may include one or more of entropy coding of transform coefficients, inter-prediction flags, and split flags. In at least one aspect, it may be possible to reduce the signaling and parsing complexity of at least some syntax elements associated with the entropy coding. For example, in at least one aspect, reducing the complexity may include reducing the number of operations in a decoder process and / or the number of contexts used for a form of entropy coding, such as, for example, context-based adaptive binary arithmetic coding (CABAC).
[0031] CABAC can be used to encode syntax elements into a bitstream. For encoding with CABAC, the values of non-binary syntax elements are mapped to a binary sequence called a bin string. For a bin, a context model is selected. The context model stores the probability that each bin is a "1" or a "0" and can be adaptive or static. The static model triggers the coding engine with equal probability for bins "0" and "1". In an adaptive coding engine, the context model is updated based on the actual coded value of the bin. The operating modes corresponding to the adaptive and static models are called normal and bypass modes, respectively, as shown in FIG. 8.
[0032] For normal mode, a context is obtained for the decoding of the current bin. The context is given by a context modeler shown in Fig. 8. The purpose of the context is to obtain the conditional probability that the current bin has value "0" given some context prior information X. Prior X can be the value of an already decoded syntax element that is synchronously available at both the encoder and decoder sides when the current bin is being decoded.
[0033] Typically, the previous X used for decoding the bin is specified in the standard and is chosen because it is statistically correlated with the current bin to be decoded. The importance of using the context information just mentioned is to reduce the rate cost when encoding the bin. What we just mentioned 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: H(bin|X) <H(bin) This means that the conditional entropy of a bin knowing X is lower than the entropy of the bin if the bin and X are statistically correlated. Hence, the context information X is used to obtain the probability that the bin is a "0" or a "1". Given the conditional probabilities just described, the conventional decoding engine of FIG. 8 performs an arithmetic decoding of the binary bins. The bin values are then used to update the value of the conditional probability associated with the current bin knowing the current context information X. What has just been described is called the context model update step in FIG. 8. Updating the context model for each bin as it is decoded (or encoded) allows to progressively refine the context modeling for each binary element. Thus, the CABAC decoder progressively learns the statistical behavior of each conventionally encoded bin.
[0034] Note that the context modeler and context model update steps are exactly the same operations at the encoder side and at the decoder side. What has just been described provides the inverse of the binarization step done by the encoder. Hence, the inverse transformation performed here involves obtaining the values of these syntax elements based on their respective decoded binarized versions.
[0035] Multiple contexts can 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 used for 12 syntax elements, which means about 32 contexts per syntax. As mentioned, the CABAC decoder needs to accumulate a total amount of statistical data about each normally encoded bin in order to gradually learn its statistical behavior. If there are many contexts for one coding bin, the statistics of each context may not be sufficient for the convergence and stability of the context model, which may affect the efficiency of the CABAC decoder.
[0036] In general, at least one aspect may include reducing the number of CABAC contexts (transform coefficients, intra and inter prediction flags, adaptive loop filter flags, and partitioning flags, etc.) for normal (or context-based) coding bins. As a result, the complexity of the decoding process may be reduced. For example, in at least one aspect, the complexity may be reduced with respect to 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 elements pred_mode_ibc_flag), 18 contexts for some of the inter prediction flags (syntax elements cu_skip_flag, inter_affine_flag, AMVR_flag, and merge_triangle_flag), 9 contexts for the adaptive loop filter flags (syntax element alf_ctb_flag), and 15 contexts for some split flags (syntax elements split_cu_flag and qt_split_cu_flag). In general, at least one example of an aspect may include reducing the complexity of a context derivation process for entropy coding, e.g., CABAC, based on reducing the number of contexts for some syntax elements with left and top neighboring syntax elements. In general, at least one example of an aspect may include sharing the same context, e.g., 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 coordinates of the last significant coefficient.
[0037] In more detail, an approach to context derivation processing for entropy coding will be described, which may include using neighboring syntax elements for various syntax elements, based on an example such as CABAC. Next, various examples of aspects for reducing the complexity of context derivation for the just mentioned syntax elements will be described. Next, an approach to context selection for the last significant coefficient in an exemplary aspect will be described, based on an example of entropy coding such as CABAC. Next, an example of an aspect for reducing the context complexity for the last significant coefficient coordinate signaling will be described.
[0038] In one or more examples of the system, a flag may be signaled in the bitstream to the decoder to indicate whether some prediction tools or modes are used. For example, for an example of entropy coding such as CABAC, some flags are coded with multiple contexts derived using adjacent syntax elements. For example, one flag, namely inter_affine_flag, may be signaled to indicate whether motion compensation based on an affine model is used to generate or not generate a prediction sample for the current CU. For an example of an approach to entropy coding based on CABAC, inter_affine_flag is CABAC coded with three context models, where the context models are derived by the sum of inter_affine_flag of the left block L and the upper block A as depicted in FIG. 9. Then, the derivation process of CABAC context ctxInc may be formulated as follows: ctxInc = (L is available && L is affine) + (A is available && A is affine) An example of an aspect of providing derivation of context model ctxInc for inter_affine_flag is illustrated by the flow diagram shown in Figure 10. Furthermore, similar processing can also be applied to deriving CABAC context for syntax elements for skip mode (cu_skip_flag), AMVR mode (AMVR_flag), triangular prediction mode (merge_triangle_flag), current picture reference mode (pred_mode_ibc_flag), adaptive loop filter (alf_ctb_flag), splitting (split_cu_flag and qt_split_cu_flag).
[0039] In at least one example of an aspect, the input to the described CABAC derivation process can be a luma location (x0,y0) that specifies the top-left luma sample of the current luma block relative to the top-left sample of the current picture, and may also be color components cIdx, the quadtree depth of the current encoding cqDepth, and the width cbWidth and height cbHeight of the current coding block in luma samples. The output of the described process is ctxInc.
[0040] Other parameters or variables may include: ● The location of the left block (xNbL, yNbL), which can be set equal to (x0-1, y0); availableL, which specifies the availability of the block located immediately to the left of the current block; ● The location (xNbA, yNbA) of the block above, which may be set equal to (x0, y0-1), and ● availableA, which specifies the availability of the coding block that is located directly above the current block.
[0041] For the CABAC example, the assignment of ctxInc may be determined by condL and condA as specified in Table 1 below as follows: ctxInc = (condL && availableL) + (condA && availableA) + ctxSetldx*3
[0042] [Table 1]
[0043] In at least one example embodiment, it is possible to reduce the complexity of the context derivation process described for the above syntax elements by deriving only two context models based on the left and top syntax elements. As described above, the inter_affine_flag for the CABAC example can be coded with three context models, where the context model is derived by the sum of the inter_affine_flag of the left block L and the top block A. However, instead of generating three context models using the information of neighboring blocks, only two context models can be derived to reduce redundant context. In a first example of the aspect, a context model can be derived using the OR value of inter_affine_flag of left block L and top block A, which indicates that the context for a syntax element is set to 1 if either the condition of left block L (condL) or the condition of top block A (condA) is true. The corresponding ctxInc allocation formation is specified as follows: ctxInc = (condL && availableL) || (condA && availableA) + ctxSetldx*2 In a second example of the aspect, a context model can be derived with the AND values of inter_affine_flag in the left block L and the top block A indicating that the context for the syntax element is set to 1 only if both conditions condL and condA are true. The corresponding ctxInc allocation formation is specified as follows: ctxInc = (condL && availableL) && (condA && availableA) + ctxSetldx*2 As an example, the derivation process of the context model ctxInc for inter_affine_flag according to the first exemplary aspect described is illustrated by the flow diagram shown in Figure 11. Applying the described approach to these syntax elements can reduce the number of ctxInc as shown in Table 2, i.e., yielding 14 possible context reductions.
[0044] [Table 2]
[0045] At least one other aspect may take into consideration using only one context model to code these syntax elements and avoid using neighboring blocks. An example of this aspect is illustrated in FIG. 16. In FIG. 16, at 1610, a coding context associated with a syntax element of a current coding unit, e.g., AMVR_flag, is identified or determined without using the syntax elements of neighboring blocks, e.g., without using the AMVR_flag of the neighboring blocks. Then, at 1620, the syntax element is encoded based on the coding context. This aspect of context derivation may reduce line buffer size as well as parsing complexity since the left and top syntax elements are not used in the context derivation process. Applying the described aspect on these syntax elements may reduce the number of ctxInc as shown in Table 3, i.e., resulting in 28 possible context reductions.
[0046] [Table 3]
[0047] At least one example of a CABAC based embodiment may provide a derivation of the CABAC context for the syntax elements last_sig_coeff_x_prefix and last_sig_coeff_y_prefix. An example system may include the location of the last significant coefficient in a block being coded by explicitly signaling an (X,Y) coordinate. The coordinate X indicates the column number and the coordinate Y indicates the row number. The coordinate is binarized in two parts, a prefix and a suffix. The first part represents an index into the interval (syntax elements last_sig_coeff_x_prefix and last_sig_coeff_y_prefix). The just mentioned prefixes have a truncated unary representation and the bins are coded in normal mode. The second part or suffix has a fixed length representation, is coded in bypass mode and represents an offset within the interval. The maximum length of the truncated unary code for one coordinate (which is also the number of normally coded bins) is 3, 5, 7, 9, and 11 for block sizes of 4, 8, 16, 32, and 64, respectively. As an example, Table 4 shows the binarization for a block width (height) equal to 64. First, the last significant coefficient coordinate x(y) is mapped to 11 bins and the corresponding bins are coded by normal mode.
[0048] [Table 4]
[0049] Different bins in a truncated unary part with similar statistics share contexts to reduce the total number of contexts. Since the number of contexts for one coordinate prefix is 24 (21 for luma and 3 for chroma), the total number of contexts for coding the last position is 48. Table 5 shows the context assignment to different bins for a given coordinate across all block sizes T, luma and chroma components.
[0050] [Table 5]
[0051] In at least one aspect, inputs to the just described process may include variables binIdx, color component index cIdx, the binary logarithm of the transform block width log2TbWidth, and the transform block height log2TbHeight. The output of the just described process is the variable ctxInc. The variable log2TbSize is derived as follows: - If the syntax element being parsed is last_sig_coeff_x_prefix, then log2TbSize is set equal to log2TbWidth. - Otherwise (the syntax element being parsed is last_sig_coeff_y_prefix), log2TbSize is set equal to log2TbHeight.
[0052] The variables ctxOffset and ctxShift are derived as follows: - if cIdx is equal to 0, then ctxOffset is set equal to (log2TbSize - 2)*3 + ((log2TbSize - 1)>>2) and ctxShift is set equal to (log2TbSize + 1)>>2. - Otherwise (cIdx is greater than 0), ctxOffset is set equal to 21 and ctxShift is set equal to Clip3(0, 2, 2log2TbSize>>3).
[0053] The variable ctxInc is derived as follows: ctxInc = (binIdx >> ctxShift) + ctxOffset An example of how to provide a context model ctxInc derivation to last_sig_coeff_x_prefix and last_sig_coeff_y_prefix is illustrated by the flow diagram in FIG.
[0054] In general, at least one example of an aspect may take into consideration deriving CABAC contexts for syntax elements last_sig_coeff_x_prefix and last_sig_coeff_y_prefix of the luma component. As mentioned with respect to the above described example, different bins in a truncated unary part with similar statistics share contexts to reduce the total number of contexts. One or more aspects may further reduce the number of contexts for syntax elements last_sig_coeff_x_prefix and last_sig_coeff_y_prefix with respect to the luma component.
[0055] In at least one aspect, more different bin indexes for the same block size can share the same context. A variable ctxShift can be provided to determine or indicate how many bin indexes share the same context, and the value of ctxShift is related to the block size log2TbSize. For example, each bin index will use one context when the width (height) of the block is equal to 4, and each two bin indexes will share one context when the width (height) of the block is greater than 4. For larger block sizes (i.e., when the block size is equal to 64), instead of each two bin indexes sharing one context, each three or four bin indexes could share one context. Table 6 shows a modified context allocation for a block size 64, luma component, where each four bin indexes share the same context. The described aspect allows for a reduction of six contexts for both syntax elements last_sig_coeff_x_prefix and last_sig_coeff_y_prefix.
[0056] [Table 6]
[0057] And the corresponding modification of the variable ctxShift for the described embodiment can be derived as follows:
[0058]
number
[0059] An example of an aspect, for example as described above, of providing derivation of a context model ctxInc for last_sig_coeff_x_prefix and last_sig_coeff_y_prefix sharing the same context for more bin indices of block size 64 is illustrated by the flow diagram shown in FIG. 13.
[0060] For example, in at least one variation of the embodiment described above and illustrated in FIG. 13, sharing the same context among each of the four bin indexes may also be applied to other block sizes. In at least one other variation, sharing the same context among each of the x (x>2) bin indexes may also be applied to other block sizes. In at least one other variation, sharing the same context among each of the x (x>2) bin indexes may also be applied to other block sizes of the chrominance components.
[0061] In at least one example of the embodiment, different block sizes can share the same context set. For example, in at least one system, for luma component, contexts of 3, 3, 4, 5, and 6 can be used for block sizes of 4, 8, 16, 32, and 64, respectively. And, a variable ctxOffset can be related to block size log2TbSize(ctxOffset=[0, 3, 6, 10, 15, 21]) to indicate the context set for each block size. In the example of the embodiment, the same context could be shared for the same context set across different block sizes, instead of assigning different context sets to different block sizes. Table 7 shows modified context set assignment for block sizes 4 and 8, luma component, using the same variable ctxOffset value. And, the corresponding modified variable ctxOffset value set is ctxOffset=[0, 0, 3, 7, 12, 18] for the example just described. Based on the illustrated example of an embodiment, it is possible to reduce six contexts for both syntax elements last_sig_coeff_x_prefix and last_sig_coeff_y_prefix.
[0062] [Table 7]
[0063] For example, an example of the described aspect of providing derivation of context model ctxInc for last_sig_coeff_x_prefix and last_sig_coeff_y_prefix sharing the same context for block sizes 4 and 8 is illustrated by the flow diagram shown in FIG. 14 . For example, at least one variation of the aspect described above and illustrated in Figure 14 may include sharing a context index among all block sizes. At least one other variation may include sharing a context index among any of various combinations of different block sizes. At least one other variation may include sharing a context index among luma and chroma components.
[0064] A system according to one or more aspects described herein involving video encoding and / or decoding may provide one or more of the following non-limiting examples of features, individually or in combination in various arrangements. The context index for the various syntax elements derived by the sum of the left syntax element and the above syntax element can be derived by the OR value of these two adjacent elements. The context index for the various syntax elements derived by the sum of the left syntax element and the above syntax element can be derived by the AND value of these two adjacent elements. Context indexes for various syntax elements derived by the sum of the syntax element to the left and the syntax element above can be derived by not using adjacent elements. The context index for signaling the coordinates of the last significant coefficient can share the same context for more different bin indices of the same block size; and ● The context index for signaling the coordinates of the last significant coefficient can share the same context for different block sizes.
[0065] This document describes various examples of aspects, features, models, approaches, and the like. Many of the above examples are described with particularity and in ways that may often appear limiting, at least to illustrate individual characteristics. However, what is stated is for purposes of clarity in description and does not limit the application or scope. Indeed, various examples of aspects, features, and the like described herein can be combined and interchanged in various ways to provide further examples of aspects.
[0066] In general, the example embodiments described and contemplated in this document can be implemented in many different ways. While Figures 1 and 2 described above and Figure 10 described below may provide some embodiments, other embodiments are contemplated, and the discussion of Figures 1, 2, and 15 does not limit the breadth of implementations. In general, at least one embodiment provides an example related to video encoding and / or decoding, and at least one other embodiment generally relates to transmitting a generated or encoded bitstream or signal. The just-described embodiment and other embodiments can be implemented as a method, an apparatus, a computer-readable medium having instructions stored thereon, and / or a computer-readable medium having a bitstream or signal generated according to any of the described methods, for encoding or decoding video data according to any of the described methods.
[0067] In this application, the terms "reconstructed" and "decoded" may be used interchangeably, the terms "pixel" and "sample" may be used interchangeably, and the terms "image", "picture", 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.
[0068] The terms HDR (high dynamic range) and SDR (standard dynamic range) are used in this disclosure. Often, these terms convey a particular value of dynamic range to those skilled in the art. However, additional aspects are also contemplated in which reference to HDR is understood to mean "higher dynamic range" and reference to SDR is understood to mean "lower dynamic range". The above additional aspects are not constrained by any particular value of dynamic range that may often be associated with the terms "high dynamic range" and "standard dynamic range".
[0069] Various methods are described herein, each of which includes one or more steps or actions to achieve the described method. Unless a specific order of steps or actions is required for the inherent operation of the method, the order and / or use of specific steps and / or actions may be modified or combined.
[0070] Various methods and other aspects described in this document can be used to modify modules of a video encoder and / or decoder, such as, for example, module 145 of encoder 100 shown in Figure 1 and module 230 of decoder 200 shown in Figure 2. Furthermore, the aspects are not limited to VVC or HEVC, but can be applied to other standards and recommendations, for example, pre-existing or developed in the future, as well as extensions of any of the above standards and recommendations (including VVC and HEVC). Unless otherwise indicated or specifically technically prohibited, the aspects described in this document can be used individually or in combination.
[0071] For example, various numerical values are used in this document. The specific values are for illustrative purposes, and the aspects described are not limited to the specific values just mentioned.
[0072] FIG. 15 illustrates a block diagram of an example of a system in which various aspects and aspects can be implemented. The system 1000 can be embodied as a device including various components described below and configured to perform one or more aspects described herein. Examples of such devices include, but are not limited to, various electronic devices such as, for example, personal computers, laptop computers, smartphones, tablet computers, digital multimedia set-top boxes, digital television broadcast receivers, personal video recording systems, connected consumer electronics appliances, and servers. The elements of the system 1000, singly or in combination, can be embodied in a single integrated circuit, multiple ICs, and / or separate components. For example, in at least one aspect, the processing and encoder / decoder elements of the system 1000 are distributed across multiple ICs and / or separate components. In various aspects, the system 1000 is communicatively connected to other similar systems or other electronic devices, for example, via a communication bus or via dedicated input and / or output ports. In various aspects, the system 1000 is configured to implement one or more aspects described herein.
[0073] The system 1000 includes at least one processor 1010 configured to execute instructions loaded therein to implement various aspects described herein, for example. The processor 1010 can 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 can include non-volatile and / or volatile memory including, but not limited to, EEPROM, ROM, PROM, RAM, DRAM, SRAM, flash, magnetic disk drives, and / or optical disk drives. The storage device 1040 can include, by way of non-limiting example, an internal storage device, an attached storage device, and / or a network-accessible storage device.
[0074] The system 1000 includes an encoder / decoder module 1030 configured to process data to provide, for example, encoded or decoded video, which may include its own processor and memory. The encoder / decoder module 1030 represents a module or modules that may be included in a device that performs encoding and / or decoding functions. As is known, a device may include one or both of an encoding module and a decoding module. Additionally, the encoder / decoder module 1030 may be implemented as a separate element of the system 1000 or may be incorporated within the processor 1010 as a combination of hardware and software, as is known to those skilled in the art.
[0075] Program code loaded onto the processor 1010 or 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 aspects, one or more of the processors 1010, memory 1020, storage device 1040, and encoder / decoder module 1030 may store one or more of various items during 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 processing of equations, formulas, operations, and operational logic.
[0076] In some aspects, memory internal to the processor 1010 and / or the encoder / decoder module 1030 is used to store instructions and provide working memory for processing required during encoding or decoding. However, in other aspects, memory external to the processing device (e.g., the processing device can be either the processor 1010 or the encoder / decoder module 1030) is used for one or more of the just-mentioned functions. The external memory can be the memory 1020 and / or the storage device 1040, e.g., dynamic volatile memory and / or non-volatile flash memory. In some aspects, the external non-volatile flash memory is used to store the TV's operating system. In at least one aspect, a high-speed external dynamic volatile memory, e.g., RAM, is used as working memory for video encoding and decoding operations, e.g., MPEG-2, HEVC, or Versatile Video Coding (VVC).
[0077] Input to the elements of system 1000 may be provided via various input devices, as shown in block 1130. Such input devices include, but are not limited to, (i) an RF section that receives an RF signal transmitted, for example, over the air by a broadcast station, (ii) a composite input terminal, (iii) a USB input terminal, and / or (iv) an HDMI input terminal.
[0078] In various aspects, the input devices of block 1130 are associated with respective input processing elements 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 band of frequencies), (ii) down-converting the selected signal, (iii) band-limiting again to a narrower band of frequencies selecting a single frequency band, which in some aspects may be referred to as a channel (e.g.), (iv) demodulating the down-converted band-limited signal, (v) performing error correction, and (vi) demultiplexing to select a desired stream for a data packet. The RF section of various aspects includes one or more elements performing the just-mentioned 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, for example, a tuner performing various functions, including down-converting a received signal to a lower frequency (e.g., an intermediate frequency or a frequency close to baseband) or to baseband. In one set-top box embodiment, the RF section and associated input processing elements receive, filter, downconvert, and perform frequency selection by refiltering RF signals transmitted over a wired medium (e.g., cable) to the desired frequency band. Various embodiments rearrange the order of the above-mentioned (and other) elements, remove some of the elements just mentioned, and / or add other elements that perform similar or different functions. Adding elements can include inserting elements between existing elements, e.g., inserting amplifiers, and analog-to-digital converters. In various embodiments, the RF section includes an antenna.
[0079] Additionally, the USB and / or HDMI terminals can include respective interface processors to interface the system 1000 to other electronic devices over USB and / or HDMI. It is understood that various aspects of the input processing, e.g., Reed-Solomon error correction, can be implemented, for example, in a separate input processing IC or within the processor 1010. Similarly, aspects of the USB or HDMI interface processing can be implemented in a separate input processing IC or within the processor 1010. The demodulated, error corrected, and demultiplexed stream is provided to various processing elements including, for example, the processor 1010 and an encoder / decoder 1030 that operates in cooperation with memory and storage elements to process the data stream for presentation at an output device.
[0080] The various elements of the system 1000 can be provided within an integrated housing in which the various elements can be interconnected and transmit data therebetween using a suitable coupling arrangement 1140, e.g., internal buses known in the art, including an I2C bus, hardwired, and printed circuit boards.
[0081] The system 1000 includes a communication interface 1050 that enables communication with other devices over a communication channel 1060. The communication interface 1050 may include, but is not limited to, a transceiver configured to transmit 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 within a wired and / or wireless medium, for example.
[0082] Data is streamed to the system 1000 in various embodiments using a Wi-Fi network, such as IEEE 802.11. The Wi-Fi signal of the embodiment just described is received via a communication channel 1060 and communication interface 1050 adapted for Wi-Fi communication. Typically, the communication channel 1060 of the embodiment just described is coupled to an access point or router that provides access to an outside network, including the Internet, to enable streaming applications and other over-the-top communication. Other embodiments provide streamed data to the system 1000 using a set-top box that delivers data via an HDMI connection of the input block 1130. Still other embodiments provide streamed data to the system 1000 using an RF connection of the input block 1130.
[0083] The system 1000 can provide output signals to various output devices including a display 1100, speakers 1110, and other peripheral devices 1120. The other peripheral devices 1120, in various example embodiments, include one or more of a standalone DVR, a disc player, a stereo system, a lighting system, and other devices that provide functionality based on the output of the system 1000. In various embodiments, control signals are communicated between the system 1000 and the display 1100, speakers 1110, or other peripheral devices 1120 using signaling such as, for example, AV.Link, CEC, or other communication protocols that allow device-to-device control with or without user intervention. The 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 coupled to the system 1000 via communication interface 1050 using communication channel 1060. The display 1100 and speakers 1110 can be integrated into a single unit with other components of the system 1000 in an electronic device, such as a television. In various aspects, the display interface 1070 includes a display driver, such as a timing controller (T Con) chip.
[0084] Alternatively, the display 1100 and speakers 1110 can be separate from one or more other components, for example if the RF portion of the input 1130 is part of a separate set-top box. In various aspects where the display 1100 and speakers 1110 are external components, the output signal can be submitted via a dedicated output connection including, for example, an HDMI port, a USB port, or a COMP output.
[0085] The embodiments can be performed 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 can be implemented by one or more integrated circuits. The memory 1020 can be of any type suitable for the technical environment and can be implemented using any suitable data storage technology, such as, as non-limiting examples, optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memories, and removable memories. The processor 1010 can be of any type suitable for the technical environment and can include, as non-limiting examples, one or more of a microprocessor, a general-purpose computer, a special-purpose computer, and a processor based on a multi-core architecture.
[0086] Throughout this disclosure, various implementations include decoding. As used herein, "decoding" can include all or part of the processing performed on the received encoding sequence to generate a final output suitable for, for example, display. In various aspects, the processing includes one or more of the processing typically performed by a decoder, such as entropy decoding, inverse quantization, inverse transform, and differential decoding. In various aspects, the processing also includes, or may be alternatively included, the processing performed by the decoder of the various implementations described herein, such as extracting a picture from a tiled (packed) picture, determining an upsampling filter to use and then upsampling the picture, and flipping the picture back to its intended orientation.
[0087] 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 more generally, it is believed that the decoding process will be clear based on the context of the particular description and will be well understood by those of ordinary skill in the art.
[0088] Additionally, various implementations include encoding. In a manner similar to the above discussion of "decoding," "encoding" as used herein can include all or a portion of the processing performed on an input video sequence, for example to generate an encoded bitstream or signal. In various aspects, the processing includes one or more of the processing typically performed by an encoder, such as partitioning, differential encoding, transforming, quantization, and entropy encoding. In various aspects, the processing also includes, or alternatively includes, the processing performed by an encoder in various implementations described herein.
[0089] As a further example, in one embodiment "encoding" refers only to "entropy encoding," in another embodiment "encoding" refers only to differential de-encoding, and in another embodiment "encoding" refers to a combination of differential encoding and entropy encoding. Whether the phrase "encoding" is intended to refer specifically to a subset of operations or more generally, it is believed that the encoding process will be clear based on the context of the particular description and will be well understood by those of ordinary skill in the art.
[0090] Note that the syntax elements used in this specification are descriptive terms; as noted above, they do not preclude the use of other syntax element names.
[0091] Where a diagram is provided as a flow diagram, it should be understood that it also provides a block diagram of the corresponding apparatus. Similarly, where a diagram is provided as a block diagram, it should be understood that it also provides a flow diagram of the corresponding method / process.
[0092] Various aspects refer to rate-distortion optimization. In particular, during the encoding process, a balance or trade-off between rate and distortion is usually considered, often subject to computational complexity constraints. Typically, rate-distortion optimization is formulated as minimizing the rate-distortion function, which is a weighted sum of the rate and the distortion. There are different approaches to solving the rate-distortion optimization problem. For example, an approach can be based on an extensive test of all encoding options, including all considered modes or coding parameter values, together with a full evaluation of the coding cost and associated distortion of the reconstructed signal after encoding and decoding. Furthermore, a faster approach can also be used to reduce the encoding complexity, especially with a calculation of the approximated distortion based on a prediction or prediction residual signal rather than the reconstructed one. A mixture of the two approaches just mentioned can also be used, for example by using the approximated distortion for only some of the possible encoding options, and the full distortion for other encoding options. Other approaches only evaluate a subset of the possible encoding options. More generally, many approaches use any of a variety of techniques to perform an optimization, but the optimization is not necessarily a complete evaluation of both the coding cost and the associated distortion.
[0093] The implementations and aspects described herein can be implemented, for example, in a method or process, an apparatus, a software program, a data stream, or a signal. Even if only described in the context of a single form of implementation (e.g., only described as a method), the implementation of the described features can also be implemented in other forms (e.g., an apparatus or a program). An apparatus can be implemented, for example, in appropriate hardware, software, and firmware. A method can be implemented, for example, in a processor, which generally refers to a processing device, including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. Furthermore, a processor also includes a communication device, such as, for example, a computer, a mobile phone, a portable / personal digital assistant ("PDA"), and other devices that facilitate communication of information between end users.
[0094] Reference to "one embodiment" or "embodiment" or "one implementation" or "implementation" means that a particular feature, structure, characteristic, etc. described in connection with the embodiment is included in at least one embodiment, as well as other variations. Thus, appearances of the phrases "in one embodiment" or "in an embodiment" or "in one implementation" or "in an implementation" appearing in various places throughout this document are not necessarily all referring to the same embodiment, as well as any other variations.
[0095] Additionally, this document may refer to "obtaining" various pieces of 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.
[0096] Additionally, this document may refer to "accessing" various portions of 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 inferring information.
[0097] Additionally, this document may refer to "receiving" various portions of information. Receiving, as with "accessing," is intended to be a broad term. Receiving information may include, for example, one or more of accessing information or retrieving information (e.g., from a memory). Additionally, "receiving" typically includes among other operations, in some way or another, for example, storing information, processing information, transmitting information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information.
[0098] It should be understood that the use of any of the following " / ", "and / or" and "at least one of" is intended to include, for example, in the case of "A / B", "A and / or B" and "at least one of A and B", the selection of only the first listed alternative (A), or the selection of only the second listed alternative (B), or the selection of both alternatives (A and B). As a further example, in the case of "A, B, and / or C" and "at least one of A, B, and C", the phrase is intended to include the selection of only the first listed alternative (A), or the selection of only the second listed alternative (B), or the selection of only the third listed alternative (C), or the selection of only the first and second listed alternatives (A and B), or the selection of only the first and third listed alternatives (A and C), or the selection of the second and third listed alternatives (B and C), or the selection of all three alternatives (A and B and C). What has just been said may be expanded beyond those items merely listed, as would be apparent to one of ordinary skill in the art and related arts.
[0099] Furthermore, as used herein, the word "signaling" refers to, among other things, indicating something to a corresponding decoder. For example, in an aspect, an encoder signals a specific one of a plurality of parameters for refinement. In this way, in an aspect, the same parameter is used on both the encoder side and the decoder side. Thus, for example, an encoder can transmit a specific parameter to a decoder (explicit signaling), and the decoder can use the same specific parameter. Conversely, if the decoder already has a specific parameter as well as others, signaling can be used without transmission (implicit signaling) to simply enable the decoder to know and select the specific parameter. By avoiding transmission of any actual function, bit savings are realized in various aspects. It is understood that signaling can be accomplished in various ways. For example, one or more syntax elements, flags, etc. are used to signal information to a corresponding decoder in various aspects. Although the foregoing has concerned the verb form of the word "signaling," the word "signaling" may also be used herein as a noun.
[0100] As would be apparent to one skilled in the art, the implementations can generate a variety of signals formatted to carry information that can be, for example, stored or transmitted. For example, the information can include instructions for performing a method or data generated by one of the described implementations. For example, the signals can be formatted to carry a bit stream or signal of the described manner. For example, the signals can be formatted as electromagnetic waves (e.g., using the radio frequency portion of the spectrum) or as baseband signals. For example, the formatting can include encoding a data stream and modulating a carrier wave with the encoded data stream. For example, the information the signals carry can be analog or digital information. The signals can be transmitted over a variety of separate wired or wireless links, as is known. The signals can be stored in a processor-readable medium.
[0101] Additionally, various generalized and specialized aspects alike are supported and contemplated throughout this disclosure. Examples of aspects in accordance with this disclosure include, but are not limited to, the following.
[0102] In general, at least one example of an aspect may include a method of encoding syntax information associated with video information, the method including identifying an encoding context associated with a syntax element of a current coding unit of the video information, the identifying being performed without using syntax elements of adjacent blocks, and encoding the syntax element of the current coding unit based on the encoding context.
[0103] In general, at least one example of an aspect may include a method of decoding syntax information associated with video information, the method including identifying an encoding context associated with a syntax element of a current coding unit of the video information, the identifying being performed without using syntax elements of adjacent blocks, and decoding the syntax element of the current coding unit based on the encoding context.
[0104] In general, at least one example of an aspect may include an apparatus for encoding syntax information associated with video information, the apparatus including one or more processors configured to identify a coding context associated with a syntax element of a current coding unit without using syntax elements of neighboring blocks, and encode the syntax element of the current coding unit based on the coding context.
[0105] In general, at least one example of an aspect may include an apparatus for decoding syntax information associated with video information, the apparatus including one or more processors configured to identify a coding context associated with a syntax element of a current coding unit without using syntax elements of adjacent blocks, and decode the syntax element of the current coding unit based on the coding context.
[0106] In general, at least one example of an aspect may include a method or apparatus described herein, where a syntax element of a current coding unit indicates use of a video encoding mode or a video decoding mode and includes one or more of a skip mode flag, or an adaptive motion vector resolution mode flag, or a triangular prediction mode, or a current picture reference mode, or an adaptive loop filter mode, or a partitioning mode, or an affine mode.
[0107] In general, at least one example of an aspect may include a method or apparatus described herein, wherein a syntax element for a current coding unit indicates use of an adaptive motion vector resolution mode for encoding or decoding the current coding unit, and a syntax element for a neighboring block indicates an adaptive motion vector resolution mode for encoding or decoding the neighboring block.
[0108] In general, at least one example of an aspect may include a method or apparatus described herein, wherein the encoding and / or decoding includes entropy encoding and / or entropy decoding.
[0109] In general, at least one example of an embodiment may include a method or apparatus described herein, wherein the entropy encoding and / or entropy decoding includes CABAC.
[0110] In general, at least one example of an aspect may include a method or apparatus described herein, wherein the neighboring blocks of the current coding unit include at least one of a neighboring block to the left of the current coding unit or a neighboring block above the current coding unit.
[0111] In general, at least one example of an aspect may include a method or apparatus described herein, wherein a syntax element of a current coding unit includes an adaptive motion vector resolution (AMVR) syntax element, and identifying, or one or more processors configured to identify, a coding context associated with the syntax element of the current coding unit is based on determining an affine mode of the current coding unit.
[0112] In general, at least one example of an aspect may include a method or apparatus described herein, wherein determining an affine mode for a current coding unit is based on an inter-affine flag.
[0113] In general, at least one example of an aspect may include a method of encoding syntax information associated with video information, the method including identifying an encoding context associated with a syntax element of a current coding unit of the video information, the identifying including avoiding using syntax elements of adjacent blocks and encoding the syntax element of the current coding unit based on the encoding context.
[0114] In general, at least one example of an aspect may include a method of decoding syntax information associated with video information, the method including identifying an encoding context associated with a syntax element of a current coding unit of the video information, the identifying including avoiding using syntax elements of adjacent blocks and decoding the syntax element of the current coding unit based on the encoding context.
[0115] In general, at least one example of an aspect may include an apparatus for encoding syntax information associated with video information, including one or more processors configured to identify an encoding context associated with a syntax element of a current coding unit based on avoiding use of syntax elements of adjacent blocks, and encode the syntax elements of the current coding unit based on the encoding context.
[0116] In general, at least one example of an aspect may include an apparatus for decoding syntax information associated with video information, the apparatus including one or more processors configured to identify an encoding context associated with a syntax element of a current coding unit based on avoiding use of syntax elements of adjacent blocks, and decode the syntax element of the current coding unit based on the encoding context.
[0117] In general, at least one example of an aspect may include a method or apparatus described herein, where a syntax element of a current coding unit indicates use of a video encoding mode or a video decoding mode and includes one or more of a skip mode flag, or an adaptive motion vector resolution mode flag, or a triangular prediction mode, or a current picture reference mode, or an adaptive loop filter mode, or a partitioning mode, or an affine mode.
[0118] In general, at least one example of an aspect may include a method or apparatus described herein, wherein a syntax element for a current coding unit indicates use of an adaptive motion vector resolution mode for encoding or decoding the current coding unit, and a syntax element for a neighboring block indicates an adaptive motion vector resolution mode for encoding or decoding the neighboring block.
[0119] In general, at least one example of an aspect may include a method or apparatus described herein, wherein the encoding and / or decoding includes entropy encoding and / or entropy decoding.
[0120] In general, at least one example of an embodiment may include a method or apparatus described herein, wherein the entropy encoding and / or entropy decoding includes CABAC.
[0121] In general, at least one example of an aspect may include a method or apparatus described herein, wherein the neighboring blocks of the current coding unit include at least one of a neighboring block to the left of the current coding unit or a neighboring block above the current coding unit.
[0122] In general, at least one example of an aspect may include a method or apparatus described herein, wherein a syntax element of a current coding unit includes an adaptive motion vector resolution (AMVR) syntax element, and identifying, or one or more processors configured to identify, a coding context associated with the syntax element of the current coding unit is based on determining an affine mode of the current coding unit.
[0123] In general, at least one example of an aspect may include a method or apparatus described herein, wherein determining an affine mode for a current coding unit is based on an inter-affine flag.
[0124] In general, at least one example of an aspect may include a method of encoding syntax information associated with video information, including identifying an encoding context associated with an adaptive motion vector resolution (AMVR) syntax element of a current coding unit of the video information without using an AMVR syntax element of a neighboring block, and encoding the AMVR syntax element of the current coding unit based on the encoding context.
[0125] In general, at least one example of an aspect may include a method of decoding syntax information associated with video information, including identifying an encoding context associated with an AMVR syntax element of a current coding unit of the video information without using AMVR syntax elements of neighboring blocks, and decoding the AMVR syntax element of the current coding unit based on the encoding context.
[0126] In general, at least one example of an aspect may include an apparatus for encoding syntax information associated with video information, the apparatus including one or more processors configured to identify an encoding context associated with an AMVR syntax element of a current coding unit without using AMVR syntax elements of neighboring blocks, and encode the AMVR syntax element of the current coding unit based on the encoding context.
[0127] In general, at least one example of an aspect may include an apparatus for decoding syntax information associated with video information, the apparatus including one or more processors configured to identify an encoding context associated with a syntax element of a current coding unit without using AMVR syntax elements of a neighboring block, and decode the AMVR syntax element of the current coding unit based on the encoding context.
[0128] In general, at least one example of an aspect may include a method or apparatus described herein, wherein the encoding and / or decoding includes entropy encoding and / or entropy decoding.
[0129] In general, at least one example of an aspect may include a method or apparatus described herein, wherein the entropy encoding and / or entropy decoding includes CABAC.
[0130] In general, at least one example of an aspect may include a method or apparatus described herein, wherein the neighboring blocks of the current coding unit include at least one of a neighboring block to the left of the current coding unit or a neighboring block above the current coding unit.
[0131] In general, at least one example of an aspect may include a method or apparatus described herein, wherein identifying, or one or more processors configured to identify, a coding context associated with an AMVR syntax element of a current coding unit is based on determining an affine mode of the current coding unit.
[0132] In general, at least one example of an aspect may include a method or apparatus described herein, wherein determining an affine mode for a current coding unit is based on an inter-affine flag.
[0133] In general, at least one example of an embodiment can include a computer program product that includes instructions that, when executed by a computer, cause the computer to perform a method according to one or more example embodiments described herein.
[0134] In general, at least one example of the embodiments can include a non-transitory computer-readable medium that stores executable program instructions that cause a computer to execute instructions to perform a method according to one or more example embodiments described herein.
[0135] In general, at least one example of an embodiment can include a signal including data generated according to any one or more examples of the embodiments described herein.
[0136] In general, at least one example of an embodiment may include a bitstream formatted to include syntax elements and encoded image information generated according to any one or more of the example embodiments described herein.
[0137] In general, at least one example of an embodiment may include a device including an apparatus according to any one or more of the example embodiments described herein and at least one of: (i) an antenna configured to receive a signal, the signal including data representing image information; (ii) a band limiter configured to limit the received signal to a band of frequencies including the data representing the image information; and (iii) a display configured to display an image from the image information.
[0138] In general, at least one example of an aspect may include a device described herein, where the device includes one of a television, a television signal receiver, a set-top box, a gateway device, a mobile device, a mobile phone, a tablet, or other electronic device.
[0139] Various example aspects have been described. The above-described aspects and other aspects according to this disclosure may include any of the following features or entities, alone or in any combination, across a variety of different claim categories and types. ● Applying a form of entropy coding based on information provided by the at least one syntax element to derive a context number for the at least one syntax element, the derivation being provided to an encoder and / or decoder that reduces the context number. ● Applying a form of entropy coding based on information provided by the at least one syntax element, deriving a context number for the at least one syntax element, the deriving reducing the context number and the reducing being provided to an encoder and / or decoder based on using syntax elements to the left and above. ● Applying a form of entropy coding based on information provided by the at least one syntax element, deriving a context number for the at least one syntax element, the deriving being provided to an encoder and / or decoder to reduce the context number, the reduction being based on using adjacent syntax elements to the left and above. ● Applying a form of entropy coding based on information provided by at least one syntax element, deriving a context number for the at least one syntax element, the deriving reducing the context number and the reduction being provided to an encoder and / or decoder based on sharing the same context for different bin indexes of the same block size. ● Applying a form of entropy coding based on information provided by at least one syntax element, deriving a context number for the at least one syntax element, the deriving reducing the context number and the reducing being provided to an encoder and / or decoder based on sharing the same set of context indexes for different block sizes when signaling coordinates of the last significant coefficient. ● Applying a form of entropy coding based on information provided by at least one syntax element, and providing to an encoder and / or decoder a context number for the at least one syntax element, the deriving being based on a sum of the left and above syntax elements, the sum of the left and above syntax elements being capable of being derived based on an OR value of the left and above adjacent elements or based on an AND value of the left and above adjacent elements. ● Applying a form of entropy coding based on information provided by at least one syntax element, deriving a context number for the at least one syntax element, and providing to an encoder and / or decoder, where the deriving reduces the context number, and the reducing is based on a sum of the syntax elements to the left and above, and the sum of the syntax elements to the left and above can be derived based on not using adjacent elements. Applying a form of entropy encoding according to any of the aspects, features, or entities described in this specification, either alone or in any combination, wherein the form of entropy encoding is provided to an encoder and / or decoder that includes CABAC. provided to an encoder and / or decoder that applies a form of entropy coding according to any of the aspects, features, or entities described herein, alone or in any combination, based on which reduced complexity and / or improved compression efficiency is provided. ● Inserting syntax elements into the signaling that enable the encoder and / or decoder to provide encoding and / or decoding in accordance with any of the aspects, features, or entities described herein, alone or in any combination. - Selecting, singly or in any combination, the features or entities described herein to apply to the decoder based on the syntax elements just described. • A bitstream or signal containing one or more of the described syntax elements, or variations thereof. - Inserting syntax elements into the signaling that enable the decoder to provide decoding in a manner that corresponds to the encoding manner used by the encoder. ● Generating and / or transmitting and / or receiving and / or decoding a bitstream or signal that includes one or more of the described syntax elements, or variations thereof. A television, set-top box, mobile phone, tablet, or other electronic device that provides for applying encoding and / or decoding in accordance with any of the aspects, features, or entities described herein, singly or in any combination. A television, set-top box, mobile phone, tablet, or other electronic device that encodes and / or decodes in accordance with any of the aspects, features, or entities described herein, alone or in any combination, and displays the resulting images (e.g., using a monitor, screen, or other type of display). ●A television, set-top box, mobile phone, tablet, or other electronic device that tunes to a channel (e.g., with a tuner) to receive a signal containing an encoded image, and encodes and / or decodes in accordance with any of the aspects, features, or entities described herein, singly or in any combination. ●A television, set-top box, mobile phone, tablet, or other electronic device that receives a signal over the airwaves (e.g., using an antenna) containing an encoded image and encodes and / or decodes in accordance with any of the aspects, features, or entities described herein, singly or in any combination. A computer program product storing program code that, when executed by a computer, encodes and / or decodes according to any of the aspects, features or entities described in this specification, either alone or in any combination. A non-transitory computer-readable medium comprising executable program instructions that cause a computer to execute instructions that implement encoding and / or decoding in accordance with any of the aspects, features or entities described in this specification, either alone or in any combination.
[0140] Additionally, various other generalized and specialized aspects are supported and contemplated throughout this disclosure.
Claims
1. 1. A method for encoding at least one bin of a binarization of a syntax element for a block of a luminance component of a video, comprising the steps of: obtaining a set of context models associated with a bin index of a binarization of the syntax element, where two or more bin indexes share a same context model of the set; deriving a context shift variable based on a size of the block; deriving a context model from at least one set of bins based on at least one bin index of the binarization and the context shift variable, and providing a derived context model; entropy encoding the at least one bin using the derived context model; and The method includes:
2. 1. A method for decoding at least one bin of a binarization of a syntax element for a block of a luminance component of a video, comprising: obtaining a set of context models associated with a bin index of a binarization of the syntax element, where two or more bin indexes share a same context model of the set; deriving a context shift variable based on a size of the block; deriving a context model from at least one set of bins based on at least one bin index of the binarization and the context shift variable, and providing a derived context model; entropy decoding the at least one bin using the derived context model; and The method includes:
3. The method of claim 1 or claim 2, wherein the context shift variable provides an indication of a number of bin indices that share the same context model within the set of context models.
4. The method of claim 1 or claim 2, wherein the syntax element represents the coordinates of the last significant coefficient in the block.
5. The method of claim 1 or claim 2, wherein the two or more bin indices correspond to consecutive bins of a binarization of the syntax element.
6. The method of claim 1 or claim 2, wherein the two or more bin indices share the same context model for the set of blocks that is at least 64 in size.
7. The method of claim 6 , wherein if the block size is 64, the context shift variable is set to 2.
8. 8. The method of claim 7, wherein if the size of the block is less than 64, the context shift variable is derived as (log2TbSize + 1)>>2, where log2TbSize is the base 2 logarithm of the size of the block and is a right binary shift.
9. 5. The method of claim 4, wherein if the coordinate is a coordinate along an x-axis, the size of the block is a width, and if the coordinate is a coordinate along a y-axis, the size of the block is a height of the block.
10. The method of claim 1 or claim 2, wherein for the blocks having a size of at least 64, each of three or four consecutive bin indices of the binarization share the same context model within the set.
11. 3. The method of claim 1, wherein the set of context models is associated with different block sizes, and at least two bin indices of the two or more bin indices sharing a same context model of the set correspond to at least two bin indices of a binarization of the syntax element of at least two blocks having different sizes.
12. 12. The method of claim 11, further comprising: deriving a context offset based on a size of the block, wherein at least two different block sizes share a same context offset, and wherein the context model is derived using the context offset.
13. 13. The method of claim 12, wherein at least one bin index of a binarization of the syntax element with a block size of four shares a same context model as at least one bin index of a binarization of the syntax element with a block size of eight.
14. The method of claim 1 or claim 2, wherein the at least one bin is one bin of a binarization prefix of the syntax element having a truncated unary representation.
15. 1. An apparatus for encoding at least one bin of a binarization of a syntax element for a block of a luminance component of a video, comprising: obtaining a set of context models associated with a bin index of a binarization of the syntax element, where two or more bin indexes share a same context model of the set; deriving a context shift variable based on a size of the block; deriving a context model from at least one set of bins based on at least one bin index of the binarization and the context shift variable, and providing a derived context model; entropy encoding the at least one bin using the derived context model; and 23. An apparatus comprising one or more processors configured to execute
16. 1. An apparatus for decoding at least one bin of a binarization of a syntax element for a block of a luminance component of a video, comprising: obtaining a set of context models associated with a bin index of a binarization of the syntax element, where two or more bin indexes share a same context model of the set; deriving a context shift variable based on a size of the block; deriving a context model from at least one set of bins based on at least one bin index of the binarization and the context shift variable, and providing a derived context model; entropy decoding the at least one bin using the derived context model; and 23. An apparatus comprising one or more processors configured to execute
17. The apparatus of claim 15 or 16, wherein the entropy encoding and / or the entropy decoding comprises CABAC.
18. The apparatus of claim 15 or claim 16, wherein the context shift variable provides an indication of a number of bin indices that share a same context model within the set of context models.
19. The apparatus of claim 15 or 16, wherein the syntax element represents the coordinates of a last significant coefficient in the block.
20. The apparatus of claim 15 or 16, wherein the two or more bin indices share a same context model for the set of blocks that is at least 64 in size.
21. 21. The apparatus of claim 20, wherein if the block size is 64, the context shift variable is set to 2.
22. 22. The apparatus of claim 21, wherein if the size of the block is less than 64, the context shift variable is derived as (log2TbSize + 1)>>2, where log2TbSize is the base 2 logarithm of the size of the block and is a right binary shift.
23. 20. The apparatus of claim 19, wherein the size of the block is a width when the coordinate is a coordinate along an x-axis, and the size of the block is a height of the block when the coordinate is a coordinate along a y-axis.
24. 17. The apparatus of claim 15 or claim 16, wherein for the blocks of size at least 64, each of three or four consecutive bin indices of the binarization share the same context model within the set.
25. 17. The apparatus of claim 15 or claim 16, wherein the set of context models is associated with different block sizes, and at least two bin indices of the two or more bin indices sharing a same context model of the set correspond to at least two bin indices of a binarization of the syntax element of at least two blocks having different sizes.
26. 26. The apparatus of claim 25, wherein the one or more processors are further configured to derive a context offset based on a size of the block, wherein at least two different block sizes share a same context offset, and wherein the context model is derived using the context offset.
27. 27. The apparatus of claim 26, wherein at least one bin index of a binarization of the syntax element with a block size of four shares a same context model as at least one bin index of a binarization of the syntax element with a block size of eight.
28. A non-transitory computer readable medium storing executable program instructions for causing a computer to perform the method of claim 1 or claim 2.
29. An apparatus according to claim 16; at least one of: (i) an antenna configured to receive a signal, the signal including data representing the video; (ii) a band limiter configured to limit the signal to a band of frequencies including the data representing the video; and (iii) a display configured to display the video; A device with.
30. 30. The device of claim 29, wherein the device comprises one of a television, a television signal receiver, a set-top box, a gateway device, a mobile device, a mobile phone, a tablet, or other electronic device.