METHODS AND DEVICES FOR GEOMETRIC PARTITIONING MODE WITH MOTION VECTOR REFINEMENT
Patent Information
- Authority / Receiving Office
- MX · MX
- Patent Type
- Patents
- Current Assignee / Owner
- BEIJING DAJIA INTERNET INFORMATION TECH CO LTD
- Filing Date
- 2023-11-08
- Publication Date
- 2026-05-19
AI Technical Summary
Existing video coding standards, such as VVC and AVS3, face inefficiencies in the geometric partition mode (GPM) due to inaccurate motion vectors and increased signaling overhead, particularly when applied to non-merged intermediate CUs and explicit inter-type modes.
The proposed methods enhance GPM by introducing motion vector refinements (GPM-MVR) and explicit motion signaling (GPM-EMS) to improve accuracy and reduce signaling overhead, using predefined MVD magnitudes and directions, and adaptive MVR values based on video content characteristics.
The enhanced GPM mode achieves improved coding efficiency by providing more accurate motion vectors and reducing signaling overhead, leading to better compression performance and reduced bit rate.
Smart Images

Figure MX434123B0
Abstract
Description
METHODS AND DEVICES FOR GEOMETRIC PARTITIONING MODE WITH MOTION VECTOR REFINEMENT FIELD OF INVENTION
[0002] This description relates to video encoding and compression. More specifically, this description relates to methods and apparatus for improving the encoding efficiency of Geometric Partition Mode (GPM), also known as Angle Weighted Prediction Mode (AWP). BACKGROUND OF THE INVENTION
[0003] Various video coding techniques can be used to compress video data. Video coding is performed according to one or more video coding standards. For example, some well-known video coding standards today include Versatile Video Coding (WC), High Efficiency Video Coding (HEVC, also known as H.265 or MPEG-H Part 2), and Advanced Video Coding (AVC, also known as H.264 or MPEG-4 Part 10), which were developed by a joint team comprised of ISO / IEC MPEG and ITU-T VECG. AOMedia Video 1 (AV1) was developed by the Alliance for Open Media (AOM) as the successor to its earlier VP9 standard. Audio Video Coding (AVS), which refers to the digital audio and video compression standard, is another series of video compression standards developed by the China Audio Video Coding Standards Working Group.Most existing video coding standards are based on the well-known hybrid video coding framework. This means they use block-based prediction methods (e.g., inter-prediction and intra-prediction) to reduce redundancy in video images or sequences and employ transform coding to compress the power of prediction errors. A key objective of video coding techniques is to compress video data to generate a format that uses a lower bit rate while simultaneously avoiding or minimizing video quality degradation. SUMMARY OF THE INVENTION
[0004] The present description provides methods and apparatus for video encoding, as well as a non-transient, computer-readable storage medium. Abzc in / cznz / e / YiAi
[0005] Pursuant to a first aspect of the present description, a method is provided for decoding a video block in GPM mode. The method may include receiving a control variable associated with the video block, wherein the control variable allows adaptive switching between a plurality of motion vector refinement (MVR) deflection sets, and the control variable is applied at an encoding level. The method may include segmenting the video block into a first geometric partition and a second geometric partition. The method may include receiving one or more syntax elements for determining a first MVR deflection and a second MVR deflection to be applied to the first and second geometric partitions from a selected set of MVR deflections.The method may include obtaining a first motion vector (MV) and a second MV from a list of candidates for the first and second geometric partitions. The method may also include calculating a refined first MV and a refined second MV based on the first and second MVs and the first and second MVR deviations. Furthermore, the method may include obtaining prediction samples for the video block based on the refined first and second MVs.
[0006] Pursuant to a second aspect of the present description, an apparatus for video decoding is provided. The apparatus may include one or more processors and a non-transient, computer-readable storage medium. The non-transient, computer-readable storage medium is configured to store instructions executable through one or more processors. The processor(s), after execution of the instructions, are configured to perform the method according to the first aspect.
[0007] Pursuant to a third aspect of the present description, a non-transient, computer-readable storage medium is provided. The non-transient, computer-readable storage medium can store computer-executable instructions that, when executed through one or more computer processors, cause the computer processor(s) to perform the method according to the first aspect. BRIEF DESCRIPTION OF THE DRAWINGS
[0008] The accompanying drawings, which are incorporated into and form part of this specification, illustrate examples that are consistent with this disclosure and, together with the description, serve to explain the principles of disclosure.
[0009] Figure 1 is a block diagram of an encoder according to an example in the present description.
[0010] Figure 2A is a diagram that illustrates the block partitions in a multi-type tree structure according to an example in the present description.
[0011] Figure 2B is a diagram illustrating block partitions in a multi-type tree structure, according to an example in the present description.
[0012] Figure 2C is a diagram illustrating block partitions in a multi-type tree structure according to an example in the present description.
[0013] Figure 2D is a diagram illustrating block partitions in a multi-type tree structure according to an example in the present description.
[0014] Figure 2E is a diagram illustrating block partitions in a multi-type tree structure according to an example in the present description.
[0015] Figure 3 is a block diagram of a decoder according to an example in the present description.
[0016] Figure 4 is an illustration of the permitted geometric partitioning (GPM) partitions according to an example in the present description. Figure 5 is a table that illustrates a selection of uniprediction motion vectors according to an example from the present description.
[0018] Figure 6A is an illustration of a motion vector difference mode (MMVD) according to an example in the present description.
[0019] Figure 6B is an illustration of an MMVD mode according to an example in the present description.
[0020] Figure 7 is an illustration of a template matching (TM) algorithm according to an example in the present description.
[0021] Figure 8 is a method for decoding a video block in GPM according to an example in the present description.
[0022] Figure 9 is a diagram illustrating a computing environment along with a user interface according to an example in the present description. Rbzc in / cznz / e / YiAi DETAILED DESCRIPTION OF THE INVENTION
[0023] Detailed reference will now be made to the embodiments whose examples are illustrated in the accompanying drawings. The following description refers to the accompanying drawings, in which the same numbers in different drawings represent identical or similar elements, unless otherwise specified. The implementations set forth in the following description of the embodiments do not represent all implementations in accordance with this disclosure. Rather, they are only examples of apparatus and methods in accordance with the aspects related to this disclosure described in the accompanying claims.
[0024] The terminology used herein is intended to describe the particular forms only and not to limit the scope of this description. As used herein and in the appended claims, the singular forms “a,” “one,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. The term “and / or,” as used herein, is also intended to refer to all possible combinations of one or more of the listed elements.
[0025] It is understood that, although the terms “first,” “second,” “third,” etc., may be used herein to describe various types of information, information should not be limited by such terms. These terms are used only to distinguish one type of information from another. For example, without departing from the scope of this description, first information may be referred to as second information; likewise, second information may also be referred to as first information. As used herein, the term “if” may be understood to mean “when,” “after,” or “in response to a judgment,” depending on the context.
[0026] The first-generation AVS standard includes the Chinese national standard “Information Technology, Advanced Audio and Video Coding, Part 2: Video” (known as AVS1) and “Information Technology, Advanced Audio and Video Coding, Part 16: Radio and Television Video” (known as AVS+). This standard can offer bitrate savings of around 50%, with the same perceived quality compared to the MPEG-2 standard. The video portion of AVS1 was adopted as the Chinese national standard in February 2006. The second-generation AVS standard includes the Chinese national standard series “Information Technology, Efficient Multimedia Coding” (known as AVS2), which is primarily aimed at the transmission of Abzc in / cznz / e / YiAi extra high-definition TV programs. The encoding efficiency of AVS2 is twice that of AVS+. In May 2016, AVS2 was issued as the Chinese national standard. Meanwhile, the Institute of Electrical and Electronics Engineers (IEEE) submitted the video portion of the AVS2 standard as an international standard for applications. The AVS3 standard is a next-generation video encoding standard for ultra-high-definition video applications that aims to surpass the encoding efficiency of the previous international standard, HEVC. In March 2019, at the 68th AVS meeting, the AVS3-P2 baseline was finalized, providing a bit rate savings of approximately 30% compared to the HEVC standard. Currently, the AVS group maintains a reference software, called the High-Performance Model (HPM), to demonstrate a reference implementation of the AVS3 standard.
[0027] Like HEVC, the AVS3 standard takes as its starting point the block-based hybrid video coding framework.
[0028] Figure 1 shows a general diagram of a block-based video encoder for the VVC. Specifically, Figure 1 shows a typical encoder 100. The encoder 100 has video input 110, motion compensation 112, motion estimation 114, intra / inter mode decision 116, block predictor 140, adder 128, transform 130, quantization 132, prediction-related information 142, intra-prediction 118, image intermediated memory 120, inverse quantization 134, inverse transform 136, adder 126, memory 124, loop filter 122, entropy coding 138, and bitstream 144.
[0029] In the encoder 100, a video frame is segmented into a plurality of video blocks for processing. For each given video block, a prediction is formed based on either an inter-prediction or an intra-prediction approach.
[0030] A prediction residual, representing the difference between an actual video block, part of video input 110, and its predictor, part of block predictor 140, is sent to a transform 130 from adder 128. The transform coefficients are then sent from Transform 102 to a Quantizer 132 for entropy reduction. The qualified coefficients are subsequently fed to an Entropy Coding 138 to generate a compressed video bitstream. As shown in Figure 1, information related to predictions 142 and derived from an intra / inter mode decision, such as block partitioning information, is included. Rbzc in / cznz / e / YiAi video, motion vectors (MV), reference image index and intra-prediction mode, is also fed through Entropy Coding 138 and saved in a compressed bitstream 144. The compressed bitstream 144 includes a video bitstream.
[0031] In the encoder 100, decoder-related circuitry is also required for pixel reconstruction for prediction purposes. First, a prediction residual is reconstructed via an Inverse Quantization 134 and an Inverse Transform 136. This reconstructed prediction residual is combined with a Block Predictor 140 to generate unfiltered reconstructed pixels for a current video block.
[0032] Spatial prediction (or “intra-prediction”) uses pixels from the already encoded contiguous block samples (called reference samples) in the same video frame as the current video block to predict the current video block.
[0033] Time prediction (also referred to as “inter-prediction”) uses reconstructed pixels from already encoded video frames to predict the current video block. Time prediction reduces the inherent time redundancy in the video signal. The time prediction signal for a given encoding unit (CU) or encoding block is typically signaled by one or more MVs, which indicate the amount and direction of movement between the current CU and its time reference. In addition, if multiple reference frames are supported, a reference frame index is also sent, which is used to identify which reference frame in the reference frame storage the time prediction signal originates from.
[0034] Motion estimation 114 takes video input 110 and a signal from picture buffer 120 and sends a motion estimation signal to motion compensation 112. Motion compensation 112 takes video input 110, a signal from picture buffer 120, and a motion estimation signal from motion estimation 114 and sends a motion compensation signal to intra / inter mode decision 116.
[0035] After performing the spatial and / or temporal prediction, an intra / inter mode decision 116 in the encoder 100 chooses the best prediction mode, for example, based on the velocity distortion optimization method. Then, the block predictor 140 is subtracted from the current video block, and the resulting prediction residual is decorrelated using the transform 130 and quantization 132. The resulting quantized residual coefficients are then quantized. The Rbzc in / cznz / e / YiAi is inverted by inverse quantization 134, and an inverse transform is performed by inverse transform 136 to form the reconstructed residual, which is then added back to the prediction block to form the reconstructed CU signal. Additional loop filtering 122, such as an unblocking filter, a sample-adaptive deviation (SAO), and / or an adaptive loop filter (ALF), can be applied to the reconstructed CU before it is placed in the reference image storage of the image buffer 120 and used to encode future video blocks. To form the output video bitstream 144, the encoding mode information (inter or intra), prediction mode information, motion information, and quantized residual coefficients are sent to the entropy encoding unit 138 for further compression and packaging to form the bitstream.
[0036] Figure 1 shows the block diagram of a generic hybrid block-based video coding system. The input video signal is processed block by block (referred to as coding units (CUs)). Unlike HEVC, which segments blocks only based on quaternary trees, in AVS3, a tree coding unit (CTU) is fragmented into several CUs to accommodate various local characteristics based on quaternary / binary / extended quaternary trees. Furthermore, HEVC eliminates the concept of a multiple partitioning unit type; that is, the separation of the CU, prediction unit (PU), and transform unit (TU) no longer exists in AVS3. Instead, each CU is always used as the basic unit for both prediction and transform without further partitioning. In the AVS3 tree partitioning structure, a CTU is first segmented based on a quaternary tree structure.Afterwards, each leaf node of a quaternary tree can also be segmented based on an extended binary and quaternary tree structure.
[0037] As shown in Figures 2A, 2B, 2C, 2D and 2E, there are five types of fragmentation: quaternary partitioning, horizontal binary partitioning, vertical binary partitioning, horizontal extended quaternary tree partitioning, and vertical extended quaternary tree partitioning.
[0038] Figure 2A shows a diagram illustrating the quaternary partitioning of a block in a multi-type tree structure, according to the present description.
[0039] Figure 2B shows a diagram illustrating the vertical binary partitioning of a block in a multi-type tree structure, according to the present description. I n / C7n7 / e / YIAI
[0040] Figure 2C shows a diagram illustrating the horizontal binary partitioning of a block in a multi-type tree structure, according to the present description.
[0041] Figure 2D shows a diagram illustrating the vertical ternary partitioning of a block in a multi-type tree structure, according to the present description.
[0042] Figure 2E shows a diagram illustrating the horizontal ternary partitioning of a block in a multi-type tree structure, according to the present description.
[0043] In Figure 1, spatial and / or temporal prediction can be performed. Spatial prediction (or “intra-prediction”) uses pixels from previously encoded contiguous block samples (called reference samples) in the same video image / segment to predict the current video block. Spatial prediction reduces the inherent spatial redundancy in the video signal. Temporal prediction (also referred to as “inter-prediction” or “motion-compensated prediction”) uses reconstructed pixels from previously encoded video images to predict the current video block. Temporal prediction reduces the inherent temporal redundancy in the video signal. A temporal prediction signal for a given CU is usually signaled by one or more motion vectors (MVs) that indicate the amount and direction of motion between the current CU and its temporal reference.Furthermore, if multiple reference images are supported, a reference image index is also sent, which is used to identify which reference image in the reference image storage the temporal prediction signal originates from. After spatial and / or temporal prediction, the mode decision block in the encoder chooses the best prediction mode, for example, based on the velocity distortion optimization method. The prediction block is then subtracted from the current video block, and the prediction residual is decorrelated using a transform and subsequently quantized. The quantized residual coefficients are then subjected to inverse quantization and an inverse transform to form the reconstructed residual, which is subsequently added back to the prediction block to form the reconstructed CU signal.Additional loop filtering, such as an unblocking filter, adaptive off-sample (SAO) filter, and / or adaptive loop filter (ALF), can be applied to the reconstructed CU before placing it in the reference image storage and using it as a reference for encoding future video blocks. To form the output video bitstream, both an encoding mode (inter or intra), as well as prediction mode information, motion information, and quantized residual coefficients are sent to the entropy encoding unit for further compression and packaging. Rbzc in / cznz / e / YiAi
[0044] Figure 3 is a block diagram illustrating a block-based video decoder according to some implementations of the present description. The video bitstream is first subjected to entropy decoding in the entropy decoding unit (e.g., the entropy decoder 301). The encoding mode and prediction information are sent to the spatial prediction unit (if intra-coding is used) (e.g., intra-prediction 308) or to the temporal prediction unit (if inter-coding is used) (e.g., motion compensation 307) to form the prediction block. The residual transform coefficients are sent to the inverse quantization unit (e.g., inverse quantization 302) and the inverse transform unit (e.g., inverse transform 303) to reconstruct the residual block.Subsequently, the prediction block and the residual block are added (for example, by selecting intra / inter mode 309 and / or are stored in memory 304). The reconstructed block may also undergo loop filtering before being stored in the reference image storage (for example, image buffer 306). The reconstructed video in the reference image storage is then sent to drive a display device and is also used to predict future video blocks.
[0045] The objective of this description is to improve the encoding performance of Geometric Partitioning Mode (GPM), which is used in both the WC and AVS3 standards. In the AVS3 standard, this tool is also known as Angle Weighted Prediction (AWP), which follows the same design concept as GPM but with some subtle differences in certain design details. To facilitate the disclosure, the existing GPM design in the VVC standard is used below as an example to explain the main aspects of the GPM / AWP tool. Meanwhile, another existing interprediction technology called Motion Vector Difference (MMVD) merging mode, which is implemented in the WC and AVS3 standards, is also briefly discussed, as it is closely related to the technologies proposed in this description. Subsequently, some drawbacks of the current GPM / AWP design are identified.Finally, the proposed methods are described in detail. It is important to note that although the existing GPM design in the WC standard is used as an example throughout the description, for someone skilled in modern video coding technologies, the proposed technologies can also be applied to other GPM / AWP designs or other coding tools with a similar design concept. Rbzc in / cznz / e / YiAi the same or similar.
[0046] Geometric Partition Mode (GPM)
[0047] In the WC standard, interprediction supports a geometric partitioning mode. The geometric partitioning mode is signaled by a CU level indicator as a special merge mode. In the current GPM design, the GPM mode supports 64 partitions in total for each possible CU size, with a minimum width and height of 8 and a maximum of 64, excluding 8x64 and 64x8.
[0048] When this mode is used, a CU is fragmented into two parts by a geometrically located straight line, as shown in Figure 4 (description provided below). The location of the fragmentation line is mathematically derived from the angle and offset parameters of a specific partition. Each part of a geometric partition in the CU undergoes interprediction using its own motion; single-prediction is only allowed for each partition, meaning each part has a motion vector and a reference index. The single-prediction motion constraint is enforced to ensure that, like conventional biprediction, only two motion-compensated predictions are required for each CU.If the geometric partitioning mode is used for the current CU, then a geometric partitioning index is also signaled, indicating the partitioning mode of the geometric partition (angle and offset), as well as two merge indices (one for each partition). The maximum number of the GPM candidate size is explicitly signaled at the sequence level.
[0049] Figure 4 shows the allowed GPM partitions, where the fragments in each image have an identical fragmentation direction.
[0050] Construction of the single-prediction candidate list
[0051] To derive the uniprediction move vector for a geometric partition, a list of uniprediction candidates is first derived directly from the ordinary process of generating merge candidate lists. “n” is denoted as the uniprediction move index in the geometric uniprediction candidate list. The move vector LX of the nth merge candidate, where X equals the parity of n, is used as the nth uniprediction move vector for the geometric partition mode.
[0052] These movement vectors are marked with “x” in Figure 5 (described below). In case there is no corresponding LX movement vector for the nth merger candidate Rbzc in / cznz / e / YiAi extended, the movement vector L(1 - X) of the same candidate is used instead as the uniprediction movement vector for the geometric partition mode.
[0053] Figure 5 shows a selection of uniprediction motion vectors from the motion vectors in the merge candidate list for the GPM.
[0054] Merge along the edge of the geometric partition
[0055] Once each geometric partition is obtained using its own motion, fusion is applied to the two uniprediction signals to derive samples around the geometric partition edge. The fusion weight for each CU position is derived based on the distance from each individual sample position to the corresponding partition edge.
[0056] GPM Signage Design
[0057] According to the current GPM design, GPM usage is indicated by a signaling indicator at the CU level. The indicator is only signaled when the current CU is encoded using either merge mode or bypass mode. Specifically, when the indicator is equal to one, it indicates that GPM is predicting the current CU. Otherwise (if the indicator is equal to zero), the CU is encoded using another merge mode, such as ordinary merge mode, merge mode with motion vector differences, a combination of inter-prediction and intra-prediction, among others. When GPM is enabled for the current CU, a syntax element, namely merge_gpm_partition_idx, is also signaled to indicate the applied geometric partitioning mode (which specifies the direction and deviation of the straight line from the center of the CU that splits the CU into two partitions, as shown in Figure 4).Subsequently, two syntax elements, `merge_gpm_idx0` and `merge_gpm_idx1`, are signaled to indicate the uniprediction merge candidate indices used for the first and second GPM partitions. More specifically, these two syntax elements are used to determine the unidirectional merge models (MMs) of the two GPM partitions in the uniprediction merge list, as described in the "Constructing the Uniprediction Merge List" section. According to the current GPM design, to further differentiate two unidirectional MMs, the two indices cannot be the same. Based on this prior knowledge, the uniprediction merge index of the first GPM partition is signaled first and used as a predictor to reduce the overprocessing of signaling the uniprediction merge index of the second GPM partition.In detail, if the second single-prediction fusion index is less than the first single-prediction fusion index, its original value is signaled. Rbzc in / cznz / e / YiAi directly. Otherwise (if the second uniprediction merge index is greater than the first uniprediction merge index), its value is subtracted by one before being signaled in the bitstream. On the decoder side, the first uniprediction merge index is first decoded. Then, for the decoding of the second uniprediction merge index, if the parsed value is less than the first uniprediction merge index, the second uniprediction merge index is set to a value equal to the parsed value; otherwise (if the parsed value is equal to or greater than the first uniprediction merge index), the second uniprediction merge index is set to a value equal to the parsed value plus one. Table 1 illustrates the existing syntax elements used for GPM mode in the current VVC specification. Table 1. Existing GPM syntax elements in the VVC specification's fusion data syntax table. Rbzc in / cznz / e / YiAi merge_data(x0, yO, cbWidth, cbHeight, chType) { Descriptor ...... if( !ciip_flag[ xO ][ yO ]) { merge_gpm_partition_idx[ xO ][ yO ] ae(v) merge_gpm_idx0[ xO ][ yO ] ae(v) if( MaxNumGpmMergeCand > 2 ) merge_gpm_idx1 [ xO ][ yO ] ae(v)} ......}
[0058] On the other hand, in the current GPM design, truncated unary code is used for the binarization of the two uniprediction merge indices, namely merge_gpm_idxO and merge_gpm_idx1. Furthermore, because the two uniprediction merge indices cannot be equal, different maximum values are used to truncate the codewords of the two uniprediction merge indices, which are set to MaxGPMMergeCand - 1 and MaxGPMMergeCand - 2 for merge_gpm_idxO and merge_gpm_idx1, respectively. MaxGPMMergeCand is the number of candidates in the uniprediction merge list.
[0059] When GPM / AWP mode is applied, two different binarization methods are used to translate the merge_gpm_partitionjdx syntax into a binary bit string. Specifically, the syntax element is binarized using a fixed-length code and a truncated binary code in the WC and AVS3 standards, respectively. On the other hand, for AWP mode in the AVS3 standard, different maximum values are used for the binarizations of the syntax element value. Specifically, in the AVS3 standard, the number of allowed GPM / AWP partition modes is 56 (i.e., the maximum value of merge_gpm_partition_jdx is 55), while the number increases to 64 (i.e., the maximum value of merge_gpm_partition_jdx is 63) in the VVC standard.
[0060] Motion Vector Difference (MMVD) merging mode
[0061] In addition to the conventional merge mode, which derives the motion information of a current block from its contiguous spatial / temporal blocks, the MMVD / UMVE mode is introduced in the VVC and AVS standards as a special merge mode. Specifically, in both the VVC and AVS3 standards, the mode is signaled by an MMVD flag at the encoding block level. In MMVD mode, the first two candidates in the merge list for the ordinary merge mode are selected as the two base merge candidates for MMVD. After selecting and flagging a base merge candidate, additional syntax elements are flagged to indicate the motion vector differences (MVDs) that are added to the motion of the selected merge candidate.The syntax elements of MMVD include a merge candidate indicator to select the base merge candidate, a distance index to specify the magnitude of the MVDs, and a direction index to indicate the direction of the MVDs.
[0062] In the existing MMVD design, the distance index specifies the magnitude of the MVDs, which is defined based on a set of predefined deviations from the starting point. As shown in Figures 6A and 6B, the deviation is added to the horizontal or vertical component of the initial MV (i.e., the MVs of the selected base fusion candidate).
[0063] Figure 6A shows an MMVD mode for reference LO. Figure 6B shows an MMVD mode for reference L1.
[0064] Table 2 illustrates the deviations of the MVDs that are applied in the AVS3 standard, respectively. Table 2. Deviation of the MVD used in the AVS3 Rbzc in / cznz / e / Yi distance index 0 1 2 3 4 Deviation (in luminance sample units) 1 / 4 1 / 2 1 2 4 Rbzc in / cznz / e / Yi
[0065] As shown in Table 3, the direction index is used to specify the signs of the signaled MVDs. It should be noted that the meaning of the MVD sign may vary according to the initial MVs. When the initial MVs consist of a single-prediction MV or several bi-prediction MVs, where the MV points to two reference images whose POCs are either larger than or smaller than the POC of the current image, the signaled sign is the sign of the MVD added to the initial MV. When the initial MVs consist of one or more bi-prediction MVs pointing to two reference images, where the POC of one image is larger than that of the current image and the POC of the other image is smaller than that of the current image, the signaled sign applies to MVD LO, and the opposite value of the signaled sign applies to MVD L1. Table 3. Sign of the MVD specified by the direction index direction index 00 01 10 11 x-axis + — N / A / A y-axis N / A / A + —
[0066] Movement signaling for Interordinary mode
[0067] As with the HEVC standard, in addition to merge / bypass modes, both WC and AVS3 allow an intermediate CU to explicitly specify its motion information in the bitstream. In general, motion information signaling in both VVC and AVS3 remains the same as in the HEVC standard. Specifically, an inter-prediction syntax, i.e., inter_pred_idc, is first signaled to indicate whether the prediction signal is derived from the LO list, L1 list, or both. For each reference list used, the corresponding reference image is identified by signaling a reference image index refjdxjx (x = 0, 1) for the corresponding reference list, and the corresponding MV is represented by an MVP index mvp_lx_flag (x = 0, 1) used to select the MV predictor (MVP), followed by its motion vector difference (MVD) between the target MV and the selected MVP.Furthermore, in the WC standard, a control flag mvd_l1_zero_flag is signaled at the segment level. When mvd_l1_zero_flag is equal to 0, the L1 MVD is signaled in the bit stream; otherwise (when the mvd_l1_zero_flag flag is equal to 1), the L1 MVD is not signaled and its value is always inferred to be zero in the encoder and decoder.
[0068] Biprediction with weighting at the CU level
[0069] In standards prior to VVC and AVS3, when weighted prediction (WP) is not applied, the biprediction signal is generated by averaging the uniprediction signals obtained from two reference images. The WC standard introduced an encoding tool, namely CU-level weighted biprediction (BCW), to improve biprediction efficiency. Specifically, instead of a simple average, biprediction in BCW is enhanced by allowing a weighted average of two prediction signals, as represented as: P'íi.D = ((8 - w) P0(ij) + W Pj (í,y) + 4) » 3
[0070] In the VVC standard, when the current image is a low-latency image, the weight of a BCW encoding block can be selected from a set of predefined weight values {-2, 3, 4, 5, 10}, with a weight of 4 representing the traditional biprediction case, where the two uniprediction signals are weighted equally. In the low-latency case, only three weights are permitted: {3, 4, 5}. Generally speaking, although there are some design similarities between WP and BCW, the goal of both encoding tools is to address the problem of lighting changes at different granularities. However, because the interaction between WP and BCW could potentially complicate WC design, the two tools cannot be enabled simultaneously.Specifically, when WP is enabled for a segment, then the BCW weights for all biprediction CUs of that segment are not signaled and are inferred to have a value of 4 (i.e., the same weighting is applied).
[0071] Template Matching
[0072] Template matching (TM) is a decoder-side MV derivation method for refining the motion information of the current CU by searching for the best match between a template formed by contiguous top and left reconstructed samples of the current CU and a reference block (i.e., the same size as the template) in a reference image. As illustrated in Figure 7, a MV must be searched for around the initial motion vector of the current CU within a search interval of [-8, +8] pixels. The best match can be defined as the MV that achieves the lowest matching cost, e.g., the sum of absolute differences (SAD), the sum of absolute transform differences (SATD), etc., between the current template and the reference template. There are two different ways to apply TM mode for intercoding:
[0073] In AMVP mode, an MVP candidate is determined based on the template matching difference to select the one that achieves the minimum difference between the current block template and the reference block template. The TM is then applied only to this specific MVP candidate for MV refinement. The TM refines this MVP candidate, starting from a full-pixel MVD accuracy (or 4 pixels for 4-pixel AMVR mode) over a search range of [-8, +8] pixels using iterative diamond search. The AMVP candidate can be further refined by a cross-search with a full-pixel MVD accuracy (or 4 pixels for 4-pixel AMVR mode), followed sequentially by searches with half-pixel or quarter-pixel accuracy, depending on the AMVR mode, as specified in Table 14.This search process ensures that the MVP candidate maintains the same MV accuracy as indicated by AMVR mode after the TM process. Table 14 Search Pattern AMVR Mode Blending Mode 4 Pixels Full Pixel Half Pixel Quarter Pixel AltlF=0 AltlF=1 4-Pixel Diamond V 4-Pixel Cross V Full Pixel Diamond VVVVV Full Pixel Cross VVVVV Half Pixel Cross VVVV Quarter Pixel Cross VV 1 / 8 Pixel Cross V
[0074] In fusion mode, a similar search method is applied to the fusion candidate indicated by the fusion index. As shown in the table above, the TM can perform searches with an MVD accuracy of 1 / 8 pixel or skip those that exceed the MVD accuracy of half a pixel, depending on whether the alternate interpolation filter (used when AMVR is in half-pixel mode) is used in accordance with the fused motion information.
[0075] As mentioned earlier, the unidirectional motion used to generate the prediction samples for two GPM partitions is obtained directly from ordinary merge candidates. If there is no strong correlation between the motion samples of contiguous spatial / temporal blocks, the unidirectional motion derived from the merge candidates may not be accurate enough to capture the actual motion of each GPM partition. Motion estimation can provide more accurate motion, but it involves significant signaling overprocessing due to arbitrary motion refinements that can be applied to existing unidirectional motion samples. On the other hand, the MVMD mode, used in the VVC and AVS3 standards, has proven to be an effective signaling mechanism for reducing MVD signaling overprocessing.Therefore, combining GPM with MMVD mode could also be beneficial. Such a combination can potentially improve the overall encoding efficiency of the GPM tool by generating multiple, more accurate MVs to capture the individual motion of each GPM partition.
[0076] As mentioned earlier, in the VVC and AVS3 standards, GPM mode is only applied to merge / skip modes. This design may not be optimal in terms of coding efficiency, since all non-merged intermediate CUs cannot benefit from GPM's flexible, non-rectangular partitioning. On the other hand, for the same reason mentioned earlier, uniprediction motion candidates derived from ordinary merge / skip modes are not always accurate in capturing the actual motion of two geometric partitions. Based on such analyses, a greater coding gain can be expected through a reasonable extension of GPM mode to non-merged Inter-type modes (i.e., CUs that explicitly signal their motion information in the bitstream). However, improvements in the accuracy of MVs are achieved at the cost of increased signaling overprocessing.Therefore, in order to effectively apply GPM mode to inter-explicit type modes, it would be important to identify an efficient signaling scheme that can minimize the signaling cost and allow MVs to be more accurate for two geometric partitions.
[0077] Proposed methods
[0078] In the present description, methods are proposed to further improve the efficiency of Rbzc in / cznz / e / YiAi GPM coding by applying further motion refinements on top of existing unidirectional MVs that are applied to each GPM partition. The proposed methods are referred to as Geometric Partitioning Mode with Motion Vector Refinement (GPM-MVR). Furthermore, in the proposed schemes, the motion refinements are signaled in a manner similar to the existing MMVD design, i.e., based on a set of predefined MVD magnitudes and directions of the motion refinements.
[0079] In another aspect of the description, solutions are provided for extending the GPM mode to explicit inter-type modes. For ease of description, these schemes are referred to as geometric partition mode with explicit motion signaling (GPM-EMS). Specifically, to achieve better harmonization with the ordinary Inter mode, the existing motion signaling mechanism, i.e., MVP plus MVD, is used in the proposed GPM-EMS schemes to specify the corresponding unidirectional MVs of two geometric partitions.
[0080] Geometric partitioning mode with separate motion vector refinements
[0081] To improve the coding efficiency of the GPM, this section proposes an improved geometric partitioning mode with separate motion vector refinements. Specifically, in the case of a GPM partition, the proposed method first uses the existing syntax merge_gpm_idxO and merge_gpm_idx1 to identify the unidirectional MVs for two GPM partitions from the existing uniprediction merge candidate list and use them as the base MVs. Once the two base MVs are identified, two sets of new syntax elements are introduced to specify the motion refinement values that are applied separately in addition to the base MVs of the two GPM partitions. Specifically, two flags, namely gpm_mvr_partldxO_enable_flag and gpm_mvr_partldx1_enable_flag, are first signaled to indicate whether GPM-MVR is applied to the first and second GPM partitions, respectively.When a GPM partition indicator is equal to one, the corresponding MVR value applied to the partition's base MV is signaled in the MMVD style; that is, a distance index (as indicated by the syntax elements gpm_mvr_partldxO_distance_idx and gpm_mvr_partldx1_distance_idx) to specify the MVR's magnitude and a direction index (as indicated by the syntax elements gpm_mvr_partldxO_direction_idx and gpm_mvr_partldx1_distance_idx) to specify the MVR's direction. Table 4 illustrates the syntax elements introduced through the proposed GPM-MVR methods. Rbzc in / cznz / e / YiAi Rbzc in / cznz / e / YiAi Table 4. Syntax elements of the proposed GPM-MVR method with separate MVRs for two GPM partitions (method one) merge_data( xO, yO, cbWidth, cbHeight, chType ) { Descriptor ...... if( Iciip_flag[ xO ][ yO ]) { merge_gpm_partition_idx[ xO ][ yO ] ae(v) merge_gpm_idxO[ xO ][ yO ] ae(v) merge_gpm_idx1[ xO ][ yO ] ae(v) gpm_mvr_partldxO_enable_flag[ xO ][ yO ] ae(v) if( gpm_mvr_partldxO_enable_flag[ xO ][ yO ]) { gpm_mvr_partldxO_directoin_idx[ xO ][ yO ] ae(v) gpm_mvr_partldxO_distance_idx[ xO ][ yO ] ae(v)} if( merge_gpm_idxO != merge_gpm_idx1 || gpm_mvr_partldxO_enable_flag ) gpm_mvr_partldx1_enable_flag[ xO ][ yO ] ae(v) if( gpm_mvr_partldx1_enable_flag[ xO ][ yO ]) { gpm_mvr_partldx1_direction_idx[ xO ][ yO ] ae(v) gpm_mvr_partldx1_distance_idx[ xO ][ yO ] ae(v)} ) ......}
[0082] Based on the proposed syntax elements, as shown in Table 4, in the decoder, the final MV used to generate the uniprediction samples for each GPM partition is equal to the sum of the signaled motion vector refinement and the corresponding base MV. In practice, different sets of MVR magnitudes and directions can be predefined and applied to the proposed GPM-MVR scheme, which can offer various trade-offs between motion vector accuracy and signal overprocessing. In one specific example, it is proposed to reuse the eight MVD deviations (i.e., 1 / 4, 1 / 2, 1.2, 4, 8, 16, and 32 pixels) and four MVD directions (i.e., x and + / - axes) used in the VVC standard for the proposed GPM-MVR scheme.In another example, the five existing MVD deviations {1 / 4, 1 / 2, 1,2 and 4 pixels} and four MVD directions (i.e., x and y axes + / -) used in the AVS3 standard are applied in the proposed GPM-MVR scheme.
[0083] As mentioned in the section “GPM Signaling Design,” because the unidirectional motion vectors (MVs) used for two GPM partitions cannot be identical, a constraint is applied in the existing GPM design that requires the two uniprediction fusion indices to be different. However, in the proposed GPM-MVR scheme, additional motion refinements are applied beyond the existing GPM unidirectional MVs. Therefore, even when the base MVs of two GPM partitions are identical, the final unidirectional MVs used to predict two partitions could still be different as long as the values of the two motion vector refinements are not equal. Based on the above consideration, the constraint (restricting the two uniprediction fusion indices to be different) is removed when the proposed GPM-MVR scheme is applied.Furthermore, because the two uniprediction merge indices are allowed to be identical, the same maximum value MaxGPMMergeCand - 1 is used for the binarization of merg_gpm_idx0 and merge_gpm_idx1, where MaxGPMMergeCand is the number of candidates in the uniprediction merge list.
[0084] As discussed above, when the uniprediction merge indices (i.e., merge_gpm_idx0 and merge_gpm_idx1) of two GPM partitions are identical, the values of the two motion vector refinements cannot be equal in order to ensure that the final MVs used for the two partitions are different. Based on this condition, in one modality of the description, a signaling redundancy elimination method is proposed to use the MVR of the first GPM partition to reduce signaling overprocessing of the MVR of the second GPM partition when the uniprediction merge indices of two GPM partitions are equal (i.e., merge_gpm_idx0 equals merge_gpm_idx1). In one example, the following signaling conditions apply:
[0085] First, when the gpm_mvr_partldxO_enable_flag flag is equal to 0 (i.e., GPM-MVR does not apply to the first GPM partition), the gpm_mvr_partldx1_enable_flag flag is not signaled, but is inferred to have a value of 1 (i.e., GPM-MVR does apply to the second GPM partition).
[0086] Secondly, when both gpm_mvr_partldxO_enable_flag indicators and If gpm_mvr_partldx1_enable_flag is equal to 1 (i.e., GPM-MVR applies to two GPM partitions) and gpm_mvr_partldxO_direction_idx is equal to gpm_mvr_partldx1_direction_idx (i.e., the MVRs of two GPM partitions have the same direction), the magnitude of the MVR of the first GPM partition (i.e., gpm_mvr_partldxO_distance_idx) is used to predict the magnitude of the MVR of the second GPM partition (i.e., gpm_mvr_partldx1_distance_idx). Specifically, if gpm_mvr_partldx1_distance_idx is less than gpm_mvr_partldxO_distance_idx, its original value is directly signaled. Otherwise (if gpm_mvr_partldx1_distance_¡dx is greater than gpm_mvr_partldxO_distance_¡dx), its value is subtracted by one before being signaled in a bit stream.On the decoder side, to decode the value of gpm_mvr_partldx1_distance_idx, if the parsed value is less than gpm_mvr_partldxO_distance_idx, gpm_mvr_partldx1_distance_idx is set to a value equal to the parsing value; otherwise (if the parsed value is equal to or greater than gpm_mvr_partldxO_distance_idx), gpm_mvr_partldx1_distance_idx is set to a value equal to the parsing value plus one. In such a case, to further reduce overprocessing, different maximum values MaxGPMMVRDistance - 1 and MaxGPMMVRDistance - 2 can be used for the binarizations of gpm_mvr_partldxO_distance_idx and gpm_mvr_partldx1_distance_idx, where MaxGPMMVRDistance is the number of magnitudes allowed for motion vector refinements. [008η In another configuration, it is proposed to change the signaling order to gpm_mvr_partldxO_direct¡on_¡dx / gpm_mvr_partldx1_direct¡on_¡dx and gpm_mvr_partldxO_distance_idx / gpm_mvr_partldx1_distance_idx, such that the MVR addresses are signaled against the MVR magnitudes. In this way, following the same logic described above, the encoder / decoder can use the MVR address of the first GPM partition to condition the signaling of the MVR address of the second GPM partition. In another configuration, it is proposed to first signal the magnitude and direction of the MVR of the second GPM partition and use them to condition the signaling of the magnitude and direction of the MVR of the first GPM partition.
[0088] In another embodiment, it is proposed to signal the syntax elements related to GPMMVR before signaling the existing GPM syntax elements. Specifically, in such a design, the flags gpm_mvr_partldxO_enable_flag and gpm_mvr_partldx1_enable_flag are first signaled to indicate whether GPM-MVR applies to the first and second GPM partitions, respectively. When a GPM partition's flag is equal to one, the distance index (indicated by the elements of The syntax gpm_mvr_partldxO_distance_idx and gpm_mvr_partldx1_distance_idx) and the direction index (indicated by the syntax elements gpm_mvr_partldxO_direction_idx and gpm_mvr_partldx1_direction_idx) are signaled to specify the magnitude and direction of the MVR. Subsequently, the existing syntax merge_gpm_idxO and merge_gpm_idx1 are signaled to identify the unidirectional MVs for two GPM partitions, i.e., the base MVs. Table 5 illustrates the proposed GPM-MVR signaling scheme. Table 5. Syntax elements of the proposed GPM-MVR method with separate MVRs for two partitions Rbzc in / cznz / e / YiAi from GPM (method two) merge_data( xO, yO, cbWidth, cbHeight, chType ) { Descriptor ...... if( Iciip_flag[ xO ][ yO ]) { merge_gpm_partition_idx[ xO ][ yO ] ae(v) gpm_mvr_partldxO_enable_flag[ xO ][ yO ] ae(v) if( gpm_mvr_partldxO_enable_flag[ xO ][ yO ]) { gpm_mvr_partldxO_directoin_idx[ xO ][ yO ] ae(v) gpm_mvr_partldxO_distance_idx[ xO ][ yO ] ae(v)} gpm_mvr_partldx1_enable_flag[ xO ][ yO ] ae(v) if( gpm_mvr_partldx1_enable_flag[ xO ][ yO ]) { gpm_mvr_partldx1_direction_idx[ xO ][ yO ] ae(v) gpm_mvr_partldx1_distance_idx[ xO ][ yO ] ae(v)}} merge_gpm_idxO[ xO ][ yO ] ae(v) merge_gpm_idx1 [ xO ][ yO ] ae(v) ......}
[0089] Similar to the signaling method in Table 4, certain conditions can be applied when using the GPM-MVR signaling method in Table 5 to ensure that the resulting MVRs used for predictions across the two GPM partitions are not identical. Specifically, the following conditions are proposed to restrict the signaling of the single-prediction merge indices merge_gpm_idxO and merge_gpm_idx1 depending on the MVR values applied to the first and second GPM partitions:
[0090] First, when the values of gpm_mvr_partldxO_enable_flag and gpm_mvr_partldx1_enable_flag are equal to 0 (i.e., GPM-MVR is disabled for both GPM partitions), the values of merge_gpm_idxO and merge_gpm_idx1 cannot be equal;
[0091] Secondly, when gpm_mvr_partldxO_enable_flag is equal to 1 (i.e., GPM-MVR is enabled for the first GPM partition) and gpm_mvr_partldx1_enable_flag is equal to 0 (i.e., GPMMVR is disabled for the second GPM partition), the values of merge_gpm_idx0 and merge_gpm_idx1 can be identical.
[0092] Third, when gpm_mvr_partldxO_enable_flag is equal to 0 (i.e., GPM-MVR is disabled for the first GPM partition) and gpm_mvr_partldx1_enable_flag is equal to 1 (i.e., GPMMVR is enabled for the second GPM partition), the values of merge_gpm_idxO and merge_gpm_idx1 can be identical.
[0093] Fourth, when the values of gpm_mvr_partldxO_enable_flag and gpm_mvr_partldx1_enable_flag are both equal to 1 (i.e., GPM-MVR is enabled for both GPM partitions), whether the values of merge_gpm_idxO and merge_gpm_idx1 can be identical depends on the values of the MVRs (indicated by gpm_mvr_partldxO_direction_idx and gpm_mvr_partldxO_distance_idx, and gpm_mvr_partldx1_direction_idx and gpm_mvr_partldx1_distance_idx) that apply to the two GPM partitions. If the values of two MVRs are the same, merge_gpm_idx0 and merge_gpm_idx1 cannot be identical. Otherwise (if the values of two MVRs are not equal), the values of merge_gpm_idxO and merge_gpm_idx1 can be identical.
[0094] In the four cases above, when the values of merge_gpm_idx0 and merge_gpm_idx1 cannot be identical, the index value of one partition can be used as a predictor for the index value of the other partition. In one method, it is proposed that merge_gpm_idx0 be signaled first and its value be used to predict the value of merge_gpm_idx1. Specifically, in an encoder, when merge_gpm_idx1 is greater than merge_gpm_idx0, the value of merge_gpm_idx1 sent to a decoder is reduced by 1. In the decoder, when the received value of merge_gpm_idx1 is equal to or greater than the received value of merge_gpm_idx0, the value of merge_gpm_idx1 is increased by 1. In another method, Rbzc in / cznz / e / YiAi proposes that merge_gpm_idx1 be signaled first and its value be used to predict the value of merge_gpm_idxO. Therefore, in such a case, in the encoder, when merge_gpm_idxO is greater than merge_gpm_idx1, the value of merge_gpm_idxO sent to the decoder is reduced by 1. In the decoder, when the received value of merge_gpm_idxO is equal to or greater than the received value of merge_gpm_idx1, the value of merge_gpm_idxO is increased by 1. Furthermore, as with the existing GPM signaling design, different maximum values MaxGPMMergeCand - 1 and MaxGPMMergeCand - 2 can be used for the binarization of the first and second index values according to the signaling order, respectively.On the other hand, when the values of merge_gpmJdxO and merge_gpm_idx1 are allowed to be identical because there is no correlation between the two index values, the same maximum value MaxGPMMergeCand - 1 is used for the binarization of the two index values.
[0095] In the above method, to reduce the signaling cost, different maximum values can be applied to the binarization of merge_gpm_idxO and merge_gpm_idx1. The selection of the corresponding maximum value depends on the decoded values of the MVRs (indicated by gpm_mvr_partldxO_enable, gpm_mvr_partldx1_enable, gpm_mvr_partldxO_direction_idx, gpm_mvr_partldx1_direction_idx, gpm_mvr_partldxO_distanceJdx, and gpm_mvr_partldx1 Jdx_). Such a design introduces an undesirable parsing dependency between different elements of GPM syntax, which could affect overall parsing. To solve this problem, in one mode the same maximum value is always proposed (for example, MaxGPMMergeCand -1) for the syntactic analysis of the values of merge_gpm_¡dxO and merge_gpm_idx1.When using this method, a conformity constraint can be applied to the bitstream to prevent the two decoded MVs from two GPM partitions from being identical. Alternatively, the non-identity constraint can be removed, allowing the decoded MVs from two GPM partitions to be identical. Furthermore, when this method is applied (i.e., using the same maximum values for merge_gpm_idx0 and merge_gpm_idx1), no parsing dependency arises between merge_gpm_idx0 / merge_gpm_idx1 and other GPM-MVR syntax elements. Therefore, the signaling order of these syntax elements no longer matters. In one example, it is proposed to move the merge_gpm_¡dx0 / merge_gpm_¡dx1 signaling forward from the gpm_mvr_partldxO_enable, gpm_mvr_partldx1_enable, gpm_mvr_partldxO_direction_idx, gpm_mvr_partldx1_directionjdx signaling. Rbzc in / cznz / e / YiAi gpm_mvr_partldxO_distance_idx and gpm_partldx1_midx.
[0096] Geometric partitioning mode with symmetric motion vector refinement
[0097] For the GPM-MVR methods described above, two separate MVR values are signaled, one of which is applied to improve the base MV of only one GPM partition. Such a method can be effective in improving prediction accuracy by allowing independent motion refinement for each GPM partition. However, this flexible motion refinement increases signaling overprocessing because two different sets of GPM-MVR syntax elements must be sent from the encoder to the decoder. To reduce signaling overprocessing, this section proposes a geometric partitioning mode with symmetric motion vector refinement.Specifically, in this method, a single MVR value is signaled for one GPM CU and used for both GPM partitions according to the symmetry relationship between the picture order count (POC) values of the current image and the reference images associated with two GPM partitions. Table 6 illustrates the syntax elements when the proposed method is applied. Table 6. Syntax elements of the proposed GPM-MVR method with symmetric MVR for two GPM partitions (method one) Rbzc in / cznz / e / YiAi merge_data( xO, yO, cbWidth, cbHeight, chType ) { Descriptor ...... if( !ciip_flag[ xO ][ yO ]) { merge_gpm_partition_idx[ xO ][ yO ] ae(v) merge_gpm_idx0[ xO ][ yO ] ae(v) merge_gpm_idx1[ xO ][ yO ] ae(v) gpm_mvr_enable_flag[ xO ][ yO ] ae(v) if( gpm_mvr_enable_flag[ xO ][ yO ]) { gpm_mvr_direction_¡dx[ xO ][ yO ] ae(v) gpm_mvr_distance_idx[ xO ][ yO ] ae(v)} ......}
[0098] As shown in Table 6, once the base MVs of two GPM partitions are selected (based on merge_gpm_idxO and merge_gpm_idx1), a gpm_mvr_enable_flag indicator is flagged to show whether or not GPM-MVR mode is applied to the current GPM CU. When the indicator is equal to one, it indicates that move refinement is applied to improve the base MVs of two GPM partitions. Otherwise (when the indicator is equal to zero), it indicates that move refinement is not applied to either partition. If GPM-MVR mode is enabled, additional syntax elements are also flagged to specify the applied MVR values using a direction index gpm_mvr_direction_idx and a magnitude index gpm_mvr_distance_idx. Furthermore, as with MMVD mode, the meaning of the MVR sign could vary according to the relationship between the POCs of the current image and two reference images of the GPM partitions.Specifically, when both points of view (POCs) of two reference images are larger or smaller than the POC of the current image, the signaled sign is the sign of the MVR that is added to both base MVs. Otherwise (when the POC of one reference image is larger than that of the current image, while the POC of the other reference image is smaller than that of the current image), the signaled sign is applied to the MVR of the first GPM partition, and the opposite sign is applied to the second GPM partition. In Table 6, the values of merge_gpm_idxO and merge_gpm_idx1 can be identical.
[0099] In another modality, it is proposed to signal two different indicators to separately control the enabling / disabling of GPM-MVR mode for two separate GPM partitions. However, when GPM-MVR mode is enabled, only one MVR is signaled based on the syntax elements gpm_mvr_direction_idx and gpm_mvr_distance_idx. The corresponding syntax table for that signaling method is illustrated in Table 7. Table 7. Syntax elements of the proposed GPM-MVR method with symmetric MVR for two GPM partitions (method two) Rbzc in / cznz / e / YiAi merge_data( xO, yO, cbWidth, cbHeight, chType) { Descriptor ...... if( !ciip_flag[ xO ][ yO ]) { merge_gpm_partition_idx[ xO ][ yO ] ae(v) merge_gpm_idxO[ xO ][ yO ] ae(v) merge_gpm_idx1 [ xO ][ yO ] ae(v) gpm_mvr_partldxO_enable_flag[ xO ][ yO ] ae(v) if( merge_gpm_idxO != merge_gpm_idx1 || gpm_mvr_partldxO_enable_flag ) gpm_mvr_partldx1_enable_flag[ xO ][ yO ] ae(v) if( gpm_mvr_partldxO_enable_flag[ xO ][ yO ] || gpm_mvr_partldx1 _enable_flag[ xO ][ yO ]) { gpm_mvr_direction_idx[ xO ][ yO ] ae(v) gpm_mvr_distance_idx[ xO ][ yO ] ae(v)} ......} Abzc in / cznz / e / Yi
[00100] When the signaling method in Table 7 is applied, the values of merge_gpm_idx0 and merge_gpm_idx1 can be identical. However, to ensure that the resulting MVs applied to two GPM partitions are not redundant, when the gpm_mvr_partldxO_enable_flag flag is equal to 0 (i.e., GPM-MVR is not applied to the first GPM partition), the gpm_mvr_partldx1_enable_flag flag is not signaled, but is inferred to have a value of 1 (i.e., GPMMVR is applied to the second GPM partition).
[00101] Adaptation of the MVRs allowed for the GPM-MVR
[00102] In the GPM-MVR methods described above, a fixed set of MVR values is used for the GPM CUs in both the encoder and decoder for a video sequence. Such a design may be suboptimal for video content with high resolutions or extreme motion. In these cases, the MVs tend to be much larger, so the fixed MVR values may not be optimal for capturing the actual motion of those blocks. To further improve the encoding performance of the GPM-MVR mode, this description proposes supporting the adaptation of MVR values that can be selected via the GPM-MVR mode at various encoding levels, such as the sequence level, frame / segment frame level, encoding block group level, and so on.For example, multiple MVR sets, along with their corresponding codewords, can be derived offline based on the specific motion characteristics of different video sequences. The encoder can then select the best MVR set and signal the corresponding index of the selected set to the decoder.
[00103] In some description modes, in addition to the default MVR offsets, which include eight offset magnitudes (i.e., 1 / 4, 1 / 2, 1.2, 4, 8, 16, and 32 pixels) and four MVR directions (i.e., x and y axes + / -), other MVR offsets are proposed, as defined in the following tables for GPM-MVR mode. Table 15 illustrates the offset magnitudes proposed in the second set of MVR offsets. Table 16 illustrates the MVR directions proposed in the second set of MVR offsets. Rbzc in / cznz / e / YiAi Table 15 Distance index 0 1 2 3 4 5 6 7 8 Deviation (in luminance sample unit) 1 / 4 1 / 2 1 2 3 4 6 8 16 Table 16 Direction index 000 001 010 011 100 101 110 111 x-axis +1 -1 0 0 +1 / 2 -1 / 2 -1 / 2 +1 / 2 y-axis 0 0 +1 -1 +1 / 2 -1 / 2 +1 / 2 -1 / 2
[00104] In Table 15 and Table 16 above, the values +1 / 2 and -1 / 2 on the xy and y axes indicate the diagonal directions (+45° and -45°) of the horizontal and vertical directions. As shown in Table 15 and Table 16, compared to the existing MVR offset set, the second MVR offset set introduces two new offset magnitudes (i.e., 3 pixels and 6 pixels) and four offset directions (45°, 135°, 225°, and 315°). The newly added MVR offsets make the second MVR offset set more suitable for encoding blocks of video with sophisticated motion. Furthermore, to enable adaptive switching between the two MVR offset sets, it is proposed to signal a control indicator at a specific encoding level (e.g., sequence, picture, segment, CTU, and encoding block, etc.).) to indicate which set of MVR deviations is selected for the GPM-MVR mode applied at the encoding level. If it is assumed that the proposed adaptation is carried out at the image level, the following Table 17 illustrates the corresponding syntax elements signaled in the image header. Table 17 picture_header_structure() { Descriptor ...... if( sps_mmvd_fullpel_only_enabled_flag ) ph_mmvd_fullpel_only_flag u(1) presenceFlag = 0 if( !pps_rpl_info_in_ph_flag ) / * This condition is intentionally not merged into the next, to avoid possible interpretation of Rplsldx[ i ] not having a specified valué. 7 presenceFlag = 1 else if( num_ref_entries[ 1 ][ Rplsldx[ 1 ] ] > 0 ) presenceFlag = 1 if( presenceFlag ) { ph_mvd_l1_zero_flag u(1) if( sps_bdof_control_present_in_ph_flag) ph_bdof_disabled_flag u(1) if( sps_dmvr_control_present_in_ph_flag) ph_dmvr_disabled_flag u(1)} if( !pps_rpl_info_in_ph_flag || num_ref_entries[ 1 ][ Rplsldx[ 1 ] ] > 0 ) ph_gpm_mvr_offset_set_flag u(1) if( sps_prof_control_present_in_ph_flag ) ph_prof_disabled_flag u(1) ......} Rbzc i n / cznz / e / YiAi
[00105] In Table 17 above, the new indicator ph_gpm_mvr_offset_set_flag is used to indicate the selection of corresponding GPM-MVR offsets to be used for the image. When the indicator is equal to 0, that means that the default MVR offsets (i.e., magnitudes of 1 / 4, 1 / 2, 1.2, 4, 8, 16, and 32 pixels and four MVR directions x and + / -) are applied to the GPM-MVR mode in the image. Otherwise, when the indicator is equal to 1, that means that the second MVR deviations (i.e., magnitudes of 1 / 4, 1 / 2, 1, 2, 3, 4, 6, 8, 16 pixels and eight MVR directions x and y axes + / - 45°, 135°, 225° and 315°) are applied to the GPM-MVR mode in the image.
[00106] To signal MVR deviations, different methods can be applied. First, since MVR directions are generally statistically uniformly distributed, it is proposed to use fixed-length codewords to binarize the MVR directions. Taking default MVR deviations as an example, there are a total of four directions, and the codewords 00, 01, 10, and 11 can be used to represent these four directions. On the other hand, because MVR deviation magnitudes can have various distributions that suit the specific motion characteristics of the video content, it is proposed to use variable-length codewords to binarize the MVR magnitude.Table 18 shows a specific codeword table that can be used for binarization of MVR magnitudes from the default MVD deviation set and the second MVD deviation set. Table 18 Rbzc in / cznz / e / YiAi Default MVR Deviation Set Second MVR Deviation Set MVR Deviation Binarization MVR Deviation Binarization 1 / 4 pixel 001 1 / 4 pixel 001 1 / 2 pixel 1 1 / 2 pixel 1 1 pixel 01 1 pixel 01 2 pixels 0001 2 pixels 0001 4 pixels 00001 3 pixels 00001 8 pixels 000001 4 pixels 000001 16 pixels 0000001 6 pixels 0000001 32 pixels 0000000 8 pixels 00000001 16 pixels 00000000
[00107] In other modalities, different variable fixed-length codewords can also be applied to binarize the MVR deviation magnitudes from the default MVR deviation set and the second MVR deviation set. For example, the digits “0” and “1” in the codeword table above can be swapped to accommodate various 0 / 1 statistics from the context-adaptive binary arithmetic (CABAC) coding engine. In another method, a statistics-based binarization method can be applied to adaptively design optimal codewords for MVR deviation magnitudes on the fly without relying on signaling. The statistics used to determine the optimal codewords can include, among others, the probability distribution of MVR deviation magnitudes collected from a number of previously encoded images, segments, or blocks.Codewords can be redetermined / updated at different frequency levels. For example, the update can be performed every time a CU is encoded in GPM-MVR mode. In another example, the update can be redetermined and / or updated every time a certain number of CUs, for example, 8 or 16, are encoded in GPM-MVR mode. In another method, instead of redesigning a new set of codewords, the proposed statistics-based method can also be used to reorder MVR magnitude values based on the same set of codewords in order to assign shorter codewords to more frequently used magnitudes and longer codewords to less frequently used magnitudes.Taking the following table as an example and assuming that statistics are collected at the image level, the “Usage” column indicates the corresponding percentages of different MVR deviation magnitudes used by the GPM-MVR encoding blocks in the previously encoded image. Based on the values in the “Usage” column, and using the same binarization method (i.e., truncated unary codewords), the encoder / decoder can sort the MVR magnitude values according to their usage. The encoder / decoder can then assign the shortest codeword (i.e., “1”) to the most frequently used MVR magnitude (i.e., 1 pixel), and the second shortest codeword (i.e., “01”) to the second most frequently used MVR magnitude (i.e., % pixel), and so on.and the longest codewords (i.e., “0000001” and “0000000”) to the two least frequently used MVR magnitudes (i.e., 16 pixels and 32 pixels). As can be seen, using this reordering scheme, the same set of codewords can be freely rearranged to incorporate the dynamic change in the statistical distribution of the MVR magnitudes. Rbzc in / cznz / e / YiAi MVR Deviation Usage Binarization 1 / 4 pixel 15% 001 1 / 2 pixel 20% 01 1 pixel 30% 1 2 pixels 10% 0001 4 pixels 9% 00001 8 pixels 6% 000001 16 pixels 5% 0000001 32 pixels 5% 0000000
[00108] Encoder acceleration logic for GPM-MVR speed distortion optimization
[00109] In the case of the proposed GPM-MVR schemes, to determine the optimal MVR for each GPM partition, the encoder may have to test the rate distortion cost of each GPM partition multiple times, each time with the different MVR values being applied. This could significantly increase the encoding complexity of the GPM mode. To address the encoding complexity problem, the following fast encoding logics are proposed in this section:
[00110] First, due to the quaternary / binary / ternary tree block partitioning structure applied in the WC and AVS3 standards, the same encoding block can be tested during the Rate Distortion Optimization (RDO) process, each time partitioned via a different partitioning path. In current VTM / HPM encoder implementations, GPM and GPM-MVR modes, along with other inter- and intra-encoding modes, are always tested whenever the same CU is obtained through different block partitioning combinations. Generally speaking, for different partitioning paths, only contiguous blocks within a CU might differ, which, however, should have a relatively minor impact on the optimal encoding mode that a CU will select.Based on this consideration, to reduce the total number of GPM RDOs being applied, it is proposed to store the decision regarding whether GPM mode is selected when the RD cost of a CU is first checked. Subsequently, when the RDO process rechecks the same CU (using a different partitioning path), the GPM RD cost (including GPM-MVR) is checked only if GPM is selected for the initial CU check. If GPM is not selected for the initial CU RD check, only GPM (without GPM-MVR) is tested when the same CU is obtained via a different partitioning path. In another approach, when GPM is not selected for the initial CU RD check, neither GPM nor GPM-MVR is tested when the same CU is obtained via a different partitioning path.
[00111] Second, to reduce the number of GPM partitions for GPM-MVR mode, it is proposed to maintain the initial GPM M partition modes without the lowest RD costs when a CU's RD cost is first checked. Subsequently, when the RDO process rechecks the same CU (via a different partition path), only the GPM M partition modes for GPM-MVR mode are tested.
[00112] Third, to reduce the number of GPM partitions tested for the initial RDO process, it is proposed to first calculate the sum of absolute differences (SAD) values for each GPM partition when using different uniprediction merge candidates for two GPM partitions. Then, for each GPM partition in a specific partition mode, select the best uniprediction merge candidate with the smallest SAD values and calculate the corresponding SAD value for the partition mode, which is equal to the sum of the SAD values of the best uniprediction merge candidates for two GPM partitions. Subsequently, for the next RD process, only the first N partition modes with the best SAD values for the previous stage are tested for GPM-MVR mode.
[00113] Geometric partition with explicit movement signaling
[00114] In this section, multiple methods are proposed to extend the GPM mode to the biprediction of the inter-ordinary mode, wherein the two unidirectional MVs of the GPM mode are explicitly signaled from the encoder to the decoder.
[00115] In the first solution (Solution One), it is proposed to fully reuse the existing biprediction motion signaling to signal the two unidirectional MVs of the GPM mode. Table 8 illustrates the modified syntax table of the proposed scheme, where the newly added syntax elements are shown in italics and bold. As shown in Table 8, in the solution, all existing syntax elements of the LO and L1 motion information signaling are fully reused to indicate the unidirectional MVs of two GPM partitions, respectively. Furthermore, it is assumed that the LO MV is always associated with the first GPM partition and that the L1 MV is always associated with the second GPM partition. On the other hand, in Table 8, the interprediction syntax, i.e., The `inter_pred_idc` flag is set before the GPM indicator (i.e., `gpm_flag`), so the value of `inter_pred_idc` can be used to condition the presence of `gpm_flag`. Specifically, the `gpm_flag` flag should only be set when `inter_pred_idc` equals `PRED_BI` (i.e., `bi` prediction) and both `inter_affine_flag` and `sym_mvd_flag` are equal to 0 (i.e., the CU is not encoded in affine mode or SMVD mode). When the `gpm_flag` flag is not set, its value is always inferred to be 0 (i.e., GPM mode is disabled). When gpm_flag is 1, another syntax element gpm_partition_idx is also signaled to indicate the selected GPM mode (out of a total of 64 GPM partitions) for the current CU. Table 8. Modified syntax table for motion signaling of Solution One (Option One) if( sh_slice_type = = B ) inter_pred_idc[ xO ][ yO ] ae(v) if( sps_affine_enabled_flag && cbWidth >= 16 && cbHeight >= 16 ){ inter_affine_flag[ xO ][ yO ] ae(v) if( sps_6param_affine_enabled_flag && inter_affine_flag[ xO ][ yO ]) cu_affine_type_flag[ xO ][ yO ] ae(v)} if( sps_smvd_enabled_flag && !ph_mvd_l1_zero_flag && inter_pred_idc[ xO ][ yO ] = = PRED_BI && !inter_affine_flag[ xO ][ yO ] && RefldxSymLO >-1 && RefldxSymLI > -1 ) sym_mvd_flag[ xO ][ yO ] ae(v) if( inter_pred_idc[ xO ][ yO ] != PRED_L1 ) { if( NumRefldxActive[ 0 ] > 1 && !sym_mvd_flag[ xO ][ yO ] ) ref_idx_IO[ xO ][ yO ] ae(v) mvd_coding( xO, yO, 0, 0 ) if( MotionModelldc[ xO ][ yO ] > 0 ) mvd_coding( xO, yO, 0, 1 ) if(MotionModelldc[ xO ][ yO ] > 1 ) mvd_coding( xO, yO, 0, 2 ) mvp_IO_flag[ xO ][ yO ] ae(v)} else { MvdL0[ xO ][ yO ][ 0 ] = 0 MvdL0[ xO ][ yO ][ 1 ] = 0 } if( inter_pred_idc[ xO ][ yO ] != PRED_LO ) { if( NumRefldxActive[ 1 ] > 1 && !sym_mvd_flag[ xO ][ yO ]) ref_idx_l1[ xO ][ yO ] ae(v) if( ph_mvd_l1_zero_flag && inter_pred_idc[ xO ][ yO ] = PRED_BI MvdL1[xO ][ yO ][ 0 ] = 0 MvdL1[xO ][yO][ 1 ] = O MvdCpL1[ xO ][ yO ][ 0 ][ 0 ] = 0 MvdCpL1[xO ][ yO ][ 0 ][ 1 ] = 0 MvdCpL1[ xO ][ yO ][ 1 ][ 0 ] = 0 xO ][ yO ][ 1 ][ 1 ] = 0 MvdCpL1[xO ][ yO ][ 2 ][ 0 ] = 0 MvdCpL1[xO ][y0][2][ 1 ] = 0} else { if( sym_mvd_flag[ xO ][ yO ]) { MvdL1[ xO ][ yO ][ 0 ] = -MvdL0[ xO ][ yO ][ 0 ] MvdL1[ xO ][ yO ] = - yO ][ 1 ] = -MvdL0[ xO ][ yO ][ 1 ]} else mvd_coding( xO, yO, 1, 0 ) if( MotionModelldc[ xO ][ yO ] > 0 ) mvd_coding( xO, yO, 1, 1 ) ¡f(MotionModelldc[ xO ][ yO ] > 1 )2 )} mvp_l1_flag[ xO ][ yO ] ae(v)} else { MvdL1[xO ][ yO ][ 0 ] = 0 MvdL1[xO ][ yO ][ 1 ] = O} if( inter_pred_idc[ xO ][ yO ] = = PRED_BI && !inter_affine_flag[ xO ][ yO ] && !sym_mvd_flag[ xO ][ yO ] && cbWidth >= 8 && cbHeight >= 8 && cbWidth < ( 8 * cbHeight) && cbHeight <( 8 * cbWidth) && cbWidth < 128 && cbHeight <128 ){ gpm_flag[ xO ][ yO ] ae(v) if( gpm_partition_fíag[ xO ][ yO ]) {, Rbzc ι n / cznz / e / γι gpm _partition_idx[ xO ][ yO ] ae(v)}
[00116] In another method, it is proposed to place the gpm_flag flag before the other Inter flag syntax elements, so that the value of gpm_flag can be used to determine whether the other Inter syntax elements should be present. Table 9 illustrates the corresponding syntax table when the method is applied, with the newly added syntax elements shown in italics and bold. As can be seen, gpm_flag is flagged first in Table 9. When gpm_flag is equal to 1, the corresponding flags for inter_pred_idc, inter_affine_flag, and sym_mvd_flag can be omitted. Instead, it can be noted that the corresponding values for three syntax elements are PRED_BI, 0, and 0, respectively. Table 9. Modified syntax table for motion signaling of Solution One (Option Two) Rtove in / cznz / e / Yi if(sh_slice_type = = B && cbWidth >= 8 && cbHeight >= 8 && cbWidth < (8 * cbHeight) && cbHeight <( 8 * cbWidth) && cbWidth < 128 && cbHeight < 128) { gpm_flag[ xO ][ yO ] ae(v) if( gpm_partition_flag[ xO ][ yO ]) { gpm_partition_idx[ xO ][ yO ] ae(v)} if( sh_slice_type = = B && !gpm_flag[ xO ][y0 ]) inter_pred_idc[ xO ][ yO ] ae(v) if( sps_affine_enabled_flag && !gpm_flag[xO ][y0 ] && cbWidth >= 16 && cbHeight >= 16 ) { inter_aff¡ne_flag[ xO ][ yO ] ae(v) if( sps_6param_affine_enabled_flag && inter_aff¡ne_flag[ xO ][ yO ]) cu_aff¡ne_type_flag[ xO ][ yO ] ae(v)} if( sps_smvd_enabled_flag && !ph_mvd_H_zero_flag && inter_pred_idc[ xO ][ yO ] = = PRED_BI && !gpm_flag[xO ][yO ] && !¡nter_affine_flag[ xO ][ yO ] && RefldxSymLO >-1 && RefldxSymLI > -1 ) sym_mvd_flag[ xO ][ yO ] ae(v) if( inter_pred_idc[ xO ][ yO ] != PRED_L1 ) { if( NumRefldxActive[ 0 ] > 1 && !sym_mvd_flag[ xO ][ yO ]) ref_idx_IO[ xO ][ yO ] ae(v) mvd_coding( xO, yO, 0, 0 ) if( MotionModelldc[ xO ][ yO ] > 0 ) mvd_coding( xO, yO, 0, 1 ) ¡f(MotionModelldc[ xO ][ yO ] > 1 ) mvd_coding( xO, yO, 0, 2 ) mvp_IO_flag[ xO ][ yO ] ae(v)} else { MvdL0[ xO ][ yO ][ 0 ] = 0} if( inter_pred_idc[ xO ][ yO ] != PRED_L0 ) { if( NumRefldxActive[ 1 ] > 1 && !sym_mvd_flag[ xO ][ yO ]) ref_idx_l1[ xO ][ yO ] ae(v) if( ph_mvd_l1_zero_flag && inter_pred_idc[ xO ][ yO ] == PRED_BI ){ MvdL1[x0 ][ yO ][ 0 ] = 0 Mvdl_1[xO ][ yO ][ 1 ] = 0 MvdCpL1[xO ][ yO ][ 0 ][ 0 ] = 0 MvdCpL1[xO ][y0][0][1 ] = 0 MvdCpL1[xO ][y0][ 1 ][ 0 ] = 0 MvdCpL1[xO ][ yO ][ 1 ][ 1 ] = 0 MvdCpL1[xO ][ yO ][ 2 ][ 0 ] = 0 MvdCpL1[xO ][ yO ][ 2 ][ 0 ] = 0} else { if( sym_mvd_flag[ xO ][ yO ] ) { MvdL1[ xO ][ yO ][ 0 ] = -MvdL0[ xO ][ yO ][ 0 ] MvdL1[ xO ][ yO ][ 1 ] = -MvdL0[ xO ][ yO ][ 0 ] MvdL1[ xO ][ yO ][ 1 ] = -MvdL0[ xO ][ yO ][ 0 ] ][ yO ][ 1 ]} else mvd_coding( xO, yO, 1,0) if( MotionModelldc[ xO ][ yO ] > 0 ) mvd_coding( xO, yO, 1, 1 ) if(MotionModelldc[ xO ][ yO ] > 1 ) mvd_coding( xO, yO, 1, 1 )2 )} mvp_l1_flag[ xO ][ yO ] ae(v)} else { MvdL1[xO ][ yO ][ 0 ] = 0 MvdL1[xO ][y0][ 1 ] = 0},
[00117] In both Table 8 and Table 9, the SMVD mode cannot be combined with the mode GPM. In another example, it is proposed to allow SMVD mode when the current CU is encoded with the in / C7n7 / e / Yi mode. GPM. When such a combination is allowed, following the same design as the SMVD, it is assumed that the MVD of the two GPM partitions is symmetric, such that only the MVD of the first GPM partition needs to be signaled, and the MVD of the second GPM partition is always symmetric to the first MVD. When this method is applied, the corresponding signaling condition of sym_mvd_flag can be removed from gpm_flag.
[00118] As illustrated above, in the first solution, it is always assumed that the LO MV will be used for the first GPM partition and the L1 MV for the second GPM partition. Such a design may not be optimal in that this method prohibits the MVs of two GPM partitions from coming from the same prediction list (either LO or L1). To address this problem, an alternative GPM-EMS scheme, Solution Two, is proposed, which has the signaling design illustrated in Table 10. In Table 10, the newly added syntax elements appear in italics and bold. As shown in Table 10, the gpm_flag flag is signaled first. When the flag is equal to 1 (i.e., GPM is enabled), the gpm_partition_idx syntax is signaled to specify the selected GPM mode.Next, an additional flag, gpm_pred_dir_flagO, is signaled to indicate the corresponding prediction list from which the MV of the first GPM partition originates. When the gpm_pred_dir_flagO flag is 1, it indicates that the MV of the first GPM partition comes from L1; otherwise (if the flag is 0), it indicates that the MV of the first GPM partition comes from LO. Subsequently, the existing syntax elements refJdxJO, mvp_IO_flag, and mvd_coding() are used to signal the reference image index, mvp index, and MVD values of the first GPM partition. On the other hand, as in the first partition, another syntax element gpm_pred_dir_flag1 is introduced to select the corresponding prediction list from the second GPM partition, followed by the existing syntax elements ref_idx_l1, mvp_l1_flag and mvd_codingO which will be used to derive the MV from the second GPM partition. Rbzc in / cznz / e / YiAi Table 10. Syntax table modified for the indication of movement of the solution of the two if(sh_slice_type = = B && cbWidth >= 8 && cbHeight >= 8 && cbWidth < ( 8 * cbHeight) && cbHeight < ( 8 * cbWidth ) && cbWidth < 128 && cbHeight < 128) { gpm_flag[ xO ][ yO ] ae(v) if( gpm_part¡tion_flag[ xO ][y0]) { gpm _partition_idx[ xO ][ yO ] ae(v) gpm _pred_dir_flagO[ xO ][ yO ] ae(v) ref_idx_IO[xO][yO ] ae(v) mvd_coding( xO, yO, 0,0) mvp_IO_flag[ xO ][ yO ] ae(v) gpm _pred_dir_flag1[xO ][yO ] ae(v) ref_idxJ1[xO ][ yO ] ae(v) mvd_coding( xO, yO, 0,0) mvp_l1 _flag[ xO ][ yO ] ae(v)} else { if( sh_slice_type = = B ) inter_pred_idc[ xO ][ yO ] ae(v) if( sps_affine_enabled_flag && cbWidth >= 16 && cbHeight >= 16){ inter_affine_flag[ xO ][ yO ] ae(v) if( sps_6param_affine_enabled_flag && inter_affine_flag[ xO ][ yO ]) cu_affine_type_flag[ xO ][ yO ] ae(v)} if( sps_smvd_enabled_flag && !ph_mvd_l1_zero_flag && inter_pred_idc[xO][yO] == PRED_BI && !inter_affine_flag[ xO ][ yO ] && RefldxSymLO > -1 && RefldxSymLI > -1 ) sym_mvd_flag[ xO ][ yO ] ae(v) if( inter_pred_idc[ xO ][ yO ] != PRED_L1 ) { if( NumRefldxActive[ 0 ] > 1 && !sym_mvd_flag[ xO ][ yO ]) ref_idx_IO[ xO ][yO ] ae(v) mvd_coding( xO, yO, 0, 0 ) if( MotionModelldc[ xO ][ yO ] > 0 ) mvd_coding( xO, yO, 0, 1 ) if(MotionModelldc[ xO ][ yO ] > 1 ) mvd_coding( xO, yO, 0,2 ) mvp_IO_flag[ xO ][ yO ] ae(v)} else { Mvdl_0[ xO ][ yO ][ 0 ] = 0 MvdLO[xO][yO][ 1 ] = 0} if( inter_pred_idc[ xO ][ yO ] != PRED_LO){ if( NumRefldxActive[ 1 ] > 1 && !sym_mvd_flag[ xO ][ yO ]) ref_idx_l1[ xO ][yO ] ae(v) if( ph_mvd_l1_zero_flag && inter_pred_idc[ xO ][ yO ] == PRED_BI){, Rbzc ι n / cznz / e / γι MvdL1 [ xO ][ yO ][ 0 ] = 0 MvdL1 [ xO ][ yO ][ 1 ] = 0 MvdCpL1[ xO ][ yO ][ 0 ][ 0 ] = 0 MvdCpL1[ xO ][ yO ][ 0 ][ 1 ] = 0 MvdCpL1[ xO ][ yO ][ 1 ][ 0 ] = 0 MvdCpL1[ xO ][ yO ][ 1 ][ 1 ] = 0 MvdCpLI [ xO ][ yO ][ 2 ][ 0 ] = 0 MvdCpL1[ xO ][ yO ][ 2 ][ 1 ] = 0} else { if( sym_mvd_flag[ xO ][ yO ]) { MvdL1 [ xO ][ yO ][ 0 ] = -MvdL0[ xO ][ yO ][ 0 ] MvdL1 [ xO ][ yO ][ 1 ] = -MvdL0[ xO ][ yO ][ 1 ]} else mvd_coding( xO, yO, 1, 0 ) if( MotionModelldc[ xO ][ yO ] > 0 ) mvd_coding( xO, yO, 1, 1 ) if(MotionModelldc[ xO ][ yO ] > 1 ) mvd_coding( xO, yO, 1, 2 )} mvp_l1_flag[ xO ][ yO ] ae(v)} else { MvdL1[ xO ][ yO ][ 0 ] = 0 MvdL1[xO][yO][ 1 ] = 0}} Rbzc in / cznz / e / Yi
[00119] Finally, it is important to mention that since GPM mode consists of two uniprediction partitions (except for the merge samples at the fragmented edge), some existing encoding tools in the WC and AVS3 standards that are specifically designed for biprediction, such as bidirectional optical flow, decoder-side motion vector refinement (DMVR), and CU weighted biprediction (BCW), can be automatically bypassed when the proposed GPM-EMS schemes are enabled for an intermediate CU. For example, when one of the proposed GPM-EMS schemes is enabled for a CU, the corresponding BCW weighting no longer needs to be specified for the CU in order to reduce signal overprocessing, since BCW cannot be applied to GPM mode.
[00120] Combination of GPM-MVR and GPM-EMS
[00121] This section proposes combining the GPM-MVR and GPM-EMS schemes for a geometrically partitioned CU. Specifically, unlike GPM-MVR or GPM-EMS, where only fusion-based motion signaling or explicit signaling can be applied to signal the two-partition GPM uniprediction MV, the proposed scheme allows: 1) one partition using GPM-MVR-based motion signaling and another partition using GPM-EMS-based motion signaling; or 2) two partitions using GPM-MVR-based motion signaling; or 3) two partitions using GPM-EMS-based motion signaling. Using GPM-MVR-based signaling in Table 4 and GPM-EMS-based signaling in Table 10, Table 11 shows the corresponding syntax table after combining the proposed GPM-MVR and GPM-EMS schemes. In Table 11, newly added syntax elements appear in italics and bold.As shown in Table 11, two additional syntax elements, gpm_merge_flagO and gpm_merge_flag1, respectively, are introduced for partitions #1 and #2, which specify that the corresponding partitions use either GPM-MVR-based merge signaling or GPM-EMS-based explicit signaling. When the indicator is one, that means that GPM-MVR based signaling is enabled for the partition whose GPM uniprediction move will be signaled via merge_gpm_idxX, gpm_mvr_partldxX_enabled_flag, gpm_mvr_idxx_direction_idx, and gpm_mvr_partxX_distanceJdx, where X = 0, 1. Otherwise, if the indicator is zero, that means that the partition's uniprediction move will be explicitly signaled as GPM-EMS using the syntax elements gpm_pred_dir_flagX, refjdxjx, mvp_lx_flag, and mvdjx, where X = 0, 1. Table 11. The proposed syntax table for GPM mode with the combination of GPMMVR and GPM-EMS schemes Rbzc in / pznz / e / YiAi merge_data( xO, yO, cbWidth, cbHeight, chType ) { Descriptor ...... if( !ciip_flag[ xO ][ yO ]) { gpm _partition_idx[ xO ][ yO ] ae(v) gpm_merge_flagO[ xO ][ yO ] ae(v) if( gpm_merge_flag0[ x0][y0]){ merge_gpm_idx0[ xO ][ yO ] ae(v) gpm_mvr_partldxO_enable_flag[ xO ][y0] ae(v) if( gpm_mvr_partldxO_enable_flag[ xO ][ yO ]) { gpm_mvr_partldxO_directoin_idx[ xO ][ yO ] ae(v) gpm_mvr_partldxO_distance_idx[ xO ][ yO ] ae(v)}}else{ gpm _pred_dir_flag0[ xO ][ yO ] ae(v) ref_idx_IO[xO ][y0 ] ae(v) mvd_coding( xO, yO, 0,0) mvp_IO_flag[ xO ][ yO ] ae(v)} gpm_merge_flag1[ xO ][y0 ] ae(v) if( gpm_merge_flag1[ x0][y0]){ merge_gpm_idx1 [ xO ][ yO ] ae(v) gpm_mvr_partldx1_enable_flag[ xO ][ yO ] ae(v) if( gpm_mvr_partldx1_enable_flag[ xO ][y0]) { gpm_mvr_partldx1_directoin_idx[ xO ][ yO ] ae(v) gpm_mvr_partldx1_distance_idx[ xO ][ yO ] ae(v)}}else{ gpm _pred_dir_flag1[ xO ][ yO ] ae(v) ref_idxJ1[x0 ][y0 ] ae(v) mvd_coding( xO, yO, 0,0) mvp_l1_flag[ xO ][ yO ] ae(v)} ......}
[00122] GPM-MVR Combination with Template Matching
[00123] In this section, different solutions are provided for combining the GPMMVR scheme with template matching.
[00124] In method one, when a CU is coded in GPM mode, it is proposed to signal two separate indicators for two GPM partitions, each indicating whether the corresponding partition's unidirectional movement is subsequently refined by template matching. When the indicator is enabled, a template is generated using the contiguous left and top reconstructed samples of the current CU; the partition's unidirectional movement is then refined by minimizing the difference between the template and its reference samples, following the same procedure introduced in the "Template Matching" section. Otherwise (when the indicator is disabled), template matching is not applied to the partition, and the GPM-MVR scheme can be applied subsequently.Using the GPM-MVR-based signaling method shown as an example in Table 5, Table 12 illustrates the corresponding syntax table when the GPM-MVR scheme is combined with template matching. In Table 12, newly added syntax elements appear in italics and bold. Rbzc in / cznz / e / YiAi Table 12. Syntax elements of the proposed method of combining the GPM-MVR scheme with template matching (Method one) merge_data( xO, yO, cbWidth, cbHeight, chType) { Descriptor ...... if( !cüp_flag[ xO ][ yO ]) { merge_gpm_partition_idx[ xO ][ yO ] ae(v) gpm_tm_enable_flagO[ xO ][ yO ] ae(v) if( !gpm_tm_enable_flagO ) { gpm_mvr_partldxO_enable_flag[ xO ][ yO ] ae(v)} if(gpm_mvr_partldxO_enable_flag[x0][y0]) { gpm_mvr_partldxO_directoin_idx[ xO ][y0 ] ae(v) gpm_mvr_partldxO_distance_idx[ xO ][ yO ] ae(v)} gpm_tm_enable_flag1[ xO ][ yO ] ae(v) if( !gpm_tm_enable_flag1) { gpm_mvr_partldx1_enable_flag[ xO ][ yO ] ae(v)} if( gpm_mvr_partldx1_enable_flag[ xO ][y0]) { gpm_mvr_partldx1_direction_idx[ xO ][y0 ] ae(v) gpm_mvr_partldx1_distance_idx[ xO ][ yO ] ae(v)}} merge_gpm_idxO[ xO ][ yO ] ae(v) merge_gpm_idx1 [ xO ][ yO ] ae(v) ......}
[00125] As shown in Table 12, in the proposed scheme, two additional indicators, gpm_tm_enable_flagO and gpm_tm_enable_flag1, are first signaled to indicate whether movement refinement is performed for the two GPM partitions, respectively. When the indicator is one, it indicates that the TM is applied to refine the unidirectional MV of one partition. When the indicator is zero, an indicator (gpm_mvr_partldxO_enable_flag or gpm_mvr_partldx1_enable_flag) is also signaled to indicate whether the GPM-MVR scheme is applied to the GPM partition, respectively. When the indicator of a GPM partition is equal to one, the distance index (indicated by the syntax elements gpm_mvr_partldxO_distanceJdx and gpm_mvr_partldx1_distance_idx) and the direction index (indicated by the syntax elements gpm_mvr_partldxO_direction_idx and gpm_mvr_partldx1_direction_idx) are signaled to specify the magnitude and direction of the MVR.Subsequently, the existing syntax merge_gpm_idxO and merge_gpm_idx1 are signaled to identify the unidirectional VMs for two GPM partitions. Furthermore, as with the signaling conditions applied in Table 5, the following conditions can be applied to ensure that the resulting VMs used for predictions of the two GPM partitions are not identical.
[00126] First, when the values of gpm_tm_enable_flagO and gpm_tm_enable_flag1 are equal to 1 (i.e., TM is enabled for both GPM partitions), the values of merge_gpm_idxO and merge_gpm_idx1 cannot be equal.
[00127] Secondly, when one of gpm_tm_enable_flagO and gpm_tm_enable_flag1 is one and the other is zero, the values of merge_gpm_idx0 and merge_gpm_idx1 can be equal.
[00128] Otherwise, i.e., both gpm_tm_enable_flag0 and gpm_tm_enable_flag1 are equal to one: First, when the values of gpm_mvr_partldxO_enable_flag and gpm_mvr_partldx1_enable_flag are equal to 0 (i.e., the GPM-MVR scheme is disabled for both GPM partitions), the values of merge_gpm_gpm_idx0 and merge_gpm_idx1 cannot be equal; Secondly, when gpm_mvr_partldxO_enable_flag is equal to 1 (i.e., the GPM-MVR scheme is enabled for the first GPM partition) and gpm_mvr_partldx1_enable_flag is equal to 0 (i.e., the GPM-MVR scheme is disabled for the second GPM partition), the values of merge_gpm_idxO and merge_gpm_idx1 can be identical;Third, when gpm_mvr_partldxO_enable_flag is equal to 0 (i.e., the GPM-MVR scheme is disabled for the first GPM partition) and gpm_mvr_partldx1_enable_flag is equal to 1 (i.e., the GPM-MVR scheme is enabled for the second GPM partition), the values of merge_gpm_idx0 and merge_gpm_idx1 can be identical; fourth,; Rbzc in / cznz / e / YiAi when the values of gpm_mvr_partldxO_enable_flag and gpm_mvr_partldx1_enable_flag are equal to 1 (i.e., the GPM-MVR scheme is enabled for both GPM partitions), the determination as to whether the values of merge_gpmJdxO and merge_gpm_idx1 can be identical or not depends on the values of the MVRs (as indicated by gpm_mvr_partldxO_direction_idx and gpm_mvr_partldxO_distance_idx, and gpm_mvr_partldx1_direction_idx and gpm_mvr_partldx1_distance_idx) that apply to the two GPM partitions. If the values of two MVRs are equal, merge_gpm_idxO and merge_gpm_idx1 cannot be identical. Otherwise (if the values of two MVRs are not equal), the values of merge_gpm_idxO and merge_gpm_idx1 can be identical.
[00129] In Method One above, the TM and MVR apply exclusively to the GPM. In that scheme, the MVR can no longer be applied in addition to the refined MVs of TM mode. Therefore, to provide more MV candidates for the GPM, Method Two is proposed to allow the application of the MVR deviation in addition to the refined MVs of the TMs. Table 13 illustrates the corresponding syntax table when the GPM-MVR scheme is combined with template matching. In Table 13, the newly added syntax elements appear in italics and bold. Table 13. Syntax elements of the proposed method of combining the GPM-MVR scheme with template matching (Method two) Rbzc in / cznz / e / YiAi merge_data( xO, yO, cbWidth, cbHeight, chType) { Descriptor ...... if( !ciip_flag[ xO ][ yO ]) { merge_gpm_partition_idx[ xO ][ yO ] ae(v) gpm_tm_enable_flagO[ xO ][ yO ] ae(v) gpm_mvr_partldxO_enable_flag[ xO ][ yO ] ae(v) if( gpm_mvr_partldxO_enable_flag[ xO ][y0]) { gpm_mvr_partldxO_directoin_idx[ xO ][y0 ] ae(v) gpm_mvr_partldxO_distance_idx[ xO ][ yO ] ae(v)} gpm_tm_enable_flag1[ xO ][ yO ] ae(v) gpm_mvr_partldx1 _enable_flag[ xO ][ yO ] ae(v) if( gpm_mvr_partldx1_enable_flag[ xO ][y0]) { gpm_mvr_partldx1_direction_idx[ xO ][y0 ] ae(v) gpm_mvr_partldx1_distance_idx[ xO ][ yO ] ae(v)}} merge_gpm_idx0[ xO ][ yO ] ae(v) merge_gpm_idx1 [ xO ][ yO ] ae(v) ......} Rbzc i n / cznz / e / Yi
[00130] As shown in Table 13, unlike Table 12, the signaling condition of gpm_mvr_partldxO_enable_flag and gpm_mvr_partldx1_enable_flag is removed from gpm_tm_enable_flagO and gpm_tm_enable_flag1. Therefore, regardless of whether the TM is applied to refine the unidirectional movement of a GPM partition, the MV refinements can always be applied to the MVs of the GPM partition. As explained above, the following conditions must be applied to ensure that the resulting MVs from two GPM partitions are not identical.
[00131] First, when one of gpm_tm_enable_flagO and gpm_tm_enable_flag1 is one and the other is zero, the values of merge_gpm_idx0 and merge_gpm_idx1 can be equal.
[00132] Otherwise, i.e., both gpm_tm_enable_flag0 and gpm_tm_enable_flag1 are equal to one or both flags are equal to zero: First, when the values of gpm mvr partldxO enable flag and gpm mvr partldxl enable flag are equal to 0 (i.e., the GPM-MVR scheme is disabled for both GPM partitions), the values of merge_gpm_gpm_idxO and merge_gpm_idx1 cannot be equal; Secondly, when gpm_mvr_partldxO_enable_flag is equal to 1 (i.e., the GPM-MVR scheme is enabled for the first GPM partition) and gpm_mvr_partldx1_enable_flag is equal to 0 (i.e., the GPM-MVR scheme is disabled for the second GPM partition), the values of merge_gpm_idx0 and merge_gpm_idx1 can be identical;Third, when gpm_mvr_partldxO_enable_flag is equal to 0 (i.e., the GPM-MVR scheme is disabled for the first GPM partition) and gpm_mvr_partldx1_enable_flag is equal to 1 (i.e., the GPM-MVR scheme is enabled for the second GPM partition), the values of merge_gpm_idx0 and merge_gpm_idx1 can be identical;Fourth, when the values of gpm_mvr_partldxO_enable_flag and gpm_mvr_partldx1_enable_flag are both equal to 1 (i.e., the GPM-MVR scheme is enabled for both GPM partitions), whether the values of merge_gpm_idxO and merge_gpm_idx1 can be identical depends on the values of the MVRs (as indicated by gpm mvr partldxO directionJdx and gpm mvr partldxO distanceJdx, and gpm mvr partldx1 directionjdx and gpm_mvr_partldx1_distance_idx) that apply to the two GPM partitions. If the values of the two MVRs are equal, merge_gpm_idxO and merge_gpm_idx1 cannot be identical. Otherwise (if the values of two MVRs are not equal), the values of merge_gpm_idxO and merge_gpm_idx1 can be identical.
[00133] In the two preceding methods, two separate flags must be signaled to indicate whether the TM is applied to each GPM partition. The added signaling can reduce overall coding efficiency due to overprocessing, especially at low bit rates. To reduce signaling overprocessing, Method Three proposes inserting TM-based unidirectional VMs into the GPM mode's unidirectional VM candidate list instead of introducing additional signaling. The TM-based unidirectional VMs are generated by following the same TM process described in the "Template Matching" section and using the original GPM unidirectional VM as the initial VM. With this scheme, no additional control flags need to be signaled from the encoder to the decoder.In contrast, the decoder can identify whether the TM performs refinement of a MV through the corresponding merge indices (i.e., merge_gpm_idxO and merge_gpm_idx1) received from the bitstream. There are different methods for arranging the regular (i.e., non-TM-based) GPM MV candidates and the TM-based MV candidates. One method proposes placing the TM-based MV candidates at the beginning of the MV candidate list, followed by the non-TM-based MV candidates. Another method proposes placing the non-TM-based MV candidates at the beginning of the list, followed by the TM-based candidates. Yet another method proposes alternating TM-based and non-TM-based MV candidates. For example, the first N non-TM-based candidates could be placed first, followed by all the TM-based candidates; Finally, the remaining candidates not based on TM.In another example, the first N candidates based on TM can be listed; then, all the candidates not based on TM; and finally, the remaining candidates based on TM. In yet another example, it is proposed to list the candidates not based on TM and the candidates based on TM in an alternating fashion, that is, one candidate not based on TM, one candidate based on TM, and so on.
[00134] The methods described above may be implemented using a device that includes one or more circuits, including application-specific integrated circuits (ASIOs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), controllers, microcontrollers, microprocessors, or other electronic components. The device may utilize the Rfrzr in / cznz / e / viAi circuits in combination with other hardware or software components to perform the methods described above. Each module, submodule, unit, or subunit described above may be implemented at least partially using one or more circuits.
[00135] Figure 9 shows a computing environment (or computing device) 910 coupled to a user interface 960. The computing environment 910 may be part of a data processing server. In some embodiments, the computing device 910 may perform any of the various methods or processes (for example, encoding / decoding methods or processes) as described above in accordance with the various examples in this description. The computing environment 910 may include a processor 920, memory 940, and an I / O interface 950.
[00136] The 920 processor typically controls the general operations of the 910 computing environment, such as operations associated with the display, data acquisition, data communications, and image processing. The 920 processor may include one or more processors to execute instructions in order to perform all or some of the steps of the methods described above. In addition, the 920 processor may include one or more modules that facilitate interaction between the 920 processor and other components. The processor may be a Central Processing Unit (CPU), a microprocessor, a single-chip machine, a GPU, or similar.
[00137] The 940 memory is configured to store various types of data to support the operation of the 910 computing environment. The 940 memory may include predefined software 942. Examples of such data include instructions for any application or methods operated in a 910 computing environment, video data sets, image data, and so forth. The 940 memory may be implemented using any type of volatile or non-volatile memory device, or a combination thereof, such as static random-access memory (SRAM), electrically erasable programmable read-only memory (EEPROM), erasable programmable read-only memory (EPROM), programmable read-only memory (PROM), read-only memory (ROM), magnetic memory, flash memory, or a magnetic or optical disk.
[00138] The 950 I / O interface provides an interface between the 920 processor and peripheral interface modules, such as a keyboard, click wheel, buttons, and the like. Buttons may include, but are not limited to, a start button, a start scan button, and a stop scan button. The 950 I / O interface can be coupled to an encoder and a decoder. Rbzc in / cznz / e / YiAi
[00139] In some embodiments, a non-transient, computer-readable storage medium comprising a plurality of programs, such as those contained in memory 940, executable by the processor 920 in the computing environment 910, is also provided for performing the methods described above. For example, the non-transient, computer-readable storage medium may be a ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage device, or the like.
[00140] The non-transient, computer-readable storage medium has stored a plurality of programs for execution through a computing device having one or more processors, wherein the plurality of programs, when executed through the processor(s), causes the computing device to perform the above-described method for motion prediction.
[00141] In some modalities, the 910 computing environment can be implemented with one or more application-specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), graphics processing units (GPUs), controllers, microcontrollers, microprocessors, or other electronic components to perform the methods described above.
[00142] Figure 8 is a flowchart illustrating a method for decoding a video block in GPM mode according to an example in the present description.
[00143] In stage 801, the 1020 processor can receive a control flag associated with the video block. The control flag can be a control variable that includes one or more flags, such as a binary flag, a non-binary flag, or any other variable. In one or more examples, the control variable can be the flag “ph_gpm_mvr_ofíset_set_flag”, as shown in Table 17.
[00144] In some examples, the control variable allows adaptive switching between a plurality of sets of MVR deviations and the control variable is applied at a level of encoding.
[00145] In some examples, the encoding level may be a sequence level, a picture / segment level, a CTU level, or an encoding block level. For example, when the control variable is signaled on the encoder side at a picture level, the decoder side consequently receives the control variable to indicate which set of MVR offsets should be selected with the Rbzc in / cznz / e / YiAi in order to be able to select the corresponding MVR deviation associated with the current video block at the picture level.
[00146] At stage 802, the 1020 processor can segment the video block into a first geometric partition and a second geometric partition.
[00147] In step 803, processor 1020 may receive one or more syntax elements to determine a first MVR deviation and a second MVR deviation to be applied to the first and second geometric partitions of a selected MVR deviation set. The selected MVR deviation may be an MVR deviation selected by the control variable.
[00148] In some examples, the plurality of MVR deviation sets may include a first set of MVR deviations and a second set of MVR deviations. In some examples, the first set of MVR deviations may include a plurality of default MVR deviations, including a plurality of default deviation magnitudes and a plurality of default MVR directions. In some examples, the second set of MVR deviations may include a plurality of alternative MVR deviations, including a plurality of alternative deviation magnitudes and a plurality of alternative MVR directions. In some examples, the second set of MVR deviations may include more deviation magnitudes and more MVR directions than the first set of MVR deviations.For example, the plurality of default offset magnitudes and the plurality of default MVR directions may include eight offset magnitudes (i.e., 1 / 4, 1 / 2, 1.2, 4, 8, 16, and 32 pixels) and four MVR directions (i.e., x and y axes + / -). The plurality of alternative offset magnitudes and the plurality of alternative MVR directions may include the offset and directions shown in Table 15 and Table 16.
[00149] As shown in Table 15 and Table 16, the set of alternative MVR deviations may include more deviation magnitudes in addition to the plurality of default deviation magnitudes, and the set of alternative MVR deviations may include more MVR addresses in addition to the plurality of default MVR addresses.
[00150] In some examples, the 1020 processor may determine that the first set of MVR offsets is applied in response to the determination that the control variable is equal to 0 and may determine that the second set of MVR offsets is applied in response to the Rbzc in / cznz / e / YiAi determination that the control variable is equal to 1.
[00151] In some examples, the plurality of predetermined deviation magnitudes and the plurality of alternative deviation magnitudes, respectively, can be binarized using variable-length code words.
[00152] As shown in Table 18, a first default deviation magnitude (i.e., 1 / 4 pixel) indicates a distance of % of a pixel from the video block and is binarized as 001, a second default deviation magnitude (i.e., 1 / 2 pixel) indicates a distance of 1 pixel from the video block and is binarized as 1, a third default deviation magnitude (i.e., 1 pixel) indicates a distance of 1 pixel from the video block and is binarized as 01, a fourth default deviation magnitude (i.e., 2 pixels) indicates a distance of 2 pixels from the video block and is binarized as 0001, a fifth default deviation magnitude (i.e., 4 pixels) indicates a distance of 4 pixels from the video block and is binarized as 00001, a sixth default deviation magnitude (i.e., 8 pixels) indicates a distance of 8 pixels from the video block and It is binaryized as 000001,A seventh default deviation magnitude (i.e., 16 pixels) indicates a distance of 16 pixels from the video block and is binarized as 0000001, and an eighth default deviation magnitude (i.e., 32 pixels) indicates a distance of 32 pixels from the video block and is binarized as 0000000.
[00153] Furthermore, as shown in Table 18, a first alternate deviation magnitude (i.e., 1 / 4 pixel) indicates a distance of % of a pixel from the video block and is binarized as 001, a second alternate deviation magnitude (i.e., 1 / 2 pixel) indicates a distance of 1 / 2 pixel from the video block and is binarized as 1, a third alternate deviation magnitude (i.e., 1 pixel) indicates a distance of 1 pixel from the video block and is binarized as 01, a fourth alternate deviation magnitude (i.e., 2 pixels) indicates a distance of 2 pixels from the video block and is binarized as 0001, a fifth alternate deviation magnitude (i.e., 3 pixels) indicates a distance of 3 pixels from the video block and is binarized as 00001, a sixth alternate deviation magnitude (i.e., 4 pixels) indicates a distance of 4 pixels from the video block and is binaryized as 000001,A seventh alternative deviation magnitude (i.e., 6 pixels) indicates a distance of 6 pixels from the video block and is binarized as 0000001, an eighth alternative deviation magnitude (i.e., 8 pixels) indicates a distance of 8 pixels from the video block and is, Rbzc in / cznz / e / YiAi binarizes as 00000001, and a ninth alternate deviation magnitude (i.e., 16 pixels) indicates a distance of 16 pixels from the video block and is binarized as 00000000.
[00154] In some examples, the 1020 processor may also receive a first geometric partition enable syntax element (for example, gpm_mvr_partldx0_enable_flag) indicating whether or not the MVR is applied to the first geometric partition; in response to the determination that the geometric partition enable syntax element is equal to 1, receive a first direction syntax element (for example, gpm_mvr_partldxO_direction_idx) and a first magnitude syntax element (for example, gpm_mvr_partldxO_distance_idx) indicating the direction and magnitude of the first MVR deviation from the first geometric partition as determined based on the selected MVR deviation set; receive a second element of geometric partition enable syntax (e.g., gpm_mvr_partldx1_enable_flag) indicating whether or not the MVR is applied to the second geometric partition;and in response to the determination that the second geometric partition enable syntax element is equal to 1, receive a second direction syntax element (for example, gpm_mvr_partldx1_direction_idx) and a second magnitude syntax element (for example, gpm_mvr_partldx1_distance_idx) indicating the direction and magnitude of the second MVR deviation of the second geometric partition that are determined based on the selected MVR deviation set.;
[00155] At stage 804, the 1020 processor can obtain a first MV and a second MV from a list of candidates for the first geometric partition and the second geometric partition.
[00156] At stage 805, the 1020 processor can calculate a first refined MV and a second refined MV based on the first and second MV and the first and second MVR deviations.
[00157] At stage 806, the 1020 processor can obtain prediction samples for the video block based on the first and second refined MV.
[00158] In some examples, an apparatus is provided for decoding a GPM video block. The apparatus includes a 1020 processor and a 1040 memory configured to store instructions executable through the processor; wherein the processor, after execution of the instructions, is configured to perform a method as illustrated in Figure 8.
[00159] In some other examples, a non-transient, computer-readable storage medium is provided that has instructions stored on it. When the Rbzc in / cznz / e / YiAi instructions through a 1020 processor, the instructions cause the processor to perform a method as illustrated in Figure 8.
[00160] Other examples of the description will be apparent to those skilled in the art from consideration of the specification and the practice of the description disclosed in this document. The purpose of this request is to encompass any variation, use, or adaptation of the description, provided it adheres to the general principles herein and includes such deviations from the present description to the extent that they arise from known or customary practice in the art. The specification and examples are intended to be considered for illustrative purposes only.
[00161] It will be appreciated that the present description is not limited to the exact examples above described and illustrated in the accompanying drawings, and various modifications and changes may be made without departing from its scope.
Claims
CLAIMS 1. A method for decoding a video block in geometric partitioning mode (GPM), comprising: receiving a control variable associated with the video block, wherein the control variable enables adaptive switching between a plurality of sets of motion vector refinement (MVR) deviations and the control variable is applied at an encoding level and the video block comprises a first geometric partition and a second geometric partition; receiving one or more syntax elements for determining a first MVR deviation for the first geometric partition and a second MVR deviation for the second geometric partition from a selected set of MVR deviations; obtaining a first motion vector (MV) and a second MV from a list of candidates for the first geometric partition and the second geometric partition;calculate a first refined MV and a second refined MV based on the first and second MV and the first and second MVR deviations; and obtain prediction samples for the video block based on the first and second refined MV.
2. The method according to claim 1, wherein the encoding level comprises a sequence level, an image level, an encoding tree unit level, or an encoding block level.
3. The method according to claim 1, wherein the plurality of MVR deviation sets comprises a first MVR deviation set and a second MVR deviation set, wherein the first MVR deviation set comprises a plurality of predetermined MVR deviations comprising a plurality of predetermined deviation magnitudes and a plurality of predetermined MVR directions, and wherein the second MVR deviation set comprises a plurality of alternative MVR deviations comprising a plurality of alternative deviation magnitudes and a plurality of alternative MVR directions.
4. The method according to claim 1, wherein the plurality of MVR deviation sets comprises a first MVR deviation set and a second MVR deviation set, and wherein the second MVR deviation set comprises MVR deviation magnitudes and directions from the first MVR deviation set.
5. The method according to claim 3 also comprises: in response to the determination that the control variable is equal to 0, determining that the first set of MVR deviations applies; and in response to the determination that the control variable is equal to 1, determining that the second set of MVR deviations applies.
6. The method according to claim 3, wherein the plurality of predetermined deviation magnitudes and the plurality of alternative deviation magnitudes, respectively, are binarized using variable-length code words.
7. The method according to claim 6, wherein the second set of MVR deviations comprises more deviation magnitudes in addition to the predetermined plurality of deviation magnitudes, and wherein the second set of MVR deviations comprises more MVR directions in addition to the predetermined plurality of MVR directions.
8. The method according to claim 7, wherein the plurality of predetermined deviation magnitudes comprises: a first predetermined deviation magnitude indicating a distance of 1 pixel from the video block and being binarized as 001, a second predetermined deviation magnitude indicating a distance of 1 pixel from the video block and being binarized as 1, a third predetermined deviation magnitude indicating a distance of 1 pixel from the video block and being binarized as 01, a fourth predetermined deviation magnitude indicating a distance of 2 pixels from the video block and being binarized as 0001, a fifth predetermined deviation magnitude indicating a distance of 4 pixels from the video block and being binarized as 00001, a sixth predetermined deviation magnitude indicating a distance of 8 pixels from the video block and being binarized as 000001,a seventh default deviation magnitude indicating a distance of 16 pixels from the video block and is binarized as 0000001, and an eighth default deviation magnitude indicating a distance of 32 pixels from the video block and is binarized as 0000000.
9. The method according to claim 7, wherein the plurality of alternative deviation magnitudes comprises: a first alternative deviation magnitude indicating a distance of % of a pixel from the video block and is binarized as 001, a second alternative deviation magnitude indicating a distance of 1L pixel from the video block and is binarized as 1, a third alternative deviation magnitude indicating a distance of 1 pixel from the video block and is binarized as 01, a fourth alternative deviation magnitude indicating a distance of 2 pixels from the video block and is binarized as 0001, a fifth alternative deviation magnitude indicating a distance of 3 pixels from the video block and is binarized as 00001, a sixth alternative deviation magnitude indicating a distance of 4 pixels from the video block and is binarized as 000001,a seventh alternative deviation magnitude indicating a distance of 6 pixels from the video block and is binarized as 0000001, an eighth alternative deviation magnitude indicating a distance of 8 pixels from the video block and is binarized as 00000001, and a ninth alternative deviation magnitude indicating a distance of 16 pixels from the video block and is binarized as 00000000.
10. The method according to claim 1, wherein receiving one or more syntax elements for determining the first MVR deviation for the first geometric partition and the second MVR deviation for the second geometric partition from the selected set of MVR deviations comprises: receiving a first geometric partition enable syntax element indicating whether or not the MVR applies to the first geometric partition;in response to the determination that the first geometric partition enable syntax element is equal to 1, receive a first direction syntax element indicating the direction of the first MVR deviation of the first geometric partition, which is determined based on the selected MVR deviation set, and a first magnitude syntax element indicating the magnitude of the first MVR deviation of the first geometric partition, which is determined based on the selected MVR deviation set; receive a second geometric partition enable syntax element indicating whether or not the MVR applies to the second geometric partition;and in response to the determination that the second geometric partition enable syntax element is equal to 1, receiving a second direction syntax element indicating the direction of the second MVR deviation of the second geometric partition, which is determined based on the selected MVR deviation set, and a second magnitude syntax element indicating the magnitude of the second MVR deviation of the second geometric partition, which is determined based on the selected MVR deviation set.
11. The method according to claim 10, wherein the first geometric partition enable syntax element comprises gpm_mvr_partldxO_enable_flag; wherein the first direction syntax element comprises gpm_mvr_partldxO_direction_idx and the first magnitude syntax element comprises gpm_mvr_partldxO_distance_idx;wherein the second element of the geometric partition enable syntax comprises gpm_mvr_partldx1_enable_flag; and wherein the second element of the direction syntax comprises gpm_mvr_partldx1_direction_idx and the second element of the magnitude syntax comprises gpm_mvr_partldx1_distance_idx.; 12. A video decoding apparatus comprising: one or more processors; and a memory coupled to one or more processors, wherein the processor(s) are configured to perform the method in accordance with any of claims 1 to 11.
13. A non-transient, computer-readable storage medium for decoding a video block, the non-transient, computer-readable storage medium storing data that causes one or more computer processors to store a video bitstream to be decoded on the non-transient, computer-readable storage medium, and for performing the method according to any one of claims 1 to 11 for decoding the video bitstream.
14. A computer-readable storage medium for decoding a video block, Rbzc in / cznz / e / YiAi the computer-readable storage medium stores a bit stream that will be decoded by the method in accordance with any of claims 1 to 11.