Improved adaptive motion vector difference resolution in intra-block copy mode

By using adaptive motion vector difference resolution technology, the inefficiency of existing video coding standards in processing on-screen content in intra-frame block copy mode is solved, achieving more efficient video coding and bandwidth utilization.

CN113826394BActive Publication Date: 2026-05-26DOUYIN VISION CO LTD +1

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
DOUYIN VISION CO LTD
Filing Date
2020-02-27
Publication Date
2026-05-26

Smart Images

  • Figure CN113826394B_ABST
    Figure CN113826394B_ABST
Patent Text Reader

Abstract

This disclosure relates to improvements in adaptive motion vector difference resolution in intra-block copy mode. A method for video processing includes: determining an allowable set of motion precisions for motion information during a conversion between a current video block and a bitstream representation of the current video block, wherein the current video block is encoded in intra-block copy (IBC) mode, wherein the motion information includes at least one of motion vectors, motion vector predictions, and motion vector differences; and performing the conversion based on the determined set of motion precisions.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-reference to related applications

[0002] This application is the Chinese national phase application of International Patent Application No. PCT / CN2020 / 076983, filed on February 27, 2020, and promptly claims priority and benefit to International Patent Application No. PCT / CN2019 / 076297, filed on February 27, 2019. The entire disclosure of the foregoing applications is incorporated herein by reference as part of the disclosure of this application. Technical Field

[0003] This patent document relates to video encoding and decoding technologies, devices, and systems. Background Technology

[0004] Despite advancements in video compression, digital video still accounts for the largest share of bandwidth usage on the internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, the bandwidth required for digital video usage is expected to continue to grow. Summary of the Invention

[0005] This paper describes devices, systems, and methods related to digital video coding, particularly motion vector coding for encoding vectors of content on screen. The described methods can be applied to existing video coding standards (e.g., Universal Video Coding) or standards that are to be finalized (Universal Video Coding). It may also be applicable to future video coding standards or video codecs.

[0006] In one representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes determining that members of a group comprising: (i) the current slice, (ii) the current slice group, (iii) the current strip, or (iv) the current picture; and in response to the determination, enabling or disabling one or more subpixel motion vector parameters.

[0007] In one representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes determining, based on a first indication in the bitstream representation of a current video block, whether subpixel motion precision of motion information is permitted for the current video block, wherein the motion information includes at least one of motion vector (MV), motion vector prediction (MVP), and motion vector difference (MVD); after determining that subpixel motion precision is not permitted, performing a conversion between the current video block and its bitstream representation using non-subpixel motion precision of the motion information.

[0008] In one representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes determining an allowable set of motion precisions for motion information during a conversion between a current video block and a bitstream representation of the current video block, wherein the current video block is encoded in an intra-block copy (IBC) mode, and wherein the motion information includes at least one of motion vectors, motion vector predictions, and motion vector differences; and performing a conversion based on the determined set of motion precisions.

[0009] In another representative aspect, the above methods are embodied in processor-executable code and stored in a computer-readable program medium.

[0010] In another representative aspect, an apparatus for a video system is disclosed, comprising a processor and a non-transitory memory having instructions thereon. The instructions executed by the processor cause the processor to implement any one or more of the disclosed methods.

[0011] Furthermore, in a representative aspect, any one or more of the disclosed methods are encoder-side implementations.

[0012] Furthermore, in a representative aspect, any one or more of the disclosed methods are decoder-side implementations.

[0013] The above and other aspects and features of the disclosed technology are described in more detail in the accompanying drawings, description and claims. Attached Figure Description

[0014] Figure 1 An example of an affine motion model is shown.

[0015] Figure 2 An example of the affine motion vector field for each sub-block is shown.

[0016] Figure 3A and 3B The 4-parameter affine model and the 6-parameter affine model are shown respectively.

[0017] Figure 4 An example motion vector prediction (MVP) for affine inter-frame mode is shown.

[0018] Figures 5A-5B Example candidates for the affine Merge pattern are shown.

[0019] Figure 6 Example candidate positions for the affine Merge pattern are shown.

[0020] Figure 7 An example of the mapping between distance offset and distance mapping is shown.

[0021] Figure 8An example of the final vector representation (UMVE) search process is shown.

[0022] Figure 9 An example of a UMVE search point is shown.

[0023] Figure 10 An example of intra-frame block copying is shown.

[0024] Figure 11 Examples of locations for potential airspace candidates are shown.

[0025] Figure 12 Examples of candidate pairs that have undergone redundancy checks for spatial merge candidates are shown.

[0026] Figure 13 An example of current coding tree unit (CTU) processing is shown.

[0027] Figure 14 Another example of CTU processing is shown.

[0028] Figure 15 This is a block diagram of an example hardware platform used to implement the visual media decoding or visual media encoding / decoding technologies described in this document.

[0029] Figure 16 A flowchart of an example method for video encoding is shown.

[0030] Figure 17 A flowchart of an example method for video processing is shown.

[0031] Figure 18 A flowchart of an example method for video processing is shown. Detailed Implementation

[0032] 1. Video encoding in HEVC

[0033] Video coding standards have primarily evolved through the development of well-known ITU-T and ISO / IEC standards. ITU-T produced H.261 and H.263, while ISO / IEC produced MPEG-1 and MPEG-4 Visual. Together, these two organizations developed the H.262 / MPEG-2 video and H.264 / MPEG-4 Enhanced Video Coding (AVC) and H.265 / HEVC standards. Starting with H.262, video coding standards have been based on a hybrid video coding architecture, utilizing temporal prediction and transform coding. To explore future video coding and decoding technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, JVET has adopted many new methods and incorporated them into reference software called the "Joint Exploration Model" (JEM). In April 2018, the Joint Video Experts Team (JVET) was established between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) to work on a Multi-Functional Video Coding (VVC) standard that aims to reduce the bit rate by 50% compared to HEVC.

[0034] 2.1 Inter-frame mode coding in HEVC

[0035] 7.3.6.1 Conventional Strip Section Header Syntax

[0036]

[0037] The table above shows the standard stripe segment header syntax. In this table, italicized and bold text indicates examples of new syntax elements used for bitstream description. These syntax elements, also referred to as advanced syntax in this document, indicate whether subpixel precision is allowed (enabled) or not allowed (disabled).

[0038] `motion_vector_resolution_control_idc` controls the presence and inference of `use_integer_mv_flag`, which specifies the resolution of the motion vectors used for inter-frame prediction. In the bitstream conforming to this specification, the value of `motion_vector_resolution_control_idc` is not equal to 3. The value 3 of `motion_vector_resolution_control_idc` is reserved for future use by ITU-T | ISO / IEC. If it does not exist, the value of `motion_vector_resolution_control_idc` is inferred to be equal to 0.

[0039] `use_integer_mv_flag` equal to 1 specifies that the resolution of the motion vectors used for inter-frame prediction in the current strip is an integer. `use_integer_mv_flag` equal to 0 specifies that the resolution of the motion vectors used for inter-frame prediction in the current strip, referencing an image other than the current image, is a fraction with one-quarter sample precision in units of luminance samples. If it does not exist, the value of `use_integer_mv_flag` is inferred to be equal to `motion_vector_resolution_control_idc`.

[0040] 2.2 Affine Motion Compensation Prediction

[0041] In HEVC, only the translational motion model is applied to motion compensation prediction (MCP). In the real world, various types of motion exist, such as zooming in / out, rotation, perspective motion, and other irregular motions. In JEM, a simplified affine transformation motion compensation prediction is applied. For example... Figure 1 As shown, the affine motion field of the block is described by two control point motion vectors.

[0042] The motion vector field (MVF) of a block is described by the following equation:

[0043] (1)

[0044] Among them (v) 0x , v 0y (v) is the motion vector of the top-left control point. 1x , v 1y ) is the motion vector of the upper right control point.

[0045] To further simplify motion compensation prediction, a sub-block-based affine transformation prediction is applied. Sub-block size... As derived in Equation 1, where MvPre is the fractional accuracy of the motion vector (1 / 16 in JEM), (v... 2x , v 2y ) is the motion vector of the lower left control point calculated according to Equation 1.

[0046] (2)

[0047] After deriving through Equation 2, M and N should be adjusted downwards if necessary so that they are the divisors of w and h, respectively.

[0048] To derive the motion vector for each M×N sub-block, the motion vector of the center sample point of each sub-block is calculated according to Equation 1, such as... Figure 2As shown, and rounded to 1 / 16 of the fractional accuracy.

[0049] After MCP, the high-accuracy motion vector of each sub-block is rounded and saved with the same accuracy as the normal motion vector.

[0050] 2.2.1 AF_INTER mode

[0051] In JEM, there are two affine motion modes: AF_INTER mode and AF_MERGE mode. AF_INTER mode can be applied to CUs with both width and height greater than 8. The affine flag at the CU level is signaled in the bitstream to indicate whether AF_INTER mode is used. In this mode, pairs of motion vectors are constructed using adjacent blocks. A candidate list. For example... Figure 4 As shown, select from the motion vectors of block A, B, or C. The motion vectors from neighboring blocks are scaled based on the reference list and the relationship between the image sequence count (POC) for references to neighboring blocks, the POC for the current CU's reference, and the POC of the current CU. Select from neighboring blocks D and E. The method is similar. If the number of candidates is less than 2, the list is populated by motion vector pairs formed by copying each AMVP candidate. When the candidate list is greater than 2, the candidates are first sorted according to the consistency of adjacent motion vectors (the similarity between the two motion vectors in the candidate pair), and only the top two candidates are retained. RD cost verification is used to determine which motion vector pair candidate is selected as the Control Point Motion Vector Prediction (CPMVP) for the current CU. The index indicating the position of the CPMVP in the candidate list is signaled in the bitstream. After determining the CPMVP of the current affine CU, affine motion estimation is applied and the Control Point Motion Vector (CPMV) is found. The difference between the CPMV and CPMVP is then signaled in the bitstream.

[0052] In AF_INTER mode, when using the 4 / 6 parameter affine mode, 2 / 3 control points can be used. Therefore, these control points need to be encoded with 2 / 3 MVD, such as... Figure 3A As shown. In JVET-K0337, the derivation of MV is proposed as follows, that is, predicting mvd1 and mvd2 from mvd0.

[0053]

[0054]

[0055]

[0056] in , and These are the predicted motion vector, motion vector difference, and motion vector for the top-left pixel (i = 0), top-right pixel (i = 1), or bottom-left pixel (i = 2), respectively. Figure 3B As shown. The addition of two motion vectors (e.g., mvA(xA, yA) and mvB(xB, yB)) is equal to the sum of the two components, i.e., newMV = mvA + mvB, and the two components of newMV are set as (xA + xB) and (yA + yB) respectively.

[0057] 2.2.2. Fast Affine ME Algorithm in AF_INTER Mode

[0058] In affine mode, the MV (Multiple Views) of two or three control points need to be jointly determined. Jointly searching multiple MVs directly is computationally complex. A fast affine ME (Multiple Views) algorithm is proposed and applied to VTM / BMS (Variable Views and Modules).

[0059] A fast affine ME algorithm is described for 4-parameter affine models, and the idea can be extended to 6-parameter affine models.

[0060] (3)

[0061] (4)

[0062] Replacing (a–1) with a', the motion vector can then be rewritten as:

[0063] (5)

[0064] Assuming the motion vectors of the two control points (0, 0) and (0, w) are known, the affine parameters can be derived from equation (5) as follows:

[0065] (6)

[0066] The motion vector can be rewritten in vector form as:

[0067] (7)

[0068] in

[0069] (8)

[0070] (9)

[0071] P = (x, y) is the pixel position.

[0072] On the encoder, MVD iteration of AF_INTER is obtained. MV i (P) represents the MV derived for position P in the i-th iteration, dMV C i This is represented as MV in the i-th iteration. C The update increment. Then in the (i + 1)th iteration,

[0073] (10)

[0074] Pic ref Pic is shown as a reference image. cur This represents the current image and indicates... Assuming MSE is used as the matching criterion, the following expression can be written:

[0075] (11)

[0076] Assumption Small enough, then It can be written as approximately a first-order Taylor expansion.

[0077] (12)

[0078] in, Denote ,

[0079] (13)

[0080] This can be derived by setting the derivative of the error function to zero. Then you can... Calculate the MV values ​​for control points (0, 0) and (0, w).

[0081] (14)

[0082] (15)

[0083] (16)

[0084] (17)

[0085] Assuming the MVD derivation process is iterated n times, the final MVD calculation is as follows:

[0086] (18)

[0087] (19)

[0088] (20)

[0089] (twenty one)

[0090] In some embodiments, that is, predicting the increment MV of the control point (0, w), the increment MV of the control point (0, 0) represented by mvd1, is now actually only The encoding is mvd1.

[0091] 2.2.3. AF_MERGE Mode

[0092] When CU is applied in affine Merge (AF_MERGE) mode, it obtains the first block encoded in affine mode from the valid neighbor reconstructed blocks. The selection order of candidate blocks is from left, top, top right, bottom left to top left, as follows: Figure 5A As shown. If the lower left block A of the neighboring block is encoded in affine mode, as... Figure 5B As shown, the motion vectors of the upper left, upper right, and lower left corners of the CU containing block A are then derived. , and .according to , and Calculate the motion vector of the upper left corner of the current CU. Secondly, calculate the motion vector at the upper right of the current CU. .

[0093] In deriving the current CU's CPMV and Then, the MVF of the current CU is generated according to the simplified affine motion model equation (1). In order to identify whether the current CU is encoded in AF_MERGE mode, when at least one neighboring block is encoded in affine mode, the affine flag is signaled in the bit stream.

[0094] In some embodiments, the affine Merge candidate list is constructed through the following steps:

[0095] 1) Insertion of affine candidates for inheritance

[0096] Inherited affine candidates refer to candidates derived from the affine motion models of their valid neighboring affine coding blocks. For example... Figure 6 As shown, based on the common basis, the scanning order of the candidate positions is: A1, B1, B0, A0 and B2.

[0097] 2) Insertion of constructed affine candidates

[0098] If the number of candidates in the affine Merge candidate list is less than MaxNumAffineCand (set to 5 in this contribution), the constructed affine candidate is inserted into the candidate list. Constructing an affine candidate refers to building candidates by combining the neighbor motion information of each control point.

[0099] First, from Figure 6 The specified spatial and temporal neighbors are shown to derive the motion information of the control point. CPk (k = 1, 2, 3, 4) represents the k-th control point. A0, A1, A2, B0, B1, B2, and B3 are the spatial locations used to predict CPk (k = 1, 2, 3); T is the temporal location used to predict CP4.

[0100] The coordinates of CP1, CP2, CP3 and CP4 are (0, 0), (W, 0), (H, 0) and (W, H) respectively, where W and H are the width and height of the current block.

[0101] Motion information for each control point is obtained according to the following priority order:

[0102] For CP1, the check priority is B2→B3→A2. If B2 is available, then B2 is used. Otherwise, if B2 is unavailable, then B3 is used. If neither B2 nor B3 is available, then A2 is used. If none of these three candidates are available, motion information for CP1 cannot be obtained.

[0103] For CP2, the inspection priority is B1→B0;

[0104] For CP3, the inspection priority is A1→A0;

[0105] For CP4, use T.

[0106] Secondly, combinations of control points are used to construct affine Merge candidates.

[0107] Motion information from three control points is needed to construct a 6-parameter affine candidate. Three control points can be selected from one of the following four combinations ({CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4}, {CP1, CP3, CP4}). The combinations {CP1, CP2, CP3}, {CP2, CP3, CP4}, and {CP1, CP3, CP4} will be transformed into a 6-parameter motion model represented by the top-left, top-right, and bottom-left control points.

[0108] Motion information from two control points is needed to construct a 4-parameter affine candidate. Two control points can be selected from one of the following six combinations ({CP1,CP4}, {CP2, CP3}, {CP1, CP2}, {CP2, CP4}, {CP1, CP3}, {CP3, CP4}). The combination {CP1, CP4}, {CP2, CP3}, {CP2, CP4}, {CP1, CP3}, {CP3, CP4} will be converted into 4-parameter motion model points represented by the top-left and top-right control points.

[0109] The combinations of constructed affine candidates are inserted into the candidate list in the following order:

[0110] {CP1, CP2, CP3}, {CP1, CP2, CP4}, {CP1, CP3, CP4}, {CP2, CP3, CP4}, {CP1, CP2}, {CP1, CP3}, {CP2, CP3}, {CP1, CP4}, {CP2, CP4}, {CP3, CP4}

[0111] For a combined reference list X (X is 0 or 1), the reference index with the highest usage of control points is selected as the reference index of list X, and the scaling is directed to the motion vector of the difference reference image.

[0112] After exporting the candidates, a full pruning process is performed to check if the same candidate has already been inserted into the list. If the same candidate exists, the exported candidate is discarded.

[0113] 3) Filling with zero motion vector

[0114] If the number of candidates in the affine Merge candidate list is less than 5, then a zero motion vector with a zero reference index is inserted into the candidate list until the list is full.

[0115] 2.3 Affine Merge Mode with Predictive Misalignment

[0116] In some embodiments, UMVE is extended to an affine merge mode. In this document, the terms "UMVE" and "affine mode" are used interchangeably. The proposed method selects the first available affine merge candidate as the base predictor. It then applies the motion vector offset from the base predictor to the motion vector value at each control point. If no affine merge candidate is available, the proposed method is not used.

[0117] The inter-frame prediction directions of the selected base predictor and the reference index for each direction remain unchanged.

[0118] In the current implementation, assuming the affine model of the current block is a 4-parameter model, only 2 control points need to be derived. Therefore, only the first two control points of the base predictor will be used as the control point predictor.

[0119] For each control point, the zero_MVD flag indicates whether the control point in the current block has the same MV value as the corresponding control point predictor. If the zero_MVD flag is true, no further signaling is required for that control point. Otherwise, the distance index and offset direction index are signaled for the control point.

[0120] Use a distance offset table of size 5, as shown in the table below. Signal the distance index to indicate which distance offset to use. The mapping between the distance index and the distance offset value is shown in... Figure 7 As shown in the image.

[0121] Table 1. Distance Offset Table

[0122]

[0123] The direction index can represent four directions, as shown below, where only the x or y direction may have an MV difference, but there is no MV difference in the other two directions.

[0124]

[0125] If inter-frame prediction is unidirectional, the distance offset from the signaling notification is applied to the offset direction of each control point predictor. The result will be the MV value for each control point.

[0126] For example, when the base predictor is unidirectional, the motion vector value of the control point is MVP(v). px , v py When the distance offset and direction index are notified by signaling, the motion vector of the control point corresponding to the current block will be calculated as follows.

[0127] MV(v x , v y ) = MVP (v px , v py ) + MV(x-dir-factor distance-offset, y-dir-factor distance-offset)

[0128] If inter-frame prediction is bidirectional, the signaled distance offset is applied to the L0 motion vector of the control point predictor in the offset direction; and the same distance offset in the opposite direction is applied to the L1 motion vector of the control point predictor. The result will be the MV value for each control point in each inter-frame prediction direction.

[0129] For example, when the base predictor is unidirectional, the motion vector value of the control point on L0 is MVP. L0 (v 0px , v 0py The motion vector of the control point on L1 is MVP. L1 (v 1px , v 1py After the distance offset and direction index are notified by signaling, the motion vector of the control point corresponding to the current block will be calculated as follows.

[0130] MV L0 (v 0x , v 0y ) = MVP L0 (v 0px , v 0py )+MV( x-dir-factor distance-offset, y-dir-factor distance-offset)

[0131] MV L1 (v 0x , v 0y ) = MVP L1 (v 0px , v 0py ) + MV( x-dir-factor distance-offset, y-dir-factor distance-offset)

[0132] 2.4 Final Motion Vector Expression

[0133] In some embodiments, a final motion vector representation (UMVE) is proposed. UMVE can be used for skip or merge modes via the proposed motion vector representation method.

[0134] UMVE reuses the same Merge candidates as those included in the regular Merge candidate list in VVC. Within the Merge candidates, a base candidate can be selected, and the candidates can be further expanded using the proposed motion vector representation method.

[0135] UMVE provides a new method for representing motion vector difference (MVD), which uses the origin, amplitude of motion, and direction of motion to represent MVD.

[0136] The proposed technique uses the Merge candidate list as is. However, only candidates of the default merge type (MRG_TYPE_DEFAULT_N) will be considered for UMVE extensions.

[0137] The basic candidate index (IDX) defines the starting point. The basic candidate index represents the best candidate among the candidates in the list, as shown below.

[0138] Table 2. Basic Candidate IDX

[0139]

[0140] If the number of basic candidates is equal to 1, then no signaling is needed to notify the basic candidate index.

[0141] The distance index is motion amplitude information. The distance index represents a predefined distance from the starting point. The predefined distances are as follows:

[0142] Table 3. Distance from IDX

[0143]

[0144] The direction index represents the direction of MVD relative to the starting point. The direction index can represent four directions, as shown below:

[0145] Table 4. Directional IDX

[0146]

[0147] Immediately after sending the skip or merge flag, signal the UMVE flag. If the skip or merge flag is true, the UMVE flag is parsed. If the UMVE flag is equal to 1, the UMVE syntax is parsed. However, if it is not 1, the AFFINE flag is analyzed. If the AFFINE flag is equal to 1, it is an AFFINE mode; however, if it is not equal to 1, the skip / merge index is parsed for the VTM's skip / merge mode.

[0148] Because of the UMVE candidates, no additional line buffer is needed. The software's skip / merge candidates are directly used as the base candidates. The MV complement is determined immediately before motion compensation using the input UMVE index. There is no need to reserve a long line buffer for this. Under current general test conditions, the first or second Merge candidate in the Merge candidate list can be selected as the base candidate.

[0149] UMVE is also known as Merge MVD (MMVD).

[0150] Figure 8 An example of the final vector representation (UMVE) search process is shown.

[0151] Figure 9 An example of a UMVE search point is shown.

[0152] 2.5 Intra-frame block copying

[0153] HEVC Screen Content Coding Extension (HEVC-SCC) and the current VVC test model (VTM-3.0) have adopted Intra-Block Copying (IBC), also known as Current Picture Reference. IBC extends the concept of motion compensation from inter-frame coding to intra-frame coding. Figure 10 As shown, when IBC is applied, the current block is predicted from a reference block in the same image. Samples in the reference block are reconstructed before the current block is encoded or decoded. Although IBC is not efficient for most camera-captured sequences, it shows a significant coding gain for screen content. This is because screen content images contain many repeating patterns, such as icons and text characters. IBC can effectively eliminate redundancy between these repeating patterns. In HEVC-SCC, if the current image is chosen as its reference image, the coding unit (CU) of inter-frame coding can apply IBC. In this case, the MV is renamed to a block vector (BV), and the BV always has integer pixel precision. For compatibility with the main HEVC profile, the current image is marked as the "long-term" reference image in the Decoded Picture Buffer (DPB). It should be noted that, similarly, in multi-view / 3D video coding standards, inter-view reference images are also marked as "long-term" reference images.

[0154] After finding its reference block in BV, predictions can be generated by copying the reference block. The residual can be obtained by subtracting the reference pixel from the original signal. Transformation and quantization can then be applied as in other coding modes.

[0155] However, some or all pixel values ​​are undefined when the reference block is outside the image, overlaps with the current block, is outside the reconstructed region, or is outside the valid region subject to certain constraints. Basically, there are two solutions to this problem. One is to prevent this situation, such as conforming to a bitstream. The other is to apply padding to those undefined pixel values. The following subsections describe the solutions in detail.

[0156] 2.6 IBC in HEVC Screen Content Encoding Extension

[0157] In HEVC's screen content encoding extension, when a block uses the current image as a reference, it should be ensured that the entire reference block is within the available reconstructed area, as indicated in the following text in the specification:

[0158] The derivation of variables offsetX and offsetY is as follows:

[0159]

[0160] This is a requirement for bitstream consistency, meaning that when the reference image is the current image, the luminance motion vector mvLX should adhere to the following constraints:

[0161] -When the derivation of the z-scan sequence block availability specified in Section 6.4.1 is to set (xCuee, yCurr) to (xCb, yCb), and set to equal to When the adjacent brightness positions (xNbY, yNbY) are used as input, the output should be true (TRUE).

[0162] -When the derivation of the z-scan sequence block availability specified in Section 6.4.1 is to set (xCuee, yCurr) to (xCb, yCb), and set to equal to When the adjacent brightness positions (xNbY, yNbY) are used as input, the output should be TRUE.

[0163] One or both of the following conditions must be true:

[0164] - The value is less than or equal to 0.

[0165] - The value is less than or equal to 0.

[0166] The following conditions must be true:

[0167]

[0168] Therefore, there will be no instances where the reference block overlaps with the current block or the reference block is outside the image. No need to fill reference or prediction blocks.

[0169] 2.7. IBC in the VVC Test Model

[0170] 2.7.1. IBC Merge Mode

[0171] In IBC Merge mode, indices pointing to entries in the IBC Merge candidate list are parsed from the bitstream. The construction of the IBC Merge list can be summarized in the following steps:

[0172] •Step 1: Derive spatial candidates

[0173] • Step 2: Insert HMVP candidate

[0174] • Step 3. Insert pairwise average candidates

[0175] In the derivation of the spatial Merge candidate, located in Figure 11 Up to four merged candidates are selected from the candidates for the described positions. The derivation order is A1, B1, B0, A0, and B2. Position B2 is considered only if any PU at positions A1, B1, B0, or A0 is unavailable (e.g., because it belongs to another strip or block) or is not encoded using IBC mode. After adding the candidate at position A1, redundancy checks are performed on the insertion of the remaining candidates, ensuring that candidates with the same motion information are excluded from the list, thus improving encoding efficiency. To reduce computational complexity, not all possible candidate pairs are considered in the aforementioned redundancy checks. Instead, only... Figure 12 The pairs connected by arrows are added to the list only if the corresponding candidates used for redundancy check have different motion information.

[0176] After inserting an empty domain candidate, if the IBC Merge list size is still smaller than the maximum IBC Merge list size, an IBC candidate from the HMVP table can be inserted. Redundancy checks are performed when inserting an HMVP candidate.

[0177] Finally, the paired average candidates are inserted into the IBC Merge list.

[0178] A Merge candidate is considered an invalid Merge candidate when the reference block identified by the Merge candidate is outside the image, overlaps with the current block, is outside the reconstructed region, or is outside the valid region subject to certain constraints.

[0179] Note that invalid Merge candidates can be inserted into the IBC Merge list.

[0180] 2.7.2 IBC AMVP Mode

[0181] In IBC AMVP mode, the AMVP index pointing to an entry in the IBC AMVP list is parsed from the bitstream. The construction of the IBC AMVP list can be summarized in the following steps:

[0182] •Step 1: Derive spatial candidates

[0183] o Check A0 and A1 until a usable candidate is found.

[0184] o Check B0, B1, B2 until a usable candidate is found.

[0185] • Step 2: Insert HMVP candidate

[0186] • Step 3: Insert zero candidate

[0187] After inserting a spatial candidate, if the size of the IBC AMVP list is still smaller than the size of the maximum IBC AMVP list, then an IBC candidate from the HMVP table can be inserted.

[0188] Finally, the zero candidate is inserted into the IBC AMVP list.

[0189] 2.7.3 Permissible Reference Areas in IBC

[0190] The CPR block size is limited to no more than 64x64 luminance samples.

[0191] Each 64x64 block in the reference memory buffer is treated as a whole. When a portion of a 64x64 block has already been updated with reconstructed samples from the current CTU, reference samples from the left CTU within the entire 64x64 block cannot be used. Figure 13 and 14 As shown. More specifically, based on the position of the current coding block relative to the current CTU, the following rules apply:

[0192] • If the current block falls within the top-left 64x64 block of the current CTU, it can reference reference points in the bottom-right 64x64 block of the left CTU using CPR mode, in addition to the samples already reconstructed in the current CTU. The current block can also reference reference points in the bottom-left 64x64 block and the top-right 64x64 block of the left CTU using CPR mode.

[0193] • If the current block falls within the upper right 64x64 block of the current CTU, then in addition to the reconstructed samples in the current CTU, if the brightness position (0, 64) relative to the current CTU has not yet been reconstructed, the current block can also use CPR mode to reference reference samples in the lower left and lower right 64x64 blocks of the left CTU; otherwise, the current block can also reference reference samples in the lower right 64x64 block of the left CTU.

[0194] • If the current block falls within the lower-left 64x64 block of the current CTU, then in addition to the already reconstructed samples in the current CTU, if the brightness position (64, 0) relative to the current CTU has not yet been reconstructed, the current block can also use CPR mode to reference reference samples in the upper-right and lower-right 64x64 blocks of the left CTU. Otherwise, the current block can also use CPR mode to reference reference samples in the lower-right 64x64 block of the left CTU.

[0195] • If the current block falls within the bottom right 64x64 block of the current CTU, then only CPR mode references samples that have already been reconstructed in the current CTU.

[0196] 2.8 Adaptive Motion Vector Difference Resolution

[0197] In HEVC, when the use_integer_mv_flag in the strip header is equal to 0, the motion vector difference (MVD) is signaled in units of one-quarter of the luma samples (between the motion vector in the PU and the predicted motion vector). In the VVC test model (VTM), Local Adaptive Motion Vector Resolution (AMVR) is introduced, where the motion vector and motion vector difference have the same precision, and each inter-frame coding unit can choose which resolution from a set of allowed precisions to utilize.

[0198] 2.8.1 AMVR for Inter-frame Translation Mode

[0199] In VTM, MVD can be encoded in units of quarter luminance samples, integer luminance samples, or four luminance samples. MVD resolution is controlled at the coding unit (CU) level, and each CU with at least one non-zero MVD component is conditionally signaled with an MVD resolution flag.

[0200] For a CU with at least one non-zero MVD component, a first flag is signaled to indicate whether quarter-luminance sample MV precision is used in the CU. When the first flag (equal to 1) indicates that quarter-luminance sample MV precision is not used, another flag is signaled to indicate whether integer luminance sample MV precision or four-luminance sample MV precision is used.

[0201] When the first MVD resolution flag of the CU is zero or not encoded for the CU (meaning all MVDs in the CU are zero), a quarter-lumen luminance sample MV resolution is used for the CU. When the CU uses integer luminance sample MV precision or four-lumen luminance sample MV precision, the MVPs in the CU's AMVP candidate list are rounded to the corresponding precision.

[0202] In IBC inter-frame mode, 1 / 4 pixel precision is disabled, and only 1 pixel and 4 pixel precision are allowed.

[0203] 2.8.2 AMVR for Affine Inter-Frame Mode

[0204] AMVR is extended to affine inter-frame mode and uses MV precision settings of {1 / 16, 1 / 4, 1} pixels. If an MV precision is selected for an affine-coded block, then, like AMVR, both the MVP candidate and MVD are rounded to the selected MV precision.

[0205] On the encoder side, one of three MV precipitates can be selected for affine-coded inter-frame blocks. In VTM, AMVP mode and affine inter-frame mode are checked together in a single loop. For 1 / 4 pixel MV precision, both AMVP and affine inter-frame modes are checked simultaneously. However, for 1 pixel and 4 pixel MV precision, only AMVP mode is checked. When AMVR is extended to affine inter-frame mode, affine inter-frame mode using 1 / 16 pixel MV precision is checked together with AMVP mode using 1 pixel MV precision, and affine inter-frame mode using 1 pixel MV precision is checked together with AMVP mode using 4 pixel MV precision.

[0206] Testing all three MV / MVD precisions in affine inter-frame mode would significantly increase coding complexity. To address this issue, the following fast algorithm was used:

[0207] 1. If the rate distortion cost of affine Merge / Skip mode, Merge / Skip mode, 1 / 4 pixel MV precision AMVP mode and affine inter-frame mode is checked and affine inter-frame mode is not selected, then 1 / 16 pixel MV precision and 1 pixel MV precision affine inter-frame modes will not be checked.

[0208] 2. The affine parameters obtained in the 1 / 4 pixel MV precision affine inter-frame mode were reused as the starting search points for the 1 / 16 pixel and 1 pixel MV precision affine inter-frame modes.

[0209] 2.8.3 Syntax and Semantics

[0210] 7.3.2.1 Sequence Parameter Set RBST Syntax

[0211]

[0212]

[0213]

[0214] 7.3.4.5 Encoding Unit Syntax

[0215]

[0216]

[0217]

[0218] A value of 1 for sps_amvr_enabled_flag indicates that adaptive motion vector differential resolution is used in motion vector coding. A value of 0 for amvr_enabled_flag indicates that adaptive motion vector differential resolution is not used in motion vector coding.

[0219] A value of 1 for `sps_affine_amvr_enabled_flag` specifies that adaptive motion vector difference resolution is used in motion vector coding in affine inter-frame mode. A value of 0 for `sps_affine_amvr_enabled_flag` specifies that adaptive motion vector difference resolution is not used in motion vector coding in affine inter-frame mode.

[0220] `amvr_flag[x0][y0]` specifies the resolution of the motion vector difference. Array indices `x0` and `y0` specify the position (x0, y0) of the top-left luminance sample of the coded block under consideration relative to the top-left luminance sample of the image. `amvr_flag[x0][y0]` equal to 0 specifies that the resolution of the motion vector difference is 1 / 4 of the luminance sample. `amvr_flag[x0][y0]` equal to 1 specifies that the resolution of the motion vector difference is further specified by `amvr_precision_flag[x0][y0]`.

[0221] When amvr_flag [x0][y0] does not exist, the inference is as follows:

[0222] – If sps_cpr_enabled_flag equals 1, then it is inferred that amvr_flag [x0] [y0] equals 1.

[0223] – Otherwise (sps_cpr_enabled_flag equals 0), infer that amvr_flag [x0] [y0] equals 0.

[0224] `amvr_precision_flag[x0][y0]` equal to 0 specifies that if `inter_affine_flag[x0][y0]` equals 0, the resolution of the motion vector difference is one integer luminance sample; otherwise, it is 1 / 16 of a luminance sample. `amvr_precision_flag[x0][y0]` equal to 1 specifies that if `inter_affine_flag[x0][y0]` equals 0, the resolution of the motion vector difference is four luminance samples; otherwise, it is one integer luminance sample. Array indices `x0` and `y0` specify the position (x0, y0) of the top-left luminance sample of the considered coded block relative to the top-left luminance sample of the image.

[0225] If amvr_precision_flag [x0] [y0] does not exist, it is inferred to be equal to 0.

[0226] The motion vector difference is modified as follows:

[0227] – If inter_affine_flag [x0][y0] equals 0, then the variable MvShift is obtained, and the variables MvdL0[x0][y0][0], MvdL0[x0][y0][1], MvdL1[x0][y0][0], and MvdL1[x0][y0][1] are modified as follows:

[0228] MvShift = (amvr_flag [x0] [y0] + amvr_precision_flag [x0] [y0]) << 1 (780)

[0229] MvShift = ( amvr_flag[ x0 ][ y0 ] + amvr_precision_flag[ x0 ][ y0 ] )<< 1(7-80)

[0230] MvdL0[ x0 ][ y0 ][ 0 ] = MvdL0[ x0 ][ y0 ][ 0 ] << ( MvShift + 2 )(7-81)

[0231] MvdL0[ x0 ][ y0 ][ 1 ] = MvdL0[ x0 ][ y0 ][ 1 ] << ( MvShift + 2 )(7-82)

[0232] MvdL1[ x0 ][ y0 ][ 0 ] = MvdL1[ x0 ][ y0 ][ 0 ]<<( MvShift + 2 )(7-83)

[0233] MvdL1[ x0 ][ y0 ][ 1 ] = MvdL1[ x0 ][ y0 ][ 1 ] << ( MvShift + 2 )(7-84)

[0234] Otherwise (inter_affine_flag [x0][y0] equals 1), the variable MvShift is obtained, and the variables MvdCpL0[x0][y0][0][0], MvdCpL0[x0][y0][0][1], MvdCpL0[x0][y0][1][0], MvdCpL0[x0][y0][1][1], MvdCpL0[x0][y0][2][0], and MvdCpL0[x0][y0][2][1] are modified as follows:

[0235] MvShift = amvr_coarse_precisoin_flag[ x0 ][ y0 ] ?

[0236] ( amvr_coarse_precisoin_flag[ x0 ][ y0 ] << 1 ) : ( - (amvr_flag[ x0 ][ y0 ] << 1) ) )(7-85)

[0237] MvdCpL0[ x0 ][ y0 ][ 0 ][ 0 ] = MvdCpL0[ x0 ][ y0 ][ 0 ][ 0 ] << (MvShift + 2 )(7-86)

[0238] MvdCpL1[ x0 ][ y0 ] [ 0 ][ 1 ] = MvdCpL1[ x0 ][ y0 ][ 0 ][ 1 ] <<( MvShift + 2 )(7-87)

[0239] MvdCpL0[ x0 ][ y0 ][ 1 ][ 0 ] = MvdCpL0[ x0 ][ y0 ][ 1 ][ 0 ] << (MvShift + 2 )(7-88)

[0240] MvdCpL1[ x0 ][ y0 ] [ 1 ][ 1 ] = MvdCpL1[ x0 ][ y0 ][ 1 ][ 1 ] <<( MvShift + 2 )(7-89)

[0241] MvdCpL0[ x0 ][ y0 ][ 2 ][ 0 ] = MvdCpL0[ x0 ][ y0 ][ 2 ][ 0 ] << (MvShift + 2 )(7-90)

[0242] MvdCpL1[ x0 ][ y0 ] [ 2 ][ 1 ] = MvdCpL1[ x0 ][ y0 ][ 2 ][ 1 ] <<( MvShift + 2 )(7-91)

[0243] 3. Disadvantages of existing AMVR implementation methods

[0244] There are some potential problems with the current AMVR design for encoding screen content:

[0245] 1) Although the chance of selecting subpixels is relatively low, subpixel motion vectors are still allowed in normal inter-frame mode.

[0246] 2) For inter-frame mode, 3 MV / MVD resolution is allowed, while for intra-frame block copy / current picture reference mode, only 2 MV / MVD resolution is allowed, which may not be optimal.

[0247] 4. Example Implementation of the Improved AMVR Method

[0248] To address the aforementioned issues, this paper describes several methods for introducing modified Adaptive Motion Vector Resolution (AMVR) designs for screen content encoding. In the following text, inter-frame images that can only be used as reference images are referred to as CPR-only inter-frame images.

[0249] The detailed embodiments described below should be considered as examples to explain general concepts. These embodiments should not be interpreted in a narrow sense. Furthermore, these embodiments can be combined in any way.

[0250] 1. When the current slice / slice / strip / image belongs to the screen content, you can disable subpixel motion vector (MV) and / or motion vector predictor (MVP) and / or motion vector difference (MVD).

[0251] a. Alternatively, it can also be indicated by a signal in the slice / slice / strip / picture / sequence / video parameter set or header whether it is screen content.

[0252] b. Alternatively, whether to disable or enable subpixel MV and / or MVP and / or MVD may depend on the syntax used in MMVD / UMVE mode to indicate enabling / disabling fractional MVD precision.

[0253] c. Alternatively, the signaling of whether to disable or enable subpixel MV and / or MVP and / or MVD can be used in the slice / slice / strip / picture / sequence / video parameter set or header.

[0254] d. When the current slice / slice / strip / image belongs to the screen content, the motion vector of each sub-block / block in affine mode can be rounded to integer pixel precision.

[0255] 2. In non-affine inter-frame mode, the set of allowed MV and / or MVP and / or MVD precisions for the current video / sequence / picture / group / strip may depend on a flag signaled in the VPS / SPS / PPS / group header / strip header.

[0256] a. In one example, a signal notification flag can be used in the VPS / SPS / PPS / slice header / strip header to indicate whether the current video / sequence / picture / slice / strip is screen content.

[0257] b. In one example, a flag indicating whether the current video / sequence / picture / slice / strip is allowed or not fractional distance (or fractional MVD) in MMVD can be used (e.g., the flag described in entry 5 of P1809117501H).

[0258] c. In one example, if the flag is true (or false), then {1 / 4, 1, 4} pixel MV and / or MVP and / or MVD precision can be used.

[0259] d. In one example, if the flag is false (or true), then {1, 2, 4} pixel MV and / or MVP and / or MVD precision can be used.

[0260] i. In one example, {1, 2, 8} pixel MV and / or MVP and / or MVD precision can be used.

[0261] ii. In one example, {1, 2, 16} pixel MV and / or MVP and / or MVD precision can be used.

[0262] iii. In one example, {1, 4, 8} pixel MV and / or MVP and / or MVD precision can be used.

[0263] iv. In one example, {1, 4, 16} pixel MV and / or MVP and / or MVD precision can be used.

[0264] v. In one example, {1, 8, 16} pixel MV and / or MVP and / or MVD precision can be used.

[0265] vi. In one example, {1, 2} pixel MV and / or MVP and / or MVD precision can be used.

[0266] vii. In one example, {1, 4} pixel MV and / or MVP and / or MVD precision can be used.

[0267] viii. In one example, {1, 8} pixel MV and / or MVP and / or MVD precision can be used.

[0268] ix. In one example, {1, 16} pixel MV and / or MVP and / or MVD precision can be used.

[0269] 3. In affine inter-frame mode, the set of MV and / or MVP and / or MVD precisions allowed by the current video / sequence / picture / group / strip header may depend on a flag signaled in the VPS / SPS / PPS / group header / strip.

[0270] a. In one example, a signal notification flag can be used in the VPS / SPS / PPS / sequence header / picture header / group header / strip header to indicate whether the current video / sequence / picture / group / strip is screen content.

[0271] b. In one example, a flag indicating whether fractional distance (or fractional MVD) is allowed or not allowed in MMVD for the current video / sequence / picture / slice / strip can be used (as described in bullet point 5 of P1809117501H).

[0272] c. In one example, if the flag is true (or false), then {1 / 4, 1, 1 / 16} pixel MV and / or MVP and / or MVD precision can be used.

[0273] d. In one example, if the flag is false (or true), then {1, 4, 1 / 4} pixel MV and / or MVP and / or MVD precision can be used.

[0274] i. In one example, {1 / 2, 2, 1 / 8} pixel MV and / or MVP and / or MVD precision can be used.

[0275] ii. In one example, {2, 8, 1 / 2} pixel MV and / or MVP and / or MVD precision can be used.

[0276] iii. In one example, {1, 2, 4} pixel MV and / or MVP and / or MVD precision can be used.

[0277] iv. In one example, {1, 2, 8} pixel MV and / or MVP and / or MVD precision can be used.

[0278] v. In one example, {1, 2, 16} pixel MV and / or MVP and / or MVD precision can be used.

[0279] vi. In one example, {1, 4, 8} pixel MV and / or MVP and / or MVD precision can be used.

[0280] vii. In one example, {1, 4, 16} pixel MV and / or MVP and / or MVD precision can be used.

[0281] viii. In one example, {1, 8, 16} pixel MV and / or MVP and / or MVD precision can be used.

[0282] ix. In one example, {1, 1 / 4} pixel MV and / or MVP and / or MVD precision can be used.

[0283] x. In one example, {1, 1 / 2} pixel MV and / or MVP and / or MVD precision can be used.

[0284] xi. In one example, {1, 1 / 8} pixel MV and / or MVP and / or MVD precision can be used.

[0285] xii. In one example, {1, 1 / 16} pixel MV and / or MVP and / or MVD precision can be used.

[0286] xiii. In one example, {1, 2} pixel MV and / or MVP and / or MVD precision can be used.

[0287] xiv. In one example, {1, 4} pixel MV and / or MVP and / or MVD precision can be used.

[0288] xv. In one example, {1, 8} pixel MV and / or MVP and / or MVD precision can be used.

[0289] xvi. In one example, {1, 16} pixel MV and / or MVP and / or MVD precision can be used.

[0290] 4. For IBC mode, it is recommended to use the other two allowed MVD precisions instead of using {1, 4} pixel MV and MVD precisions.

[0291] a. In one example, {1, 2} pixel MV and / or MVP and / or MVD precision can be used in IBC mode.

[0292] b. In one example, {1, 8} pixel MV and / or MVP and / or MVD precision can be used in IBC mode.

[0293] c. In one example, {1, 16} pixel MV and / or MVP and / or MVD precision can be used in IBC mode.

[0294] 5. For IBC mode, the same number of allowed MV and / or MVP and / or MVD resolutions as in normal inter-frame mode can be used.

[0295] a. As in the current AMVR in normal inter-frame mode, three MV and / or MVP and / or MVD precisions can be used.

[0296] i. In one example, {1, 2, 4} pixel MV and / or MVP and / or MVD precision can be used in IBC mode.

[0297] ii. In one example, {1, 2, 8} pixel MV and / or MVP and / or MVD precision can be used in IBC mode.

[0298] iii. In one example, {1, 2, 16} pixel MV and / or MVP and / or MVD precision can be used in IBC mode.

[0299] iv. In one example, {1, 4, 8} pixel MV and / or MVP and / or MVD precision can be used in IBC mode.

[0300] v. In one example, {1, 4, 16} pixel MV and / or MVP and / or MVD precision can be used in IBC mode.

[0301] vi. In one example, {1, 8, 16} pixel MV and / or MVP and / or MVD precision can be used in IBC mode.

[0302] b. Alternatively, for IBC mode, the same set of allowed MV and / or MVP and / or MVD resolutions as those for ordinary inter-frame modes described above can be used.

[0303] 6. It is recommended that the semantics of amvr_flag in the specification depend on certain high-level syntax, such as the high-level syntax mentioned above.

[0304] a. In one example, `amvr_flag` equal to 0 specifies that the resolution of the motion vector difference is 1 / 4 of the luminance sample when the advanced syntax indicates that subpixel or fractional precision is allowed; while `amvr_flag` equal to 0 specifies that the resolution of the motion vector difference is M luminance samples when the advanced syntax indicates that subpixel or fractional precision is not allowed. M is an integer value.

[0305] i. In one example, M can be set to 1, 2, 4, 8, or 16.

[0306] ii. In one example, it can be predefined in VPS / SPS / PPS / sequence header / picture header / piece group header / strip header or signaled to M.

[0307] iii. In one example, M can be conditionally notified by signals, such as based on the advanced syntax mentioned in 6.a.

[0308] iv. In one example, M may depend on the encoding mode, such as normal inter-frame mode and / or affine inter-frame mode and / or IBC mode.

[0309] 7. It is recommended that the semantics of amvr_precision_flag in the specification depend on certain high-level syntax, such as the high-level syntax mentioned above.

[0310] a. In one example, when the high-level syntax directive allows subpixel or fractional precision, the current semantics remain unchanged. However, when the high-level syntax directive does not allow subpixel or fractional precision, the following can be applied:

[0311] i. `amvr_precision_flag` equal to 0 specifies that if `inter_affine_flag` equals 0, the resolution of the motion vector difference is L0 luminance samples; otherwise, it is L1 luminance samples. `amvr_precision_flag` equal to 1 specifies that if `inter_affine_flag` equals 0, the resolution of the motion vector difference is L2 luminance samples; otherwise, it is L3 luminance samples.

[0312] b. In one example, any one of L0, L1, L2, L3 can be set to 1 or 2 or 4 or 8 or 16 or 1 / 16, 1 / 4, 1 / 2.

[0313] c. In one example, any of L0, L1, L2, and L3 can be predefined or signaled in VPS / SPS / PPS / Sequence Header / Picture Header / Piece Group Header / Strip Header.

[0314] d. In one example, any of L0, L1, L2, and L3 can be conditionally signaled based on the advanced syntax mentioned in 7.a.

[0315] e. In one example, any of L0, L1, L2, and L3 can depend on the coding mode, such as normal inter-frame mode and / or affine inter-frame mode and / or IBC mode.

[0316] 8. In one example, for both screen content and non-screen content, the set of MV and / or MVP and / or MVD precisions allowed in non-affine and / or affine interaction modes may be the same; however, the semantics of amvr_flag and / or amvr_precision_flag may depend on a flag signaled in the VPS / SPS / PPS / slice header / strip header, such as the flag described in bullet point 1.

[0317] a. In one example, if such a flag indicates that the current video / sequence / image / slice / strip is not screen content, the semantics of amvr_flag and / or amvr_precision_flag remain unchanged (i.e., the same as VVC).

[0318] b. In one example, if such a flag indicates that the current video / sequence / picture / slice / strip is screen content, then amvr_flag equal to 0 specifies the resolution of the motion vector difference as M luminance samples.

[0319] i. In one example, M can be set to equal 1.

[0320] ii. In one example, M can be set to equal 2 or 4 or 8 or 16 or 1 / 16 or 1 / 4 or 1 / 2.

[0321] iii. In one example, M can be predefined in VPS / SPS / PPS / sequence header / picture header / fragmentation header / strip header or notified by a signal.

[0322] iv. In one example, M may depend on the encoding mode, such as normal inter-frame mode and / or affine inter-frame mode and / or IBC mode.

[0323] 1. For example, for normal inter-frame mode and IBC mode, M can be set to equal 1, and for affine inter-frame mode, M can be set to equal 1 / 4.

[0324] 2. For example, for normal inter-frame mode, IBC mode, and affine inter-frame mode, M can be set to equal 1.

[0325] c. In one example, if such a flag indicates that the current video / sequence / image / slice / strip is screen content, then amvr_precision_flag equal to 0 specifies that the resolution of the motion vector difference is L0 luminance samples if inter_affine_flag equals 0, otherwise it is L1 luminance samples. amvr_precision_flag equal to 1 specifies that the resolution of the motion vector difference is L2 luminance samples if inter_affine_flag equals 0, otherwise it is L3 luminance samples.

[0326] i. In one example, L0 can be set to 1 / 4, L1 can be set to 1 / 4, L2 can be set to 4, and L3 can be set to 1 / 16.

[0327] ii. In one example, any one of L0, L1, L2, L3 can be set to 1 or 2 or 4 or 8 or 16 or 1 / 16, 1 / 4, 1 / 2.

[0328] iii. In one example, any of L0, L1, L2, and L3 can be predefined or signaled in VPS / SPS / PPS / Sequence Header / Picture Header / Piece Group Header / Strip Header.

[0329] iv. In one example, any of L0, L1, L2, and L3 can depend on the coding mode, such as normal inter-frame mode and / or affine inter-frame mode and / or IBC mode.

[0330] 5. Example implementations of the disclosed technology

[0331] Figure 15 This is a block diagram of a video processing apparatus 1500. Apparatus 1500 can be used to implement one or more methods described herein. Apparatus 1500 can be embodied in smartphones, tablets, computers, Internet of Things (IoT) receivers, etc. Apparatus 1500 may include one or more processors 1502, one or more memories 1504, and video processing hardware 1506. The processors 1502 can be configured to implement one or more methods described in this document. The memories 1504 can be used to store data and code for implementing the methods and techniques described herein. The video processing hardware 1506 can be used to implement some of the techniques described in this document in hardware circuitry and can be partly or entirely part of the processor 1502 (e.g., a graphics processing unit (GPU) core or other signal processing circuitry).

[0332] In this document, the term "video processing" can refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm can be applied during the conversion from the pixel representation of a video to the corresponding bitstream representation, and vice versa. As defined in the syntax, the bitstream representation of the current video block can, for example, correspond to bits juxtaposed or scattered at different positions within the bitstream. For example, a macroblock can be encoded based on the error residual values ​​of the transformation and encoding, and also using bits in the header and other fields in the bitstream.

[0333] It should be understood that several technologies have been disclosed, and by allowing the use of the technologies disclosed in this document, these technologies will be beneficial for combining video encoder and decoder embodiments within video processing devices such as smartphones, laptops, desktops and similar devices.

[0334] Figure 16This is a flowchart of an example method 1600 for video processing. Method 1600 includes, at 1610, determining that members of a group comprising the following are associated with content displayed on the screen: (i) the current slice, (ii) the current slice group, (iii) the current stripe, or (iv) the current picture. Method 1600 also includes, at 1620, enabling or disabling one or more subpixel motion vector parameters in response to the determination.

[0335] Figure 17 This is a flowchart of example method 1600 for video processing. Method 1700 includes, at 1710, determining whether the current video block allows subpixel motion precision of motion information based on a first indication in the bitstream representation of the current video block, wherein the motion information includes at least one of motion vector (MV), motion vector prediction (MVP), and motion vector difference (MVD). Method 1700 also includes, at 1720, after determining that subpixel motion precision is not allowed, performing a conversion between the current video block and the bitstream representation of the current video block using non-subpixel motion precision of the motion information.

[0336] Figure 18 This is a flowchart of an example method 1600 for video processing. Method 1800 includes, at 1810, determining an allowable set of motion precisions for motion information during the conversion between a current video block and its bitstream representation, wherein the current video block is encoded in intra-block copy (IBC) mode, and wherein the motion information includes at least one of motion vectors, motion vector predictions, and motion vector differences. Method 1800 further includes, at 1820, performing a conversion based on the determined set of motion precisions.

[0337] Some embodiments can be described using the following clause-based format.

[0338] 1. A method for video processing, comprising:

[0339] Determine which group members are associated with the content displayed on the screen, including: (i) the current slice, (ii) the current slice group, (iii) the current stripe, or (iv) the current picture; and

[0340] In response to a decision, enable or disable one or more sub-pixel motion vector parameters.

[0341] 2. The method according to Clause 1, wherein the subpixel motion vector parameters include any one of the following: motion vector, motion vector predictor, or motion vector difference.

[0342] 3. The method according to Clause 1, wherein the indication of the content displayed on the screen is signaled in the set of slices, slice groups, strips, pictures, sequences or video parameters.

[0343] 4. The method according to Clause 1, wherein the indication of the content displayed on the screen is signaled in the header of the slice, slice group, strip, picture, sequence or video parameter.

[0344] 5. The method according to Clause 1, wherein enabling or disabling one or more sub-pixel motion vector parameters is associated with the syntax of fractional motion vector difference accuracy.

[0345] 6. The method according to Clause 1, wherein one or more subpixel motion vector parameters are signaled to be enabled or disabled in a set of slice, slice group, strip, picture, sequence or video parameters.

[0346] 7. The method according to Clause 1, wherein one or more subpixel motion vector parameters are signaled to be enabled or disabled in the header of a slice, slice group, strip, picture, sequence or video parameter.

[0347] 8. The method pursuant to Clause 1 also includes:

[0348] In response to determining that the members of a group are associated with the content displayed on the screen, one or more sub-pixel motion vector parameters are rounded to one or more integer pixel motion vector parameters.

[0349] 9. The method according to Clause 8, wherein one or more sub-pixel motion vector parameters are for each block or sub-block, and wherein an affine mode is set.

[0350] 10. The method according to Clause 1, wherein a non-affine inter-frame mode is set, and wherein the allowed motion vector parameters depend on the values ​​of flags included in the Video Parameter Set (VPS), Sequence Parameter Set (SPS), Picture Parameter Set (PPS), Group Header, Slice Header, or Strip Header.

[0351] 11. The method of Clause 10, including the value of a flag in the VPS, SPS, PPS, group header, piece header or strip header indicating whether the following are associated with the content displayed on the screen: (i) the current piece, (ii) the current piece group, (iii) the current strip, or (iv) the current picture.

[0352] 12. The method according to Clause 10, wherein the sign indicates whether fractional distance or fractional motion vector difference is permitted or not.

[0353] 13. The method according to Clause 10, wherein, depending on the value of the flag, the motion vector parameters have a pixel precision according to one of the following sets: {1 / 4, 1, 4}, {1, 2, 4}, {1, 2, 8}, {1, 2, 16}, {1, 4, 8}, {1, 4, 16}, {1, 8, 16}, {1, 2}, {1, 4}, {1, 8} or {1, 16}.

[0354] 14. The method according to Clause 1, wherein an affine inter-frame mode is set, and wherein the permitted motion vector parameters depend on the values ​​of flags included in the Video Parameter Set (VPS), Sequence Parameter Set (SPS), Picture Parameter Set (PPS), Group Header, Frame Header, or Strip Header.

[0355] 15. The method of Clause 14, wherein the value of the flag included in the VPS, SPS, PPS, group header, piece header or strip header indicates whether the following are associated with the content displayed on the screen: (i) the current piece, (ii) the current piece group, (iii) the current strip, or (iv) the current picture.

[0356] 16. The method according to Clause 15, wherein the sign indicates whether fractional distance or fractional motion vector difference is permitted or not.

[0357] 17. The method according to Clause 16, wherein, depending on the value of the flag, the motion vector parameters have a pixel precision according to one of the following sets: {1 / 4, 1, 1 / 16}, {1, 4, 1 / 4}, {1 / 2, 2, 1 / 8}, {2, 8, 1 / 2}, {1, 2, 4}, {1, 2, 8}, {1, 2, 16}, {1, 4, 8}, {1, 4, 16}, {1, 8, 16}, {1, 1 / 4}, {1, 1 / 2}, {1, 1 / 8}, {1, 1 / 16}, {1, 2}, {1, 4}, {1, 8} or {1, 16}.

[0358] 18. The method according to Clause 1, wherein an IBC mode is set, and wherein the allowed motion vector parameters depend on the values ​​of flags included in the Video Parameter Set (VPS), Sequence Parameter Set (SPS), Picture Parameter Set (PPS), Group Header, Slice Header, or Strip Header.

[0359] 19. The method of Clause 18, including the value of a flag in the VPS, SPS, PPS, group header, piece header or strip header indicating whether the following are associated with the content displayed on the screen: (i) the current piece, (ii) the current group of pieces, (iii) the current strip, or (iv) the current picture.

[0360] 20. The method according to Clause 19, wherein the sign indicates whether fractional distance or fractional motion vector difference is permitted or not.

[0361] 21. The method according to Clause 16, wherein, depending on the value of the flag, the motion vector parameter has a pixel precision according to one of the following sets: {1, 2}, {1, 8}, or {1, 16}.

[0362] 22. The method according to Clause 1, wherein the number of resolutions of allowed motion vector parameters is the same for both normal inter-frame mode and IBC mode.

[0363] 23. The method according to Clause 22, wherein an IBC mode is set, and wherein the motion vector parameters have a pixel precision according to one of the following sets: {1, 2, 4}, {1, 2, 8}, {1, 2, 16}, {1, 4, 8}, {1, 4, 16}, or {1, 8, 16}.

[0364] 24. According to the method of Clause 1, wherein when the advanced syntax indicates that one or more subpixel motion vector parameters are enabled, the value of amvr_flag is equal to 0, specifying that the resolution of the motion vector parameters is 1 / 4 of the luminance sample.

[0365] 25. According to the method of Clause 1, wherein when the advanced syntax indicates that one or more subpixel motion vector parameters are disabled, the value of amvr_flag is equal to 1, specifying that the resolution of the motion vector parameters is M luminance samples.

[0366] 26. The method according to Clause 25, wherein M is 1, 2, 4, 8 or 16.

[0367] 27. The method according to Clause 25, wherein M is specified in the Video Parameter Set (VPS), Sequence Parameter Set (SPS), Picture Parameter Set (PPS), Slice Header, Slice Header, or Strip Header.

[0368] 28. The method according to Clause 25, wherein M depends on whether normal inter-frame mode, affine inter-frame mode or IBC mode is set.

[0369] 29. The method according to Clause 1, wherein when it is determined that one or more sub-pixel motion vector parameters are to be disabled, if inter_affine_flag is equal to 0, then the value of amvr_precision_flag is equal to 0, specifying that the resolution of the motion vector parameters is L0 luminance samples, otherwise it is L1 luminance samples.

[0370] 30. The method according to Clause 1, wherein when it is determined that one or more sub-pixel motion vector parameters are to be disabled, if inter_affine_flag is equal to 0, then the value of amvr_precision_flag is equal to 1, specifying that the resolution of the motion vector parameters is L2 luminance samples, otherwise it is L3 luminance samples.

[0371] 31. According to the method of clauses 29 to 30, where L0, L1, L2, L3 are taken from the set {1, 2, 4, 8, 16, 1 / 16, 1 / 4, 1 / 2}.

[0372] 32. The method according to Clauses 29 to 30, wherein L0, L1, L2, and L3 have predetermined values.

[0373] 33. The method according to Clauses 29 to 30, wherein L0, L1, L2, and L3 are taken from values ​​specified in the Video Parameter Set (VPS), Sequence Parameter Set (SPS), Picture Parameter Set (PPS), Group Header, Slice Header, or Strip Header.

[0374] 34. The method according to clauses 29 to 30, wherein the values ​​of L0, L1, L2, and L3 depend on whether normal inter-frame mode, affine inter-frame mode, or IBC mode is set.

[0375] 35. The method according to Clause 1, wherein for affine inter-frame mode and non-affine mode, the number of allowed resolutions of motion vector parameters is the same and independent of determination.

[0376] 36. The method according to Clause 35, wherein the values ​​of amvr_flag and amvr_precsion_flag are specified as a third flag in the Video Parameter Set (VPS), Sequence Parameter Set (SPS), Picture Parameter Set (PPS), Slice Header, Slice Header, or Strip Header.

[0377] 37. The method according to Clause 36, wherein if the third flag indicates that a member of the group is not associated with the content displayed on the screen, the values ​​of amvr_flag and amvr_precsion_flag remain unchanged.

[0378] 38. The method according to Clause 35, wherein if the third flag indicates that a member of the group is associated with the content displayed on the screen, then amvr_flag is set to 0 to specify the resolution of the motion vector parameters as M luminance samples.

[0379] 39. According to the method of Clause 38, where M equals 1.

[0380] 40. The method according to Clause 38, wherein M is equal to 2, 4, 8, 16, 1 / 16, 1 / 4 or 1 / 2.

[0381] 41. The method according to Clause 38, wherein M is specified in the Video Parameter Set (VPS), Sequence Parameter Set (SPS), Picture Parameter Set (PPS), Slice Header, Slice Header, or Strip Header.

[0382] 42. According to the method of Clause 38, M depends on whether normal inter-frame mode, affine inter-frame mode or IBC mode is set.

[0383] 43. The method according to Clause 38, wherein if the third flag indicates that a member of the group is associated with the content displayed on the screen, then amvr_precision_flag is set to 0, and if inter_affine_flag is equal to 0, then the resolution of the motion vector parameter is specified as L0 luminance samples, otherwise it is L1 luminance samples.

[0384] 44. The method according to Clause 38, wherein if the third flag indicates that a member of the group is associated with the content displayed on the screen, then amvr_precision_flag is set to 1, if inter_affine_flag is equal to 0, then the resolution of the motion vector parameters is specified as L2 luminance samples, otherwise L3 luminance samples.

[0385] 45. According to the method of clauses 43 to 44, where L0, L1, L2, L3 take values ​​from the set {1, 2, 4, 8, 16, 1 / 16, 1 / 4, 1 / 2}.

[0386] 46. ​​The method according to clauses 43 to 44, wherein L0, L1, L2, and L3 have predetermined values.

[0387] 47. The method according to Clauses 43 to 44, wherein L0, L1, L2, and L3 are taken from values ​​specified in the Video Parameter Set (VPS), Sequence Parameter Set (SPS), Picture Parameter Set (PPS), Group Header, Slice Header, or Strip Header.

[0388] 48. The method according to clauses 43 to 44, wherein the values ​​of L0, L1, L2, and L3 depend on whether normal inter-frame mode, affine inter-frame mode, or IBC mode is set.

[0389] 49. The method according to clauses 43 to 44, wherein L0 is set to 1 / 4, L1 is set to 1 / 4, L2 is set to 4, and L3 is set to 1 / 16.

[0390] 50. The method according to any one or more of clauses 1 to 49, wherein video processing is an implementation on the encoder side.

[0391] 51. The method according to any one or more of clauses 1 to 49, wherein video processing is an implementation on the decoder side.

[0392] 52. An apparatus in a video system, comprising a processor and a non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to implement any one or more of the methods in clauses 1 to 50.

[0393] 53. A computer program product stored on a non-transitory computer-readable medium, the computer program product comprising program code for performing any one or more of the methods in clauses 1 to 50.

[0394] Some embodiments can be described using the following clause-based format.

[0395] 1. A video processing method, comprising:

[0396] Based on a first indication in the bitstream representation of the current video block, determine whether the current video block allows subpixel motion precision of motion information, wherein the motion information includes at least one of motion vector (MV), motion vector prediction (MVP), and motion vector difference (MVD);

[0397] After determining that subpixel motion precision is not allowed, the conversion between the current video block and its bitstream representation is performed using the non-subpixel motion precision of the motion information.

[0398] 2. The method according to Clause 1, wherein the first instruction includes a first syntax signaled in at least one of a slice, slice group, strip, picture, sequence, video parameter set and video parameter header.

[0399] 3. According to the method of Clause 2, wherein the first syntax indicates whether a slice, slice group, strip, picture, sequence or video belongs to screen content.

[0400] 4. The method according to any one of clauses 1-3, wherein, in response to the current processing unit being screen content, the current processing unit does not allow subpixel motion precision, wherein the current processing unit includes a slice, a group of slices, a strip, a picture, a sequence, or a video.

[0401] 5. The method according to any one of clauses 1-4, wherein the first instruction includes a second syntax indicating whether subpixel motion precision is allowed in a Merge mode with motion vector difference (MMVD) mode.

[0402] 6. The method according to Clause 5, wherein in response to the fact that subpixel motion precision is not allowed in MMVD mode, the current video block is not allowed to have subpixel motion precision.

[0403] 7. The method according to any one of clauses 1-6, wherein the first indication includes a third syntax signaled in at least one of a slice, slice group, strip, picture, sequence, video parameter set, and video parameter header to indicate whether subpixel motion precision is not allowed in the slice, slice group, strip, picture, sequence, or video.

[0404] 8. The method according to any one of clauses 1 to 7, wherein, in response to the current video block not allowing subpixel motion precision, the motion information of the current video block is rounded to integer pixel precision.

[0405] 9. The method pursuant to any one of clauses 1 to 8 further includes:

[0406] Based on the second indication in the bitstream representation of the current video block, determine the set of motion precision for the allowed motion information of the current video block;

[0407] Based on the determined set of motion precision, perform the conversion between the current video block and the bitstream representation of the current video block.

[0408] 10. The method according to Clause 9, wherein the second instruction and the first instruction are implemented by the same sign.

[0409] 11. The method according to Clause 9 or 10, wherein, in response to the second indication being true, the motion precision set for the non-affine inter-frame mode includes {1 / 4, 1, 4}, {1, 2, 4}, {1, 2, 8}, {1, 2, 16}, {1, 4, 8}, {1, 4, 16}, {1, 8, 16}, {1, 2}, {1, 4}, {1, 8}, or {1, 16} sample precision.

[0410] 12. The method according to any one of clauses 9-11, wherein, in response to the second indication being false, the motion precision set for the non-affine inter-frame mode includes {1 / 4, 1, 4}, {1, 2, 4}, {1, 2, 8}, {1, 2, 16}, {1, 4, 8}, {1, 4, 16}, {1, 8, 16}, {1, 2}, {1, 4}, {1, 8}, or {1, 16} sample precision.

[0411] 13. The method according to any one of clauses 9 to 12, wherein, in response to the second indication being true, the motion precision set of the affine inter-frame mode includes {1 / 4, 1, 1 / 1 / 16}, {1, 4, 1 / 4}, {1 / 2, 2, 1 / 8}, {2, 8, 1 / 2}, {1, 2, 4}, {1, 2, 8}, {1, 2, 16}, {1, 4, 8}, {1, 4, 16}, {1, 8, 16}, {1, 1 / 4}, {1, 1 / 2}, {1, 1 / 8}, {1, 1 / 16}, {1, 2}, {1, 4}, {1, 8}, or {1, 16} sample precision.

[0412] 14. The method according to any one of clauses 9 to 13, wherein, in response to the second indication being false, the motion precision set of the affine inter-frame mode includes {1 / 4, 1, 1 / 1 / 16}, {1, 4, 1 / 4}, {1 / 2, 2, 1 / 8}, {2, 8, 1 / 2}, {1, 2, 4}, {1, 2, 8}, {1, 2, 16}, {1, 4, 8}, {1, 4, 16}, {1, 8, 16}, {1, 1 / 4}, {1, 1 / 2}, {1, 1 / 8}, {1, 1 / 16}, {1, 2}, {1, 4}, {1, 8}, or {1, 16} sample precision.

[0413] 15. The method pursuant to any one of clauses 1 to 14 further includes:

[0414] Based on the third indication in the bitstream representation of the current video block, determine the default motion precision for the motion information of the current video block; and

[0415] Based on the fourth indication in the bitstream representation of the current video block, determine whether to enable Adaptive Motion Vector Resolution (AMVR) for the current video block; and

[0416] In response to disabling AMVR for the current video block, a conversion between the current video block and its bitstream representation is performed based on the default motion precision.

[0417] 16. The method according to Clause 15, wherein the third instruction and the first instruction are implemented by the same sign.

[0418] 17. The method according to Clause 15 or 16, wherein the fourth instruction includes a fourth syntax indicating whether AMVR is enabled for the current video block.

[0419] 18. The method according to any one of clauses 15 to 17, wherein the fourth instruction is amvr_flag, and an amvr_flag with a value of 0 indicates that AMVR is disabled for the current video block, while an amvr_flag with a value of 1 indicates that AMVR is enabled for the current video block.

[0420] 19. The method according to any one of clauses 15 to 18, wherein when the third indication indicates that subpixel motion precision is permitted, the default motion precision is set to be equal to 1 / 4 of the luminance sample precision.

[0421] 20. The method according to any one of clauses 15 to 19, wherein when the third indication indicates that subpixel motion precision is not allowed, the default motion precision is set to be equal to the M1 luminance sample precision.

[0422] 21. The method according to any one of clauses 15 to 20, wherein when the third indication indicates that the current video block is screen content, the default motion precision is set to be equal to the M2 luminance sample precision.

[0423] 22. The method according to Clause 20, wherein the value of M1 is taken from 1, 2, 4, 8 and 16.

[0424] 23. The method according to Clause 21, wherein the value of M2 is 1, 2, 4, 8, 16, 1 / 16, 1 / 4 or 1 / 2.

[0425] 24. The method according to any one of clauses 21 to 23, wherein M1 and M2 are notified by signaling in at least one of a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), a group header, a slice header, or a strip header.

[0426] 25. The method according to any one of clauses 21 to 24, wherein M1 and M2 are notified by signal based on a third instruction.

[0427] 26. The method according to any one of clauses 21 to 24, wherein M1 and M2 are based on an encoding mode, the encoding mode being one of a non-affine inter-frame mode, an affine inter-frame mode, and an IBC mode.

[0428] 27. The method according to any one of clauses 1-26 further includes:

[0429] Based on the fifth and sixth indicators in the bitstream representation of the video, a non-default motion precision is determined for the motion information of the current video block, where Adaptive Motion Vector Resolution (AMVR) is enabled for the current video block; and

[0430] Based on the determined motion precision, perform the conversion between the current video block and its bitstream representation.

[0431] 28. The method according to Clause 27, wherein the fifth instruction is the same as the first instruction.

[0432] 29. The method according to Clause 27 or 28, wherein the sixth instruction is amvr_precision_flag.

[0433] 30. The method according to Clause 29, wherein, in response to the fifth indication indicating that subpixel motion precision is not allowed, for non-affine inter-frame mode, an amvr_precision_flag value of 0 indicates a motion precision of L0 luminance samples, while for affine inter-frame mode, an amvr_precision_flag value of 0 indicates a motion precision of L1 luminance samples.

[0434] 31. The method according to Clause 29, wherein, in response to the fifth indication indicating that subpixel motion precision is permitted, for non-affine inter-frame mode, an amvr_precision_flag value of 1 indicates a motion precision of L2 luminance samples, while for affine inter-frame mode, an amvr_precision_flag value of 1 indicates a motion precision of L3 luminance samples.

[0435] 32. The method according to Clause 29, wherein, in response to the fifth indication that the current video block is not screen content, for non-affine inter-frame mode, an amvr_precision_flag value of 0 indicates a motion precision of L0 luminance samples, while for affine inter-frame mode, an amvr_precision_flag value of 0 indicates a motion precision of L1 luminance samples.

[0436] 33. The method according to Clause 29, wherein, in response to the fifth indication that the current video block is screen content, for non-affine inter-frame mode, an amvr_precision_flag value of 1 indicates a motion precision of L2 luminance samples, while for affine inter-frame mode, an amvr_precision_flag value of 1 indicates a motion precision of L3 luminance samples.

[0437] 34. The method according to Clause 33, wherein the value of any one of L0, L1, L2, L3 is taken from 1, 2, 4, 8, 16, 1 / 16, 1 / 4, 1 / 2.

[0438] 35. The method according to Clause 33, wherein any one of L0, L1, L2, L3 is notified by signaling in at least one of the Video Parameter Set (VPS), Sequence Parameter Set (SPS), Picture Parameter Set (PPS), Slice Header, Slice Header, or Strip Header.

[0439] 36. The method according to Clause 33, wherein any one of L0, L1, L2, L3 is notified by signal based on the fifth instruction.

[0440] 37. The method according to Clause 33, wherein any one of L0, L1, L2, L3 is based on a coding mode, the coding mode being one of a non-affine inter-frame mode, an affine inter-frame mode, and an IBC mode.

[0441] 38. The method according to any one of clauses 1-37, wherein the first set of permissible motion precisions of the non-affine inter-frame patterns of screen content is the same as the second set of permissible motion precisions of the non-affine inter-frame patterns of non-screen content.

[0442] 39. The method according to any one of clauses 1-37, wherein the first set of permissible motion precisions of the affine inter-frame mode of the screen content is the same as the second set of permissible motion precisions of the affine inter-frame mode of the non-screen content.

[0443] 40. A video processing apparatus, comprising a processor configured to implement the method of any one of clauses 1 to 39.

[0444] 41. The apparatus pursuant to Clause 40, wherein the apparatus is a video encoder.

[0445] 42. The apparatus pursuant to Clause 40, wherein the apparatus is a video decoder.

[0446] 43. A computer-readable recording medium having a program including code thereon, the program being used by a processor to perform the method of any one of clauses 1 to 39.

[0447] Some embodiments can be described using the following clause-based format.

[0448] 1. A video processing method, comprising:

[0449] During the transition between the current video block and its bitstream representation, an allowable set of motion precision is determined for the motion information, wherein the current video block is encoded in intra-block copy (IBC) mode, and wherein the motion information includes at least one of motion vectors, motion vector predictions, and motion vector differences.

[0450] The transformation is performed based on the determined set of motion precision.

[0451] 2. According to the method of Clause 1, wherein the determined set of permissible motion accuracy includes the sample point accuracy of {1, 2}.

[0452] 3. According to the method of Clause 1, wherein the determined set of permissible motion accuracy includes the accuracy of sample points {1, 8}.

[0453] 4. According to the method of Clause 1, wherein the determined set of permissible motion accuracy includes the accuracy of {1, 16} sample points.

[0454] 5. The method according to any one of clauses 1 to 4, wherein the first number of motion precisions allowed by the IBC mode is the same as the second number of motion precisions allowed by the normal inter-frame mode.

[0455] 6. The method according to Clause 5, wherein the normal inter-frame mode includes the non-affine advanced motion vector prediction (AMVP) mode.

[0456] 7. According to the method of Clause 5, the second quantity is 3.

[0457] 8. According to the method of any one of Clauses 1 to 7, the set of MV / MVP / MVD precisions allowed by the IBC mode includes {1, 2, 4}, {1, 2, 8}, {1, 2, 16}, {1, 4, 8}, {1, 4, 16} or {1, 8, 16} sample precisions.

[0458] 9. The method according to any one of clauses 1 to 8, wherein the set of motion precisions allowed by the IBC mode is the same as the set of motion precisions allowed by the normal inter-frame mode.

[0459] 10. A video processing apparatus, comprising a processor configured to implement the method of any one of clauses 1 to 9.

[0460] 11. The apparatus according to Clause 10, wherein the apparatus is a video encoder.

[0461] 12. The apparatus pursuant to Clause 10, wherein the apparatus is a video decoder.

[0462] 13. A computer-readable recording medium having a program including code recorded thereon, the program being used by a processor to perform any one of the methods of clauses 1 to 9.

[0463] The disclosed and other solutions, examples, embodiments, modules, and functional operations described in this document can be implemented in digital electronic circuits, or in computer software, firmware, or hardware, including the structures disclosed in this document and their structural equivalents, or in combinations thereof. The disclosed and other embodiments can be implemented as one or more computer program products, i.e., one or more computer program instruction modules encoded on a computer-readable medium for operation by a data processing apparatus or for controlling the operation of a data processing apparatus. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of material that influences machine-readable propagated signals, or a combination thereof. The term "data processing apparatus" includes all means, devices, and machines for processing data, including, for example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, the apparatus may include code that creates an operating environment for the computer program in question, such as code constituting processor firmware, a protocol stack, a database management system, an operating system, or a combination thereof. The propagated signals are artificially generated signals, such as machine-generated electrical, optical, or electromagnetic signals, which are generated to encode information for transmission to a suitable receiver device.

[0464] Computer programs (also known as programs, software, software applications, scripts, or code) can be written in any programming language, including compiled or interpreted languages, and can be deployed in any form, including as standalone programs or as modules, components, subroutines, or other units suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinating files (e.g., a file storing one or more modules, subroutines, or portions of code). Computer programs can be deployed to execute on one or more computers located at a single site or distributed across multiple sites interconnected by a communication network.

[0465] The processing and logic flows described in this document can be executed by one or more programmable processors that run one or more computer programs to perform functions by manipulating input data and generating output. The processing and logic flows can also be executed by dedicated logic circuitry, and the device can be implemented as dedicated logic circuitry, such as an FPGA (Field-Programmable Gate Array) or an ASIC (Application-Specific Integrated Circuit).

[0466] For example, processors suitable for running computer programs include general-purpose and special-purpose microprocessors, as well as any one or more processors in any type of digital computer. Typically, a processor receives instructions and data from read-only memory or random access memory, or both. The basic components of a computer are a processor that executes instructions and one or more storage devices that store those instructions and data. Typically, a computer will also include one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, or operatively coupled to one or more mass storage devices to receive data from or transfer data to, or both. However, a computer does not necessarily need to have such devices. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including, for example, semiconductor memory devices such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. Processors and memory may be supplemented by or incorporated into special-purpose logic circuitry.

[0467] While this patent document contains numerous details, it should not be construed as limiting any subject matter or the scope of the claims, but rather as a description of features specific to particular embodiments of a particular invention. Certain features described in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various functions described in the context of a single embodiment may also be implemented individually in multiple embodiments, or in any suitable sub-combination. Furthermore, while features may be described as functioning in certain combinations, or even initially claimed in this way, in some cases one or more features may be removed from the claimed combination, and the claimed combination may refer to a sub-combination or a variation of a sub-combination.

[0468] Similarly, although operations are described in a specific order in the accompanying drawings, this should not be construed as meaning that these operations must be performed in the specific order or sequence shown, or that all of the operations shown must be performed, in order to obtain the desired result. Furthermore, the separation of various system components in the embodiments described in this patent document should not be construed as requiring such separation in all embodiments.

[0469] Only some implementation methods and examples have been described. Other implementation methods, enhancements and variations can be made based on the content described and illustrated in this patent document.

Claims

1. A video processing method, comprising: During the conversion between the current video block and the bitstream of the current video block, an allowable set of motion precision is determined for motion information, wherein the current video block is encoded in intra-block copy (IBC) mode, and wherein the motion information includes at least one of motion vectors, motion vector predictions, and motion vector differences; The conversion is performed based on the determined set of motion precision. The first amount of motion precision allowed in IBC mode is the same as the second amount of motion precision allowed in normal inter-frame mode. The method further includes: Based on a first indication in the bitstream of the first video block, determine whether the first video block allows sub-pixel motion precision of motion information, wherein the motion information includes at least one of motion vector, motion vector prediction, and motion vector difference; After determining that the sub-pixel motion precision is not allowed, the conversion between the first video block and the bitstream of the first video block is performed using the non-sub-pixel motion precision of the motion information. The first indication includes a first syntax signaled in at least one of slices, slice groups, strips, images, sequences, video parameter sets, and video parameter headers, the first syntax indicating whether a slice, slice group, strip, image, sequence, or video belongs to screen content, and the first indication is implemented by the first syntax.

2. The method according to claim 1, wherein, The determined set of permissible motion accuracy includes the sample point accuracy of {1, 2}.

3. The method according to claim 1, wherein, The determined set of permissible motion accuracy includes sample point accuracy of {1, 8}.

4. The method according to claim 1, wherein, The determined set of permissible motion accuracy includes sample point accuracy of {1, 16}.

5. The method according to claim 1, wherein, The normal inter-frame mode includes the non-affine advanced motion vector prediction (AMVP) mode.

6. The method according to claim 1, wherein, The second quantity is 3.

7. The method according to any one of claims 1 to 6, wherein the set of MV / MVP / MVD precisions allowed by the IBC mode includes {1, 2, 4}, {1, 2, 8}, {1, 2, 16}, {1, 4, 8}, {1, 4, 16} or {1, 8, 16} sample point precisions.

8. The method according to any one of claims 1 to 6, wherein, The set of motion precision allowed in IBC mode is the same as that allowed in normal inter-frame mode.

9. The method according to any one of claims 1 to 6, wherein, The conversion includes encoding the current video block into the bitstream.

10. The method according to any one of claims 1 to 6, wherein, The conversion includes decoding the current video block from the bitstream.

11. A video processing apparatus, comprising a processor and a non-transitory memory having instructions thereon, wherein, When the instruction is executed by the processor, the processor: During the conversion between the current video block and the bitstream of the current video block, an allowable set of motion precision is determined for motion information, wherein the current video block is encoded in intra-block copy (IBC) mode, and wherein the motion information includes at least one of motion vectors, motion vector predictions, and motion vector differences; The conversion is performed based on the determined set of motion precision. The first amount of motion precision allowed in IBC mode is the same as the second amount of motion precision allowed in normal inter-frame mode. Wherein, when the instruction is executed by the processor, the processor also causes the processor to: Based on a first indication in the bitstream of the first video block, determine whether the first video block allows sub-pixel motion precision of motion information, wherein the motion information includes at least one of motion vector, motion vector prediction, and motion vector difference; After determining that the sub-pixel motion precision is not allowed, the conversion between the first video block and the bitstream of the first video block is performed using the non-sub-pixel motion precision of the motion information. The first indication includes a first syntax signaled in at least one of slices, slice groups, strips, images, sequences, video parameter sets, and video parameter headers, the first syntax indicating whether a slice, slice group, strip, image, sequence, or video belongs to screen content, and the first indication is implemented by the first syntax.

12. A non-transitory computer-readable storage medium having instructions stored thereon, the instructions causing a processor to: During the conversion between the current video block and the bitstream of the current video block, an allowable set of motion precision is determined for the motion information, wherein, The current video block is encoded in intra-block copy (IBC) mode, wherein the motion information includes at least one of motion vector, motion vector prediction, and motion vector difference; The conversion is performed based on the determined set of motion precision. The first amount of motion precision allowed in IBC mode is the same as the second amount of motion precision allowed in normal inter-frame mode. The instructions also cause the processor to: Based on a first indication in the bitstream of the first video block, determine whether the first video block allows sub-pixel motion precision of motion information, wherein the motion information includes at least one of motion vector, motion vector prediction, and motion vector difference; After determining that the sub-pixel motion precision is not allowed, the conversion between the first video block and the bitstream of the first video block is performed using the non-sub-pixel motion precision of the motion information. The first indication includes a first syntax signaled in at least one of slices, slice groups, strips, images, sequences, video parameter sets, and video parameter headers, the first syntax indicating whether a slice, slice group, strip, image, sequence, or video belongs to screen content, and the first indication is implemented by the first syntax.

13. A non-transitory computer-readable medium having a computer program and a bit stream stored thereon, wherein, When the computer program is executed by the video processing device, it implements the video processing method of any one of claims 1-9 to generate the bitstream.

14. A method for storing a bit stream, comprising: The bitstream is generated by performing the video processing method according to any one of claims 1-9; as well as The bit stream is stored in a non-transitory computer-readable storage medium.