Affine mode signaling in video encoding and decoding
By independently encoding affine flags between inter prediction modes and using different CABAC context and probability models, the problem that affine motion models in the prior art is difficult to capture statistical characteristics, and the efficiency and performance of video encoding are improved.
Patent Information
- Application Number
- CN202411289754.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2018-10-10
- Filing Date
- 2019-10-09
- Publication Date
- 2025-01-10
AI Technical Summary
When the existing video encoding technology uses affine motion model, it is difficult to effectively capture the statistical characteristics between inter-frame prediction modes, resulting in low encoding efficiency.
By independently encoding affine flags between inter prediction modes, encoding and decoding of video data is performed using different CABAC context and probability models, specifically including determining the CABAC context and probability model associated with the affine mode, and in In different modes, independent context models are used for encoding and decoding.
Improve the efficiency of video encoding, and improve the encoding performance of affine motion compensation through more precise statistical modeling and independent context processing.
Smart Images

Figure CN119299695A_ABST
Abstract
Description
[0001] This divisional application is a divisional application with an application date of October 9, 2019, application number 201980080160.2, and invention name “Affine Mode Signaling in Video Coding and Decoding”. Technical Field
[0002] The present disclosure relates to video encoding and decoding. Background Art
[0003] To achieve high compression efficiency, image and video coding schemes such as defined by the HEVC (High Efficiency Video Coding) standard typically employ prediction and transform coding to exploit spatial and temporal redundancy in video content. Generally, intra-frame or inter-frame prediction is used to exploit intra-frame or inter-frame correlations, and then the difference between the original block and the predicted block (often expressed as a prediction error or prediction residual) is transformed, quantized, and entropy coded. To reconstruct the video, the compressed data is decoded by inverse processes corresponding to the prediction, transform, quantization, and entropy coding. Recent additions to video compression technology include documentation and / or various versions of reference software for the Joint Exploration Model (JEM) being developed by the Joint Video Exploration Team (JVET). The goal of efforts such as JEM is to further improve existing standards such as HEVC. Summary of the invention
[0004] Generally, at least one example of an embodiment relates to a method for encoding video data, the method comprising: determining a first CABAC context associated with a first flag indicating the use of an affine mode; determining a second CABAC context associated with a second flag indicating the use of an affine mode or a second mode different from the affine mode; wherein the first CABAC context corresponds to a first CABAC probability model; the second CABAC context corresponds to a second CABAC probability model different from the first CABAC probability model; encoding the video data based on the first CABAC context and the first CABAC probability model during the affine mode, and based on the second CABAC context and the second CABAC probability model during the second mode.
[0005] Generally, at least one example of an embodiment relates to a method for decoding video data, the method comprising: determining a first CABAC context associated with a first flag indicating the use of an affine mode; determining a second CABAC context associated with a second flag indicating the use of an affine mode or a second mode different from the affine mode; wherein the first CABAC context corresponds to a first CABAC probability model; the second CABAC context corresponds to a second CABAC probability model different from the first CABAC probability model; decoding the video data based on the first CABAC probability model and the first CABAC context for decoding video data encoded during the affine mode, and based on the second CABAC probability model and the second CABAC context for decoding video data encoded during the second mode.
[0006] Generally, at least one example of an embodiment relates to an apparatus for encoding video data, comprising at least one or more processors, wherein the one or more processors are configured to: determine a first CABAC context associated with a first flag indicating the use of an affine mode; determine a second CABAC context associated with a second flag indicating the use of an affine mode or a second mode different from the affine mode; wherein the first CABAC context corresponds to a first CABAC probability model; the second CABAC context corresponds to a second CABAC probability model different from the first CABAC probability model; encode the video data based on the first CABAC context and the first CABAC probability model during the affine mode, and based on the second CABAC context and the second CABAC probability model during the second mode.
[0007] Generally, at least one example of an embodiment relates to an apparatus for decoding video data, comprising one or more processors, wherein the one or more processors are configured to: determine a first CABAC context associated with a first flag indicating the use of an affine mode; determine a second CABAC context associated with a second flag indicating the use of an affine mode or a second mode different from the affine mode; wherein the first CABAC context corresponds to a first CABAC probability model; the second CABAC context corresponds to a second CABAC probability model different from the first CABAC probability model; and decode the video data based on the first CABAC probability model and the first CABAC context for decoding video data encoded during the affine mode, and based on the second CABAC probability model and the second CABAC context for decoding video data encoded during the second mode.
[0008] Generally, at least one example of an embodiment involves a device, such as but not limited to a television, set-top box, cellular telephone, tablet computer or other electronic device, that performs any of the described embodiments and / or displays (using a monitor, screen or other type of display) images generated and / or tunes (e.g., using a tuner) a channel to receive a signal including an encoded image and / or receives over-the-air (e.g., using an antenna) a signal including an encoded image and performs any of the described embodiments.
[0009] Generally, at least one example of an embodiment relates to a bitstream formatted to include encoded video data, wherein the encoded video data is encoded by at least one of the methods described herein.
[0010] Generally, at least one example of the embodiments provides a computer-readable storage medium having stored thereon instructions for encoding or decoding video data according to the methods or apparatus described herein.
[0011] Generally, at least one example of the embodiments provides a computer-readable storage medium having stored thereon a bitstream generated according to a method or apparatus described herein.
[0012] Generally, various examples of embodiments provide methods and / or apparatus for transmitting or receiving a bitstream generated according to the methods or apparatus described herein.
[0013] A simplified overview of the subject matter is presented above in order to provide a basic understanding of some aspects of the present disclosure. This overview is not an exhaustive overview of the subject matter. It is not intended to identify key / important elements of the embodiments or to delineate the scope of the subject matter. Its sole purpose is to introduce certain concepts of the subject matter in a simplified form as a prelude to the more detailed description provided below. BRIEF DESCRIPTION OF THE DRAWINGS
[0014] The present disclosure may be better understood by considering the following detailed description in conjunction with the accompanying drawings, in which:
[0015] Figure 1 Illustrating partitioned video information for video encoding and decoding involving coding tree units (CTUs) as in HEVC;
[0016] Figure 2 Illustrate partitioned video information for video encoding and decoding related to CTU and coding unit (CU);
[0017] Figure 3 Illustrate aspects of affine motion models;
[0018] Figure 4 An embodiment involving an affine motion model is illustrated.
[0019] Figure 5Control point motion vector prediction (CPMVP) associated with affine inter mode is illustrated.
[0020] Figure 6 Instantiating candidate positions associated with an affine merge mode;
[0021] Figure 7 Illustrate motion vectors involved in determining a control point motion vector (CPMV) during an affine merge mode;
[0022] Figure 8 An example of an embodiment illustrating a method for determining a context associated with a marker (e.g., a CABAC context associated with an affine marker);
[0023] Fig. 9 An example of determining a probability model such as a CABAC probability model for encoding and / or decoding is illustrated;
[0024] Fig.10 Another example of determining a probability model for encoding and / or decoding, such as a CABAC probability model, is illustrated;
[0025] Figure 11 to Figure 13 Various examples of embodiments illustrating determining a context associated with a marker, such as a CABAC context associated with an affine marker;
[0026] Fig.14 An example of an embodiment of an encoder suitable for encoding video data according to one or more examples of the embodiments described herein is illustrated;
[0027] Fig.15 An example of an embodiment of a decoder suitable for decoding video data according to one or more examples of the embodiments described herein; and
[0028] Fig.16 An example of an embodiment of a system suitable for encoding and / or decoding video data is illustrated in accordance with one or more examples of the embodiments described herein.
[0029] It should be understood that the drawings are for purposes of illustrating examples of various aspects, embodiments and features, and are not necessarily the only possible configurations. In the various drawings, like reference numerals refer to the same or similar features. DETAILED DESCRIPTION
[0030] In order to achieve high compression efficiency, image and video coding schemes usually adopt prediction and transformation including motion vector prediction 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 image and the predicted image (usually expressed as prediction error or prediction residual) is transformed, quantized and entropy encoded. In order to reconstruct the video, the compressed data is decoded by the inverse process corresponding to entropy coding, quantization, transformation and prediction. Entropy coding / decoding typically involves context adaptive binary arithmetic coding (CABAC).
[0031] The latest additions to high compression techniques include the use of motion models based on affine modeling. Affine modeling is used for motion compensation for encoding and decoding of video pictures. Generally, affine modeling is a model that uses at least two parameters, such as, for example, two control point motion vectors (CPMVs) representing the motion at each corner of a block of the picture, which allows the motion field of the entire block of the picture to be derived to simulate, for example, rotation and similarity (scaling).
[0032] The general aspects described herein are in the field of video compression and are directed to improving compression efficiency compared to existing video compression systems.
[0033] In the HEVC video compression standard (H.265 / HEVC High Efficiency Video Coding, ITU-T H.265 Telecommunication Standardization Sector of the ITU, "Series H: Audiovisual and Multimedia Systems, Infrastructure of audiovisual services-Coding of moving video, High efficiency video coding"), motion compensated temporal prediction is used to exploit the redundancy between consecutive frames of a video.
[0034] To do this, a motion vector is associated with each prediction unit (PU), which is now introduced. Each CTU (Coding Tree Unit) is represented by a coding tree in the compressed domain. This is a quadtree partitioning of the CTU, where each leaf is called a Coding Unit (CU), see Figure 1 .
[0035] Each CU is then assigned some intra or inter prediction parameters (prediction information). To do this, it is spatially partitioned into one or more prediction units (PUs), each of which is assigned some prediction information. Intra or inter coding modes are assigned at the CU level, see Figure 2 .
[0036] In HEVC, exactly one motion vector is assigned to each PU. This motion vector is used for motion compensated temporal prediction of the considered PU. Therefore, in HEVC, the motion model linking a predicted block and its reference blocks involves only translation.
[0037] In the Joint Exploration Model (JEM) and later VTM (Versatile Video Coding (VVC) Test Model) developed by the Joint Video Exploration Team (JVET) group, some richer motion models are supported to improve temporal prediction. To this end, a PU can be spatially divided into sub-PUs, and a richer model can be used to assign a dedicated motion vector to each sub-PU.
[0038] The CU is no longer divided into PUs or TUs, and some motion data is directly allocated to each CU. In this new codec design, a CU can be divided into sub-CUs, and a motion vector can be calculated for each sub-CU.
[0039] One of the new motion models introduced in JEM is the affine model, which basically involves using an affine model to represent the motion vectors in a CU.
[0040] The motion model used is from Figure 3 Example. The affine motion field involves the following motion vector component values for each position (x, y) inside the considered block:
[0041]
[0042] Equation 1: Affine model for generating motion fields inside a CU for prediction
[0043] Coordinates (v 0x ,v 0y ) and (v 1x ,v 1y ) are the so-called control point motion vectors used to generate the affine motion field. 0x ,v 0y ) is the upper left control point of the motion vector, and (v 1x ,v 1y ) is the upper right control point of the motion vector.
[0044] In practice, to keep the complexity reasonable, such as Figure 4 As an example, a motion vector is calculated for each 4x4 sub-block (sub-CU) of the considered CU. At the center of each sub-block, an affine motion vector is calculated from the control point motion vector. The obtained MV is represented with 1 / 16 pixel accuracy.
[0045] As a result, temporal encoding of a coding unit in affine mode includes motion compensated prediction of each subblock using its own motion vector.
[0046] Note that models with three control points are also possible.
[0047] Affine motion compensation can be used in VTM in two ways: affine inter (AF_INTER), affine merge and affine template. They are described below.
[0048] -Affine Interframe (AF_INTER):
[0049] A CU in AMVP mode with a size larger than 8x8 can be predicted in affine inter mode. This is signaled by a flag in the bitstream. The generation of the affine motion field for this inter CU includes determining the control point motion vector (CPMV), which is obtained by the decoder by adding the motion vector difference and the control point motion vector prediction (CPMVP). The CPMVP is a pair of motion vector candidates taken from lists (A, B, C) and (D, E), respectively, as Figure 5 Example.
[0050] Up to 6 CPMVPs can be obtained (for Multiply 3 by 2).
[0051] For a block of height H and width W, the validity of the first CPMVP is checked using Equation 2:
[0052]
[0053] Equation 2: Effectiveness test for each CPMVP
[0054] Then, depending on the third motion vector The value of (taken from position F or G) sorts the effective CPMVP. is the affine motion model for Vectors provided by 4x4 sub-blocks at the same position. Even better is CPMVP.
[0055] For a block of height H and width W, the cost of each CPMVP is calculated using Equation 3. In the equation below, X and Y are the horizontal and vertical components of the motion vector, respectively.
[0056]
[0057] Equation 3: Cost calculated for each CPMVP
[0058] -Affine merge:
[0059] In affine merge mode, a CU-level flag indicates whether the merged CU uses affine motion compensation. If so, Figure 6The first available neighboring CU that has been encoded in affine mode is selected from the ordered set of candidate positions (A, B, C, D, E).
[0060] Once the first neighboring CU in affine mode is obtained, retrieve the 3 motion vectors from the top left, top right and bottom left corners of the neighboring CU and (See Figure 7 ). Based on these three vectors, the two CPMVs of the upper left and upper right corners of the current CU are derived as follows:
[0061] ο
[0062] ο
[0063] Equation 4: Derivation of the CPMV of the current CU based on the three angular motion vectors of the neighboring CUs
[0064] When the control point motion vector of the current CU is obtained and When , the motion field inside the current CU is calculated based on the 4x4 sub-CU through the model of equation 1.
[0065] More candidates can be added for affine merge mode to select the best candidate among up to 7 candidates and encode the index of the best candidate in the bitstream.
[0066] Another type of candidate is called temporal affine. Similar to TMVP (Temporal Motion Vector Predictor) candidates, affine CUs are searched in the reference picture and added to the candidate list.
[0067] The process may create a "virtual" affine candidate to be added. Such a process may be useful for creating affine candidates when no affine CU is available around the current CU. To do this, an affine model is created by taking the motion of each sub-block at the corner and creating an "affine" model.
[0068] During candidate list creation, two constraints are considered for complexity reasons:
[0069] -Total number of potential candidates: increases total computational requirements
[0070] - Final list size: increases decoder latency by increasing the number of comparisons required for each successive candidate
[0071] In general, at least one embodiment relates to video coding using affine flag encoding for motion compensation. The affine flag is known in the context of video coding systems such as VVC. The affine flag signals at the coding unit (CU) level whether affine motion compensation is used for temporal prediction of the current CU. In the following description, the coding unit is referred to as a coding unit, CU or block.
[0072] In inter mode, as described above, the affine flag signals the use of an affine motion field to predict the block. As described above, affine motion models typically use four or six parameters. This mode is used in AMVP, where mvd is encoded (motion vector difference with motion predictor) and merged (mvd is inferred to be zero). In general, at least one example of the embodiments described herein may also be applied to other modes, such as mmvd (merged motion vector difference, also known as UMVE), where mvd can be signaled in merge mode, or DMVR (decoder side motion refinement), where the motion predictor is refined on the decoder side. In general, at least one embodiment provides improved encoding of the affine flag.
[0073] The CABAC context is currently used to signal the affine flag. In order to utilize CABAC coding, non-binary syntax element values are mapped to binary sequences called bit strings by binarization. For a bit, a context model is selected. A "context model" is a probability model for one or more bits and is selected from a selection of available models depending on the statistics of the most recently encoded symbols. The context model for each bit is identified by a context model index (also used as a "context index"), and different context indices correspond to different context models. The context model stores the probability of each bit being "1" or "0" and can be adaptive or static. The static model triggers the coding engine with the same probability for bits "0" and "1". In an adaptive coding engine, the context model is updated based on the actual encoded value of the bit. The operating modes corresponding to the adaptive model and the static model are called normal mode and bypass mode, respectively. Based on the context, the binary arithmetic coding engine encodes or decodes the bit according to the corresponding probability model.
[0074] As mentioned above, the affine flag is currently signaled using the CABAC context, which is a function of the value of the affine flag(s) associated with the neighboring blocks. Figure 8 An example is illustrated in which affine token context derivation for both AMVP and merge is shown. Figure 8In , for the current CU located at x, y and size is width, height, the affine context Ctx is initialized, for example, initialized to 0 at 3010. At 3020, the left neighboring CU is checked for affine. If 3020 determines that the left neighboring CU is affine, Ctx is incremented at 3030. If 3020 determines that the left neighboring CU is not affine, the above neighboring CU is checked for affine at 3040. If the check at 3040 determines that the above neighboring CU is affine, Ctx is incremented at 3050 and then ends at 3060 with the Ctx value obtained by the above operation. If the check at 3040 determines that the above CU is not affine, then 3040 is followed by the obtained Ctx value and ends at 3060. By Figure 8 The affine marker context derived by the illustrated example embodiment can have three different values: Ctx=0 (neither the left neighbor nor the upper neighbor is affine), or Ctx=1 (only 1 of the left neighbor or the upper neighbor is affine), or Ctx=2 (both the left and upper neighbors are affine).
[0075] The same CABAC context is shared by AMVP and merge mode. As a result, the same CABAC bits or probability model are indicated or selected for both modes. Therefore, encoding or decoding uses the same model for both modes. One problem is that systems such as VVC also support other affine candidates (called virtual candidates or constructed candidates), which are constructed without using the affine flag values of neighboring CUs. These other affine candidates use affine motion models from individual motion vectors. Using a single context for encoding the affine flags for the modes for merge, AMVP and other affine candidates becomes unable to effectively capture the various statistical behaviors of the affine flags.
[0076] In general, at least one embodiment described herein takes into account the different statistical occurrences of affine mode usage between two inter-prediction modes (eg, AMVP and Merge) by encoding the affine flag independently between the two modes. Fig. 9 An example is shown in Fig. 9 In 910, an affine context Ctx is determined or obtained for the current CU. This determination of Ctx may be based on, for example, Figure 8The example of the embodiment shown occurs. After the determination of Ctx at 910, the CABAC bits or probability model for the first inter-frame prediction mode (e.g., affine mode) is determined or obtained at 920, for example, based on a specific formula or relationship or table or list of association or correspondence between Ctx values and CABAC bits or models. The CABAC bits or probability model for the second inter-frame prediction mode (e.g., merge mode) is determined or obtained at 930, for example, based on a specific formula or relationship or table or list of association or correspondence between Ctx values and CABAC bits or models. Therefore, the CABAC bits or model are determined independently for each mode, i.e., at 920 for one mode and at 930 for another mode.
[0077] exist Fig. 9 In the example of , the total number of CABAC contexts for the affine flag (ie, three for each of the first and second inter prediction modes A and B) is doubled. Fig. 9 The example of an embodiment for determining the affine flag context in may use six contexts instead of three. In other words, the CABAC context value may be derived in the same manner for each of the two inter prediction modes, but the probability model associated with the CABAC context may be determined independently and is different for each of the two different inter prediction modes (e.g., AMVP and merge) involving the affine flag.
[0078] An example of independently encoding the affine flag is illustrated by the following code involving two inter prediction modes (i.e., affine and merge). The following example illustrates determining the CABAC context associated with each of the two modes (affine and merge) indicated by the respective mode flags (AffineFlag and SubblockMergeFlag). As described above, for example, based on a condition such as Figure 8 In the example embodiments of FIG. 1 , the derivation of the CABAC context may be the same.
[0079] Mode 1-affine(AffineFlag): ...
[0081] unsigned ctxId = DeriveCtx::CtxAffineFlag(cu); / / Derive context based on the upper and left neighbors. Context can be 0, 1 or 2
[0082] cu.affine = m_BinDecoder.decodeBin(Ctx::AffineFlag(ctxId)); / / Use the AffineFlag associated with the probability model ...
[0084] Mode 2-merge(SubblockMergeFlag) ...
[0086] unsigned ctxId = DeriveCtx::CtxAffineFlag(cu); / / Note that context derivation is the same as in affine
[0087] cu.subblock = m_BinDecoder.decodeBin(Ctx::SubblockMergeFlag(ctxId)); / / Note that the model (bit) is derived or determined differently from the affine ...
[0089] Fig.10 Another example is shown in Fig.10 In 1011 and 1012, first and second CABAC contexts associated with first and second flags (e.g., an affine flag and a sub-block merge flag), respectively, are determined. The affine flag indicates that an affine mode is used. The sub-block merge flag indicates an affine mode or a second mode different from the affine mode used. The context is associated with the mode used. For example, the second mode can be a merge mode such as SbTMVP. The first and second CABAC probability models associated with the first and second contexts and the modes thereof are independently determined at 1013 and 1014.
[0090] Other examples of embodiments for improving modeling of contexts include at least the following. One example includes completely removing CABAC context modeling based on spatial affine neighborhoods. In this case, only one context is used. Another example includes reducing the complexity of modeling by using only the availability of spatial neighbors or not using the availability of spatial neighbors. For this example, two contexts are possible: the affine neighborhood is not available (context 0), or at least one is available (context 1). The example of two contexts available is Fig.11 Example in. exist Fig.11 In , the affine context Ctx is initialized at 1111, for example, set to be equal to 0. At 1112, if the left neighboring CU or the upper neighboring CU is affine, Ctx is incremented at 1113, followed by an end at 1114, where the Ctx value is returned, for example, 1 from 1113. If neither is affine, 1112 is followed by an end at 1114, where the returned Ctx value is 0 or 1.
[0091] In general, at least one embodiment may include the possibility of constructing virtual affine candidates as an aspect of context modeling, such as Fig.12 As shown, Fig.12An example of context modeling of affine considering virtual affine candidates is shown. Fig.12 At 1211, the context Ctx is initialized, for example, set to be equal to zero. Virtual affine candidates can be constructed from neighboring CUs that are encoded in inter mode rather than affine mode. At 1212, neighboring CUs are checked to determine whether they are inter-coded. If not, 1212 is followed by 1216, where the value of Ctx is the initialization value (e.g., 0). If the check at 1212 determines that the neighboring CU is inter-coded, 1212 is followed by 1213, where Ctx is incremented by (initial value + 1). After 1213, a check occurs at 1214 to determine whether the neighboring CU is affine. If so, Ctx is incremented by ((initial value + 1) + 1) at 1215, and then ends at 1216, where the Ctx value is returned, otherwise the check at 1214 is followed by 1216. Summary Fig.12 As a result of the arrangement in , the context will be:
[0092] o 0, if no inter-frame neighbors are available
[0093] o 1, if inter-frame neighbors are available but no affine neighbors
[0094] o 2 if affine neighborhood is available
[0095] In a variation, at least one embodiment relates to the presence of a reference picture that can be considered an inter-picture, since it allows the creation of a virtual temporal candidate, such as Fig.13 The example in . That is, Fig.13 An example of affine context modeling considering virtual temporal affine candidates is illustrated. A virtual temporal candidate can be constructed from a temporally co-located CU coded in inter mode. Fig.13 This example involves passing Fig.12 Change 1212 in to Fig.13 1312 in, to modify Fig.12 The above example embodiment of context modeling in , wherein:
[0096] o An inter-frame neighbor is available, or an inter-frame reference picture is available with reference picture index 0.
[0097] Fig.13 Other features of the embodiments described above Fig.12 The similar features correspond to and will no longer be about Fig.13 Give a description.
[0098] This document describes various examples of embodiments, features, models, methods, etc. Many of these examples are described specifically and, at least for the purpose of illustrating the various features, are often described in a manner that may appear to be limiting. However, this is for the purpose of clarity of description and does not limit the application or scope. In fact, the various examples of embodiments, features, etc. described herein can be combined and interchanged in various ways to provide other examples of embodiments.
[0099] Examples of embodiments according to the present disclosure include, but are not limited to, the following.
[0100] Generally, at least one example of an embodiment may relate to a method for encoding video data, comprising: determining a first CABAC context associated with a first flag indicating the use of an affine mode; determining a second CABAC context associated with a second flag indicating the use of an affine mode or a second mode different from the affine mode; wherein the first CABAC context corresponds to a first CABAC probability model; and the second CABAC context corresponds to a second CABAC probability model different from the first CABAC probability model; encoding the video data based on the first CABAC context and the first CABAC probability model during the affine mode, and based on the second CABAC context and the second CABAC probability model during the second mode.
[0101] Generally, at least one example of an embodiment may relate to an apparatus for encoding video data, comprising: one or more processors, wherein the one or more processors are configured to: determine a first CABAC context associated with a first flag indicating the use of an affine mode; determine a second CABAC context associated with a second flag indicating the use of an affine mode or a second mode different from the affine mode; wherein the first CABAC context corresponds to a first CABAC probability model; and the second CABAC context corresponds to a second CABAC probability model different from the first CABAC probability model; encode the video data based on the first CABAC context and the first CABAC probability model during the affine mode, and based on the second CABAC context and the second CABAC probability model during the second mode.
[0102] Generally, at least one example of an embodiment may relate to a method for decoding video data, comprising: determining a first CABAC context associated with a first flag indicating the use of an affine mode; determining a second CABAC context associated with a second flag indicating the use of an affine mode or a second mode different from the affine mode; wherein the first CABAC context corresponds to a first CABAC probability model; and the second CABAC context corresponds to a second CABAC probability model different from the first CABAC probability model; based on the first CABAC context and the first CABAC probability model, decoding video data encoded during the affine mode, and decoding video data encoded during the second mode based on the second CABAC context and the second CABAC probability model.
[0103] Generally, at least one example of an embodiment may relate to an apparatus for decoding video data, comprising: one or more processors, wherein the one or more processors are configured to: determine a first CABAC context associated with a first flag indicating the use of an affine mode; determine a second CABAC context associated with a second flag indicating the use of an affine mode or a second mode different from the affine mode; wherein the first CABAC context corresponds to a first CABAC probability model; and the second CABAC context corresponds to a second CABAC probability model different from the first CABAC probability model; based on the first CABAC context and the first CABAC probability model, decode the video data encoded during the affine mode, and based on the second CABAC context and the second CABAC probability model, decode the video data encoded during the second mode.
[0104] Generally, at least one example of an embodiment may relate to a method for encoding video data, comprising: determining a first CABAC context associated with a first flag indicating use of an affine mode; determining a second CABAC context associated with a second flag indicating use of the affine mode or a second mode different from the affine mode; and encoding video data to generate encoded video data, wherein the video data generated based on the affine mode is encoded based on a first CABAC probability model associated with the first CABAC context, and the video data generated based on the second mode is encoded based on a second CABAC probability model associated with the second CABAC context and different from the first CABAC probability model.
[0105] Generally, at least one example of an embodiment may relate to an apparatus for encoding video data, comprising: one or more processors, wherein the one or more processors are configured to: determine a first CABAC context associated with a first flag indicating the use of an affine mode; determine a second CABAC context associated with a second flag indicating the use of an affine mode or a second mode different from the affine mode; and encode video data to generate encoded video data, wherein the video data generated based on the affine mode is encoded based on a first CABAC probability model associated with the first CABAC context, and the video data generated based on the second mode is encoded based on a second CABAC probability model associated with the second CABAC context and different from the first CABAC probability model.
[0106] Generally, at least one example of an embodiment may relate to a method for decoding video data, comprising: determining a first CABAC context associated with a first flag indicating use of an affine mode; determining a second CABAC context associated with a second flag indicating use of the affine mode or a second mode different from the affine mode; and decoding video data to produce decoded video data, wherein video data encoded based on the affine mode is decoded based on a first CABAC probability model associated with the first CABAC context, and video data encoded based on the second mode is decoded based on a second CABAC probability model associated with the second CABAC context and different from the first CABAC probability model.
[0107] Generally, at least one example of an embodiment may relate to an apparatus for decoding video data, comprising: one or more processors, wherein the one or more processors are configured to: determine a first CABAC context associated with a first flag indicating the use of an affine mode; determine a second CABAC context associated with a second flag indicating the use of an affine mode or a second mode different from the affine mode; and decode video data to produce decoded video data, wherein video data encoded based on the affine mode is decoded based on a first CABAC probability model associated with the first CABAC context, and video data encoded based on the second mode is decoded based on a second CABAC probability model associated with the second CABAC context and different from the first CABAC probability model.
[0108] Generally, at least one example of an embodiment may relate to a method for encoding video data, comprising: determining a first CABAC context associated with a first flag indicating use of an affine mode; determining a second CABAC context associated with a second flag indicating use of the affine mode or a second mode different from the affine mode, wherein determining the second CABAC context is performed independently of determining the first CABAC context; and encoding video data during the first and second modes, based on the first and second flags and the first and second CABAC contexts, respectively, to generate encoded video data.
[0109] Generally, at least one example of an embodiment may relate to an apparatus for encoding video data, comprising: one or more processors, wherein the one or more processors are configured to: determine a first CABAC context associated with a first flag indicating the use of an affine mode; determine a second CABAC context associated with a second flag indicating the use of an affine mode or a second mode different from the affine mode, wherein determining the second CABAC context is performed independently of determining the first CABAC context; and during the first and second modes, encoding the video data based on the first and second flags and the first and second CABAC contexts, respectively, to generate encoded video data.
[0110] Generally, at least one example of an embodiment may relate to a method for decoding video data, comprising: determining a first CABAC context associated with a first flag indicating use of an affine mode; determining a second CABAC context associated with a second flag indicating use of the affine mode or a second mode different from the affine mode, wherein determining the second CABAC context is performed independently of determining the first CABAC context; and decoding video data encoded during the first mode and the second mode based on the first and second CABAC contexts, respectively, to generate decoded video data.
[0111] Generally, at least one example of an embodiment may be directed to an apparatus for decoding video data, comprising:
[0112] One or more processors, wherein the one or more processors are configured to: determine a first CABAC context associated with a first flag indicating the use of an affine mode; determine a second CABAC context associated with a second flag indicating the use of an affine mode or a second mode different from the affine mode, wherein determining the second CABAC context is performed independently of determining the first CABAC context; and decode video data encoded during the first mode and the second mode based on the first and second CABAC contexts, respectively, to generate decoded video data.
[0113] Generally, at least one example of an embodiment may relate to a method for encoding video data, comprising: determining a CABAC context associated with a sub-block merge mode flag indicating use of a mode including an affine mode or a second mode different from the affine mode; wherein the CABAC context corresponds to a first CABAC probability model during the affine mode and corresponds to a second CABAC probability model different from the first CABAC probability model during the second mode; encoding the video data based on the CABAC context, the mode, and the CABAC probability model corresponding to the mode.
[0114] Generally, at least one example of an embodiment may relate to an apparatus for encoding video data, comprising: one or more processors, wherein the one or more processors are configured to: determine a CABAC context associated with a sub-block merge mode flag indicating use of a mode including an affine mode or a second mode different from the affine mode; wherein the CABAC context corresponds to a first CABAC probability model during the affine mode, and corresponds to a second CABAC probability model different from the first CABAC probability model during the second mode; and encode the video data based on the CABAC context, the mode, and the CABAC probability model corresponding to the mode.
[0115] Generally, at least one example of an embodiment may be directed to a method for decoding video data, comprising:
[0116] Determine a CABAC context associated with a sub-block merge mode flag indicating use of a mode including an affine mode or a second mode different from the affine mode; wherein the CABAC context corresponds to a first CABAC probability model during the affine mode and corresponds to a second CABAC probability model different from the first CABAC probability model during the second mode; decode video data encoded based on the affine mode based on the first CABAC probability model, and decode video data encoded based on the second mode based on the second CABAC context.
[0117] Generally, at least one example of an embodiment may relate to an apparatus for decoding video data, comprising: one or more processors, wherein the one or more processors are configured to: determine a CABAC context associated with a sub-block merge mode flag indicating use of a mode including an affine mode or a second mode different from the affine mode; wherein the CABAC context corresponds to a first CABAC probability model during the affine mode, and corresponds to a second CABAC probability model different from the first CABAC probability model during the second mode; decode video data encoded based on the affine mode based on the first CABAC probability model, and decode video data encoded based on the second mode based on the second CABAC context.
[0118] Generally, at least one example of an embodiment may be directed to a method or apparatus according to any embodiment described herein, wherein the affine mode comprises an AMVP mode and the second mode comprises a merge mode.
[0119] Generally, at least one example of an embodiment may relate to a method or apparatus according to any embodiment described herein, wherein the affine mode comprises an AMVP mode and the second mode comprises one of merge, SbTMVP, mmvd or DMVR.
[0120] Generally, at least one example of an embodiment may relate to a method or apparatus according to any embodiment described herein, wherein determining a CABAC context, such as a first or second CABAC context, does not take into account a spatial affine neighborhood.
[0121] Generally, at least one example of an embodiment may relate to a method or apparatus according to any embodiment described herein, wherein a CABAC context, such as a first or second CABAC context, has only one context.
[0122] Generally, at least one example of an embodiment may relate to a method or apparatus according to any embodiment described herein, wherein determining a CABAC context such as a first or second CABAC context is based solely on availability of spatial neighbors or on unavailability of spatial neighbors.
[0123] Generally, at least one example of an embodiment may relate to a method or apparatus according to any embodiment described herein, and includes constructing virtual affine candidates to be considered when determining a CABAC context, such as a first or second CABAC context.
[0124] Generally, at least one example of an embodiment may relate to a method or apparatus according to any embodiment described herein, involving a virtual affine candidate, wherein constructing the virtual affine candidate is based on a neighboring CU encoded in an inter mode and a non-affine mode.
[0125] Generally, at least one example of an embodiment may involve a method or apparatus according to any embodiment described herein, involving constructing a virtual affine candidate based on a neighboring CU encoded in inter-frame mode, wherein the CABAC context will include one of the following: 0 if no inter-frame neighborhood is available; 1 if an inter-frame neighborhood is available but there is no affine neighborhood; 2 if an affine neighborhood is available.
[0126] Generally, at least one example of an embodiment may relate to a method or apparatus according to any embodiment described herein, and further comprising: considering the presence of a reference picture, which is an inter picture for enabling creation of a virtual temporal candidate.
[0127] Generally, at least one example of an embodiment may relate to a method or apparatus according to any embodiment described herein, involving constructing a virtual temporal candidate, wherein the virtual temporal candidate may be constructed based on a temporally co-located CU encoded in inter-mode.
[0128] Generally, at least one example of an embodiment may relate to a method or apparatus according to any embodiment described herein, involving constructing a virtual temporal candidate based on a co-located CU encoded in an inter-frame mode, wherein determining the context includes: an inter-frame neighborhood is available, or an inter-frame reference picture with a reference picture index of 0 is available.
[0129] Generally, at least one example of the embodiments may involve a computer program product comprising computing instructions for performing a method according to any of the embodiments described herein when executed by one or more processors.
[0130] Generally, at least one example of the embodiments may involve a non-transitory computer-readable medium storing executable program instructions to cause a computer executing the instructions to perform a method according to any of the embodiments described herein.
[0131] Generally, at least one example of an embodiment may involve a bitstream formatted to include encoded video data, wherein the encoded video data includes: an indicator associated with a CABAC context obtained according to any method described herein; and picture data encoded based on the CABAC context.
[0132] Generally, at least one example of an embodiment may involve an apparatus comprising: an apparatus according to any of the embodiments described herein; and at least one of: (i) an antenna configured to receive a signal, the signal comprising data representing video data, (ii) a band limiter configured to limit the received signal to a frequency band comprising data representing video data, and (iii) a display configured to display an image from the video data.
[0133] Generally, at least one example of an embodiment may relate to an apparatus for encoding video data, comprising one or more processors, wherein the one or more processors are configured to: determine a first CABAC context associated with a flag indicating that an affine motion model is used during a first inter-frame prediction mode; determine a second CABAC context associated with a flag indicating that an affine motion model is used during a second inter-frame prediction mode that is different from the first inter-frame prediction mode and that is different from the first CABAC context; and encode video data to generate encoded video data, wherein the video data generated based on the affine motion model during the first inter-frame prediction mode is encoded based on a first CABAC probability model associated with the first CABAC context, and the video data generated based on the affine motion model during the second inter-frame prediction mode is encoded based on a second CABAC probability model associated with the second CABAC context.
[0134] Generally, at least one other example of an embodiment may relate to a method for encoding video data, comprising: determining a first CABAC context associated with a flag indicating that an affine motion model is used during a first inter-frame prediction mode; determining a second CABAC context associated with a flag indicating that an affine motion model is used during a second inter-frame prediction mode that is different from the first inter-frame prediction mode and that is different from the first CABAC context; and encoding video data to produce encoded video data, wherein the video data generated based on the affine motion model during the first inter-frame prediction mode is encoded based on a first CABAC probability model associated with the first CABAC context, and the video data generated based on the affine motion model during the second inter-frame prediction mode is encoded based on a second CABAC probability model associated with the second CABAC context.
[0135] Generally, at least one other example of an embodiment may relate to an apparatus for decoding video data, comprising one or more processors, wherein the one or more processors are configured to: determine a first CABAC context associated with a flag indicating that an affine motion model is used during a first inter-frame prediction mode; determine a second CABAC context associated with a flag indicating that an affine motion model is used during a second inter-frame prediction mode that is different from the first inter-frame prediction mode and that is different from the first CABAC context; and decode the video data to produce decoded video data, wherein the video data generated based on the affine motion model during the first inter-frame prediction mode is decoded based on a first CABAC probability model associated with the first CABAC context, and the video data generated based on the affine motion model during the second inter-frame prediction mode is decoded based on a second CABAC probability model associated with the second CABAC context.
[0136] Generally, at least one other example of an embodiment may relate to a method for decoding video data, the method comprising: determining a first CABAC context associated with a first flag indicating that an affine motion model is used during a first inter-frame prediction mode; determining a second CABAC context associated with a flag indicating that an affine motion model is used during a second inter-frame prediction mode that is different from the first inter-frame prediction mode and that is different from the first CABAC context; and decoding the video data to produce decoded video data, wherein the video data generated based on the affine motion model during the first inter-frame prediction mode is decoded based on a first CABAC probability model associated with the first CABAC context, and the video data generated based on the affine motion model during the second inter-frame prediction mode is decoded based on a second CABAC probability model associated with the second CABAC context.
[0137] Generally, at least one other example of an embodiment may relate to an apparatus for encoding video data, comprising one or more processors, wherein the one or more processors are configured to: determine a first CABAC context associated with an affine motion compensation flag during a first inter-frame prediction mode; determine a second CABAC context associated with an affine motion compensation flag during a second inter-frame mode different from the first inter-frame prediction mode; wherein determining the second CABAC context is performed independently of determining the first CABAC context; and during the first inter-frame prediction mode and the second inter-frame prediction mode, encode the video data based on the affine motion compensation flag and the first and second CABAC contexts, respectively, to produce encoded video data.
[0138] Generally, at least another example of an embodiment may relate to a method for encoding video data, the method comprising: determining a first CABAC context associated with an affine motion compensation flag during a first inter-frame prediction mode; determining a second CABAC context associated with an affine motion compensation flag during a second inter-frame prediction mode different from the first inter-frame prediction mode; wherein determining the second CABAC context is performed independently of determining the first CABAC context; and encoding the video data based on the affine motion compensation flag and the first and second CABAC contexts during the first inter-frame prediction mode and the second inter-frame prediction mode, respectively, to produce encoded video data.
[0139] Generally, at least one other example of an embodiment may relate to an apparatus for decoding video data, comprising one or more processors, wherein the one or more processors are configured to: determine a first CABAC context associated with an affine motion compensation flag during a first inter-frame prediction mode; determine a second CABAC context associated with an affine motion compensation flag during a second inter-frame mode different from the first inter-frame prediction mode; wherein determining the second CABAC context is performed independently of determining the first CABAC context; and during the first inter-frame prediction mode and the second inter-frame prediction mode, decode the video data based on the affine motion compensation flag and the first and second CABAC contexts, respectively, to produce decoded video data.
[0140] Generally, at least one other example of an embodiment may relate to a method for decoding video data, the method comprising: determining a first CABAC context associated with an affine motion compensation flag during a first inter-frame prediction mode; determining a second CABAC context associated with an affine motion compensation flag during a second inter-frame mode different from the first inter-frame prediction mode; wherein determining the second CABAC context is performed independently of determining the first CABAC context; and during the first inter-frame prediction mode and the second inter-frame prediction mode, decoding the video data based on the affine motion compensation flag and the first and second CABAC contexts, respectively, to produce decoded video data.
[0141] Generally, at least one other example of an embodiment may relate to an apparatus for encoding video data, comprising one or more processors, wherein the one or more processors are configured to: determine an inter-frame prediction mode; obtain a first CABAC context associated with an affine motion compensation flag based on the inter-frame prediction mode being a first mode; obtain a second CABAC context associated with an affine motion compensation flag based on the inter-frame prediction mode being a second mode different from the first mode, wherein obtaining the second CABAC context is performed independently of obtaining the first CABAC context; and encode the video data during the first and second modes based on the affine motion compensation flag and the first and second CABAC contexts, respectively, to produce encoded video data.
[0142] Generally, at least one other example of an embodiment may relate to a method for encoding video data, the method comprising: determining an inter-frame prediction mode; obtaining a first CABAC context associated with an affine motion compensation flag based on the inter-frame prediction mode as a first mode; obtaining a second CABAC context associated with an affine motion compensation flag based on the inter-frame prediction mode as a second mode different from the first mode, wherein obtaining the second CABAC context is performed independently of obtaining the first CABAC context; and encoding video data during the first and second modes based on the affine motion compensation flag and the first and second CABAC contexts, respectively, to produce encoded video data.
[0143] Generally, at least one other example of an embodiment may relate to an apparatus for decoding video data, comprising one or more processors, wherein the one or more processors are configured to: determine an inter-frame prediction mode; obtain a first CABAC context associated with an affine motion compensation flag based on the inter-frame prediction mode being a first mode; obtain a second CABAC context associated with an affine motion compensation flag based on the inter-frame prediction mode being a second mode different from the first mode, wherein obtaining the second CABAC context is performed independently of obtaining the first CABAC context; and decode the video data during the first and second modes based on the affine motion compensation flag and the first and second CABAC contexts, respectively, to produce decoded video data.
[0144] Generally, at least one other example of an embodiment may relate to a method for decoding video data, comprising: determining an inter-frame prediction mode; obtaining a first CABAC context associated with an affine motion compensation flag based on the inter-frame prediction mode as a first mode; obtaining a second CABAC context associated with an affine motion compensation flag based on the inter-frame prediction mode as a second mode different from the first mode, wherein obtaining the second CABAC context is performed independently of obtaining the first CABAC context; and decoding the video data during the first and second modes based on the affine motion compensation flag and the first and second CABAC contexts, respectively, to produce decoded video data.
[0145] Generally, at least one other example of an embodiment may relate to an apparatus for encoding video data, comprising one or more processors, wherein the one or more processors are configured to: determine a CABAC context associated with a flag indicating use of an affine motion model during an inter-frame prediction mode; wherein the CABAC context corresponds to a first CABAC probability model of an inter-frame prediction mode as a first mode; and, the CABAC context corresponds to a second CABAC probability model different from the first CABAC probability model of an inter-frame prediction mode as a second mode different from the first mode; and encode video data based on one of the first and second CABAC probability models corresponding to the inter-frame prediction mode, the flag, the CABAC context, and the inter-frame prediction mode.
[0146] Generally, at least one other example of an embodiment may relate to a method for encoding video data, the method comprising: determining a CABAC context associated with a flag indicating use of an affine motion model during an inter-frame prediction mode; wherein the CABAC context corresponds to a first CABAC probability model of an inter-frame prediction mode being a first mode; and, the CABAC context corresponds to a second CABAC probability model different from the first CABAC probability model of an inter-frame prediction mode being a second mode different from the first mode; encoding the video data based on one of the first and second CABAC probability models corresponding to the inter-frame prediction mode, the flag, the CABAC context, and the inter-frame prediction mode.
[0147] Generally, at least one other example of an embodiment may relate to an apparatus for decoding video data, comprising one or more processors, wherein the one or more processors are configured to: determine a CABAC context associated with a flag indicating use of an affine motion model during an inter-frame prediction mode; wherein the CABAC context corresponds to a first CABAC probability model of an inter-frame prediction mode that is a first mode; and wherein the CABAC context corresponds to a second CABAC probability model different from the first CABAC probability model of an inter-frame prediction mode that is a second mode different from the first mode; and decode the video data based on one of the first and second CABAC probability models corresponding to the inter-frame prediction mode, the flag, the CABAC context, and the inter-frame prediction mode.
[0148] Generally, at least another example of an embodiment may relate to a method for decoding video data, the method comprising: determining a CABAC context associated with a flag indicating use of an affine motion model during an inter-frame prediction mode; wherein the CABAC context corresponds to a first CABAC probability model of an inter-frame prediction mode being a first mode; and, the CABAC context corresponds to a second CABAC probability model different from the first CABAC probability model of an inter-frame prediction mode being a second mode different from the first mode; based on one of the first and second CABAC probability models corresponding to the inter-frame prediction mode, the flag, the CABAC context, and the inter-frame prediction mode, decoding the video data.
[0149] Generally, at least another example of an embodiment may relate to a device for encoding video data, comprising one or more processors, wherein the one or more processors are configured to: obtain a flag indicating the use of an affine motion model; determine a CABAC context associated with the flag, wherein the CABAC context is a unique CABAC context associated with the flag and is determined based on a spatial affine neighborhood of a current coding unit without the need for CABAC context modeling; and, based on the affine flag and the CABAC context, encode the video data to produce encoded video data.
[0150] Generally, at least one other example of an embodiment may relate to a method for encoding video data, the method comprising: obtaining a flag indicating the use of an affine motion model; determining a CABAC context associated with the flag, wherein the CABAC context is a unique CABAC context associated with the flag and is determined based on a spatial affine neighborhood of a current coding unit without the need for CABAC context modeling; and encoding the video data based on the affine flag and the CABAC context to produce encoded video data.
[0151] Generally, at least another example of an embodiment may relate to an apparatus for decoding video data, comprising: one or more processors, wherein the one or more processors are configured to: obtain a flag indicating the use of an affine motion model; determine a CABAC context associated with the flag, wherein the CABAC context is a unique CABAC context associated with the flag and is determined based on a spatial affine neighborhood of a current coding unit without the need for CABAC context modeling; and, based on the affine flag and the CABAC context, decode the video data to produce decoded video data.
[0152] Generally, at least another example of an embodiment may relate to a method for decoding video data, comprising: obtaining a flag indicating the use of an affine motion model; determining a CABAC context associated with the flag, wherein the CABAC context is a unique CABAC context associated with the flag and is determined based on a spatial affine neighborhood of a current coding unit without the need for CABAC context modeling; and, based on the affine flag and the CABAC context, decoding the video data to produce decoded video data.
[0153] Generally, at least one other example of an embodiment may relate to an apparatus for encoding video data, comprising one or more processors, wherein the one or more processors are configured to: determine a CABAC context associated with a flag indicating use of an affine motion model in an inter-prediction mode based solely on the availability of an affine spatial neighborhood of a current coding unit, wherein the CABAC context is one of: a first context corresponding to an availability indicating that no spatial affine neighborhood is available or a second context corresponding to an availability indicating that at least one spatial affine neighborhood is available; obtain a CABAC probability model based on the CABAC context; and, based on the flag, the CABAC context, and the CABAC probability model corresponding to the CABAC context, encode the video data.
[0154] Generally, at least one other example of an embodiment may relate to a method for encoding video data, the method comprising: determining a CABAC context associated with a flag indicating use of an affine motion model in an inter-frame prediction mode based only on the availability of an affine spatial neighborhood of a current coding unit, wherein the CABAC context is one of: a first context corresponding to an availability indicating that no spatial affine neighborhood is available or a second context corresponding to an availability indicating that at least one spatial affine neighborhood is available; obtaining a CABAC probability model based on the CABAC context; and, encoding the video data based on the flag, the CABAC context, and the CABAC probability model corresponding to the CABAC context.
[0155] Generally, at least one other example of an embodiment may relate to an apparatus for decoding video data, comprising one or more processors, wherein the one or more processors are configured to: determine a CABAC context associated with a flag indicating use of an affine motion model in an inter-prediction mode based solely on the availability of an affine spatial neighborhood of a current coding unit, wherein the CABAC context is one of: a first context corresponding to an availability indicating that no spatial affine neighborhood is available or a second context corresponding to an availability indicating that at least one spatial affine neighborhood is available; obtain a CABAC probability model based on the CABAC context; and, based on the flag, the CABAC context, and the CABAC probability model corresponding to the CABAC context, decode the video data.
[0156] Generally, at least one other example of an embodiment may relate to a method for decoding video data, comprising: determining a CABAC context associated with a flag indicating use of an affine motion model in an inter-prediction mode based solely on the availability of an affine spatial neighborhood of a current coding unit, wherein the CABAC context is one of: a first context corresponding to an availability indicating that no spatial affine neighborhood is available or a second context corresponding to an availability indicating that at least one spatial affine neighborhood is available; obtaining a CABAC probability model based on the CABAC context; and, based on the flag, the CABAC context, and the CABAC probability model corresponding to the CABAC context, decoding the video data.
[0157] The various examples of the embodiments described and contemplated in this document may be implemented in many different forms. Fig.14 , 15 and 16 provide some examples of embodiments described below, but other embodiments are contemplated, and Fig.14 , 15 The discussion of 16 does not limit the breadth of implementations. At least one of these aspects generally relates to video encoding and decoding, and at least another aspect generally relates to transmitting a generated or encoded bitstream. These and other embodiments, features, aspects, etc. can be implemented as methods, apparatus, a computer-readable storage medium having stored thereon instructions for encoding / decoding video data according to any of the described methods, and / or a computer-readable storage medium having stored thereon a bitstream generated according to any of the described methods.
[0158] 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, and "decoded" is used on the decoder side.
[0159] 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.
[0160] Various methods and other aspects described in this application can be used to modify modules, e.g. Fig.14 and Fig.15 The entropy encoding and / or decoding modules 145 and 230 of the video encoder 100 and decoder 200 are shown. Moreover, the present aspects are not limited to VVC or HEVC, and can be applied to, for example, other standards and recommendations, whether pre-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 in this application can be used alone or in combination
[0161] Various numerical values are used in this document, such as {{1,0}, {3,1}, {1,1}}. The specific values are for example purposes, and the described aspects are not limited to these specific values.
[0162] Fig.13 An exemplary encoder 100 is illustrated. Variations of the encoder 100 are contemplated, but for clarity, the encoder 100 is described below without describing all contemplated variations.
[0163] Before being encoded, the video sequence may undergo a pre-encoding process (101), for example, applying a color transform to the input color picture (e.g., conversion from RGB 4:4:4 to YCbCr 4:2:0), or performing a remapping of the input picture components in order to obtain a signal distribution that is more resilient to compression (e.g., using histogram equalization of one of the color components). Metadata may be associated with the pre-processing and appended to the bitstream.
[0164] In encoder 100, a picture is encoded by encoder elements as described below. The picture to be encoded is partitioned (102) and processed, for example, in units of CUs. Each unit is encoded, for example, using intra or inter mode. When a unit 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 to use for the coding unit, and indicates the intra / inter decision, for example, by a prediction mode flag. The prediction residual is calculated by subtracting (110) the predicted block from the original image block.
[0165] The prediction residual is then transformed (125) and quantized (130). The quantized transform coefficients are entropy encoded (145) along with motion vectors and other syntax elements to output a bitstream. The encoder can skip the transform and apply quantization directly to the untransformed residual signal. The encoder can also bypass both the transform and quantization, i.e., directly encode the residual without applying the transform or quantization process.
[0166] 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 prediction block are combined (155) to reconstruct the image block. An in-loop filter (165) is applied to the reconstructed picture to, for example, perform deblocking / SAO (sample adaptive offset) filtering to reduce coding artifacts. The filtered image is stored in a reference picture buffer (180).
[0167] Fig.15 2 is a block diagram of an exemplary video decoder 200. In the decoder 200, a bitstream is decoded by decoder elements, as described below. The video decoder 200 generally performs the same Fig.14 The decoding path is the inverse of the encoding path described in . The encoder 100 also typically performs video decoding as part of encoding the video data.
[0168] The input to the decoder includes a video bitstream that may be generated by the video encoder 100. The bitstream is first entropy decoded (230) to obtain transform coefficients, motion vectors, and other encoding information. Picture partition information indicates how the picture is partitioned. Thus, the decoder can divide (235) the picture according to the decoded picture partition information. The transform coefficients are dequantized (240) and inverse transformed (250) to decode the prediction residual. The decoded prediction residual and the prediction block are combined (255) to reconstruct the image block. The prediction block can be obtained (270) from intra-frame prediction (260) or motion compensated prediction (i.e., inter-frame prediction) (275). An in-loop filter (265) is applied to the reconstructed image. The filtered image is stored at a reference picture buffer (280).
[0169] The decoded picture may further undergo post-decoding processing (285), such as inverse color conversion (e.g., conversion from YCbCr 4:2:0 to RGB 4:4:4) or inverse remapping to perform the inverse of the remapping process performed in the pre-encoding process (101). The post-decoding process may use metadata derived in the pre-encoding process and signaled in the bitstream.
[0170] Fig.16A block diagram illustrating an example of a system in which various aspects and embodiments are implemented. System 1000 may be embodied as a device including 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 may be embodied in a single integrated circuit, multiple ICs and / or discrete components, either individually or in combination. For example, in at least one embodiment, the processing and encoder / decoder elements of system 1000 are distributed across multiple ICs and / or discrete components. In various embodiments, system 1000 is communicatively coupled to other similar systems or other electronic devices, for example, via a communication bus or by dedicated input and / or output ports. In various embodiments, system 1000 is configured to implement one or more aspects described in this document.
[0171] The system 1000 includes at least one processor 1010 configured to execute instructions loaded therein for implementing, 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 may also include at least one memory 1020 (e.g., a volatile memory device, a non-volatile memory device). The system 1000 may include a storage device 1040, which may include non-volatile memory and / or volatile memory, including, but not limited to, EEPROM, ROM, PROM, RAM, DRAM, SRAM,, flash memory, a magnetic disk drive, and / or an optical disk drive. As non-limiting examples, the storage device 1040 may include an internal storage device, an attached storage device, and / or a network accessible storage device.
[0172] The system 1000 includes an encoder / decoder module 1030, which is configured, for example, to 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 (multiple) 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 an encoding module and a decoding module. In addition, as known to those skilled in the art, 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.
[0173] 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 include, but are not limited to, input video, decoded video or a portion of decoded video, bitstreams, matrices, variables, and intermediate or final results of equations, formulas, operations, and operation logic.
[0174] In several embodiments, memory internal to 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 memory 1020 and / or a storage device 1040, such as a dynamic volatile memory and / or a non-volatile flash memory. In several embodiments, the external non-volatile flash memory is used to store, for example, an operating system for a 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 for MPEG-2, HEVC, or VVC (Versatile Video Coding).
[0175] Input to the elements of system 1000 may be provided through various input devices as indicated in block 1130. Such input devices include, but are not limited to, (i) an RF portion that receives an RF signal transmitted over the air, such as by a broadcaster, (ii) a composite input terminal, (iii) a USB input terminal, and / or (iv) an HDMI input terminal.
[0176] In various embodiments, the input device of block 1130 has associated corresponding input processing elements, as known in the art. For example, the RF portion may be associated with elements suitable 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 the frequency band to a narrower frequency band to select a signal frequency band that (for example) 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 the desired data packet. The RF portion of various embodiments includes one or more elements that perform these functions, such as a frequency selector, a signal selector, a frequency band limiter, a channel selector, a filter, a down-converter, a demodulator, an error corrector, and a demultiplexer. The RF portion 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 near-baseband frequency) or baseband. In one set-top box embodiment, the RF section and its associated input processing elements receive RF signals transmitted through a wired (e.g., cable) medium and perform frequency selection by filtering, down-converting, and filtering again to a desired frequency band. Various embodiments rearrange the order of the above (and other) elements, remove some of these elements, and / or add other elements that perform similar or different functions. Adding elements can include inserting elements between existing elements, for example, inserting an amplifier and an analog-to-digital converter. In various embodiments, the RF section includes an antenna. .
[0177] In addition, the USB and / or HDMI terminals may include corresponding interface processors for connecting the system 1000 to other electronic devices across the USB and / or HDMI connections. It is to 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 within the processor 1010 as desired. Similarly, various aspects of USB or HDMI interface processing may be implemented, for example, within a separate interface IC or within the processor 1010 as desired. The demodulated, error corrected, and demultiplexed streams are provided to various processing elements, including, for example, the processor 1010 and the encoder / decoder 1030 operating in conjunction with memory and storage elements to process the data streams for presentation on an output device.
[0178] The various elements of the system 1000 may be provided within an integrated housing. Within the integrated housing, the various elements may be interconnected and data may be transferred between them using a suitable connection arrangement 1140, such as an internal bus known in the art, including an I2C bus, wiring, and printed circuit boards.
[0179] The system 1000 includes a communication interface 1050 that enables 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.
[0180] In various embodiments, the data stream is transmitted to the system 1000 using a wireless network such as IEEE 802.11. The wireless signals of these embodiments are received on the communication channel 1060 and the communication interface 1050 adapted for Wi-Fi communication. The communication channel 1060 of these embodiments is typically connected to an access point or router that provides access to external networks including the Internet to allow streaming applications and other over-the-air. Other embodiments provide the streaming data to the system 1000 using a set-top box that passes the data through the HDMI connection of the input block 1130. Other embodiments also provide the streaming data to the system 1000 using the RF connection of the input block 1130.
[0181] The system 1000 can provide output signals to various output devices including a display 1100, speakers 1110, and other peripherals 1120. The other peripherals 1120 include one or more of a separate 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 examples of embodiments. 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 enable device-to-device control with or without user intervention. The output devices can be communicatively coupled to the system 1000 via dedicated connections through various 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 with the other components of the system 1000 into a single unit in an electronic device (such as, for example, a television). In various embodiments, the display interface 1070 includes a display driver, such as, for example, a timing controller (T Con) chip.
[0182] 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).
[0183] The 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. As a non-limiting example, 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 optical storage devices, magnetic storage devices, semiconductor-based storage 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.
[0184] Various implementations involve decoding. "Decoding" as used in this application may encompass, for example, all or part of the processing performed on a 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 transform, and differential decoding. In various embodiments, such processing also or alternatively includes processing performed by a decoder of the various implementations described in this application, such as extracting indices for weights of various intra-frame prediction reference arrays.
[0185] As another 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 broadly to a more extensive decoding process will be clear based on the context of the particular description and is believed to be well understood by those skilled in the art.
[0186] Various implementations involve encoding. In a manner similar to the above discussion of "decoding", "encoding" as used in this application can encompass, for example, all or part of the processing performed on an input video sequence to produce an encoded bitstream. In various embodiments, such processing includes one or more processes typically performed by an encoder, such as partitioning, differential encoding, transforms, quantization, and entropy encoding. In various embodiments, such processing also or alternatively includes processing performed by an encoder of the various implementations described in this application, such as weighting of an intra-frame prediction reference array.
[0187] As another 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 entropy encoding and differential encoding. Whether the phrase "encoding process" is intended to refer specifically to a subset of operations or broadly to a more extensive encoding process will be clear based on the context of the particular description and is believed to be well understood by those skilled in the art.
[0188] Note that the syntax elements used herein are descriptive terms. Therefore, they do not exclude the use of other syntax element names.
[0189] When the figures are presented as flow charts, it should be understood that they also provide block diagrams of the corresponding apparatus. Similarly, when the figures are presented as block diagrams, it should be understood that they also provide flow charts of the corresponding methods / processes.
[0190] Various embodiments refer to rate-distortion calculation or rate-distortion optimization. During the encoding process, a balance or trade-off between rate and distortion is generally considered, usually given constraints 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 a variety of methods for solving the rate-distortion optimization problem. For example, these methods can be based on a comprehensive test of all coding options, including all considered modes or coding parameter values, with a complete evaluation of the coding cost and the associated distortion of the reconstructed signal after encoding and decoding. Faster methods can also be used to save coding complexity, particularly based on the calculation of approximate distortion of the prediction or prediction residual signal rather than the reconstructed signal. A mixture of these two methods can also be used, for example 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 coding costs and associated distortions.
[0191] The implementations and aspects described herein can be implemented in, for example, methods or processes, devices, software programs, data streams, or signals. Even if only discussed in the context of a single implementation (e.g., discussed only as a method), the implementation of the features discussed can also be implemented in other forms (e.g., devices or programs). The device can be implemented in, 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 communication devices, such as computers, cellular phones, portable / personal digital assistants ("PDAs"), and other devices that facilitate information communication between end users.
[0192] References to "one embodiment" or "an embodiment" or "one implementation" or "an implementation" and other variations thereof mean 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 appearing in various places throughout this document are not necessarily all referring to the same embodiment.
[0193] Additionally, this application may refer to "determining" various information. Determining information may include, for example, one or more of estimating information, calculating information, predicting information, or retrieving information from a memory.
[0194] Additionally, this application may refer to "accessing" various information. Accessing information may include, for example, receiving information, retrieving information (e.g., from a memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or estimating information.
[0195] Additionally, the present application may refer to "receiving" various information. As with "accessing," receiving is intended to be a broad term. Receiving information may include, for example, one or more of accessing information or retrieving information (e.g., from a memory). Furthermore, "receiving" typically involves, in one way or another, storing information, processing information, transmitting information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information during an operation.
[0196] It is to be recognized that the use of " / ", "and / or", and "at least one of" below, for example, in the case of "A / B", "A and / or B", and "at least one of A and B", is intended to include selection of 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 language is intended to include selection of 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 readily apparent to one of ordinary skill in this and related arts, the language may be expanded for many of the items listed.
[0197] In addition, the word "signal" as used herein refers to indicating something to the corresponding decoder. For example, in some embodiments, the encoder signals a specific one of the multiple weights to be used for the intra-frame prediction reference array. 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 (explicit signaling) specific parameters to the decoder so that the decoder can use the same specific parameters. On the contrary, if the decoder already has specific parameters and other parameters, signaling can be used without sending (implicit signaling) to simply make the decoder know and select specific parameters. By avoiding the transmission of any actual function, bit saving is achieved in various embodiments. It is to be recognized that signaling can be done in a variety of ways. For example, in various embodiments, one or more syntax elements, flags, etc. are used to signal information to the corresponding decoder. Although the foregoing relates to the verb form of the word "signal", the word "signal" can also be used as a noun in this article.
[0198] It will be apparent to those skilled 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 bitstream of the above-described embodiments. Such a signal may be formatted, for example, as an electromagnetic wave (e.g., using a radio frequency portion of a spectrum) or as 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 transmitted via a variety of different wired or wireless links. The signal may be stored on a processor-readable medium.
[0199] Embodiments may include, alone or in combination, one or more of the following features or entities across various claim categories and types:
[0200] • Affine mode encoding and decoding takes into account the different statistical occurrences of affine mode usage between AMVP and merging.
[0201] • The encoding and decoding of affine mode takes into account the different statistical occurrences of affine mode usage between AMVP and Merge by encoding the affine flags independently in AMVP and Merge modes.
[0202] • The encoding and decoding of affine mode takes into account the different statistical occurrences of affine mode usage between AMVP and Merge by encoding the affine flag independently in AMVP and Merge modes, where the total number of CABAC contexts for the affine flag is doubled.
[0203] Encoding and decoding of affine mode takes into account the different statistical occurrences of affine mode usage between AMVP and Merge by encoding the affine flag independently in AMVP and Merge modes, where the total number of CABAC contexts for the affine flag is doubled and where the actual affine flag context modeling uses six contexts instead of three.
[0204] Remove the CABAC context modeling based on spatial affine neighborhood.
[0205] · Remove the spatial affine neighborhood based CABAC context modeling that uses only one context.
[0206] Modeling context using only or no availability of spatial neighbors.
[0207] Modeling contexts using only or no availability of spatial neighbors, where two contexts are possible: either no affine neighbors are available (context 0), or at least one is available (context 1).
[0208] • Construct virtual affine candidates to be considered in context modeling constructed from neighboring CUs that are coded in inter mode and not in affine mode.
[0209] Constructing virtual affine candidates to be considered in context modeling constructed from neighboring CUs that are coded in inter mode and not in affine mode, where the context is:
[0210] o 0, if no inter-frame neighbors are available
[0211] o 1, if inter-frame neighbors are available but no affine neighbors
[0212] o 2 if affine neighborhood is available
[0213] • Consider the presence of a reference picture, which is an inter picture used to enable the creation of a virtual temporal candidate.
[0214] • Consider the presence of a reference picture that is an inter picture for enabling the creation of a virtual temporal candidate that can be constructed from a temporally co-located CU coded in inter mode.
[0215] Considering the presence of a reference picture that is an inter picture for enabling the creation of a virtual temporal candidate, wherein the virtual temporal candidate can be constructed from a temporally co-located CU coded in inter mode, and context modeling includes:
[0216] o An inter-frame neighbor is available, or an inter-frame reference picture is available with reference picture index 0.
[0217] • A bitstream or signal containing one or more described syntax elements or variations thereof.
[0218] • Insertion of a flag in the signalling syntax element that enables the decoder to provide affine mode processing in a manner corresponding to that used by the encoder.
[0219] • Based on these syntax elements, an affine mode processing is selected to apply at the decoder.
[0220] • Creating and / or sending and / or receiving and / or decoding a bitstream or signal comprising one or more described syntax elements, or variations thereof.
[0221] A television, set-top box, mobile phone, tablet computer or other electronic device that implements any of the described embodiments.
[0222] A television, set-top box, mobile phone, tablet computer, or other electronic device that executes any of the described embodiments and displays (e.g., using a monitor, screen, or other type of display) the resulting image.
[0223] A television, set-top box, mobile phone, tablet or other electronic device that tunes (eg, using a tuner) a channel to receive a signal including an encoded image, and performs any of the described embodiments.
[0224] A television, set-top box, cell phone, tablet or other electronic device that receives over the air (e.g., using an antenna) a signal including the encoded image and performs any of the described embodiments.
[0225] A computer program product storing a program code which, when executed by a computer, implements any of the described embodiments.
[0226] A non-transitory computer-readable medium comprising executable program instructions that cause a computer executing the instructions to implement any of the described embodiments.
[0227] Various other general and specific embodiments are also supported and contemplated in the present disclosure.
Claims
1. A method comprising: deriving a CABAC context for encoding an affine flag that signals the use of an affine mode to predict a block of video in AMVP mode or in merge mode, determining a probability model associated with the CABAC context according to whether the affine mode is used in the AMVP mode or the merge mode, The affine flag of the block is encoded using the determined probability model.
2. A method comprising: deriving a CABAC context for decoding an affine flag that signals a block of video to be predicted using an affine mode in AMVP mode or in merge mode, determining a probability model associated with the CABAC context according to whether the affine mode is used in the AMVP mode or the merge mode, The affine flag of the block is decoded using the determined probability model.
3. The method according to claim 1 or 2, wherein: The CABAC context is shared between the AMVP mode and the merge mode.
4. The method according to claim 1 or 2, wherein: The CABAC context is obtained as a function of the values of affine flags associated with neighboring blocks of the block.
5. The method according to claim 1 or 2, wherein: The affine mode is signaled using three CABAC contexts, each of the three CABAC contexts being associated with two probability models, wherein the probability model is determined to be one of the two probability models.
6. The method according to claim 1 or 2, wherein: The merge mode includes one of SbTMVP, mmvd or DMVR.
7. The method according to claim 1 or 2, wherein: The CABAC context is derived considering a spatial affine neighborhood.
8. The method according to claim 1 or 2, wherein: The CABAC context is derived using the same derivation in the AMVP mode and in the merge mode.
9. The method according to claim 1 or 2, wherein: Determining a probability model associated with the CABAC context, comprising: If the block is in the AMVP mode, obtaining a first CABAC probability model associated with the CABAC context, and If the block is in the merge mode, obtaining a second CABAC probability model associated with the CABAC context, wherein the second CABAC probability model is different from the first CABAC probability model.
10. An apparatus comprising: one or more processors, wherein the one or more processors are configured to: deriving a CABAC context for encoding an affine flag that signals the use of an affine mode to predict a block of video in AMVP mode or in merge mode, determining a probability model associated with the CABAC context according to whether the affine mode is used in the AMVP mode or the merge mode, The affine flag of the block is encoded using the determined probability model.
11. An apparatus comprising: one or more processors, wherein the one or more processors are configured to: deriving a CABAC context for decoding an affine flag that signals a block of video to be predicted using an affine mode in AMVP mode or in merge mode, determining a probability model associated with the CABAC context according to whether the affine mode is used in the AMVP mode or the merge mode, The affine flag of the block is decoded using the determined probability model.
12. The device according to claim 10 or 11, wherein: The CABAC context is shared between the AMVP mode and the merge mode.
13. The device according to claim 10 or 11, wherein: The CABAC context is obtained as a function of the values of affine flags associated with neighboring blocks of the block.
14. The device according to claim 10 or 11, wherein: The affine mode is signaled using three CABAC contexts, each of the three CABAC contexts being associated with two probability models, wherein the probability model is determined to be one of the two probability models.
15. The device according to claim 10 or 11, wherein: The merge mode includes one of SbTMVP, mmvd or DMVR.
16. The device according to claim 10 or 11, wherein: The CABAC context is derived considering a spatial affine neighborhood.
17. The device according to claim 10 or 11, wherein: The CABAC context is derived using the same derivation in the AMVP mode and in the merge mode.
18. The device according to claim 10 or 11, wherein: Determining a probability model associated with the CABAC context, comprising: If the block is in the AMVP mode, obtaining a first CABAC probability model associated with the CABAC context, and If the block is in the merge mode, obtaining a second CABAC probability model associated with the CABAC context, wherein the second CABAC probability model is different from the first CABAC probability model.
19. A computer readable storage medium comprising computing instructions, which when executed by one or more processors, are used to perform the method of claim 1 or 2.
20. A device comprising: The device according to claim 11; as well as At least one of: (i) an antenna configured to receive a signal comprising data representing a video and comprising an affine marker, (ii) a frequency band limiter configured to limit the received signal to a frequency band comprising the data representing the video, and (iii) a display configured to display an image from the video.