Motion Vector Difference Constraints
By determining and constraining the range of motion vector difference (MVD) components in video encoding technology, the problem of MVD value inaccuracy is solved, and encoding efficiency and flexibility are improved.
Patent Information
- Application Number
- JP2024017982
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-06-25
- Filing Date
- 2024-02-08
- Publication Date
- 2025-04-15
- Estimated Expiration
- 2040-06-28
AI Technical Summary
In the existing video encoding technology, the resolution of the motion vector difference (MVD) component is inflexible, resulting in inaccuracy of the MVD value in some scenarios, affecting the encoding efficiency.
The range of the motion vector difference value (MVD) components is determined in the video encoding method and the MVD components are constrained and adjusted according to the characteristics and encoding mode of the video block to ensure that they are within a suitable range.
It improves the flexibility and accuracy of video encoding, reduces encoding errors, and improves encoding efficiency.
Smart Images

Figure 0007662858000021 
Figure 0007662858000022 
Figure 0007662858000023
Abstract
Description
[Technical field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS The present application, This is a divisional application of Japanese Patent Application No. 2021-577192, which is the national phase of International Patent Application No. PCT / CN2020 / 098514 filed on June 28, 2020. This application claims priority to and the benefit of International Patent Application No. PCT / CN2019 / 092851, filed on June 25, 2019. As mentioned above of Application The entire disclosure is incorporated by reference as part of the disclosure of this application.
[0002] This patent document relates to video coding techniques, devices and systems. [Background technology]
[0003] Despite advances in video compression, digital video is still widely distributed across the Internet and other It is the largest user of bandwidth in the world's digital communications networks. As the number of connected user devices capable of transmitting and displaying digital video increases, It is expected that bandwidth demands for mobile phone usage will continue to increase. Summary of the Invention
[0004] In this specification, video coding is performed using motion vectors that are represented using a specified number of bits. Various embodiments and techniques for encoding or decoding video are described.
[0005] In one exemplary aspect, a video decoding method is disclosed. The method comprises: based on the motion vector resolution, maximum allowable motion vector accuracy or image domain characteristics, During conversion between the image domain and a bitstream representation of said image domain, determining a range of motion vector difference (MVD) values to be used for the Performing this conversion by constraining it to be within a range.
[0006] In one exemplary embodiment, a video decoding method is disclosed. The method includes: for converting between a block and a bitstream representation of the first block, determining a range of motion vector difference (MVD) components associated with the block; , the range of MVD components is [-2 M ,2 M -1], and M=17. , the value of the MVD component is constrained to be within the range of the MVD component; and performing the transformation based on MVD components.
[0007] In one exemplary embodiment, a video decoding method is disclosed. The method includes: for converting between a block and a bitstream representation of the first block, The purpose of the present invention is to determine the range of motion vector difference (MVD) components associated with a block of one. Thus, the range of the MVD components is determined based on the allowable MVD accuracy and / or allowable motion vector of the codec. determining the MVD component values to be adapted to the MVD precision; and performing this transformation based on the constrained MVD components. Includes.
[0008] In one exemplary embodiment, a video decoding method is disclosed. The method includes: for converting between a block and a bitstream representation of the first block, A range of motion vector difference (MVD) components associated with the block is calculated based on the first block and determining based on the coded information of the MVD component the value of the MVD component is within the range of the MVD component. and performing the transformation based on the range of the constrained MVD components. Including,
[0009] In one exemplary embodiment, a video decoding method is disclosed. The method includes: based on the MVD components associated with the blocks and constrained and signaled, performing a conversion between the signaled block and a bitstream representation of the first block; The values of the motion vector difference (MVD) components to be processed are constrained to be within a predetermined range.
[0010] In one exemplary aspect, a video decoding method is disclosed. The method includes: Based on the derived MVD components, the first block of the image and the bitstream of the first block are a transformation between the Riehm representation and the motion vector associated with the first block; The values of the vector difference (MVD) components are constrained to a predetermined range.
[0011] In yet another exemplary aspect, a video processing device is disclosed. A processing device configured to perform the method.
[0012] In yet another exemplary aspect, a computer readable medium is disclosed. , code for implementing the above-described method on a processor is stored.
[0013] These and other aspects are described herein. [Brief description of the drawings]
[0014] [Figure 1] FIG. 1 shows an example encoder block diagram. [Diagram 2] FIG. 2 is a block diagram illustrating an example of a hardware platform for implementing one or more of the methods described herein. [Diagram 3] FIG. 3 is a flowchart showing an example of a video processing method. [Figure 4] FIG. 4 is a flowchart showing an example of a video processing method. [Diagram 5] FIG. 5 is a flowchart showing an example of a video processing method. [Figure 6] FIG. 6 is a flowchart showing an example of a video processing method. [Figure 7] FIG. 7 is a flowchart showing an example of a video processing method. [Figure 8] FIG. 8 is a flowchart showing an example of a video processing method. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0015] Section headings are used herein for ease of understanding, and the disclosures contained in a section may be incorporated herein by reference. In addition, certain embodiments may be implemented in accordance with the VVC (Versatile Video Coding) or other specific video codec Although described with reference to the above, the disclosed techniques are applicable to other video coding techniques. Furthermore, although some embodiments describe the video encoding step in detail, the encoding and decoding steps may be omitted. It will be understood that the corresponding steps of decoding, encoding, etc. are performed by the decoder. The term video processing includes video encoding or compression, video decoding or decompression, and video Image in which pixels are represented from one compression format to another, or at a different compression bit rate. Includes code conversion.
[0016] 1. Summary of the Invention This specification relates to a video coding technology. Specifically, the present specification relates to an inter-coding technique in video coding. It may be applied to existing video coding standards such as HEVC, or it may be applied to the This may be applied to determine the appropriateness of the IEEE 802.11a standard for video coding. The invention is also applicable to future video encoding standards or video codecs.
[0017] 2. Initial consultations Video coding standards have emerged primarily through the development of well-known ITU-T and ISO / IEC standards. ITU-T has developed H.261 and H.263, and ISO / IEC has developed MPEG- 1 and MPEG-4 Visual, and the two organizations have jointly developed H.262 / MPEG-2 Video o and H.264 / MPEG-4 AVC(Advanced Video Coding ) and co-created the H.265 / HEVC standard. Since H.262, video coding standards have It is based on a hybrid video coding structure that utilizes inter prediction and transform coding. In 2015, VCEG and MPEG jointly established the VCEG-MPEG 2.0 standard for video coding. We established JVET (Joint Video Exploration Team). Since then, many new methods have been adopted by JVET and JEM (Joint Exp It has been incorporated into the reference software called JVE. T meets quarterly and the new coding standard is 50% faster than HEVC. At the JVET meeting in April 2018, a new video coding standard was proposed. Officially called "Versatile Video Coding (VVC)" At that time, the first version of the VVC Test Model (VTM) was released. Efforts to contribute to the standardization of VVC are ongoing, so at all JVET meetings, After each meeting, new coding techniques are adopted. VVC working drafts and test models are The VVC project is currently in the process of updating the technical The goal is to complete the development of the new technology (FDIS).
[0018] 2.1 Typical video codec encoding flow Figure 1 shows three in-loop filtering blocks: the deblocking filter ( VVC encoder blocks including DF, Sample Adaptive Offset (SAO) and ALF An example of a block diagram is shown. Unlike DF (which uses predefined filters), SAO and ALF and ALF use the original samples of the current picture and add offsets to them, respectively. and by applying a Finite Impulse Response (FIR) filter. The original samples are then reconstructed using the coding side information that signals the offset and filter coefficients. The ALF reduces the mean square error between the input and the reconstructed samples. It sits at one stage and attempts to capture and correct artifacts produced by the previous stage. It can be seen as a tool to
[0019] FIG. 1 shows an example of an encoder block diagram.
[0020] 2.2 Adaptive Motion Vector Resolution (AMVR) In HEVC, use_integer_mv_flag is specified in the slice header. When the MVD is 0, the motion vector difference (MVD) is calculated in units of 1 / 4 luminance samples. Vector Difference (between the motion vector and the predicted motion vector of the CU) In JEM, LAMVR (Locally Adaptive VVC (Voltage Vector Resolution) is introduced. In this paper, a CU-level Adaptive Motion Vector Resolution (AMVR) scheme is introduced. R allows encoding the MVD of a CU with different precision. The current CU's mode ( MVD of the current CU based on the normal AMVP mode or affine AVMP mode can be chosen adaptively as follows: - Normal AMVP mode: 1 / 4 luma samples, integer luma samples or 4 luma samples . - Affine AMVP mode: 1 / 4 luma samples, integer luma samples or 1 / 16 Luminance samples.
[0021] If the current CU has at least one nonzero MVD component, then the CU-level MVD resolution The degree indication is conditionally signaled. All MVD components (i.e., reference lists L0 and If the horizontal and vertical MVDs of the reference list L1 and L2) are zero, the 1 / 4 luma sample The MVD resolution is inferred.
[0022] For CUs with at least one non-zero MVD component, the 1 / 4 luma sample is used. The first flag signals whether the MVD precision is used in the CU. If the first flag is 0, no further signaling is required and the current CU For this reason, 1 / 4 luma sample MVD precision is used. Otherwise, normal AMVP Whether integer luma samples or 4 luma samples MVD precision is used for the CU A second flag is signaled to indicate the number of integer luma samples. Or whether MVD precision of 1 / 16 luma samples is used for affine AMVP CU. Used to indicate whether the reconstructed MV is accurate to the intended precision (1 / 4 luma samples, The CU's movement to ensure that the pixel has an integer number of luma samples, or 4 luma samples The vector predictor is rounded to the same precision as the MVD before being added to it. Round the motion vector predictor towards zero (i.e. round negative motion vector predictors towards positive infinity) (positive motion vector prediction modules round towards negative infinity).
[0023] The encoder uses the RD check to determine the motion vector resolution for the current CU. To avoid always doing CU-level RD checks three times for each MVD resolution, Therefore, in VTM4, RD checks for MVD accuracy other than 1 / 4 luminance samples are conditional. In normal AVMP mode, the 1 / 4 luminance sample MVD precision is Calculate the RD cost for the degree and integer luminance sample MV precision. Next, The RD cost of D accuracy was compared with the RD cost of 1 / 4 brightness sample MVD accuracy, and the 4 brightness sample Determine whether the RD cost of the pull MVD accuracy needs to be checked further. The RD cost of 4-luminance sample MVD accuracy is lower than the RD cost of integer luminance sample MVD accuracy. is much smaller, the RD check for 4-luminance sample MVD accuracy is omitted. In AMVP mode, affine merge / skip mode, merge / skip mode, 1 / 4 luminance sampling MVD accuracyNormal AMVP mode, 1 / 4 luminance sampling MVD After checking the rate-distortion ratio of the precision affine AMVP mode, the affine interm If no mode is selected, 1 / 16 luminance sample MV precision, 1 pixel MV precision affine image In addition, 1 / 16 luminance samples and 1 / 4 luminance samples are MV precision: 1 / 4 luminance sample MV as the search starting point in affine inter mode. Use the affine parameters obtained in the Precision Affine Inter mode.
[0024] 2.3 Affine AMVP Prediction in VVC Affine AMVP mode can be applied to CUs with both width and height greater than or equal to 16. The affine AMVP mode can be used by specifying the affine The alignment flag is signaled in the bitstream, and then the 4-parameter affine Another flag is signaled to indicate whether the affine is a 6-parameter affine or not. In this mode, the difference between the current CU's CPMV and its predictor CPMVP is the bitstream. The affine AVMP candidate list size is 2, and the following It is generated by using four types of CPVM candidates in sequence. 1) Inheritance affine AMVP candidates extrapolated from the CPUMV of nearby CUs 2) Construct affine AMVP candidate CPMVP derived using translation MVs of nearby CUs 3) Translational MV from nearby CUs 4) Zero MV
[0025] The order in which inheritance affine AMVP candidates are checked is the same as the order in which inheritance affine merge candidates are checked. The only difference is that for AVMP candidates, they have the same reference picture as the current block. The idea is to consider only affine CUs that have inherited affine motion predictors in the candidate list. When inserting into a table, pruning is not applied.
[0026] The constructed AMVP candidates are derived from the specified spatial neighborhood. The reference picture index of the current CU is also checked. Use the first block in the inter-coded check order to check for the 4-parameter affinities. There is only one current CU encoded in mv0 mode, and both mv0 and mv1 are available. If available, add them as candidates to the affine AMVP list. The CU is coded in 6-parameter affine mode and all three CPMVs are available. If so, add them as candidates in the affine AMVP list. If not, set the constructed AMVP candidate as unavailable.
[0027] After checking the inherited affine AMVP candidates and the constructed AMVP candidates, If the fin AMVP list candidates are still less than 2, mv0, m v1, and mv2, in that order, as translation MVs that predict all control points MVs of the current CU. Finally, if the affine AMVP list is not yet fully filled, Use zero MV to add.
[0028] 2.4 Merge mode with MVD (MMVD) in VVC In addition to the merge mode, we also use implicitly derived motion information in the prediction sample generation for the current CU. When used directly, it is necessary to introduce a merge mode with motion vector difference (MMVD) into VVC. Immediately after sending the skip and merge flags, the MMVD flag is signaled. Specifies whether MMVD mode is used for the CU.
[0029] In MMVD, after the merge candidates are selected, the MVD information signaled is used to This further information specifies the merge candidate flags and the magnitude of the motion. The MMVD mode includes an index for specifying the direction of motion and an index for specifying the direction of motion. In, we select one of the first two candidates in the merge list and use the MV-based The merge candidate flag is signaled to specify which one to use. do.
[0030] The distance index specifies the magnitude of the movement from a predefined starting point. Adds an offset to either the horizontal or vertical component of the starting MV. The relationship between the distance index and the predefined offsets is shown in Table 1.
[0031] VVC includes an SPS for turning on / off fractional MMVD offset at spss level. The flag sp_fpel_mmvd_enabled_flag is present and the Group Flag tile_group_fpel_mmvd_enabled_fla g for “SCC / UHD Frame” at the header level of the title group Controls the on / off of fractional MMVD offset when fractional MVD is enabled. , the default distance table in Table 1 is used, otherwise the default distance table in Table 1 is used. All offset elements in are left shifted by 2. Relationship between distance index and predefined offsets
[0032] [Table 1]
[0033] The direction index represents the direction of the MVD relative to the starting point. The direction index is shown in Table 2. As shown in the figure, four directions can be represented. Note that the meaning of the MVD code is If the starting MV is a non-predicted MV or a bi-predicted MV, and both The two references point to the same side of the current picture (i.e., the POCs of both references are Either both are greater than the current picture's POC, or both are less than the current picture's POC In this case, the code in Table 2 specifies the sign of the MV offset that is added to the starting MV. The starting MV is a bi-predictive MV, and the two MVs point to different sides of the current picture ( That is, the POC of one reference is greater than the POC of the current picture, and the POC of the other reference is If the current picture's POC is smaller than the current picture's POC, the code in Table 2 is Specifies the sign of the MV offset added to the MV components, and the sign of the list1 MV is the opposite. It has a value. The sign of the MV offset specified by the direction index
[0034] [Table 2]
[0035] 2.5 Intra Block Copy (IBC) in VVC Intra Block Copy (IBC) is a tool adopted in the HEVC extension of SCC. This has been shown to significantly improve the coding efficiency of screen content material. IBC mode is implemented as a block-level coding mode, so Block matching (BM) is performed on the imager to find the optimal block vector for each CU. (or motion vector), where the block vector is the distance from the current block to Used to indicate a displacement to an already reconstructed reference block within the current picture .
[0036] In VVC, the luma block vectors of an IBC coded CU are integer precision. The block vector is also rounded to integer precision. When combined with AMVR, IBC The mode can be switched between 1 pixel and 4 pixel motion vector accuracy. IBC coding The CU is a third prediction mode other than the intra prediction mode or the inter prediction mode. The IBC mode applies to CUs whose width and height are both 64 luma samples or less. It is possible to use.
[0037] The IBC mode is also known as the Current Picture Reference (CPR) mode.
[0038] 2.6 Motion Vector Differences in the VVC Specification / Working Draft The following text is extracted from the VVC working draft: 7.3.6.8 Motion Vector Difference Syntax
[0039] [Table 3]
[0040] 7.3.6.7 Merge Data Syntax
[0041] [Table 4]
[0042] 7.4.3.1 Sequence Parameter Set RBSP Semantics If sps_amvr_enabled_flag is equal to 1, the motion vector code Specifies that adaptive motion vector difference resolution should be used for affinement. If amvr_enabled_flag is equal to 0, adaptive motion vector coding is used. Specifies that vector difference resolution should not be used. sps_amvr_affine_amvr_enabled_flag equals 1 If the affine inter mode is selected, adaptive motion vector difference resolution is used for motion vector coding. sps_amvr_affine_amvr_enabled_ If flagg is equal to 0, adaptive coding is used for affine inter mode motion vector coding. Specifies that motion vector difference resolution is not used. If sps_fpel_mmvd_enabled_flag is equal to 1, the motion vector sps_ Specifies that merge modes with vector differences use integer sample precision. If fpel_mmvd_enabled_flag is equal to 0, the motion vector difference is Specifies that the merge mode can use fractional sample precision. 7.4.5.1 General Tile Group Header Semantics tile_group_fpel_mmvd_enabled_flag equals 1 If the merge mode with motion vector difference is an integer sample in the current tile group, Specifies that pull precision should be used. tile_group_fpel_mmvd_enabled_flag equals 0 If the merge mode with motion vector difference is set to fractional samples in the current tile group, Specifies that pull precision can be used. If not present, tile_group_fpe The value of l_mmvd_enabled_flag is assumed to be 0. 7.4.7.5 Coding Unit Syntax amvr_flag[x0][y0] specifies the resolution of the motion vector difference. The indexes x0,y0 are the pixel position of the top-left luminance sample of the considered coding block. Specifies the position (x0,y0) for the top-left luminance sample of the pixel. x0][y0]=0 indicates that the resolution of the motion vector difference is 1 / 4 of the luma samples. If amvr_flag[x0][y0] is equal to 1, the solution of the motion vector difference is The resolution is further specified by amvr_precision_flag[x0][y0]. Specify and. If amvr_flag[x0][y0] is not present, it is inferred as follows: - If CuPredMode[x0][y0] is equal to MODE_IBC, amvr _flag[x0][y0] is inferred to be equal to 1. - Otherwise (CuPredMode[x0][y0] is MODE_IBC amvr_flag[x0][y0] is inferred to be 0. If amvr_precision_flag[x0][y0] is 0, If r_affine_flag[x0][y0] is 0, the resolution of the motion vector difference is Must be 1 integer luma sample, otherwise 1 / 16 luma sample. If amvr_precision_flag[x0][y0] is 1, If inter_affine_flag[x0][y0] is 0, the motion vector difference If the resolution of the pixel is 4 luma samples, otherwise it is 1 integer luma sample. The array index x0,y0 is the address for the top-left luminance sample of the picture. This parameter specifies the location (x0,y0) of the top-left luma sample of the considered coding block.
[0043] If amvr_precision_flag[x0][y0] is not present, it is set to 0. It is assumed that The motion vector difference is corrected as follows: - If inter_affine_flag[x0][y0] is 0, the variable MvS hift is derived, and the variables MvdL0[x0][y0][0], MvdL0[x0][y 0][1], MvdL1[x0][y0][0], MvdL1[x0][y0][1] It is amended as follows: MvShift=(amvr_flag[x0][y0]+amvr_precision_flag[x0][y0])<<1 (7-98) MvdL0[x0][y0][0]=MvdL0[x0][y0][0]<<(MvShift+2) (7-99) MvdL0[x0][y0][1]=MvdL0[x0][y0][1]<<(MvShift+2) (7-100) MvdL1[x0][y0][0]=MvdL1[x0][y0][0]<<(MvShift+2) (7-101) MvdL1[x0][y0][1]=MvdL1[x0][y0][1]<<(MvShift+2) (7-102) - Otherwise (inter_afine_flag[x0][y0] is 1) , the variable MvShift is derived, and the variable MvdCpL0[x0][y0][0][0], MvdCpL0[x0][y0][0][1],, MvdCpL0[x0][y0][1 ][0], MvdCpL0[x0][y0][1][1], MvdCpL0[x0][y 0][2][0] and MvdCpL0[x0][y0][2][1] are corrected as follows: will be done. MvShift=amvr_precision_flag[x0][y0]? (amvr_precision_flag[x0][y0]<<1):(-(amvr_flag[x0][y0]<<1))) (7-103) MvdCpL0[x0][y0][0][0]=MvdCpL0[x0][y0][0][0]<<(MvShift+2) (7-104) MvdCpL1[x0][y0][0][1]=MvdCpL1[x0][y0][0][1]<<(MvShift+2) (7-105) MvdCpL0[x0][y0][1][0]=MvdCpL0[x0][y0][1][0]<<(MvShift+2) (7-106) MvdCpL1[x0][y0][1][1]=MvdCpL1[x0][y0][1][1]<<(MvShift+2) (7-107) MvdCpL0[x0][y0][2][0]=MvdCpL0[x0][y0][2][0]<<(MvShift+2) (7-108) MvdCpL1[x0][y0][2][1]=MvdCpL1[x0][y0][2][1]<<(MvShift+2) (7-109) 7.4.7.7 Merge Data Semantics merge_flag[x0][y0] is the inter prediction flag for the current coding unit. Specifies whether the measurement parameters are inferred from adjacent inter prediction intervals. The coordinate x0,y0 is the considered coding block for the top-left luminance sample of the picture. Specifies the position (x0,y0) of the top-left luminance sample of the pixel. If merge_flag[x0][y0] is not present, it is inferred as follows: - If cu_skip_flag[x0][y0] is equal to 1, merge_fla g[x0][y0] is inferred to be equal to 1. - Otherwise, merge_flag[x0][y0] is inferred to be equal to 0. . If mmvd_flag[x0][y0] is equal to 1, the inference of the current coding unit is Use merge mode with motion vector difference to generate the target prediction parameters The array index x0,y0 is the pixel for the top-left luminance sample of the picture. , specifies the position (x0, y0) of the top-left luminance sample of the considered coding block. If mmvd_flag[x0][y0] is not present, it is inferred to be equal to 0. mmvd_merge_flag[x0][y0] is mmvd_distance_ From idx[x0][y0] and mmvd_direction_idx[x0][y0] The difference between the derived motion vectors is used to determine whether the first (0) candidate in the merge candidate list is used or the second ( Specify whether to use the candidate in 1). The array indexes x0, y0 are the upper left luminance sample of the picture. The position (x0, y0) of the top-left luminance sample of the considered coding block relative to the sample Specify. mmvd_distance_idx[x0][y0] is specified in Table 7-11. The index used to derive MmvdDistance[x0][y0] is The array index x0,y0 is the address for the top-left luma sample of the picture. This parameter specifies the location (x0,y0) of the top-left luma sample of the considered coding block. Table 7-11 MmvdD based on mmvd_distance_idx[x0][y0] Specifications for istance[x0][y0]
[0044] [Table 5]
[0045] mmvd_distance_idx[x0][y0] is specified in Table 7-12. So, the index used to derive MmvdDistance[x0][y0] is The array index x0,y0 is the address for the top-left luma sample of the picture. This parameter specifies the location (x0,y0) of the top-left luma sample of the considered coding block. Table 7-12 Mmvd based on mmvd_direction_idx[x0][y0] Specifications for Sign[x0][y0]
[0046] [Table 6]
[0047] Both components of the merge + MVD offset MmvdOffset[x0][y0] are as follows: It is derived as follows. MmvdOffset[x0][y0][0]=(MmvdDistance[x0][y0]<<2)*MmvdSign[x0][y0][0] (7-112) MmvdOffset[x0][y0][1]=(MmvdDistance[x0][y0]<<2)*MmvdSign[x0][y0][1] (7-113) merge_subblock_flag[x0][y0] is the current coding unit Whether to infer subblock-based inter prediction parameters from neighboring blocks in The array index x0,y0 is the address for the top-left luminance sample of the picture. m If erge_subblock_flag[x0][y0] is not present, it is equal to 0 It is speculated that. merge_subblock_idx[x0][y0] is the subblock-based merge Specifies the merge candidate index in the merge candidate list, where x0,y0 are the The position of the top-left luminance sample of the assumed coding block relative to the top-left luminance sample ( Specify the position of the vector (x0,y0). If merge_subblock_idx[x0][y0] does not exist, it is equal to 0. It is assumed that ciip_flag[x0][y0] Interpicture flag for the current coding unit. Specifies whether to combine chunking and intra-picture prediction. The x0,y0 matrix is the left pixel of the considered coding block relative to the top-left luminance sample of the picture. Specifies the (x0,y0) position of the top luminance sample. If ciip_flag[x0][y0] is not present, it is inferred to be equal to 0. The syntax elements ciip_luma_mpm_flag[x0][y0] and ciip_ luma_mpm_idx[x0][y0] is the inter picture merge and picture Specifies the intra prediction mode of the luma samples used in the intra prediction combination. The index x0,y0 is the considered coding block for the top-left luminance sample of the picture. Specifies the position (x0, y0) of the top-left luminance sample of the frame. The prediction mode is derived. If ciip_luma_mpm_flag[x0][y0] does not exist, It is speculated that. - cbWidth is greater than 2*cbHeight or cbHeight is greater than 2 *If it is larger than cbWidth, ciip_luma_mpm_flag[x0][ y0] is assumed to be 1. - Otherwise, ciip_luma_mpm_flag[x0][y0] is equal to 0. It is assumed that If merge_triangle_flag[x0][y0] is equal to 1, For a given coding unit, when decoding a B-tile group, the motion vector based on the triangle shape is Specifies that the prediction samples for the current coding unit are generated using compensation. If rge_triangle_flag[x0][y0] is equal to 0, the encoding unit Specifies that the bits are not predicted by triangle-based motion compensation. If triangle_flag[x0][y0] is not present, it is inferred to be equal to 0. do. merge_triangle_split_dir[x0][y0] is the merge triangle Specifies the split direction of the shape mode. The array indexes x0, y0 are the upper left luminance subpixel of the picture. The position (x0, y0) of the top-left luminance sample of the considered coding block relative to the sample Specify. If merge_triangle_split_dir[x0][y0] does not exist If 0, it is inferred to be equal to 0. merge_triangle_idx0[x0][y0] is the movement based on the triangle shape Specifies the index of the first merge candidate in the compensation candidate list, where x0, y0 are the The top left luminance sample of the assumed coding block relative to the top left luminance sample of the current block. Specify the position (x0, y0). If merge_triangle_idx0[x0][y0] does not exist, it is set to 0. It is assumed that merge_triangle_idx1[x0][y0] is the movement based on the triangle shape Specifies the second merge candidate index in the compensation candidate list, where x0,y0 are the The top left luminance sample of the assumed coding block relative to the top left luminance sample of the current block. Specify the position (x0, y0). If merge_triangle_idx1[x0][y0] does not exist, it is set to 0. It is assumed that merge_idx[x0][y0] is the merge candidate index in the merge candidate list where x0,y0 are the assumed coordinates for the top-left luminance sample of the picture. Specifies the position (x0, y0) of the top-left luma sample of the coding block. If merge_idx[x0][y0] does not exist, it is inferred as follows: - If mmvd_flag[x0][y0] is equal to 1, then merge_idx[x0 ][y0] is inferred to be equal to mmvd_merge_flag[x0][y0]. Otherwise (mmvd_flag[x0][y0]=0), merge_idx [x0][y0] is inferred to be 0 which is equal to 0. 7.4.7.8 Motion Vector Difference Semantics abs_mvd_greater0_flag[compIdx] is the motion vector component Specifies whether the absolute value of the minutes difference is greater than 0. abs_mvd_greater1_flag[compIdx] is the motion vector component Specifies whether the absolute value of the minutes difference is greater than 1. If abs_mvd_greater1_flag[compIdx] does not exist, It is assumed to be equal to 0. abs_mvd_minus2[compIdx]+2 is the absolute difference between the motion vector components Specify the pair value. If abs_mvd_minus2[compIdx] is not present, it is set to -1. It is speculated. mvd_sign_flag[compIdx] specifies the sign of the motion vector component difference as follows: Specify it as follows. - If mvd_sign_flag[compIdx] is equal to 0, the corresponding motion vector The difference between the vector components has a positive value. - Otherwise (mvd_sign_flag[compIdx] is equal to 1), The difference between the corresponding motion vector components has a negative value. If mvd_sign_flag[compIdx] is not present, it is assumed to be equal to 0. will be done. When compIdx=0..1, the motion vector difference lMvd[compIdx] is It is derived as follows: lMvd[compIdx]=abs_mvd_greater0_flag[compIdx]* (abs_mvd_minus2[compIdx]+2)*(1-2*mvd_sign_flag[compIdx]) (7-114) The value of lMvd[compIdx] is -2 15 From 2 15 It is assumed to be in the range of -1. Based on the value of MotionModelIdc[x][y], the motion vector difference is It is derived as follows: - If MotionModelIdc[x][y] is 0, the variable MvdLX[x0 ][y0][compIdx]) (where X is 0 or 1) is the list X vector that should be used. The array indices x0,y0 specify the difference between the leftmost pixel in the picture and its prediction. The position (x0, y0) is specified. compIdx=0 is assigned to the difference in the horizontal motion vector component. and the vertical motion vector component is assigned compIdx=1. - If refList is 0, then mvdL0[x0][y0][compIdx] is set to lMvd[compIdx], where compIdx=0..1. - Otherwise (refList is 1), MvdL1[x0][y0][c ompIdx] is set to lMvd[compIdx], where compIdx=0..1. can be. - Otherwise (MotionModelIdc[x][y] is not equal to 0), Variable MvdCpLX[x0][y0][cpIdx][compIdx] (X is 0 or 1) The list X to be used specifies the difference between a vector component and its prediction. The index x0,y0 is the upper left luminance sample of the considered coding block. Specifies the position (x0, y0) for the top-left luminance sample and the array index cpIdx specifies the control point index. compId for the difference in horizontal motion vector components The vertical motion vector component is assigned compIdx=1. can be done. - If refList is 0, MvdCpL0[x0][y0][cpIdx] [compIdx] is set to lMvd[compIdx] with compIdx=0..1. It is determined. - Otherwise (refList is 1), MvdCpL1[x0][y0] [cpIdx][compIdx] is compIdx=0..1 and lMvd[com pIdx]. 3. Examples of problems that the embodiments described herein aim to solve In some coding standards, such as VVC, the motion vector difference (MVD) is not necessarily 1 / It is not necessarily a resolution of 4 pixels (e.g., 1 / 4 luminance samples). In the existing VVC working draft, the MVD component is set to -2 15 ~2 15 Always clips within -1 range This results in a bitstream constraint that must be met, particularly for non-quarter pixel MVD solutions. If image resolution is used, the MVD value may be inaccurate (e.g., affine AMV If P is used, the MVD resolution is 1 / 16 luma sample). 4. Exemplary embodiments and techniques The embodiments listed below should be considered examples to illustrate the general concepts. These inventions should not be interpreted narrowly. , can be combined in any way. In the following description, the "motion vector difference (MVD) component" refers to a component in the horizontal direction (e.g., the x-axis the motion vector difference in the vertical direction (for example, along the y-axis) Indicates one of the following. In the case of sub-pixel motion vector (MV) representation, the motion vector is usually represented as a fractional part and The range of MV is [-2 M ,2 M -1], where M is a positive integer value. =K+L, where K represents the range of the integer part of MV and L represents the range of the fractional part of MV. ), MV is (1 / 2 L ) luminance sample precision. For example, HEVC In this case, K=13 and L=2, so M=K+L=15. On the other hand, in VVC, In this case, K=13, L=4, and M=K+L=17. 1. The range of MVD components may depend on the codec's acceptable MVD resolution / precision It is proposed that: a) In one example, the same range can be applied to all MVD components. i. In one example, the range of the MVD components is [-2 M , 2 M -1] and other MV ranges For example, M=17. b) In one example, all decoded MVD components are first decoded to a pre-specified precision (1 / 2 L ) luminance samples (e.g., L=4) and then scaled to a predefined The range [-2M ,2 M -1] (e.g., M=17). c) In one example, the range of MVD components is determined by the MVD / MV resolution allowed by the codec. It may depend on the degree. In one example, the allowed resolution of the MVD is 1 / 16 luma samples, 1 / 4 luma samples, If we have a pixel, 1 luma sample, or 4 luma samples, the value of the MVD component is The resolution is then adjusted according to a smaller resolution (e.g. 1 / 16 luminance samples of these possible resolutions). That is, the value of the MVD may be limited to [-2 K+L ,2 K+L -1] Range, for example, K=13, L=4. 2. It is proposed that the range of the MVD components may depend on the coded information of the block. do. a) In one example, multiple sets of ranges for MVD components may be defined. b) In one example, the range may depend on the MV predictor / MVD / MV accuracy. In one example, the MVD precision of the MVD components is (1 / 2 L ) Luminance samples (For example, L=4,3,2,1,0,-1,2,3,4, etc.), the MVD value is [- 2 K+L ,2 K+L -1] range, e.g., K=13, L=4, 3, 2, 1, 0, -1, It may be constrained to 2, 3, 4 etc. and / or clipped. ii. In one example, the range of the MVD components may depend on the variable MvShift; Here, MvShift is the VVC affine_inter_flag, amvr_ It may be derived from amvr_precision_flag and amvr_precision_flag. 1. In one example, MvShift uses affine_inter_flag, a mvr_flag, and / or amvr_precision_flag, and / or or sps_fpel_mmvd_enabled_flag, and / or til e_group_fpel_mmvd_enabled_flag, and / or mm vd_distance_idx, and / or CuPredMode It may be derived from the information collected. c) In one example, the MVD range depends on the coding mode of the block, the motion model, etc. You may do so. i. In one example, the range of MVD components is determined based on the motion model (e.g., MotionModelIdc), and / or prediction mode, and / or af May depend on fine_inter_flag. ii. In one example, the prediction mode of the current block is MODE_IBC (e.g., If the current block is coded in IBC mode, the MVD value is [-2 K +L ,2 K+L −1] (for example, K=13, L=0). iii. In one example, the motion model index of the current block (e.g., MotionModelIdc) is equal to 0 (for example, the current block is a translational motion model) If the MVD is predicted using the K+L ,2 K+L -1] range ( For example, K=13, L=2). 1. Alternatively, the prediction mode of the current block is MODE_INTER and affi If ne_inter_flag is false (e.g. the current block uses a translational motion model), The MVD value is calculated by multiplying the K+L ,2K+L -1] range (e.g. For example, K=13, L=2). iv. In one example, the motion model index of the current block (e.g., M otionModelIdc) is not equal to 0 (for example, if the current block is an affiliation If the MVD is predicted using a linear motion model, the MVD value is [-2 K+L ,2 K+L −1] (for example, K=13, L=4). 1. Alternatively, the prediction mode of the current block is MODE_INTER and affi If ne_inter_flag is true (e.g., the current block uses an affine motion model (When predicted using ), the MVD value is [-2 K+L ,2 K+L -1] range (e.g. For example, K=13, L=4). d) Instead of applying constraints to the decoded MVD components, we apply constraints to the rounded MVD values. It is proposed to add i. In one example, a conforming bitstream is one in which the rounded integer MVD value falls within a given range. It is satisfied that the measurement is within the range. 1. In one example, the MVD of an integer (if the decoded MVD has fractional precision, rounding may occur) Required) is [-2 K ,2 K −1], for example, K=13. 3. Note that the decoded MVD component values can be meaningfully constrained other than by using bitstream constraints. Taste interpretation may be explicitly clipped to certain ranges (e.g., the MVD ranges mentioned above). It is suggested that 5. Embodiments 5.1 Embodiment #1 The following embodiment relates to the method of Section 4, Item 1.
[0048] [ka]
[0049] 7.4.7.8 Motion Vector Difference Semantics When compIdx=0..1, the motion vector difference lMvd[compIdx] is It is derived as follows:
[0050]
number
[0051] 5.2 Example #2 The following embodiment relates to the method of Section 4, Item 2.
[0052] [ka]
[0053] 7.4.7.9 Motion Vector Difference Semantics When compIdx=0..1, the motion vector difference lMvd[compIdx] is It is derived as follows:
[0054]
number
[0055] 5.3 Example #3 The following embodiment relates to the method of Section 4, Item 2.
[0056] [ka]
[0057] 7.4.7.10 Motion Vector Difference Semantics When compIdx=0..1, the motion vector difference lMvd[compIdx] is It is derived as follows.
[0058]
number
[0059] 5.4 Example #4 The following embodiments also apply to the method of Section 4, Item 2.
[0060] [ka]
[0061] 7.4.7.11 Motion Vector Difference Semantics When compIdx=0..1, the motion vector difference lMvd[compIdx] is It is derived as follows:
[0062]
number
[0063] 5.5 Embodiment #5 The following embodiments relate to the methods of items 3 and 1 of Chapter 4.
[0064] [ka]
[0065] 7.4.7.12 Motion Vector Difference Semantics When compIdx=0..1, the motion vector difference lMvd[compIdx] is It is derived as follows:
[0066]
number
[0067] 5.6 Example #6 The following embodiments relate to the methods of items 3 and 2 of Chapter 4.
[0068] [ka]
[0069] 7.4.7.13 Motion Vector Difference Semantics When compIdx=0..1, the motion vector difference lMvd[compIdx] is It is derived as follows.
[0070]
number
[0071] Based on the value of MotionModelIdc[x][y], the motion vector difference is It is derived as follows: - If MotionModelIdc[x][y] is 0, the variable MvdLX[x0 ][y0][compIdx]) (where X is 0 or 1) is the list X vector that should be used. The array indices x0,y0 specify the difference between the leftmost pixel in the picture and its prediction. The position (x0, y0) is specified. compIdx=0 is assigned to the difference in the horizontal motion vector component. and the vertical motion vector component is assigned compIdx=1.
[0072] [ka]
[0073] - If refList is 0, then mvdL0[x0][y0][compIdx] is set to lMvd[compIdx], where compIdx=0..1. - Otherwise (refList is 1), MvdL1[x0][y0][c ompIdx] is set to lMvd[compIdx], where compIdx=0..1. can be. - Otherwise (MotionModelIdc[x][y] is not equal to 0), Variable MvdCpLX[x0][y0][cpIdx][compIdx] (X is 0 or 1) The list X to be used specifies the difference between a vector component and its prediction. The index x0,y0 is the upper left luminance sample of the considered coding block. Specifies the position (x0, y0) for the top-left luminance sample and the array index cpIdx specifies the control point index. compId for the difference in horizontal motion vector components The vertical motion vector component is assigned compIdx=1. can be done.
[0074] [ka]
[0075] - If refList is 0, MvdCpL0[x0][y0][cpIdx] [compIdx] is set to lMvd[compIdx] with compIdx=0..1. It is determined. - Otherwise (refList is 1), MvdCpL1[x0][y0] [cpIdx][compIdx] is compIdx=0..1 and lMvd[com pIdx].
[0076] FIG. 2 is a block diagram of a video processing device 1000. The device 1000 is The device 1000 may be used to implement one or more of the methods described above. This is carried out using tablets, computers, IoT (Internet of Things) receivers, etc. The device 1000 may include one or more processing units 1002, one or more memories 1004, and , video processing hardware 1006. 02 may be configured to implement one or more of the methods described herein. The library(s) 1004 may be used to implement the methods and techniques described herein. The video processing hardware 100 may be used to store data and codes to be processed. 6 may be used to implement the techniques described herein in hardware circuitry. .
[0077] FIG. 3 is a flow chart illustrating an example of a video processing method. Based on the characteristics of the motion vector resolution, maximum allowable motion vector accuracy or image area, During conversion between the image domain and a bitstream representation of the image domain, The method includes determining (302) a range of motion vector difference (MVD) values to be used for the image. The method 300 performs the transformation by restricting the MVD values to fall within a range (30 4) This includes:
[0078] The following list of solutions addresses, among other problems, the techniques described herein: The present invention provides an embodiment that can address the above-mentioned problems.
[0079] 1. Maximum allowable motion vector resolution, maximum allowable motion vector accuracy or image area characteristics During conversion between the video domain and a bitstream representation of the video domain based on determining a range of motion vector difference (MVD) values to be used for a video region of the image; performing this conversion by restricting the MVD values to be within this range. Image processing method.
[0080] 2. Solution 1, wherein the range is applied during the transformation of all image regions of the image. The method described.
[0081] 3. Any of the solutions 1-2, where the range is the range of motion vectors in the image area. The method described.
[0082] 4. The limiting step may be implemented by scaling the MVD components to the precision and Any of solutions 1-3, including clipping the outliers to fit the range, Any of the methods described above.
[0083] 5. Any of solutions 1-4, where the image domain characteristics include encoded information of the image domain The method described above.
[0084] 6. Any of solutions 1 to 5, where the range is selected from a set of multiple possible ranges of the image. The method according to any one of the above.
[0085] 7. The characteristics of the image domain are evaluated to determine the accuracy of the motion vector predictor used for the image domain. The method according to any one of solutions 1 to 4.
[0086] 8. The characteristic of the image region corresponds to a value of MVShift, and MVShift is A variable associated with an image region, and MVShift is associated with the image region. affine_inter_flag or amvr_flag or amvr_p The method according to any of solutions 1 to 4 depends on recision_flag.
[0087] 9. The characteristics of the image domain correspond to the coding mode used for the conversion, as described in Solution 1. How to.
[0088] 10. The method according to solution 9, wherein the coding mode is intra block copy. mode, and the range is [-2 K+L ,2 K+L -1], where K and L represent the range of the integer part of the motion vector (MV) and the range of the fractional part of the MV, respectively. is an integer that is a method.
[0089] 11. The method according to solution 10, wherein K=13 and L=0.
[0090] 12. The characteristics of the image domain correspond to the motion model used for the transformation, as described in Solution 1. How to.
[0091] 13. The properties of the image domain are such that the motion of the image domain is modeled using a translation model. and so the range is [-2 K+L , 2 K+L −1], where K and L are the range of the integer part of the motion vector (MV) and the fractional part of the MV, respectively. The method according to solution 1, where m is an integer representing a range of minutes.
[0092] 14. The method according to solution 13, where K=13 and L=2.
[0093] 15. The properties of the image domain are modeled using a non-translational model of the motion of the image domain. Therefore, the range is [-2 K+L , 2 K+L -1], where , K and L are the range of the integer part of the motion vector (MV) and the range of the fractional part of the MV, respectively. Solution 1 method, where is an integer representing .
[0094] 16. The method of solution 15, where K=13 and L=4.
[0095] 17. The method of solution 1, wherein the restriction includes restricting the rounded value of the MVD to a range.
[0096] 18. Video domain bitstream representations of video during conversion between video domain and video domain bitstream representations determining a range of motion vector difference (MVD) values to be used in the region; During the interpretation of the semantics, clipping operations are performed on the MVD values to ensure that they are within the range. . A video processing method comprising:
[0097] 19. The method according to any one of solutions 1 to 18, wherein the image region corresponds to an image block. Law.
[0098] 20. The transform generates pixel values of the image domain from the bitstream representation. 20. The method according to any one of Solutions 1 to 19, comprising:
[0099] 21. The transformation generates pixel values of the image domain from the bitstream representation. 21. The method according to any one of Solutions 1 to 20, comprising:
[0100] 22. A processing device configured to implement one or more of the methods described in Examples 1 to 21. An image processing device.
[0101] 23. A computer readable medium having code stored thereon, said code comprising: When executed by the processor, the processor performs any one or more of the steps described in any one of Examples 1 to 21. A computer readable medium implementing the method of.
[0102] The items listed in Chapter 4 provide further variations of the above solution.
[0103] FIG. 4 is a flow chart illustrating an example of a method 400 for video processing. ) for converting between the first video block and a bitstream representation of the first block. To this end, a range of a motion vector difference (MVD) module associated with the first block is calculated. and determining (402) the range of the MVD components is [-2 M ,2 M -1] , M = 17, and determine whether the value of the MVD component is within the range of the MVD component. and performing the transformation based on the range of the constrained MVD components. (406)
[0104] In some instances, this range depends on the codec's allowable MVD accuracy and / or allowable motion. It is adapted to vector (MV) accuracy.
[0105] In some examples, the allowable MVD precision and / or the allowable motion vector (MV) precision may be: It has a luminance sample accuracy of 1 / 16.
[0106] In some cases, a codec may have multiple allowable MVD and / or MV precisions. If so, the range of MVD components must be determined based on the best of the multiple acceptable MVD accuracy and / or MV accuracy. It is adapted to precision.
[0107] In some instances, multiple acceptable MVD accuracy and / or MV accuracy may be less than 1 / 16. contains a 32-bit sample, a 1 / 4 luma sample, a 1 luma sample, and a 4 luma sample. The MVD components are adapted to a precision of 1 / 16 luminance samples.
[0108] In some examples, the range of the MVD components is [-2 M ,2 M -1], and M = K+ L, K denotes the number of bits used to represent the integer part of the MVD components, and L is The number of bits used to represent the fractional part of the MVD component. The MVD component is 1 / 2 L MV components represented with luma sample precision and / or associated with the first block The range is [-2 M ,2 M -1], where M = K + L, and K is the number of MV components. indicates the number of bits used to represent the integer part, and L is the number of bits used to represent the fractional part of the MV component. The MV component is 1 / 2 L It is expressed in luminance sample precision, M, K and L indicate positive integers.
[0109] In some examples, K=13, L=4, and M=17.
[0110] In some examples, the MVD component is encoded in the bitstream and decoded / signaled The MVD components are assigned to a specific precision through the internal shifting operations of the decoding process. are the transformed MVD components.
[0111] In some examples, the MVD components include horizontal MVD components and vertical MVD components, The MVD components and the vertical MVD components have the same range.
[0112] In some examples, the MVD components are represented by integer bits, fractional bits, and a sign bit. will be done.
[0113] In some examples, the range of the MV associated with the first block is the range of the MVD components. is the same as:
[0114] FIG. 5 is a flow chart illustrating an example of a method 500 for video processing. for converting between a first video block and a bitstream representation of the first block, determining a range of motion vector difference (MVD) components associated with the first block to The range of MVD components is determined according to the allowed MVD precision and / or allowed determining (502) a motion vector (MV) precision-adapted determination; Constraining (504) values of the MVD components to be within the ranges of the MVD components; and and performing this conversion based on a range of minutes (506).
[0115] In some examples, the MVD component is encoded in the bitstream and decoded / signaled The MVD components are assigned to a specific precision through the internal shifting operations of the decoding process. are the transformed MVD components.
[0116] In some examples, the decoded / signaled MVD components are [-2 M ,2 M -1] range It is required that the aryl group is in the range of 0 to 17, where M=17.
[0117] In some examples, the MVD components are represented by integer bits, fractional bits, and a sign bit. will be done.
[0118] In some examples, the range of the MVD components is [-2 M ,2 M -1], and M = K+ L, K denotes the number of bits used to represent the integer part of the MVD components, and L is The number of bits used to represent the fractional part of the MVD component. The MVD component is 1 / 2 L MV components represented with luma sample precision and / or associated with the first block The range is [-2 M ,2 M -1], where M = K + L, and K is the number of MV components. indicates the number of bits used to represent the integer part, and L is used to represent the fractional part of the MV component. Indicates the number of bits used, MV component is 1 / 2 L It is expressed with luminance sample precision, M, K, L indicates a positive integer.
[0119] In some cases, the values of all decoded MVD components are first multiplied by 1 / 2. L Luminance Sample The MVD components are then scaled to the range [-2 M ,2 M Clipping to -1 will be done.
[0120] In some cases, a codec may have multiple allowable MVD and / or MV precisions. If so, the range of MVD components must be determined based on the best of the multiple acceptable MVD accuracy and / or MV accuracy. It is adapted to precision.
[0121] In some cases, multiple allowable MVD accuracy and / or MV accuracy may be used with 1 / 16 luminance samples. Pull precision, 1 / 4 luma sample precision, 1 luma sample precision, and 4 luma sample precision. If it does, the range of the MVD components is adapted to the accuracy of 1 / 16 luminance samples, and the MVD components The minute value is constrained and / or clipped to that range.
[0122] In some examples, K=13, L=4, and M=17.
[0123] In some examples, the MVD components include horizontal MVD components and vertical MVD components, The MVD components and the vertical MVD components have the same range.
[0124] In some instances, the range of the MV is the same as the range of the MVD component.
[0125] FIG. 6 is a flow chart illustrating an example of a method 600 for video processing. , for converting between the first video block and a bitstream representation of the first block , the range of motion vector difference (MVD) associated with the first block is and determining (602) based on the coded information of the MVD component, the value of the MVD component being and determining whether the MVD components are within a certain range based on the constrained MVD components (604). and performing the conversion (606).
[0126] In some instances, the MVD component ranges include multiple sets of MVD component ranges. do.
[0127] In some examples, the encoded information may include the accuracy of a motion vector (MV) predictor, MVD The accuracy of the component and the accuracy of the MV are included.
[0128] In some cases, the MVD accuracy of the MVD components is 1 / 2 L If it is a luminance sample, MV The range of the D component is [-2 K+L ,2 K+L -1] range, and the value of the MVP component is are constrained and / or clipped to be within that range, where K is the number of MVD components indicates the number of bits used to represent the integer part, and L represents the fractional part of the MVD component. where K and L are positive integers.
[0129] In some examples, K is 13 and L is 4, 3, 2, 1, 0, -1, -2, -3, and and -4.
[0130] In some examples, the encoded information is a variable MvShift associated with the MVD. The derivation of the variable MvShift depends on whether AFFINE is used and / or Or whether Adaptive Motion Vector Resolution (AMVR) is used and / or is the accuracy of AMVR and / or MVD and / or motion vector difference and / or a prediction mode of the first block Depends on.
[0131] In some examples, the variable MvShift is the inter_affinity of the encoded information. ne_flag, amvr_flag, and amvr_precision_idx It is derived from one or more syntax elements that contain
[0132] In some examples, the variable MvShift is the inter_affinity of the encoded information. ne_flag, amvr_flag, amvr_precision_idx, sps _fpel_mmvd_enabled_flag, ph_fpel_mmvd_ena bled_flag, mmvd_distance_idx, and CuPredMod It is derived from one or more syntax elements containing e.
[0133] In some examples, the encoded information may include the encoding mode of the first block, the motion mode, and prediction mode, and whether AFFIN / AMVR is used in the coded information. It contains one or more variables and / or syntax elements that indicate whether
[0134] In some examples, the prediction mode of the first block is IBC mode. If MODE_IBC is specified, the range of the MVD components is [-2 K+L ,2 K+L -1] and the value of the MVP component falls within that range. where K represents the integer part of the MVD components. indicates the number of bits used to represent the fractional part of the MVD component, and L indicates the number of bits used to represent the fractional part of the MVD component. where K and L are positive integers.
[0135] In some examples, K=13, and L=0.
[0136] In some examples, if the motion model index of the first block is equal to 0, M The range of the VD components is [-2 K+L ,2 K+L -1] range, and the MVP component The values of are constrained and / or clipped to be within that range, where K is the MV The number of bits used to represent the integer part of the D component, L is the number of bits used to represent the fractional part of the MVD component. represents the number of bits used to encode the ciphertext, and K and L are positive integers.
[0137] In some examples, K=13, and L=2.
[0138] In some examples, the prediction mode of the first block is MODE_IN If TER and the affine_inter_flag variable is false, the MVD components The range is [-2 K+L ,2 K+L -1], and the value of the MVP component is are constrained and / or clipped to be within that range, where K is the number of MVD components indicates the number of bits used to represent the integer part, and L represents the fractional part of the MVD component. where K and L are positive integers.
[0139] In some examples, K=13, and L=2.
[0140] In some cases, the motion model index of the first block is not equal to 0. , the range of MVD components is [-2 K+L ,2 K+L -1] range, and MVP The component values are constrained and / or clipped to be within that range, where K is The number of bits used to represent the integer part of the MVD component, L represents the fractional part of the MVD component. where K and L are positive integers.
[0141] In some examples, K=13, and L=4.
[0142] In some examples, the prediction mode of the first block is MODE_IN If TER and the affine_inter_flag variable is true, the MVD components The range is [-2 K+L ,2 K+L -1], and the value of the MVP component is are constrained and / or clipped to be within that range, where K is the number of MVD components indicates the number of bits used to represent the integer part, and L represents the fractional part of the MVD component. where K and L are positive integers.
[0143] In some examples, K=13, and L=4.
[0144] In some cases, if the decoded MVD components are in fractional precision, the decoded MV The D components are rounded to integer MVD components.
[0145] In some cases, the rounded integer MVD components are [-2 K , 2 K -1], K=13.
[0146] In some cases, the values of all decoded MVD components may be constrained according to bitstream constraints. They are explicitly clipped to the range of the MVD components during semantic interpretation other than using
[0147] FIG. 7 is a flow chart illustrating an example of a method 700 for processing video. Based on the MVD components associated with the first block of the image and signaled in a constrained manner, Converting between the first block and a bitstream representation of the first block (702 ), where the values of the signaled motion vector difference (MVD) components are constrained to be within a predetermined range. do.
[0148] In some examples, the predetermined range is the sum of the MVD components associated with the first block. is associated with precision.
[0149] In some examples, the MVD components associated with the first block have an accuracy of 1 / 16 pixels. and the given range is [-2 17 ,2 17 -1].
[0150] In some examples, if the MVD component has an accuracy of 1 / 16 pixels, the MV The value of the D component is [-2 K+L ,2 K+L -1], where K is , the number of bits used to represent the integer part of the MVD component, and L is the end Indicates the number of bits used to represent the numeric portion, where K and L are integers.
[0151] In some examples, K=13 and L=4.
[0152] In some examples, if the MVD components have a precision of 1 / 4 pixel, the MVD signaled The component values are [-2 K+L ,2 K+L −1], where K is indicates the number of bits used to represent the integer part of the MVD component, and L is the fractional part of the MVD component. Indicates the number of bits used to represent the portion, where K and L are integers.
[0153] In some examples, K=13 and L=2.
[0154] In some examples, if the MVD components have a precision of one pixel, the MVD components that are signaled The value is [-2 K+L ,2 K+L −1], where K is the MV indicates the number of bits used to represent the integer part of the D component, and L indicates the fractional part of the MVD component. where K and L are integers.
[0155] In some examples, K=13 and L=0.
[0156] In some examples, if the MVD component precision is 4 pixels, the MVD component signaled is The value is [-2 K+L ,2 K+L −1], where K is the signal indicates the number of bits used to represent the integer part of the signaled MVD component, and L is the number of bits used to represent the integer part of the signaled MVD component. indicates the number of bits used to represent the fractional part of the MVD component known, where K and and L are integers.
[0157] In some examples, K=13 and L=-2.
[0158] In some examples, the numerical values of the signaled MVD components are [-2 K+L ,2 K+L -1 ], where K is used to represent the integer part of the MVD components. L denotes the number of bits used to represent the fractional part of the MVD component. , where K=13 and L=4.
[0159] FIG. 8 is a flow chart illustrating an example of a method 800 for video processing. Based on the MVD components derived by approximating the first block of the image, and performing a conversion (802) between the bitstream representation and the first block associated with the bitstream representation. The values of the derived motion vector difference (MVD) components are constrained to be within a predetermined range.
[0160] In some examples, the derived MVD components are derived from the corresponding List-Y MVD components. List-X MVD components, where X=0 or 1 and Y=1 or 0. do.
[0161] In some examples, the List-X MVD components are determined according to a symmetric motion vector difference mode: Signaled List - Derived by Y MVD components.
[0162] In some examples, the predetermined range is the sum of the MVD components associated with the first block. is associated with precision.
[0163] In some examples, the MVD component corresponding to the first block has an accuracy of 1 / 16 pixels. , this given range is [-2 17 ,2 17 -1].
[0164] In some cases, the numerical values of the derived MVD components are [-2 K+L ,2 K+L -1] given where K is the number of bits used to represent the integer part of the MVD components. where L denotes the number of bits used to represent the fractional part of the derived MVD components. where K and L are integers.
[0165] In some examples, K=13, and L=4.
[0166] In some cases, the derived MVD components are the same for all MVD components in the codec. This is the internal MVD value that is converted to precision.
[0167] In some instances, the adaptive motion vector resolution (AMVR) flag is used to signal Shift the input MVD value to the internal 18-bit MVD value to obtain the derived MVD components. .
[0168] In some instances, the conversion produces the first block of video from the bitstream representation. It is done.
[0169] In some examples, the transformation produces a bitstream representation of the first block of video. It is done.
[0170] In the list of examples herein, the term "transform" refers to the transformation of the video for the current video block. Generate a bitstream representation of the current video block, or generate a bitstream representation of the current video block from the bitstream representation. A bitstream representation can refer to a representation of a contiguous group of bits. It is not necessary to use the bit in the header field or the code name that represents the coded pixel value information. The number of pieces of information may be divided into several pieces.
[0171] In the above example, the applicability rules may be predefined and The encoding may be known to the reader and the decoder.
[0172] As described herein, the disclosed techniques include a video encoder or decoder. Various considerations regarding the use of differential coding modes in intra coding have been implemented in It will be appreciated that techniques including the use of suitable implementation rules may be used to improve compression efficiency.
[0173] The disclosed and other solutions, examples, embodiments, modules, The implementation of the functions and operations may be implemented in any manner including the structures disclosed herein and their structural equivalents. Any digital electronic circuit, including computer software, firmware or may be implemented in hardware, or in a combination of one or more thereof. The disclosed and other embodiments may include one or more computer program products. i.e. to be implemented by or to control the operation of a data processing apparatus one of computer program instructions encoded on a computer readable medium for controlling The computer-readable medium may be implemented as one or more modules. -readable storage device, machine-readable storage substrate, memory device, material providing a machine-readable propagating signal - Patents.com or a combination of one or more of these. The term may refer to, for example, a programmable processing device, a computer, or a plurality of processing devices, or any apparatus, device, or device for processing data, including a computer; This device includes a machine that, in addition to the hardware, also includes the execution environment of the computer program. The code that creates the system, e.g., processor firmware, protocol stacks, database management The components that make up the operating system, the management system, or a combination of one or more of these A propagated signal may include an artificially generated signal, e.g., a machine-generated signal. A digital signal is an electrical, optical, or electromagnetic signal that encodes information for transmission to an appropriate receiving device. It is generated to
[0174] Computer programs (programs, software, software applications) , script, or code) is a language that can be compiled or interpreted. It can be written in any form of programming language, including the Module suitable for use as a standalone program or in any computing environment. Deploy in any form, including as modules, components, subroutines, or other units. A computer program does not necessarily have to deal with files in a file system. Programs may not respond to requests from other programs or files that hold data. recorded in one or more scripts stored in a markup language document The program may be stored in a single file dedicated to the program, or in multiple files. A tuning file (e.g., one or more modules, subprograms, or pieces of code) A computer program may be stored in a file (a file storing the program). A single computer located at a site or a communication network distributed across multiple sites It can also be deployed to run on multiple computers interconnected by do.
[0175] The processes and logic flows described herein operate on input data and produce output. execute one or more computer programs to perform functions by creating The processing and logic flow may be implemented by one or more programmable processing devices. The PLC also uses application-specific logic circuits, such as field programmable gate arrays (FPGAs). This can be done by a chip array (Chip Array) or an ASIC (Application Specific Integrated Circuit), and the device can also It may also be implemented as special purpose logic circuitry.
[0176] Suitable processing devices for the execution of a computer program include, for example, general purpose and special purpose microprocessors. Both the processor and any one or more processors of any kind of digital computer Typically, a processing unit includes a read-only memory or a random access memory. The essential elements of a computer are the A processor for executing and one or more memory devices for storing instructions and data. Generally, a computer has one or more mass storage devices for storing data. The device may include, for example, a magnetic, magneto-optical, or optical disk. to receive data from or transfer data to these mass storage devices. However, the computer may be operatively coupled to such a device. It is not necessary to have a computer suitable for storing computer program instructions and data. Computer readable media includes any form of non-volatile memory, media, and memory devices. Including, for example, EPROM, EEPROM, flash storage, magnetic disks, e.g. Internal hard disk or removable disk, magneto-optical disk, and CD-ROM and semiconductor storage devices such as DVD-ROM disks. It may be supplemented by, or incorporated into, special purpose logic circuits. It may be included.
[0177] This patent specification contains many details, which may be misleading in any respect as to the scope or scope of any subject matter or claims. The present invention should not be construed as limiting the scope of the present invention, but rather as being specific to particular embodiments of particular technologies. The description of the possible features of the present invention should be interpreted as a description of the possible features of the present invention. Certain features described in the context may be implemented in combination in one example. Conversely, various features that are described in the context of one example may also be used in multiple embodiments. Further, the features may be implemented separately or in any suitable subcombination. The compounds described above as acting in specific combinations and initially claimed as such However, one or more features from a claimed combination may, in some cases, be combined. The claimed combination may be extracted from any combination of the claimed The present invention may be directed to variations in the above combinations.
[0178] Similarly, although operations may be shown in a particular order in the figures, this is not intended to be limiting as to how the desired results are achieved. that such actions be performed in the particular order or sequence shown, in order to It should not be construed as requiring that all acts shown be performed. Also, the separation of the various system components in the examples described in this patent specification is It should not be understood that all embodiments require such separation.
[0179] Only certain implementations and examples are described and illustrated in this patent document. Other embodiments, extensions, and variations are possible based on the content provided.
Claims
1. 1. A method for processing video data, comprising the steps of: determining a first motion vector difference (MVD) component of a first list included in the bitstream associated with a first block of a video for a first conversion between the first block and a bitstream of the video; determining a second MVD component of a second list associated with the first block based on the first MVD component; performing the first transformation based on at least the first MVD component and the second MVD component; the second MVD component is the negative of the first MVD component; The method, wherein the first list is list X with X=0 and the second list is correspondingly list Y with Y=1. determining a third MVD component included in the bitstream, the third MVD component being associated with the second block of the video for a second conversion between the second block of the video and the bitstream; performing the second transformation based on at least the third MVD component; The method of claim 1 , wherein the value of the third MVD component is limited to a predetermined range, the predetermined range being [−2 M , 2 M −1], where M=17.
3. The value of the first MVD component is a maximum value of 2 M The method of claim 1 , wherein the sigma-based ...
4. The value of the second MVD component is a maximum value of 2 M The method of claim 1 , wherein the sigma-based ...
5. The method of claim 2 , wherein the predetermined range of the third MVD component is adapted to an acceptable MVD precision and / or a permissible motion vector precision of a codec.
6. 2. The method of claim 1 , wherein M=K+L, K=13, L=4, where K indicates the number of bits used to represent the integer portion of the third MVD component and L indicates the number of bits used to represent the fractional portion of the third MVD component, the third MVD component being represented with ½L luma sample precision.
7. The method of claim 5 , wherein the allowed MVD precision and / or motion vector precision is 1 / 16 luma sample precision.
8. The method of any one of claims 1 to 7, wherein the first transformation comprises encoding the first block into the bitstream.
9. The method of any one of claims 1 to 7, wherein the first transformation comprises decoding the first block from the bitstream.
10. 1. An apparatus for processing video data comprising a processor and a non-transitory memory containing instructions, the instructions, when executed by the processor, causing the processor to: determining a first motion vector difference (MVD) component of a first list included in the bitstream associated with a first block of a video for a first conversion between the first block and a bitstream of the video; determining a second MVD component of a second list associated with the first block based on the first MVD component; performing the first transformation based on at least the first MVD component and the second MVD component; the second MVD component is the negative of the first MVD component; The apparatus, wherein the first list is list X with X=0 and the second list is correspondingly list Y with Y=1.
11. 1. A non-transitory computer-readable storage medium storing instructions, the instructions configuring a processor to: determining a first motion vector difference (MVD) component of a first list included in the bitstream associated with a first block of a video for a first conversion between the first block and a bitstream of the video; determining a second MVD component of a second list associated with the first block based on the first MVD component; performing the first transformation based on at least the first MVD component and the second MVD component; the second MVD component is the negative of the first MVD component; The first list is a list X with X=0 and the second list is correspondingly a list Y with Y=1.
12. A method for storing a video bitstream, the method comprising: determining a first motion vector difference (MVD) component of a first list associated with a first block of the image; determining a second MVD component of a second list associated with the first block based on the first MVD component; generating the bitstream based on at least the first MVD component and the second MVD component; storing the bitstream on a non-transitory computer-readable recording medium; the second MVD component is the negative of the first MVD component; The method, wherein the first list is list X with X=0 and the second list is correspondingly list Y with Y=1.