专利摘要:
The present invention relates to a device for decoding video of a current block of video data, the device including one or more processors configured to compute a horizontal component of a motion vector and to compute a vertical component of a motion vector. motion in a related model. The affine model can be a four-parameter affine model that includes two control point motion vectors, or a six-parameter affine model that includes three control point motion vectors. Horizontal and vertical components can include differences between control point motion vectors based on first bit shift operations and second bit shift operations.
公开号:BR112020014654A2
申请号:R112020014654-4
申请日:2019-01-17
公开日:2020-12-01
发明作者:Kai Zhang;Wei-Jung Chien;Li Zhang;Marta Karczewicz
申请人:Qualcomm Incorporated;
IPC主号:
专利说明:

[0001] [0001] This Application claims the benefit of US Patent Application No. 16/246,952, filed January 14, 2019 and US Interim Application No. 62/619,783 filed January 20, 2018, all content of which is incorporated herein by reference. TECHNICAL FIELD
[0002] [0002] This disclosure relates to inter-picture prediction, more specifically, using affine motion compensation. It can be applied to future video encoding standards. RATIONALE
[0003] [0003] Digital video capabilities can be embedded in a wide variety of devices, including digital televisions, digital direct broadcast systems, wireless broadcasting systems, personal digital assistants (PDAs), laptops or desktop computers, tablets, e-book, digital cameras, digital recording devices, digital media players, video game devices, video game consoles, cell phone or satellite radio, so-called “smart phones”, video teleconferencing devices, video broadcasting devices etc. Digital video devices implement video compression techniques such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, Advanced Encoding (AVC), ITU-T H.265, the High Efficiency Video Coding (HEVC) standard, and extensions of such standards. Video devices can transmit, receive, encode, decode and/or store digital video information more efficiently by implementing these video compression techniques.
[0004] [0004] Video compression techniques perform spatial (intra-picture) and/or temporal (inter-picture) prediction to reduce or remove inherent redundancy in video sequences. For block-based video encoding, a video slice (i.e., a video frame or a portion of a video frame) can be partitioned into video blocks, which can also be referred to as tree blocks, encoding units. (CUs) and/or encoding nodes. The video blocks in an intracoded slice (I) of an image are encoded using spatial prediction with respect to reference samples in adjacent blocks in the same value image. Video blocks in an intercoded slice (P or B) of an image can use spatial prediction against reference samples in adjacent blocks in the same value image or temporal prediction against reference samples in other reference images. Spatial or temporal prediction results in a predictive block for a block to be encoded. Residual data represents pixel differences between the original block to be encoded and the predictive block. An intercoded block is coded according to a motion vector pointing to a block of reference samples that form the predictive block, and the residual data indicating the difference between the coded block and the predictive block. An intracoded block is coded according to an intracoding mode and the residual data. For further compression, the residual data can be transformed from the pixel domain into a transformation domain, resulting in residual transformation coefficients, which can then be quantized. SUMMARY
[0005] [0005] This disclosure relates to a device for video decoding a current block of video data, including one or more processors configured to compute a horizontal component of a motion vector of the affine model by adding a first operation result of bit shift to a zero control point motion vector horizontal component. The first bit shift operation result is determined based on a first bit shift operation on a first product of difference and a second product of difference. The first difference product includes a first difference multiplied by a horizontal pixel location within the current block of video data. The first difference is based on a difference between horizontal components of zero control point motion vector and a first control point motion vector.
[0006] [0006] In addition, the one or more processors are configured to compute a vertical component of an affine model motion vector by adding a second bit shift operation result to a zero control point motion vector vertical component. The second bit shift operation result is determined based on a second bit shift operation on a third difference product. The third difference product includes a third difference multiplied by a horizontal pixel location within the current block of video data. The third difference is based on a difference between vertical components of zero control point motion vector and a first control point motion vector. In addition, the device includes memory configured to store a current reconstructed block of video data.
[0007] [0007] In addition, decoding computes the second difference product that includes a second difference from the four-parameter affine model, multiplied by a vertical pixel location within the current block of video data. The second difference is based on a difference between vertical components of the zero control point motion vector and the first control point motion vector. The fourth difference product includes a fourth difference multiplied by a vertical pixel location within the current block of video data. The fourth difference is based on a difference between horizontal components of the zero control point motion vector and the first control point motion vector.
[0008] [0008] Furthermore, the one or more processors in the decoding device are configured to compute the horizontal component of the affine model, where the affine model is a six-parameter affine model. The second difference product includes a second difference multiplied by a vertical pixel location within the current block of video data. The second difference is based on a difference between vertical components of the zero control point motion vector and the second control point motion vector. Furthermore, the one or more processors are configured to compute the vertical component of the affine model when the affine model is a six-parameter affine model. The fourth difference product includes a fourth difference multiplied by a vertical pixel location within the current block of video data. The fourth difference is based on a difference between vertical components of the zero control point motion vector and the second control point motion vector.
[0009] [0009] The techniques also refer to a method for decoding video from a current block of video data. The method includes computing a horizontal component of an affine model motion vector by adding a first bit shift operation result to a zero control point motion vector horizontal component. The method also includes that the first bit shift operation result is determined based on a first bit shift operation on a first product of difference and a second product of difference. The first difference product includes a first difference multiplied by a horizontal pixel location within the current block of video data. The first difference is based on a difference between horizontal components of zero control point motion vector and a first control point motion vector.
[0010] [0010] Furthermore, the method includes computing a vertical component of an affine model motion vector by adding a second bit shift operation result to a zero control point motion vector vertical component. The method also includes that the second bit shift operation result is determined based on a second bit shift operation on a third product of difference. The third difference product includes a third difference multiplied by a horizontal pixel location within the current block of video data. The third difference is based on a difference between vertical components of zero control point motion vector and a first control point motion vector. Furthermore, the method includes reconstructing the current block of video data.
[0011] [0011] Also, when the affine model is a four-parameter affine model, the second difference product includes a second difference multiplied by a vertical pixel location within the current block of video data. The second difference is based on a difference between vertical components of the zero control point motion vector and the first control point motion vector. The fourth difference product includes a fourth difference multiplied by a vertical pixel location within the current block of video data. Also, the fourth difference is based on a difference between horizontal components of the zero control point motion vector and the first control point motion vector.
[0012] [0012] Furthermore, the method includes computing the horizontal component of the affine model where the affine model is a six-parameter affine model. The second difference product includes a second difference multiplied by a vertical pixel location within the current block of video data. The second difference is based on a difference between vertical components of the zero control point motion vector and the second control point motion vector. Furthermore, the method includes computing the vertical component of the affine model when the affine model is a six-parameter affine model. The fourth difference product includes a fourth difference multiplied by a vertical pixel location within the current block of video data. The fourth difference is based on a difference between vertical components of the zero control point motion vector and the second control point motion vector.
[0013] [0013] This disclosure also relates to an apparatus that includes means for decoding video from a current block of video data. The apparatus includes means for computing a horizontal component of an affine model motion vector by adding a first bit shift operation result to a zero control point motion vector horizontal component. The apparatus also includes that the first bit shift operation result is determined based on a first bit shift operation on a first product of difference and a second product of difference. The first difference product includes a first difference multiplied by a horizontal pixel location within the current block of video data. The first difference is based on a difference between horizontal components of zero control point motion vector and a first control point motion vector.
[0014] [0014] Further, the apparatus includes means for computing a vertical component of a motion vector of the affine model by adding a second bit shift operation result to a vertical component of zero control point motion vector. The apparatus also includes that the second bit shift operation result is determined based on a second bit shift operation on a third difference product. The third difference product includes a third difference multiplied by a horizontal pixel location within the current block of video data. The third difference is based on a difference between vertical components of zero control point motion vector and a first control point motion vector. Furthermore, the apparatus includes means for reconstructing the current block of video data.
[0015] [0015] Also, when the affine model is a four-parameter affine model, the second difference product includes a second difference multiplied by a vertical pixel location within the current block of video data. The second difference is based on a difference between vertical components of the zero control point motion vector and the first control point motion vector. The fourth difference product includes a fourth difference multiplied by a vertical pixel location within the current block of video data. Also, the fourth difference is based on a difference between horizontal components of the zero control point motion vector and the first control point motion vector.
[0016] [0016] In addition, the apparatus includes means for computing the horizontal component of the affine model wherein the affine model is a six-parameter affine model. The second difference product includes a second difference multiplied by a vertical pixel location within the current block of video data. The second difference is based on a difference between vertical components of the zero control point motion vector and the second control point motion vector. Furthermore, the apparatus includes means for computing the vertical component of the affine model when the affine model is a six-parameter affine model. The fourth difference product includes a fourth difference multiplied by a vertical pixel location within the current block of video data. The fourth difference is based on a difference between vertical components of the zero control point motion vector and the second control point motion vector.
[0017] [0017] This disclosure refers to a device for video encoding a current block of video data, including one or more processors configured to compute a horizontal component of a motion vector of the affine model by adding a first result of a shift operation of bit to a zero control point motion vector horizontal component. The first bit shift operation result is determined based on a first bit shift operation on a first product of difference and a second product of difference. The first difference product includes a first difference multiplied by a horizontal pixel location within the current block of video data. The first difference is based on a difference between horizontal components of zero control point motion vector and a first control point motion vector.
[0018] [0018] In addition, the one or more processors are configured to compute a vertical component of an affine model motion vector by adding a second bit shift operation result to a zero control point motion vector vertical component. The second bit shift operation result is determined based on a second bit shift operation on a third difference product. The third difference product includes a third difference multiplied by a horizontal pixel location within the current block of video data. The third difference is based on a difference between vertical components of zero control point motion vector and a first control point motion vector. In addition, the device includes memory configured to store a current reconstructed block of video data.
[0019] [0019] In addition, encoding computes the second difference product that includes a second difference from the four-parameter affine model, multiplied by a vertical pixel location within the current block of video data. The second difference is based on a difference between vertical components of the zero control point motion vector and the first control point motion vector. The fourth difference product includes a fourth difference multiplied by a vertical pixel location within the current block of video data. The fourth difference is based on a difference between horizontal components of the zero control point motion vector and the first control point motion vector.
[0020] [0020] Furthermore, the one or more processors in an encoding device are configured to compute the horizontal component of the affine model where the affine model is a six-parameter affine model. The second difference product includes a second difference multiplied by a vertical pixel location within the current block of video data. The second difference is based on a difference between vertical components of the zero control point motion vector and the second control point motion vector. Furthermore, the one or more processors are configured to compute the vertical component of the affine model when the affine model is a six-parameter affine model. The fourth difference product includes a fourth difference multiplied by a vertical pixel location within the current block of video data. The fourth difference is based on a difference between vertical components of the zero control point motion vector and the second control point motion vector.
[0021] [0021] This disclosure also refers to a computer readable medium having instructions stored therein which, when executed by one or more processors, are configured to compute a horizontal component of a motion vector of the affine model by adding a first operation result of bit shift to a zero control point motion vector horizontal component. The first bit shift operation result is determined based on a first bit shift operation on a first product of difference and a second product of difference. The first difference product includes a first difference multiplied by a horizontal pixel location within the current block of video data. The first difference is based on a difference between horizontal components of zero control point motion vector and a first control point motion vector.
[0022] [0022] Also, computer-readable medium having stored instructions on it which, when executed by one or more processors, are configured to compute a vertical component of a motion vector of the affine model by adding a second bit-shift operation result to a zero control point motion vector vertical component. The second bit shift operation result is determined based on a second bit shift operation on a third difference product. The third difference product includes a third difference multiplied by a horizontal pixel location within the current block of video data. The third difference is based on a difference between vertical components of zero control point motion vector and a first control point motion vector. In addition, computer readable media having instructions stored thereon which, when executed by one or more processors, are configured to store a reconstructed current block of video data.
[0023] [0023] In addition, computer-readable medium having stored instructions thereon which, when executed by one or more processors, are configured to compute the second difference product that includes a second difference of the four-parameter affine model, multiplied by a location vertical pixel within the current block of video data. The second difference is based on a difference between vertical components of the zero control point motion vector and the first control point motion vector. The fourth difference product includes a fourth difference multiplied by a vertical pixel location within the current block of video data. The fourth difference is based on a difference between horizontal components of the zero control point motion vector and the first control point motion vector.
[0024] [0024] Also, computer-readable medium having instructions stored therein which, when executed by one or more processors, are configured to compute the horizontal component of the affine model, where the affine model is a six-parameter affine model. The second difference product includes a second difference multiplied by a vertical pixel location within the current block of video data. The second difference is based on a difference between vertical components of the zero control point motion vector and the second control point motion vector. In addition, computer-readable media having stored instructions thereon which, when executed by one or more processors, are configured to compute the vertical component of the affine model when the affine model is a six-parameter affine model. The fourth difference product includes a fourth difference multiplied by a vertical pixel location within the current block of video data. The fourth difference is based on a difference between vertical components of the zero control point motion vector and the second control point motion vector.
[0025] [0025] In addition, the device includes a computer-readable medium having instructions stored therein which, when executed by one or more processors, store a current reconstructed block of video data.
[0026] [0026] Details of one or more examples of this disclosure are presented in the accompanying drawings and description below. Other features, objects, and advantages of various aspects of the techniques will be apparent from the description and drawings, and from the claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0027] [0027] Figure 1A illustrates spatial adjacent normal merge candidates in merge mode and Figure 1B illustrates spatial adjacent normal merge candidates in AMVP mode.
[0028] [0028] Figure 2 illustrates dual control MV points for a four-parameter affine model.
[0029] [0029] Figure 3 illustrates an exemplary Affine_Inter mode.
[0030] [0030] Figure 4A and Figure 4B illustrate examples of unification candidates.
[0031] [0031] Figure 5 illustrates MV points of three controls for a six-parameter affine model.
[0032] [0032] Figure 6A illustrates a single-block motion compensation and Figure 6B illustrates a sub-block motion compensation.
[0033] [0033] Figure 7A illustrates a flowchart used for encoding video with one or more techniques described in this disclosure.
[0034] [0034] Figure 7B illustrates a flowchart used for decoding video with one or more techniques described in this disclosure.
[0035] [0035] Figure 8 illustrates an exemplary video encoder that can be used to implement one or more of the techniques described in this disclosure.
[0036] [0036] Figure 9 illustrates an exemplary video decoder that can be used to implement one or more of the techniques described in this disclosure. DETAILED DESCRIPTION
[0037] [0037] Affine Motion Compensation was introduced as a coding tool in the Joint Exploration Model (JEM) developed by the Joint Video Exploration Team after the development of HEVC. In JEM, both four-parameter and six-parameter affine motion models were introduced. These affine motion models generally offer improvements in motion encoding gains due to non-translational motion, eg zooming and rotating. However, the existing formulas used in the four-parameter and six-parameter affine models rely on making divisions that might depend on a hardware divider circuit, for example, an Application Specific Integrated Circuit (ASIC).
[0038] [0038] For example, a divider circuit can be implemented using a multistep process based on multiplications, subtractions and looking for numbers that are smaller or larger than other numbers (eg a dividend). The multistep process for computing a division by a divider circuit is inefficient compared to performing a bit shift operation to perform the division.
[0039] [0039] Additional context of the solution will be described with reference to the figures, and in the detailed description below. Movement Information
[0040] [0040] In H.265/HEVC, for each block, a set of motion information may be available. A motion information set can contain motion information for forward and backward prediction directions. Forward and backward prediction directions are two prediction directions of a bidirectional prediction mode and the terms “forward” and “backward” do not necessarily have a geometric meaning but correspond to reference image list 0 (RefPicList0 ) and the reference image list 1 (RefPicList1) of a current image. When only one reference image list is available for an image or slice, only RefPicList0 can be available and motion information for each block of a slice is forwarded.
[0041] [0041] For each prediction direction, the motion information can contain a reference index and a motion vector. In some cases, for simplicity, a motion vector itself can be referenced in such a way as to assume that it has an associated reference index. A reference index can be used to identify a reference image in the current reference image list (RefPicList0 or RefPicList1). A motion vector has a horizontal and a vertical component. POC
[0042] [0042] The Picture Order Count (POC) is widely used in video encoding standards to identify a display order of an image. While there are cases where two images within an encoded video stream can have the same POC value, this generally does not occur within an encoded video stream. When multiple encoded video streams are present in a bit stream, images with the same POC value can be closer together in terms of decoding order.
[0043] [0043] Image POC values are generally used for reference image list construction and reference image set derivation, as in motion vector scaling and HEVC. CU structure in HEVC
[0044] [0044] In HEVC, the largest coding unit in a slice is called a coding tree block (CTB). A CTB contains a quadruple tree, the nodes of which are encoding units. The size of a CTB can be ranges from 16x16 to 64x64 in the main HEVC profile (although technically 8x8 CTB sizes can be supported). An encoding unit (CU) can have the same value size as a CTB, although it is as small as 8x8. Each encoding unit is encoded with a mode. When a CU is intercoded, it can be partitioned into two prediction units (PUs) or become just one PU when an additional partition does not apply. When two PUs are present in a CU, they must be half-size rectangles or be the size of two rectangles that are ¼ or ¾ the size of the CU.
[0045] [0045] When the CU is intercoded, a set of motion information is present for each PU. In addition, each PU is coded with a unique interprediction mode to derive the set of motion information. In HEVC, the smallest PU sizes are 8x4 and 4x8. Motion Prediction in HEVC
[0046] [0046] In the HEVC standard, there are two modes of interprediction, called merge modes (jumping is considered a special case of unification) and advanced motion vector prediction (AMVP), respectively, for a prediction unit (PU). ).
[0047] [0047] In AMVP or unified mode, a motion vector (MV) candidate list is maintained for multiple motion vector predictors. The motion vector(s) as well as the unification mode reference indices of the current PU are generated by taking a candidate from the MV candidate list.
[0048] [0048] The MV candidate list contains up to five (“5”) candidates for the unification mode and only two candidates for the AMVP mode. A merge candidate can contain a set of motion information, for example motion vectors corresponding to both the reference image lists (list 0 and list 1) and the reference indices. If a merge candidate is identified by a merge index, the reference images are used for the prediction of current blocks and the associated motion vectors are determined. However, in AMVP mode for each potential prediction direction of list 0 or list 1, a reference index needs to be explicitly flagged, along with an MVP index for the MV candidate list, as the AMVP candidate contains only one vector of movement. In AMVP mode, predicted motion vectors can be further refined.
[0049] [0049] As can be seen above, a unification candidate corresponds to a complete set of motion information, while an AMVP candidate contains only one motion vector for a specific prediction direction and reference index.
[0050] [0050] Candidates for both modes are similarly derived from adjacent spatial and temporal blocks of the same value.
[0051] [0051] In JEM, now referred to as Versatile Video Encoding (VVC) as of April 2018, the MV candidate list can contain up to seven (“7”) candidates for the unification mode.
[0052] [0052] The spatial MV candidates are derived from the adjacent blocks shown in Figure 1, for a specific PU (PU0), although the methods that generate the block candidates are different for the unification and AMVP modes.
[0053] [0053] Figure 1A illustrates spatial adjacent normal unification candidates in unification mode
[0054] [0054] In unification mode, up to four spatial MV candidates can be derived with the orders shown in Figure 1A with numbers, and the order is as follows: left (0), above (1), above right (2), below left (3), and above left (4), as shown in Figure 1A. Cleanup operations can be applied to remove identical MV candidates.
[0055] [0055] Figure 1B illustrates spatial adjacent normal unification candidates in AMVP mode.
[0056] [0056] In AVMP mode, adjacent blocks are divided into two groups: left group consisting of block 0 and 1, and group above consisting of blocks 2, 3 and 4, as shown in Figure 1B. For each group, the potential candidate in an adjacent block that refers to a reference image of the same value as indicated by the signaled reference index has the highest priority to be chosen to form a final candidate of the group. It is possible that all adjacent blocks do not contain a motion vector pointing to a reference image of the same value. Therefore, if that candidate cannot be found, the first available candidate will be scaled to form the final candidate, so temporal distance differences can be compensated for. Motion Compensation in H.265/HEVC
[0057] [0057] Motion compensation in H.265/HEVC is used to generate a predictor for the current intercoded block. A quarter-pixel precision motion vector is used and pixel values at fractional positions are interpolated using adjacent integer pixel values for both the luma and chroma components. Affine Motion Prediction in JVET Activities
[0058] [0058] In current existing video codec standards, prior to VVC, only one translational motion model is applied for motion compensation prediction (MCP). Although in the real world there are many types of movement, for example zoom in/out, rotation, perspective movements and other irregular movements. If still only applying the translational motion model for MCP in these test sequences with irregular motions, this will affect the prediction accuracy and result in low coding efficiency.
[0059] [0059] For many years, attempts have been made to design algorithms to improve MCP and increase coding efficiency. Affine of Four Parameters (two MVs)
[0060] [0060] Figure 2 illustrates dual control MV points for a four-parameter affine model. An affine unification and inter affine modes are proposed to deal with 4-parameter affine motion models as
[0061] [0061] For each CU/PU whose size is equal to or greater than 16x16, AF_INTER mode can be applied as follows. If the current CU/PU is in AF_INTER mode, an affine indicator at the CU/PU level is signaled in the bitstream. An affine motion vector prediction (MVP) candidate list with two candidates like {(MVP00, MVP01), (MVP10, MVP11)} is constructed. The rate distortion cost is used to determine whether (MVP00, MVP01) or (MVP10, MVP11) is selected as the current CU/PU affine motion vector prediction. If (MVPx0, MVPx1) is selected, then MV0 is encoded with MVPx0 as the prediction and MV0 is encoded with MVPx1 as the prediction. The index to indicate the position of the selected candidate in the list is signaled to the current block in the bitstream.
[0062] [0062] The procedure of building the list of affine MVP candidates is as follows. Collect MVs from many groups. For example, G0: {MV-A, MV-B, MV-C), G1: {MV-D, MV-E}, G2 {MV-F, MV-G}.
[0063] [0063] Figure 3 illustrates an exemplary Affine_Inter mode. Blocks A, B, C, D, E, F and G are shown in Figure 3. First, we take the motion vector of the block that refers to the target reference image. If not available, then use the motion vector that corresponds to the motion vector scaled to the target reference image.
[0064] [0064] For a triple (MV0, MV1, MV2) of G0, G1, G2, an MV2' of MV0 and MV1 is derived with the affine model. Second, D(MV0, MV1, MV2)=IMV2-MV2'I is computed. Third, we search for all triples of G0, G1 and G2, and find the triple (MV00, MV01, MV02) that produces the minimum D. After producing the minimum D, we define MVP00=MV00, MVP01=MV01. If there is more than one triple available, find the triple (MV10, MV11, MV12) that produces the second minimum D. After producing the second minimum D, then MVP10=MV10, MVP11=MV11 is set. If the candidates are not filled, that is, found, then the MVP candidates for the non-affine prediction block are derived for the current block. For example, the MVP candidates for a non-affine prediction block are MVP_nonaff0 and
[0065] [0065] After the current affine CU/PU MVP is determined, the affine motion estimate is applied and the (MV00, MV01) is found. Then the difference of (MV00, MV01) and (MVPx0, MVPx1) is encoded in the bitstream.
[0066] [0066] The affine motion compensation prediction mentioned above is applied to generate the current CU/PU residuals. Finally, the current CU/PU residues are transformed, quantized and encoded in the bitstream. Affine unification mode
[0067] [0067] Figure 4A and Figure 4B illustrate examples of unification candidates. When the current CU/PU is applied in AF_MERGE mode, the first block is encoded with the affine mode of valid adjacent reconstructed blocks. And the selection order for the candidate block is from left, top, top right, bottom left to top left, as shown in Figure 4A. For example, if the adjacent lower-left block A is encoded in affine mode, as shown in Figure 4B, the motion vectors v2, v3, and v4 of the upper-left, upper-right, and lower-left corners of the CU/PU containing the block A are derived. The motion vector v0 of the upper left corner in the current CU/PU is calculated according to v2, v3 and v4. Likewise, the motion vector v1 from the right above the current CU/PU is calculated based on V2, V3 and v4.
[0068] [0068] After the CPMV of v0 and v1 of the current CU/PU is calculated according to the simplified affine motion model defined in equation (2), the MVF of the current CU/PU is generated. Then, Affine Motion Compensated Prediction (“ACM”) is applied.
[0069] [0069] To identify whether the current CU/PU is encoded in AF_MERGE mode, an affine identifier is signaled in the bit stream when there is at least one adjacent block encoded in affine mode. If no affine blocks adjacent to the current block exist, as shown in Figure 4A, then an affine pointer will not be written to the bitstream.
[0070] [0070] To indicate the affine merge mode, an affine_flag is signaled if the merge flag is 1. If the affine_flag is 1, the current block is encoded with the affine merge mode, and no merge index is signaled. If affine_flag is 0, either the current block is encoded with normal merge mode, and a merge index is flagged afterwards. The table below shows the syntax design. merge_flag ae if( merge_flag){ affine_flag ae if(!afine_flag) merge_index ae } Entropy Encoding for the Affine Model
[0071] [0071] In HEVC, context-adaptive binary arithmetic encoding (CABAC) is used to convert a symbol into a binarized value, in a process called binarization. Binarization allows efficient binary arithmetic encoding through a unique mapping of non-binary syntax elements to a sequence of bits, which are called bins.
[0072] [0072] In JEM2.0 reference software, for affine unification mode, only the affine indicator is encoded, and the unification index is inferred as the first adjacent affine model available in the predefined ABCDE scan order, as shown in Figure 4A. This check order is similar to the one discussed in connection with Figure 1A. Where left (0) has block A prioritized first before blocks B-E. So the above (1), block B, is prioritized next over blocks C-E. Followed by the above right (2), block C, is prioritized over block D-E. The bottom left (3), block D, is prioritized over the block E. Finally, the top left (4), block E, is prioritized last.
[0073] [0073] For inter affine mode, two MVD syntaxes are encoded for each prediction list, indicating the motion vector difference between the derived affine motion vector and the predicted motion vector. Affine of Six Parameters (three MVs)
[0074] [0074] Figure 5 illustrates triple control MV points for a six-parameter affine model.
[0075] [0075] An affine prediction block can choose to use a four-parameter affine model or a six-parameter affine model adaptively.
[0076] [0076] An affine model with six (“6”) parameters is defined as
[0077] [0077] An affine model with six (“6”) parameters has three control points. In other words, an affine model with six (“6”) parameters is determined by three motion vectors, as shown in Figure 5. MV0 is the first control point motion vector in the upper left corner. MV1 is the second control point motion vector in the upper right corner of the block. MV2 is the third control point motion vector in the lower left corner of the block, as shown in Figure 2.
[0078] [0078] The affine model built with the three motion vectors is calculated as  ( mv1 x  mv0 x ) ( mv2 x  mv0 x )  mv x  wx hy  mv0 x (4)   mv  ( mv1 y  mv0 y ) x  ( mv2 y  mv0 y ) y  mv  ywh 0y More Motion Vector Prediction Methods for Affine
[0079] [0079] Similar to the affine unification mode for deriving the upper-left and upper-right motion vectors, the affine model can also be used to derive the MVPs for the upper-left, upper-right, and lower left corner. MVD1 can be predicted from MVD in affine mode
[0080] [0080] Affine unification and normal unification modes can be added to the unification candidate list. Sub-Block Decision in JEM
[0081] [0081] Figure 6A illustrates a single block motion compensation. In JEM software, affine motion compensation introduces sub-block motion compensation. Unlike traditional single-block motion compensation, where the entire block has only one motion vector for a reference list, as shown in Figure 6A, Figure 6B illustrates sub-block motion compensation with different motion vectors. .
[0082] [0082] Sub-block motion compensation allows a block of video data to be divided into more than one sub-block with different motion vectors for a reference list, as shown in Figure 6B.
[0083] [0083] In JEM software, an algorithm is used to determine the sub-block size for affine motion compensation, both in the encoder and in the decoder. The algorithm creates the IDs described below and characterizes the current block size as having dimensions wxh, where w is the width, and h is the height of the current block. Each sub-block of the current block has a width (sw) and height (sh) and are determined as described below.
[0084] [0084] The width of the sub-block size can be determined by selecting the maximum value, mvWx, between the absolute value of the difference of the first horizontal component of control point motion vector, mv1x, and a second horizontal component of control point vector. control point motion, mv0x, and the absolute value of the difference of a first vertical component of control point motion vector, mv1y, and a second vertical component of control point motion vector, mv0y. The width of the current block of video data,
[0085] [0085] Likewise, the height of the sub-block size can be determined by selecting the maximum value, mvWy, between the absolute value of the difference of a third horizontal component of control point motion vector, mv2x, and a second horizontal component of control point motion vector, mv0x, and the absolute value of the difference of a first vertical component of control point motion vector, mv1y, and a second vertical component of control point motion vector, mv0y . The height of the current block of video data, h, is used to perform a bit shift operation. By shifting h to the right by p bit positions, and selecting the maximum value between those operands (w>>p and mvWy, as shown below), and 1, the value of sh is determined. Although the modulus of the block height, h, divided by the subblock width, sh, is not equal to zero, the subblock height decreases (sh--). The width of the sh subblock is the maximum between the previous sh and hh sh  max sh, hh .
[0086] [0086] In the design of affine motion compensation in JEM, several division operations are involved, which are not desirable in practical implementations of video encoding. To address this issue, modalities include affine motion compensation approaches based on bit shift operations as described above.
[0087] [0087] Embodiments include video encoders and decoders that include affine motion compensation process using bit shift operations in accordance with the techniques of this disclosure. The following features can be applied individually or in any combination suitable for a particular modality.
[0088] [0088] In some embodiments, the motion compensation procedure, at the decoder using bit shift operations, includes, but is not limited to, the procedure of finding the affine motion vector prediction, deriving the unification candidates, determining the size of subblock in affine motion compensation and calculate the motion vectors for each pixel or each subblock in the affine model.
[0089] [0089] In some of the affine model shapes below, the off function can be used. The off function is highlighted below. A block width, w, is defined as w=2wb. The four-parameter affine model as defined in (2) can be replaced by the following equations,  n  1 if m  0 off (m, n)    (n  1) Otherwise  1 if m  0 sign(m)   1 Otherwise
[0090] [0090] An affine model can be used by the encoder, decoder or both, since each device performs operations that require motion vector estimation.
[0091] [0091] The horizontal component, mvx, of the four-parameter affine model motion vector, and the vertical component, mvy, of the four-parameter affine model motion vector can be written in the form (1) below:  mv x  ((( mv1 x  mv0 x ) x )  wb )  ((( mv1 y  mv0 y ) y )  wb )  mv0 x   mv y  ((( mv1 y  mv0 y ) x )  wb )  ((( mv1 x  mv0 x ) y )  wb )  mv0 y
[0092] [0092] A device for encoding or decoding a current block of video data that uses an affine model for encoding video can implement bit shift operations to gain performance efficiencies.
[0093] [0093] The affine model shapes described in this document have some common operations between them. Affine models may be implemented by one or more processors in an encoder device or decoder device that are configured to compute a first difference comprising a first horizontal component of control point motion vector minus a second horizontal component of point motion vector of control, for example, in a four-parameter affine model: mv1x – mv0x. The encoder or decoder device may also compute a second difference comprising a first vertical component of control point motion vector minus a second vertical component of control point motion vector, for example in a four-parameter affine model: mv1y - mv0y. Note that, in a six-parameter affine model, the second difference can be computed with an additional (third) control point motion vector mv2. Thus, the second difference can alternatively be written as comprising a third horizontal component of control point motion vector minus a second horizontal component of control point motion vector, in a six-parameter affine model is mv2x – mv0x.
[0094] [0094] In some of the four affine parameter models, the first difference product may include multiplying the first difference by a horizontal pixel location (x) within the current block of video data. Furthermore, in some of the four affine parameter models, the second difference product may include multiplying the second difference by a vertical pixel location (y) within the current block of video data. Alternatively, in some of the six affine parameter models, the second difference product may include multiplying the second difference by a vertical pixel location (y) within the current block of video data.
[0095] [0095] Furthermore, in some of the four affine parameter models, the third difference product comprises multiplying the third difference by a horizontal pixel location (x) within the current block of video data. Furthermore, in some of the four affine parameter models, the fourth difference product includes multiplying the fourth difference by a vertical pixel location (y) within the current block of video data. Alternatively, in some of the six affine parameter models, the second difference product includes multiplying the fourth difference by a vertical pixel location (y) within the current block of video data.
[0096] [0096] Several of the affine model shapes have common elements. For example, affine model form (1), affine model form (2), affine model form (3), affine model form (7), affine model form (8), affine model form (10) ), affine model shape (11) and affine model shape (16) have the common elements described below.
[0097] [0097] Each of the affine models if the four-parameter affine model or the six-parameter affine model includes a computation of a horizontal component of a motion vector, mvx, and a computation of a vertical component of a motion vector, mvy.
[0098] [0098] For affine model forms (1), (2), (3), (10) and (11), which are four-parameter affine models, a decoder or encoder device may include one or more processors configured to compute a horizontal component of a motion vector, mvx, of the affine model, adding a result of the first bit shift operation to a horizontal component of zero control point motion vector, mvx0, and based on a first shift operation bit into a first product of difference, (mv1x - mv0x)x, and a second product of difference, (mv1y – mv0y)y.
[0099] [0099] The first difference product (mv1x - mv0x)x includes multiplying a first difference, mv1x - mv0x by a horizontal pixel location, x, within the current block of video data. Likewise, the second difference product, (mv1y - mv0y)y, includes multiplying a second difference, (mv1y – mv0y), by a vertical pixel location, y, within the current block of video data. Note that the first difference, mv1x - mv0x, is based on a difference between horizontal components of the zero control point motion vector, mv0, and a first control point motion vector mv1. Likewise, the second difference, (mv1y – mv0y), is based on a difference between vertical components of the zero control point motion vector and the first control point motion vector.
[0100] [0100] For affine model shapes (7), (8) and (16), which are six-parameter affine models, a decoder or encoder device may include one or more processors configured to compute a horizontal component of a motion vector , mvx, of the affine model by adding a result of the first bit shift operation to a zero control point motion vector horizontal component, mvx0, and based on a first bit shift operation on a first product of difference , (mv1x - mv0x)x, and a second product of difference, (mv1x - mv0x)x.
[0101] [0101] The first difference product (mv1x - mv0x)x includes multiplying a first difference, mv1x - mv0x, by a horizontal pixel location, x, within the current block of video data. Likewise, the second difference product, (mv2x - mv0x)x, includes multiplying a second difference, (mv2x - mv0x), by a vertical pixel location, x, within the current block of video data. Note that the first difference, mv1x - mv0x, is based on a difference between horizontal components of the zero control point motion vector, mv0, and a first control point motion vector mv1. Likewise, the second difference (mv2x - mv0x), is based on a difference between horizontal components of the zero control point motion vector and the second control point motion vector.
[0102] [0102] For affine model forms (1), (2), (3), (10) and (11), which are four-parameter affine models, a decoder or encoder device may include one or more processors configured to compute a vertical component mvy of an affine model motion vector, if the affine model is the four-parameter affine model, adding a result of the second bit shift operation to the zero control point motion vector vertical component, mv0y , and based on a second bit shift operation on a third product of difference, (mv1y-mv0y)x, and a fourth product of difference, (mv1x-mv0x)y.
[0103] [0103] The third difference product (mv1x-mv0y)x includes multiplying a third difference (mv1y-mv0y) by a horizontal pixel location, x, within the current block of video data. Likewise, the fourth difference product (mv1x-mv0y)y includes multiplying a fourth difference (mv1x-mv0y) by a vertical pixel location, y, within the current block of video data. The third difference mv1x-mv0y is based on a difference between horizontal components of the zero control point motion vector and the first control point motion vector. The fourth difference mv1x-mv0x is based on a difference between vertical components of the zero control point motion vector, mv0y, and the first control point motion vector, mv1y.
[0104] [0104] For affine model shapes (7), (8) and (16), which are six-parameter affine models, a decoder or encoder device may include one or more processors configured to compute a vertical component of a motion vector of the affine model, if the affine model is the six-parameter affine model, adding the result of the second bit shift operation to the vertical component of zero control point motion vector, mv0y, and based on a second shift operation bit into a third product of difference (mv1y-mv0y)x and a fourth product of difference (mv2y-mv0y)y.
[0105] [0105] The third difference product (mv1y - mv0y)x includes multiplying a third difference (mv1y - mv0y) by the horizontal pixel location, x, within the current block of video data. The fourth difference product (mv2y-mv0y)y includes multiplying a fourth difference (mv2y-mv0y) by a vertical pixel location, y, within the current block of video data. The third difference (mv1y-mv0y) is based on a difference between vertical components of zero control point motion vector mv0y and a first control point motion vector, mv1y.
[0106] [0106] The fourth difference mv2y-mv0y is based on the difference between vertical components of the zero control point motion vector, mv0y, and a second control point motion vector, mv2y.
[0107] [0107] As part of decoding, there may be a current reconstructed block of video data stored in memory.
[0108] [0108] The third difference mv1y-mv0y of the four-parameter affine model is the second difference (mv1y - mv0y) of the four-parameter affine model multiplied by minus 1. The fourth difference of the four-parameter affine model is the first difference mv1x- mv0x of the four-parameter affine model.
[0109] [0109] The horizontal component of zero control point motion vector, mv0x, the first horizontal component of control point motion vector, mv1x, the second horizontal component of control point motion vector, mv2x, the component zero point motion vector vertical, mv0y, the first control point motion vector vertical component, mv1y, and the second control point motion vector, mv2y, are each bit shifted by a number entire.
[0110] [0110] In the form of affine model (1), which is the four-parameter affine model, the first bit shift operation on the first product of difference (mv1x - mv0x)x and on the second product of difference (mv1y - mv0y)y is computed once by a first digital constant, wb, on the difference between the first product of difference and the second product of difference, that is, ((mv1x-mv0x)x-(mv1y- mv0y)y)>>wb.
[0111] [0111] The second bit shift operation on the third product of difference (mv1y-mv0y)x and the fourth product of difference (mv1x-mv0x)y is computed once by a first digital constant, wb, on the difference between the third product of difference, and the fourth product of difference, that is, ((mv1y-mv0y)x-(mv1x-mv0x)y)>>wb.
[0112] [0112] The first digital constant, wb, is a positive integer between 1 and 7.
[0113] [0113] The maximum number, wb, can be a function of the block size. For example, at a block size (e.g. 128x128), the maximum value of wb is two to the power of 7 which is 128.
[0114] [0114] If the block size were 256x256, then wb max would be two to the 8th power, which is 256. If the block size were 64x64, then wb max would be two to the 6th power, which is 64. wb designates the width in general. For a 128x128 square block, the height (often referred to as hb), is the same as wb. However, for a non-square block, for example 64x128, the value of wb would be 6, and the value of hb would be 7. The explanation of what value wb or hb might have applies to other shapes below where wb or hb is used and/or described.
[0115] [0115] The first horizontal component of the control point motion vector is set to mv1x. The horizontal component of zero control point motion vector is set to mv0x. The first vertical component of the control point motion vector is defined as mv1y. The vertical component of zero control point motion vector is set to mv0y.
[0116] [0116] The second difference and the third difference can be an equivalent value. The first difference and the fourth difference can be an equivalent value.
[0117] [0117] Note that, in form (1), each difference of motion vectors can be shifted in bits by wb. Alternatively, another form of the horizontal component, mvx, of the four-parameter affine model motion vector, and the vertical component, mvy, of the four-parameter affine model motion vector, can be rewritten as in the affine model form (2) below :  mv x  ((( mv1 x  mv0 x ) x  ( mv1 y  mv0 y ) y )  wb )  mv0 x   mv y  ((( mv1 y  mv0 y ) x  (( mv1 y  mv0 y ) x  x  mv0 x ) y )  wb )  mv0 y
[0118] [0118] Note that, in form (2), the combination of motion vector differences for each horizontal component and vertical component of the four-parameter affine model motion vector can be shifted in bits by wb. Thus, in contrast to form (1) above, in form (2) there can be two bit shifts per wb instead of four bit shifts per wb.
[0119] [0119] The affine model form (2), which is a four-parameter affine model, in addition to the common elements, also includes a first bit shift operation by a first digital constant, wb, on the first difference product and the second product of difference is computed twice. The first bit shift operation is computed once on the first product of difference, and once on the second product of difference.
[0120] [0120] The second bit shift operation by the first digital constant, wb, on the third difference product and the fourth difference product is computed twice, once on the third difference product and once on the fourth difference product.
[0121] [0121] The first digital constant, wb, is a positive integer between 1 and 7. The first horizontal component of control point motion vector is defined as mv1x. The horizontal component of zero control point motion vector is set to mv0x. The first vertical component of the control point motion vector is defined as mv1y. The vertical component of zero control point motion vector is set to mv0y. The second difference and the third difference can be an equivalent value. The first difference and the fourth difference can be an equivalent value.
[0122] [0122] Alternatively, yet another form of the horizontal component, mvx, of the four-parameter affine model motion vector, and vertical component, mvy, of the four-parameter affine model motion vector can be rewritten as in affine model form (3) below: d x10  mv1 x  mv0 x ; d 10 y  mv1 y  mv0 y ;  mv x  (( d x10 x  off ( d 10 xx , w))  wb )  (( dyy  off ( dyy , w))  wb )  mv0 x 10 10   mv y  (( dyx  off ( dyx, w))  wb )  (( dxy  off ( dxy , w))  wb )  mv0 y 10 10 10 10
[0123] [0123] Note that, in affine model form (3), wb can be applied four times, that is, >>wb (a right shift by wb) is computed four times.
[0124] [0124] The affine model form (3), which is the four-parameter affine model, and in addition to the common elements, also includes other operations described here. The first bit shift operation by the first digital constant in the first product of difference is also performed as part of an off function operation (first product of difference, w). The first bit shift operation by the first digital constant in the second product of difference is also performed as part of an off function operation (second product of difference, w). The second bit shift operation by the first digital constant in the third product of difference is also performed as part of an off function operation (third product of difference, w). The second bit shift operation by the first digital constant in the fourth product of difference is also performed as part of an off function operation (fourth product of difference, w). w is the width of the current block of video data, and is set to w=2wb. The first digital constant wb is a positive integer between 1 and 7. The first horizontal component of control point motion vector is defined as mv1x. The horizontal component of zero control point motion vector is set to mv0x. The first vertical component of the control point motion vector is defined as mv1y. The vertical component of zero control point motion vector is set to mv0y. The second difference and the third difference can be an equivalent value. The first difference and the fourth difference can be an equivalent value.
[0125] [0125] Alternatively, an additional form of the horizontal component, mvx, of the four-parameter affine model motion vector, and vertical component, mvy, of the four-parameter affine model motion vector can be rewritten in the form (4) below : x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; d 10 10 offw  w  1  mv x  sign ( d x10 x )  (( d x10 x  offw)  wb )  sign ( d 10 yy )  (( dyy  offw )  wb )  mv0 x 10    mv y  sign ( dyx )  (( dyx  offw )  wb )  sign ( dxy )  (( dxy  offw)  wb )  mv0 y 10 10 10 10
[0126] [0126] Note that, in affine model form (4), wb can be applied four times, that is, >>wb (a right shift by wb) is computed four times.
[0127] [0127] Alternatively, yet another additional form of the horizontal component, mvx, of the four-parameter affine model motion vector, and vertical component, mvy, of the four-parameter affine model motion vector can be rewritten as in model form affine (5) below: x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; d 10 10  mvx  (( dxx  dyy  off ( dxx  dyy , w))  wb )  mv0 x 10 10 10 10   mv y  (( dyx  dxy dyx  off ( , w))  wb )  mv0 y 10 10 10 10
[0128] [0128] Note that, in affine model form (5), wb can be applied twice, that is, >>wb (a right shift by wb) is computed twice.
[0129] [0129] Alternatively, yet another additional form of the horizontal component, mvx, of the four-parameter affine model motion vector, and vertical component, mvy, of the four-parameter affine model motion vector can be rewritten in the form (6) below: x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; offw  w  1 d 10 10  mv x  Sign ( d x10 x  d 10 yy )  (( dxx  dyy  offw )  wb )  mv0 x 10 10      mv dyx  dxy )  (( dyx  dxy  offw)  wb )  mv0 y 10 10 10 10
[0130] [0130] Note that, in affine model form (6), wb can be applied twice, that is, >>wb is computed twice.
[0131] [0131] Assume block width w=2wb and block height h=2hb, the six-parameter affine model as defined in (4) can be replaced by the following affine model form (7) as shown below:  mv x  ((( mv1 x  mv0 x ) x )  wb )  ((( mv2 x  mv0 x ) y )  hb )  mv0 x   mv y  ((( mv1 y  mv0 y ) x )  wb )  ((( mv2 y  mv0 y ) y )  hb )  mv0 y
[0132] [0132] Note that, in affine model form (7), wb can be applied twice, ie >>wb (a right shift by wb) is computed twice; and hb can be applied twice, that is, >>hb (a right shift by hb) is computed twice.
[0133] [0133] The affine model form (7), which is the six-parameter affine model, and in addition to the common elements, also includes other operations described here. The first bit shift operation by the first digital constant on the first difference product and the second difference product is computed once on the difference between the first difference product and the second difference product. The first horizontal component of the control point motion vector is defined as mv1x. The horizontal component of zero control point motion vector is set to mv0x. The second horizontal component of the control point motion vector is defined as mv2x. The first vertical component of the control point motion vector is defined as mv1y. The vertical component of zero control point motion vector is set to mv0y. The second vertical component of the control point motion vector is defined as mv2y. The second bit shift operation by the second digital constant on the third difference product and the fourth difference product is computed once on the difference between the third difference product and the fourth difference product. The first digital constant, wb, is a positive integer between 1 and 7. The second digital constant, hb, is a positive integer between 1 and 7.
[0134] [0134] Alternatively, another form of the horizontal component, mvx, of the motion vector of the six-parameter affine model, and vertical component, mvy, of the motion vector of the four-parameter affine model can be rewritten as in the form of affine model ( 8) below: x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; d x  mv2 x  mv0 x ; d y  mv2 y  mv0 y ; d 10 10 20 20  mv x  (( d 10 xx  off ( dxx , w))  wb )  (( dxy  off ( dxy , h ))  hb )  mv0 x 10 20 20   mv y  (( dyx  off ( dyx, w))  wb)  (( dyy  off ( dyy , h))  hb )  mv0 y 10 10 20 20
[0135] [0135] Note that, in affine model form (8), wb can be applied twice, ie >>wb (a right shift by wb) is computed twice; and hb can be applied twice, that is, >>hb (a right shift by hb) is computed twice.
[0136] [0136] The affine model form (8), which is the six-parameter affine model, and in addition to the common elements, also includes other operations described here. The first bit shift operation by the first digital constant in the first product of difference is also performed as part of an off function operation (first product of difference, w). The first bit shift operation by the first digital constant in the second product of difference is also performed as part of an off function operation (second product of difference, h). The second bit shift operation by the second digital constant in the third product of difference is also performed as part of an off function operation (third product of difference, w). The second bit shift operation by the second digital constant in the fourth product of difference is also performed as part of an off function operation (fourth product of difference, h). The width, w, of the current block of video data is set to w= 2wb. The first digital constant is wb. The first digital constant, wb, is a positive integer between 1 and 7. The height, h, of the current block of video data is defined as w=hb. The second digital, hb, is a positive number between 1 and 7. The first horizontal component of the control point motion vector is defined as mv1x. The horizontal component of zero control point motion vector is set to mv0x. The second horizontal component of the control point motion vector is defined as mv1x. The first vertical component of the control point motion vector is defined as mv1y. The vertical component of zero control point motion vector is set to mv0y. The second horizontal component of the control point motion vector is defined as mv1y.
[0137] [0137] Alternatively, yet another form of the horizontal component, mvx, of the motion vector of the six-parameter affine model, and vertical component, mvy, of the motion vector of the four-parameter affine model can be rewritten as in affine model form (9) below: x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; d x  mv2 x  mv0 x ; d y  mv2 y  mv0 y ; d 10 10 20 20 offw  w  1; offh  h  1;  mv x  sign ( d x10 x )  (( d x10 x  offw )  wb )  sign ( d x20 y )  (( d x20 y  offh )  hb )  mv0 x    mv y  sign ( dyx )  (( dyx  offw )  wb )  sign ( dyy )  (( dyy  offh )  hb )  mv0 y 10 10 20 20
[0138] [0138] Note that, in affine model form (9), wb can be applied twice, that is, >>wb (a right shift by wb) is computed twice; and hb can be applied twice, that is, >>hb (a right shift by hb) is computed twice.
[0139] [0139] In another embodiment, it may be desirable to divide by a non-power of two. For example, assuming the block width w and/or height h is any integer that can be different from 2wb, where m is an integer, a lookup table-based solution can be used to represent the affine model. As an example, the four-parameter affine model can be written as in affine model form (10):  mv x  ((( mv1 x  mv0 x ) x  T [ w])  tb )  (( ( mv1 y  mv0 y ) y  T [ w])  tb )  mv0 x   mv y  ((( mv1 y  mv0 y ) x  T [ w])  tb )  ((( mv1 x  mv0 x ) y  T [ w])  tb )  mv0 y
[0140] [0140] Note that, in affine model form (10), tb can be applied four times, that is, >>tb (a right shift by tb) is computed four times.
[0141] [0141] The affine model form (10), which is the four-parameter affine model with a division by a number that is not a power of 2, and in addition to the common elements, also includes other operations described here. Before the first bit shift operation, a lookup table, T, is read at a pixel location w along a width or height of the current block of video data, T[w]. T[w] is multiplied by the first product of difference, and T[w] is also multiplied by the second product of difference, so the first bit shift operation by the first digital constant is applied to the first product of difference multiplied by T[ w]. The first bit shift operation by the first digital constant is applied to the second product of difference multiplied by T[w]. Before the second bit shift operation, the T[w] multiplied by the first product of difference and the T[w] multiplied by the second product of difference are used, then the second bit shift operation by the second digital constant is applied. in the second product of difference multiplied by T[w].
[0142] [0142] The second bit shift operation by the second digital constant is applied to the first product of difference multiplied by T[w], and where the first digital constant and the second digital constant are the same value, and the first digital constant , tb, is a positive integer between 1 and 7.
[0143] [0143] The first horizontal component of control point motion vector is set to mv1x. The horizontal component of zero control point motion vector is set to mv0x. The first vertical component of the control point motion vector is defined as mv1y. The vertical component of zero control point motion vector is set to mv0y. The second difference and the third difference can be an equivalent value. The first difference and the fourth difference can be an equivalent value.
[0144] [0144] Alternatively, another form of the horizontal component, mvx, of the four-parameter affine model motion vector, and the vertical component, mvy, of the four-parameter affine model motion vector can be rewritten in the form (11) below:  mv x  (((( mv1 x  mv0 x ) x  ( mv1 y  mv0 y ) y )  T [ w])  tb )  mv0 x   mv y  (((( mv1 y  mv0 y ) x  ( mv1 x  mv0 x ) y )  T [ w])  tb )  mv0 y
[0145] [0145] Note that, in affine model form (11), tb can be applied twice, that is, >>tb (a right shift by tb) is computed twice.
[0146] [0146] The affine model form (11) is the four-parameter affine model with a division by a number that is not a power of 2, and in addition to the common elements, it also includes other operations described here. Before the first bit shift operation, a lookup table, T, is read at a pixel location w, along a width of the current block of video data, T[w]. T[w] is multiplied by the difference between the first product of difference and the second product of difference, and then the first bit shift operation by the first digital constant is applied to the first product of difference and the second product of difference multiplied by T[w]. Before the second bit shift operation, a lookup table, T, is read at a pixel location w, along a height of the current block of video data, T[w]. T[w] is multiplied by the difference between the third difference product and the fourth difference product. The second bit shift operation by the second digital constant is applied to the third product of difference and the fourth product of difference multiplied by T[w]. The first digital constant and the second digital constant are the same value, and the first digital constant, tb, is a positive integer between 1 and 7.
[0147] [0147] The first horizontal component of control point motion vector is set to mv1x. The horizontal component of zero control point motion vector is set to mv0x. The first vertical component of the control point motion vector is defined as mv1y. The vertical component of zero control point motion vector is set to mv0y. The second difference and the third difference can be an equivalent value. The first difference and the fourth difference can be an equivalent value.
[0148] [0148] Alternatively, yet another form of the horizontal component, mvx, of the four-parameter affine model motion vector, and vertical component, mvy, of the four-parameter affine model motion vector can be rewritten as in affine model form (12) below: x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; d 10 10  mv x  (( d 10 xx  T [ w]  off ( dxx , 2 ))  tb )  (( dyy  T [ w]  off ( dyy , 2 ))  tb )  mv0 x 10 tb 10 10 tb   mv y  (( dyx  T [ w]  off ( dyx, 2 ))  tb )  (( dxy  T [ w]  off ( dxy , 2 ))  tb )  mv0 y 10 10 tb 10 10 tb
[0149] [0149] Note that, in affine model form (12), tb can be applied four times, that is, >>tb (a right shift by tb) is computed four times.
[0150] [0150] Alternatively, an additional form of the horizontal component, mvx, of the motion vector of the four-parameter affine model, and vertical component, mvy, of the motion vector of the four-parameter affine model can be rewritten as in the form of affine model (13) below: x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; d 10 10 offt  2tb  1  mv x  sign ( d x10 x )  (( d 10 xx  T [ w ]  offt )  tb )  sign ( dyy )  (( dyy  T [ w ]  offt )  tb )  mv0 x 10 10    mv y  sign ( dyx )  (( dyx  T [ w]  offt )  tb )  sign ( dxy )  (( dxy  T [ w]  offt )  tb )  mv0 y 10 10 10 10
[0151] [0151] Note that, in affine model form (13), tb can be applied four times, that is, >>tb (a right shift by tb) is computed four times.
[0152] [0152] Alternatively, another additional form of the horizontal component, mvx, of the four-parameter affine model motion vector, and vertical component, mvy, of the four-parameter affine model motion vector, can be rewritten as in affine model form
[0153] [0153] Note that, in affine model form (14), tb can be applied twice, that is, >>tb (a right shift by tb) is computed twice.
[0154] [0154] Alternatively, another additional form of the horizontal component, mvx, of the four-parameter affine model motion vector, and vertical component, mvy, of the four-parameter affine model motion vector, can be rewritten as in affine model form (15) below: x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; offt  2 d 10  1 10 tb  mv x  Sign ( d x10 x  d 10 yy )  (( dxx  dyy  T [ w ]  offt )  tb )  mv0 x 10 10    mv y  Sign ( dyx  dxy )  (( dyx  dxy  T [ w]  offt )  tb )  mv0 y 10 10 10 10
[0155] [0155] Note that, in affine model form (15), tb can be applied twice, that is, >>tb (a right shift by tb) is computed twice.
[0156] [0156] In a different mode, the horizontal component, mvx, of the motion vector of the six-parameter affine model, and vertical component, mvy, of the motion vector of the six-parameter affine model can be rewritten as in affine model form (16) Below:
权利要求:
Claims (29)
[1]
1. Device for decoding video of a current block of video data, the device comprising: one or more processors are configured to: compute a horizontal component of a motion vector of the affine model by adding a first bit shift operation result to a zero control point motion vector horizontal component, wherein the first bit-shift operation result is determined based on a first bit-shift operation on a first product of difference and a second product of difference, wherein the first difference product includes a first difference multiplied by a horizontal pixel location within the current block of video data, and wherein the first difference is based on a difference between horizontal components of the control point motion vector zero and a first control point motion vector; and computing a vertical component of an affine model motion vector by adding a second bit-shift operation result to a zero control point motion vector vertical component, wherein the second bit-shift operation result is determined based on a second bit shift operation on a third product of difference, and wherein the third product of difference includes a third difference multiplied by a horizontal pixel location within the current block of video data, and wherein the third difference is based on a difference between vertical components of zero control point motion vector and a first control point motion vector; and a memory configured to reconstruct the current block of video data.
[2]
The device of claim 1, wherein the affine model is a four-parameter affine model and wherein the second difference product includes a second difference multiplied by a vertical pixel location within the current block of video data. , and the second difference is based on a difference between vertical components of the zero control point motion vector and the first control point motion vector, and where the fourth product of difference includes a fourth difference multiplied by a location pixel within the current block of video data, and the fourth difference is based on a difference between horizontal components of the zero control point motion vector and the first control point motion vector.
[3]
The device of claim 2, wherein a third four-parameter affine model difference is the second four-parameter affine model difference multiplied by minus 1, and wherein the fourth four-parameter affine model difference is the first difference of the four-parameter affine model.
[4]
Device according to claim 2, wherein the horizontal component of zero control point motion vector, the first horizontal component of control point motion vector, the vertical component of zero point motion vector, and the first vertical component of the control point motion vector are each bit shifted by an integer.
[5]
Device according to claim 2, wherein the four-parameter affine model is a form of affine model (1), wherein the first bit shift operation on the first product of difference and the second product of difference is computed once by a first digital constant on the difference between the first product of difference and the second product of difference, and wherein the second bit shift operation on the third product of difference and the fourth product of difference is computed once by a first digital constant on the difference between the third product of difference and the fourth product of difference, and where the first digital constant, wb, is a positive integer between 1 and 7, and where the first horizontal motion vector component of control point is set to mv1x, and where the horizontal motion vector component of zero control point is set to mv0x, and where the first vertical motion vector component of point the control point is set to mv1y, and where the vertical motion vector component of zero control point is set to mv0y, and where the second difference and third difference are an equivalent value, and where the first difference and the fourth difference are an equivalent value.
[6]
The device of claim 2, wherein the four-parameter affine model is a form of affine model (2), wherein the first bit shift operation by a first digital constant in the first product of difference and the second product of difference is computed twice, once on the first product of difference, and once on the second product of difference, and where the second bit shift operation by the first digital constant on the third product of difference and the fourth product of difference is computed twice, once on the third product of difference, and once on the fourth product of difference, and where the first digital constant, wb, is a positive integer between 1 and 7, and where the first horizontal component control point motion vector is set to mv1x, and where the horizontal component of zero control point motion vector is set to mv0x, and where the first vertical component of control point motion vector of control point is defined as mv1y, and where the vertical motion vector component of zero control point is defined as mv0y, and where the second difference and third difference are an equivalent value, and where the first difference and the fourth difference is an equivalent value.
[7]
Device according to claim 2, wherein the four-parameter affine model is a form of affine model (3), wherein the first bit shift operation by the first digital constant in the first product of difference is also performed. as part of an off function operation (first product of difference, w), and wherein the first bit shift operation by the first digital constant in the second difference product is also performed as part of an off function operation (second product of difference, w), and wherein the second bit shift operation by the first digital constant in the third product of difference is also performed as part of an off function operation (third product of difference, w), and wherein the second bit shift operation by the first digital constant in the fourth product of difference is also performed as part of an off function operation (fourth product of difference, w), and where w is a width of the current block of video data, and is defined as w=2wb, where wb is the first digital constant, and wb is a positive integer between 1 and 7, and where the first horizontal vector component of control point motion is set to mv1x, and where the horizontal component of zero control point motion vector is set to mv0x, and where the first vertical component of control point motion vector is set to mv1y, and where the vertical component of zero control point motion vector is set to mv0y, and where the second difference and third difference are an equivalent value, and where the first difference and fourth difference are an equivalent value.
[8]
The device of claim 1, wherein the affine model is a six-parameter affine model, and the second difference product includes a second difference multiplied by a vertical pixel location within the current block of video data, and the second difference is based on a difference between vertical components of the zero control point motion vector and the second control point motion vector, and compute the vertical component of the affine model when the affine model is an affine model of six parameters, and the fourth difference product includes a fourth difference multiplied by a vertical pixel location within the current block of video data, and the fourth difference is based on a difference between vertical components of the control point motion vector zero and the second control point motion vector.
[9]
Device according to claim 8, wherein the horizontal component of zero control point motion vector, the first horizontal component of control point motion vector, the second horizontal component of control point motion vector, control point, the vertical component of zero-point motion vector, first vertical component of control-point motion vector, and second vertical component of control-point motion vector are each bit shifted by an integer number. .
[10]
Device according to claim 8, wherein the six-parameter affine model is affine model form (7), wherein the first bit shift operation by the first digital constant in the first product of difference and in the second product of difference is computed once on the difference between the first product of difference and the second product of difference, and where the first horizontal component of control point motion vector is set to mv1x, and where the horizontal component of control point motion vector is set to mv1x, and where the horizontal component of control point motion vector is zero control point motion is set to mv0x, and where the second horizontal component of control point motion vector is set to mv2x, and where the first vertical component of control point motion vector is set to mv1y , and where the vertical component of zero control point motion vector is set to mv0y, and where the second vertical component of control point motion vector is set to mv2y, and where the second bit shift operation by the second digital constant on the third product of difference and the fourth product of difference is computed once on the difference between the third product of difference and the fourth product of difference, and where the first digital constant , wb, is a positive integer between 1 and 7, and where the second digital constant, hb, is a positive integer between 1 and 7.
[11]
Device according to claim 8, wherein the six-parameter affine model is a form of affine model (8), wherein the first bit shift operation by the first digital constant in the first product of difference is also performed. as part of an off function operation (first product of difference, w), and wherein the first bit shift operation by the first digital constant in the second difference product is also performed as part of an off function operation (second product of difference, h), and wherein the second bit shift operation by the second digital constant in the third product of difference is also performed as part of an off function operation (third product of difference, w), and wherein the second bit shift operation by the second digital constant in the fourth product of difference is also performed as part of an off function operation (fourth product of difference, h), and where w is u m width of the current block of video data, and is set to w=2wb, where wb is the first digital constant, and wb is a positive integer between 1 and 7, and where h is a height of the current block of video data, and is defined as w=hb, where hb is the second digital constant, and hb is a positive number between 1 and 7, and where the first horizontal component of control point motion vector is defined as mv1x, and where the horizontal component of zero control point motion vector is set to mv0x, and where the second horizontal component of control point motion vector is set to mv2x, and where the first vertical component of control point motion vector is set to mv1y, and where the vertical component of zero control point motion vector is set to mv0y, and where the second horizontal component of control point motion vector is set to mv2y.
[12]
The device of claim 8, wherein the six-parameter affine model is a form of affine model (10) with a division by a number that is not a power of 2, wherein, prior to the first operation of bit shift, a lookup table, T, is read at a pixel location w, along a width or height of the current block of video data, T[w], and T[w] is multiplied by the first product of difference, and T[w] is also multiplied by the second product of difference, so the first bit shift operation by the first digital constant is applied to the first product of difference multiplied by T[w], and the first operation of bit shift by the first digital constant is applied to the second product of difference multiplied by T[w], and where, before the second bit shift operation, the T[w] multiplied by the first product of difference and the T[w] ] multiplied by the second product of difference are used, then the second operation The bit shift ratio by the second digital constant is applied to the second product of difference multiplied by T[w], and the second bit shift operation by the second digital constant is applied to the first product of difference multiplied by T[w], and where the first digital constant and the second digital constant are the same value, and the first digital constant, tb, is a positive integer between 1 and 7, and where the first horizontal component of control point motion vector is set to mv1x, and where the horizontal component of zero control point motion vector is set to mv0x, and where the first vertical component of control point motion vector is set to mv1y, and where the vertical component zero control point motion vector is set to mv0y, and where the second difference and third difference are an equivalent value, and where the first difference and fourth difference are an equivalent value nt.
[13]
The device of claim 8, wherein the six-parameter affine model is a form of affine model (11) with a division by a number that is not a power of 2, wherein, prior to the first operation of bit shift, a lookup table, T, is read at a pixel location w, over a width of the current block of video data, T[w], and T[w] is multiplied by the difference between the first product of difference and the second product of difference, and then the first bit shift operation by the first digital constant is applied to the first product of difference and the second product of difference multiplied by T[w], and where, before of the second bit shift operation, a lookup table, T, is read at a pixel location w, along a height of the current block of video data, T[w], and T[w] is multiplied by the difference between the third product of difference and the fourth product of difference, and the second shift operation of bit by the second digital constant is applied to the third product of difference and the fourth product of difference multiplied by T[w], and where the first digital constant and the second digital constant are the same value, and the first digital constant, tb, is a positive integer between 1 and 7, and where the first horizontal component of control point motion vector is set to mv1x and where the horizontal component of zero control point motion vector is set to mv0x, and where the first vertical component of control point motion vector is set to mv1y, and where the vertical component of zero control point motion vector is set to mv0y, and where the second difference and third difference are an equivalent value, and where the first difference and the fourth difference are an equivalent value.
[14]
The device of claim 8, wherein the six-parameter affine model is a form of affine model (11) with a division by a number that is not a power of 2, wherein, prior to the first operation of bit shift, a lookup table, T, is read at a pixel location w, over a width of the current block of video data, T[w], and T[w] is multiplied by the difference between the first product of difference and the second product of difference, and then the first bit shift operation by the first digital constant is applied to the first product of difference and the second product of difference multiplied by T[w], and where, before of the second bit shift operation, a lookup table, T, is read at a pixel location w, along a height of the current block of video data, T[w], and T[w] is multiplied by the difference between the third product of difference and the fourth product of difference, and the second shift operation of bit by the second digital constant is applied to the third product of difference and the fourth product of difference multiplied by T[w], and where the first digital constant and the second digital constant are the same value, and the first digital constant, tb, is a positive integer between 1 and 7, and where the first horizontal component of control point motion vector is set to mv1x, and where the horizontal component of zero control point motion vector is set to mv0x, and where the first vertical component of control point motion vector is set to mv1y, and where the vertical component of zero control point motion vector is set to mv0y, and where the second difference and third difference are an equivalent value, and where the first difference and fourth difference are an equivalent value.
[15]
15. Method for decoding video of a current block of video data, the method comprising: computing a horizontal component of a motion vector of the affine model by adding a first bit-shift operation result to a horizontal component of motion vector zero control point, wherein the first bit-shift operation result is determined based on a first bit-shift operation on a first product of difference and a second product of difference, wherein the first product of difference includes a first difference multiplied by a horizontal pixel location within the current block of video data, and wherein the first difference is based on a difference between horizontal components of the zero control point motion vector and a first motion vector of zero checkpoint; and computing a vertical component of an affine model motion vector by adding a second bit-shift operation result to a zero control point motion vector vertical component, wherein the second bit-shift operation result is determined based on a second bit shift operation on a third product of difference, and wherein the third product of difference includes a third difference multiplied by a horizontal pixel location within the current block of video data, and wherein the third difference is based on a difference between vertical components of zero control point motion vector and a first control point motion vector; and reconstruct the current block of video data.
[16]
The method of claim 15, wherein the affine model is a four-parameter affine model and wherein the second difference product includes a second difference multiplied by a vertical pixel location within the current block of video data. , and the second difference is based on a difference between vertical components of the zero control point motion vector and the first control point motion vector, and where the fourth product of difference includes a fourth difference multiplied by a location pixel within the current block of video data, and the fourth difference is based on a difference between horizontal components of the zero control point motion vector and the first control point motion vector.
[17]
The method of claim 15, wherein the four-parameter affine model is a form of affine model (1), wherein the first bit shift operation on the first product of difference and the second product of difference is computed once by a first digital constant on the difference between the first product of difference and the second product of difference, and wherein the second bit shift operation on the third product of difference and the fourth product of difference is computed once by a first digital constant on the difference between the third product of difference and the fourth product of difference, and where the first digital constant, wb, is a positive integer between 1 and 7, and where the first horizontal motion vector component of control point is set to mv1x, and where the horizontal motion vector component of zero control point is set to mv0x, and where the first vertical motion vector component of point d and control is set to mv1y, and where the vertical motion vector component of zero control point is set to mv0y, and where the second difference and third difference are an equivalent value, and where the first difference and the fourth difference are an equivalent value.
[18]
The method of claim 15, wherein the four-parameter affine model is a form of affine model (2), wherein the first bit shift operation by a first digital constant on the first difference product and the second product of difference is computed twice, once on the first product of difference, and once on the second product of difference, and where the second bit shift operation by the first digital constant on the third product of difference and the fourth product of difference is computed twice, once on the third product of difference, and once on the fourth product of difference, and where the first digital constant, wb, is a positive integer between 1 and 7, and where the first horizontal component point motion vector is set to mv1x, and where the horizontal component of zero control point motion vector is set to mv0x, and where the first vertical component of po motion vector control point is set to mv1y, and where the vertical motion vector component of zero control point is set to mv0y, and where the second difference and third difference are an equivalent value, and where the first difference is the fourth difference is an equivalent value.
[19]
The method of claim 15, wherein the four-parameter affine model is a form of affine model (3), wherein the first bit shift operation by the first digital constant in the first product of difference is also performed. as part of an off function operation (first product of difference, w), and wherein the first bit shift operation by the first digital constant in the second difference product is also performed as part of an off function operation (second product of difference, w), and wherein the second bit shift operation by the first digital constant in the third product of difference is also performed as part of an off function operation (third product of difference, w), and wherein the second bit shift operation by the first digital constant in the fourth product of difference is also performed as part of an off function operation (fourth product of difference, w), and where w is u m width of the current block of video data, and is set to w=2wb, where wb is the first digital constant, and wb is a positive integer between 1 and 7, and where the first horizontal component of motion vector point is set to mv1x, and where the horizontal component of zero control point motion vector is set to mv0x, and where the first vertical component of control point motion vector is set to mv1y, and where the vertical component of zero control point motion vector is set to mv0y, and where the second difference and third difference are an equivalent value, and where the first difference and fourth difference are an equivalent value.
[20]
The method of claim 15, wherein the affine model is a six-parameter affine model, and the computation of the horizontal component is part of the six-parameter affine model, and wherein the second difference product includes a second difference multiplied by a vertical pixel location within the current block of video data, and the second difference is based on a difference between vertical components of the zero control point motion vector and the second control point motion vector, and compute the vertical component of the affine model when the affine model is a six-parameter affine model, and the fourth difference product includes a fourth difference multiplied by a vertical pixel location within the current block of video data, and the fourth difference is based on a difference between vertical components of the zero control point motion vector and the second control point motion vector.
[21]
The method of claim 20, wherein the horizontal component of zero control point motion vector, the first horizontal component of control point motion vector, the second horizontal component of control point motion vector control point, the vertical component of zero-point motion vector, first vertical component of control-point motion vector, and second vertical component of control-point motion vector are each bit shifted by an integer number. .
[22]
The method of claim 20, wherein the six-parameter affine model is affine model form (7), wherein the first bit shift operation by the first digital constant in the first product of difference and the second product of difference is computed once on the difference between the first product of difference and the second product of difference, and where the first horizontal component of control point motion vector is set to mv1x, and where the horizontal component of control point motion vector is set to mv1x, and where the horizontal component of control point motion vector is zero control point motion is set to mv0x, and where the second horizontal component of control point motion vector is set to mv2x, and where the first vertical component of control point motion vector is set to mv1y , and where the vertical component of zero control point motion vector is set to mv0y, and where the second vertical component of control point motion vector is set to mv2y, and where q where the second bit shift operation by the second digital constant on the third product of difference and the fourth product of difference is computed once on the difference between the third product of difference and the fourth product of difference, and where the first digital constant, wb, is a positive integer between 1 and 7, and where the second digital constant, hb, is a positive integer between 1 and 7.
[23]
The method of claim 20, wherein the six-parameter affine model is a form of affine model (8), wherein the first bit shift operation by the first digital constant in the first product of difference is also performed. as part of an off function operation (first product of difference, w), and wherein the first bit shift operation by the first digital constant in the second difference product is also performed as part of an off function operation (second product of difference, h), and wherein the second bit shift operation by the second digital constant in the third product of difference is also performed as part of an off function operation (third product of difference, w), and wherein the second bit shift operation by the second digital constant in the fourth product of difference is also performed as part of an off function operation (fourth product of difference, h), and where w is an l height of the current block of video data, and is set to w=2wb, where wb is the first digital constant, and wb is a positive integer between 1 and 7, and where h is a height of the current block of data video, and is defined as w=hb, where hb is the second digital constant, and hb is a positive number between 1 and 7, and where the first horizontal component of control point motion vector is defined as mv1x , and where the horizontal component of zero control point motion vector is set to mv0x, and where the second horizontal component of control point motion vector is set to mv2x, and where the first vertical component of vector point motion vector is set to mv1y, and where the vertical component of zero control point motion vector is set to mv0y, and where the second horizontal component of control point motion vector is set to mv2y .
[24]
The method of claim 20, wherein the six-parameter affine model is a form of affine model (10) with a division by a number that is not a power of 2, wherein, prior to the first operation of bit shift, a lookup table, T, is read at a pixel location w, along a width or height of the current block of video data, T[w], and T[w] is multiplied by the first product of difference, and T[w] is also multiplied by the second product of difference, so the first bit shift operation by the first digital constant is applied to the first product of difference multiplied by T[w], and the first operation of bit shift by the first digital constant is applied to the second product of difference multiplied by T[w], and where, before the second bit shift operation, the T[w] multiplied by the first product of difference and the T[w] ] multiplied by the second product of difference are used, so the second operation the bit-shift operation by the second digital constant is applied to the second product of difference multiplied by T[w], and the second bit-shift operation by the second digital constant is applied to the first product of difference multiplied by T[w], and where the first digital constant and the second digital constant are the same value, and the first digital constant, tb, is a positive integer between 1 and 7, and where the first horizontal component of control point motion vector is set to mv1x and, where the horizontal component of zero control point motion vector is set to mv0x, and where the first vertical component of control point motion vector is set to mv1y, and where the vertical component zero control point motion vector is set to mv0y, and where the second difference and third difference are an equivalent value, and where the first difference and fourth difference are an equivalent value.
[25]
The method of claim 20, wherein the six-parameter affine model is a form of affine model (11) with a division by a number that is not a power of 2, wherein, prior to the first operation of bit shift, a lookup table, T, is read at a pixel location w, over a width of the current block of video data, T[w], and T[w] is multiplied by the difference between the first product of difference and the second product of difference, and then the first bit shift operation by the first digital constant is applied to the first product of difference and the second product of difference multiplied by T[w], and where, before of the second bit shift operation, a lookup table, T, is read at a pixel location w, along a height of the current block of video data, T[w], and T[w] is multiplied by the difference between the third product of difference and the fourth product of difference, and the second bit shift operation by the second digital constant is applied to the third product of difference and the fourth product of difference multiplied by T[w], and where the first digital constant and the second digital constant are the same value, and the first digital constant, tb, is a positive integer between 1 and 7, and where the first horizontal component of control point motion vector is set to mv1x, and where the horizontal component of zero control point motion vector is set to mv0x, and where the first vertical component of control point motion vector is set to mv1y, and where the vertical component of zero control point motion vector is set to mv0y, and where the second difference and third difference are an equivalent value, and where the first difference and the fourth difference are an equivalent value.
[26]
The method of claim 20, wherein the six-parameter affine model is a form of affine model (11) with a division by a number that is not a power of 2, wherein, prior to the first operation of bit shift, a lookup table, T, is read at a pixel location w, over a width of the current block of video data, T[w], and T[w] is multiplied by the difference between the first product of difference and the second product of difference, and then the first bit shift operation by the first digital constant is applied to the first product of difference and the second product of difference multiplied by T[w], and where, before of the second bit shift operation, a lookup table, T, is read at a pixel location w, along a height of the current block of video data, T[w], and T[w] is multiplied by the difference between the third product of difference and the fourth product of difference, and the second bit shift operation by the second digital constant is applied to the third product of difference and the fourth product of difference multiplied by T[w], and where the first digital constant and the second digital constant are the same value, and the first digital constant, tb, is a positive integer between 1 and 7, and where the first horizontal component of control point motion vector is set to mv1x, and where the horizontal component of zero control point motion vector is set to mv0x, and where the first vertical component of control point motion vector is set to mv1y, and where the vertical component of zero control point motion vector is set to mv0y, and where the second difference and third difference are an equivalent value, and where the first difference and the fourth difference are an equivalent value.
[27]
27. Device for video encoding a current block of video data, the device comprising: one or more processors configured to: compute a horizontal component of an affine model motion vector by adding a first bit shift operation result to a component zero control point motion vector horizontal motion, wherein the first bit-shift operation result is determined based on a first bit-shift operation on a first product of difference and a second product of difference, wherein the first difference product includes a first difference multiplied by a horizontal pixel location within the current block of video data, and wherein the first difference is based on a difference between zero and one control point motion vector horizontal components. first control point motion vector; and computing a vertical component of an affine model motion vector by adding a second bit-shift operation result to a zero control point motion vector vertical component, wherein the second bit-shift operation result is determined based on a second bit shift operation on a third product of difference, and wherein the third product of difference includes a third difference multiplied by a horizontal pixel location within the current block of video data, and wherein the third difference is based on a difference between vertical components of zero control point motion vector and a first control point motion vector; and a memory configured to store a stream of bits representing the horizontal component and vertical component of the motion vector of the affine model.
[28]
The device of claim 27, wherein the affine model is a four-parameter affine model and wherein the second difference product includes a second difference multiplied by a vertical pixel location within the current block of video data. , and the second difference is based on a difference between vertical components of the zero control point motion vector and the first control point motion vector, and where the fourth product of difference includes a fourth difference multiplied by a location pixel within the current block of video data, and the fourth difference is based on a difference between horizontal components of the zero control point motion vector and the first control point motion vector.
[29]
The device of claim 27, wherein the affine model is a six-parameter affine model, and the second difference product includes a second difference multiplied by a vertical pixel location within the current block of video data, and the second difference is based on a difference between vertical components of the zero control point motion vector and the second control point motion vector, and compute the vertical component of the affine model when the affine model is an affine model of six parameters, and the fourth difference product includes a fourth difference multiplied by a vertical pixel location within the current block of video data, and the fourth difference is based on a difference between vertical components of the control point motion vector zero and the second control point motion vector.
类似技术:
公开号 | 公开日 | 专利标题
BR112020014654A2|2020-12-01|Affine motion compensation in video encoding
RU2742298C2|2021-02-04|Motion vector derivation in video coding
ES2880744T3|2021-11-25|Motion vector adaptive resolution signaling for video encoding
CN108028929B|2021-04-20|Improved bi-directional optical flow for video coding
US10911769B2|2021-02-02|Motion-based priority for the construction of candidate lists in video coding
TW201842766A|2018-12-01|Deriving motion vector information at a video decoder
BR112019019210A2|2020-04-14|restriction motion vector information derived by decoder side motion vector derivation
BR112019013684A2|2020-01-28|motion vector reconstructions for bi-directional | optical flow
US10687077B2|2020-06-16|Motion information propagation in video coding
BR112020006875A2|2020-10-06|low complexity project for fruc
BR112021005357A2|2021-06-15|improvements to history-based motion vector predictor
BR112020014522A2|2020-12-08|IMPROVED DERIVATION OF MOTION VECTOR ON THE DECODER SIDE
BR112020006588A2|2020-10-06|affine prediction in video encoding
BR112019027821A2|2020-07-07|template pairing based on partial reconstruction for motion vector derivation
BR112021002967A2|2021-05-11|affine motion prediction
BR112020006232A2|2020-10-13|Affine prediction motion information encoding for video encoding
BR112020007329A2|2020-10-06|several enhancements to fruc model matching
CN112956190A|2021-06-11|Affine motion prediction
TW202038611A|2020-10-16|Triangle motion information for video coding
TW202038614A|2020-10-16|Spatio-temporal motion vector prediction patterns for video coding
US20210195234A1|2021-06-24|Unified merge candidate list usage
BR112021004060A2|2021-05-25|reference frame acquisition method and device applied to bidirectional interprediction, video encoder/decoder, computer program product, computer readable storage medium, and terminal
TW202041002A|2020-11-01|Constraints on decoder-side motion vector refinement
BR112021000640A2|2021-04-06|ROUNDING OF MOTION VECTORS FOR ADAPTIVE MOTION VECTOR DIFFERENCE RESOLUTION AND INCREASED MOTION VECTOR STORAGE ACCURACY IN VIDEO ENCODING
同族专利:
公开号 | 公开日
CN111615829B|2022-01-18|
SG11202005339QA|2020-08-28|
CN111615829A|2020-09-01|
WO2019143841A1|2019-07-25|
US10757417B2|2020-08-25|
US20190230361A1|2019-07-25|
EP3741120A1|2020-11-25|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题

CN109005407A|2015-05-15|2018-12-14|华为技术有限公司|Encoding video pictures and decoded method, encoding device and decoding device|CN106331722B|2015-07-03|2019-04-26|华为技术有限公司|Image prediction method and relevant device|
KR20200124755A|2018-04-13|2020-11-03|엘지전자 주식회사|Inter prediction method and apparatus in video processing system|
WO2019234600A1|2018-06-05|2019-12-12|Beijing Bytedance Network Technology Co., Ltd.|Interaction between pairwise average merging candidates and intra-block copy |
TWI739120B|2018-06-21|2021-09-11|大陸商北京字節跳動網絡技術有限公司|Unified constrains for the merge affine mode and the non-merge affine mode|
GB2589223A|2018-06-21|2021-05-26|Beijing Bytedance Network Tech Co Ltd|Component-dependent sub-block dividing|
JP2022500909A|2018-09-19|2022-01-04|北京字節跳動網絡技術有限公司Beijing Bytedance Network Technology Co., Ltd.|Use of syntax for affine mode with adaptive motion vector resolution|
WO2020065518A1|2018-09-24|2020-04-02|Beijing Bytedance Network Technology Co., Ltd.|Bi-prediction with weights in video coding and decoding|
CN113170111A|2018-12-08|2021-07-23|北京字节跳动网络技术有限公司|Reducing line buffer storage required for affine inheritance|
US11102476B2|2018-12-28|2021-08-24|Qualcomm Incorporated|Subblock based affine motion model|
US11239988B2|2019-04-22|2022-02-01|Texas Instruments Incorporated|Methods and systems for synchronization of slave device with master device|
WO2020251417A2|2019-09-30|2020-12-17|Huawei Technologies Co., Ltd.|Usage of dct based interpolation filter and enhanced bilinear interpolation filter in affine motion compensation|
法律状态:
2021-12-07| B350| Update of information on the portal [chapter 15.35 patent gazette]|
优先权:
申请号 | 申请日 | 专利标题
US201862619783P| true| 2018-01-20|2018-01-20|
US62/619,783|2018-01-20|
US16/246,952|US10757417B2|2018-01-20|2019-01-14|Affine motion compensation in video coding|
US16/246,952|2019-01-14|
PCT/US2019/014046|WO2019143841A1|2018-01-20|2019-01-17|Affine motion compensation in video coding|
[返回顶部]