Using Interpolation Filters for History-Based Motion Vector Prediction.

Advanced video processing techniques, including precise motion vector handling and interpolation filter management, address the growing bandwidth demands for digital video, enhancing efficiency and quality in multi-device environments.

JP7655969B2Active Publication Date: 2025-04-02DOUYIN VISION CO LTD +1
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2023105109
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-04-01
Filing Date
2023-06-27
Publication Date
2025-04-02
Estimated Expiration
2040-04-01

AI Technical Summary

Technical Problem

Current video compression technologies face challenges in efficiently managing bandwidth demand for digital video, particularly as the number of connected devices increases, leading to higher demands for video processing that can effectively handle motion vectors and interpolation filters.

Method used

The proposed methods involve advanced video processing techniques that include converting video blocks between current video representations and coded representations, using parameters such as motion information accuracy and interpolation filter precision, and employing history-based motion vector prediction tables to optimize motion vector derivation and interpolation.

Benefits of technology

These methods enhance video processing efficiency by optimizing motion vector prediction and interpolation, thereby reducing bandwidth requirements and improving video quality, especially in scenarios with increasing device connectivity.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007655969000005
    Figure 0007655969000005
  • Figure 0007655969000006
    Figure 0007655969000006
  • Figure 0007655969000007
    Figure 0007655969000007
Patent Text Reader

Abstract

To provide a method for using a first 1 / 2 pixel accuracy interpolation filter, other than a second 1 / 2 pixel accuracy interpolation filter, to a video block in accordance with a specific coding mode.SOLUTION: A video processing method comprises determining, in a specific coding mode, first motion information for a first geometric section in a first video block and second motion information for a second geometric section in the first video block. A weighting process for generating a final prediction of a sample in a weighted region in the first video block is applied based on a weighted sum of prediction samples derived based on the first motion information and the second motion information. The motion information is configured to include interpolation filter information for one or more previously processed blocks. The interpolation filter information includes an interpolation filter used for interpolating a prediction block of the one or more previously processed blocks.SELECTED DRAWING: Figure 12B
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS Books This application claims priority to and the benefit of International Patent Application No. PCT / CN2019 / 080754, filed on April 1, 2019. of Assert Based on International Patent Application PCT / CN2020 / 082752 filed on April 1, 2020, and Japanese Patent Application No. 2021-557130. The entire disclosure of the above application is incorporated herein by reference. Here It is incorporated herein by reference.

[0002] This patent specification relates to image processing techniques, devices and systems. [Background technology]

[0003] Despite advances in video compression, digital video still accounts for the largest bandwidth usage in the Internet and other digital communications networks. The bandwidth demands for digital video use are expected to continue to grow as the number of connected user devices capable of receiving and displaying video increases. Summary of the Invention

[0004] Devices, systems, and methods are described that relate to digital video processing, and in particular to deriving motion vectors. The described methods may be applied to both existing video coding standards (e.g., High Efficiency Video Coding (HEVC) or Versatile Video Coding (VVC)) and future video coding standards or video codecs.

[0005] In one exemplary aspect, the disclosed techniques may be used to provide a method of video processing, comprising: converting between a current video block of a video and a coded representation of the video, the coded representation comprising a first parameter indicating a motion information precision from a plurality of precision sets for the current video block that does not use a default motion information precision and / or a second parameter identifying whether to use an alternative half-pixel interpolation filter for the conversion, the first parameter and / or the second parameter each being associated with one or more bins, and wherein context model based coding is used only for a first bin of the one or more bins in the coded representation.

[0006] In another aspect, the disclosed techniques may be used to provide a method of video processing, the method including determining motion information using an interpolation filter for converting between a current video block of a video and a coded representation of the video, the motion information having M integer pixel precision or 1 / N sub-pixel precision, where M, N are positive integers and N is not equal to 2, and performing the conversion based on the motion information, where a syntax field of the coded representation corresponds to the interpolation filter.

[0007] In another aspect, the disclosed techniques may be used to provide a method of video processing, the method including: generating a first motion candidate based on one or more motion candidates in a motion candidate list and one or more interpolation filters associated with the one or more motion candidates for conversion between a current video block of a video and a coded representation of the video, where an interpolation filter is assigned to the first motion candidate according to a rule that depends on the one or more interpolation filters associated with the one or more motion candidates; inserting the first motion candidate into the motion candidate list; and performing the conversion based on the motion candidate list.

[0008] In another aspect, the disclosed techniques may be used to provide a method of video processing that includes associating with each of a plurality of blocks, including a first block in a first image region and a second block in a second image region of a video, motion information that includes information about a respective interpolation filter used to interpolate motion vector difference information for each of the plurality of blocks, and using the motion information to convert between the video and a coded representation of the video.

[0009] In another aspect, the disclosed techniques may be used to provide a method of video processing, the method including converting between a current video block of a video and a coded representation of the video, the current video block being represented in the coded representation using a merge mode or a Merge with Motion Vector Different (MMVD) mode, and an interpolation filter having a precision of 1 / N is used to interpolate a predictive block associated with the current video block according to a rule, N being a positive integer, the rule defining a condition for inheriting interpolation information if the interpolation filter is an alternative interpolation filter different from a default interpolation filter.

[0010] In another aspect, the disclosed techniques may be used to provide a method of video processing that includes processing a current video block during conversion between a video including the current video block and a coded representation of the video, and comparing and selectively updating a merge candidate list and motion information of the current video block, the motion information including interpolation filter information including parameters of an interpolation filter used to interpolate motion vector difference values ​​used to represent the current video block in the coded representation.

[0011] In one exemplary aspect, the disclosed techniques may be used to provide a method of video processing, the method including, prior to conversion between a current video block of a video domain and a coded representation of the video, maintaining at least one History-based Motion Vector Prediction (HMVP) table, the HMVP table including one or more entries corresponding to motion information of one or more previously processed blocks, and performing the conversion using the at least one HMVP table, the motion information of each entry configured to include interpolation filter information for the one or more previously processed blocks, the interpolation filter information indicating an interpolation filter used to interpolate a prediction block of the one or more previously processed blocks.

[0012] In one exemplary aspect, the disclosed techniques may be used to provide a method of video processing, the method including: maintaining at least one History-based Motion Vector Prediction (HMVP) table including one or more entries corresponding to motion information of one or more previously processed blocks prior to conversion between a current video block of a video domain and a coded representation of the video, the motion information of each entry being configured to include interpolation filter information for the one or more previously processed blocks; constructing a motion candidate list including HMVP merge candidates for the conversion, the HMVP candidates being derived by inheriting an entry from the HMVP table including the corresponding interpolation filter information associated with the one entry; and performing the conversion based on the motion candidate list.

[0013] In one exemplary aspect, the disclosed techniques may be used to provide a method of video processing that includes determining an encoding mode used to represent, in a coded representation of a video, a current video block of the video, and coding the current video block into the coded representation according to the coding mode, where use of half-pixel precision to represent motion information is disabled for the current video block by use of the coding mode.

[0014] In one representative aspect, the disclosed techniques may be used to provide a method of video processing that includes parsing a coded representation of a video to determine that a current video block of the video has been coded using a coding mode, and generating a decoded representation of the current video block from the coded representation in accordance with the coding mode, wherein use of half-pixel precision to represent motion information is disabled for the current video block by using the coding mode.

[0015] In one representative aspect, the disclosed techniques may be used to provide a method of video processing, the method including: determining, for a current video block processed using a Generalized Bi-prediction (GBi) mode, to use a first weighting factor and a second different weighting factor for a first predictive block and a second predictive block, respectively, the first weighting factor and the second weighting factor being selected from a weighting factor set; and converting between the current video block of a video and a coded representation of the video based on the determination, the first weighting factor set used for an inter mode being different from a second weighting factor set used for an affine inter mode.

[0016] In one exemplary aspect, the disclosed techniques may be used to provide a method of video processing, the method including determining information regarding an interpolation filter dependent on a coding mode of a video unit for converting between a plurality of video units of a video region of a video and a coded representation of the plurality of video units, the interpolation filter being used to interpolate motion vector difference values ​​in the coded representation and having M integer pixel precision or 1 / N sub-pixel precision, where M and N are positive integers, and performing the conversion using the interpolation filter.

[0017] In one exemplary aspect, the disclosed techniques may be used to provide a method of video encoding that includes determining a coding mode used to represent, in a coded representation of a video, a current video block of the video, and coding the current video block into the coded representation according to the coding mode, where use of an alternative half-pixel precision filter in addition to a default half-pixel precision filter for representing motion information is disabled for the current video block by use of the coding mode.

[0018] In one representative aspect, the disclosed techniques may be used to provide a method of video decoding that includes parsing a coded representation of a video to determine that a current video block of the video has been coded using a coding mode, and generating a decoded representation of the current video block from the coded representation in accordance with the coding mode, wherein use of an alternative half-pixel precision filter in addition to a default half-pixel precision filter for representing motion information is disabled for the current video block by using the coding mode.

[0019] In one representative aspect, the disclosed techniques may be used to provide a method of video encoding that includes determining that a coding mode is not allowed for coding a video block of a video by using an alternative interpolation filter that is enabled for the video block in a coded representation of the video, and generating the coded representation of the video block based on the determination, where the alternative interpolation filter is used to interpolate an inter-predicted block of the current video block.

[0020] In one representative aspect, the disclosed techniques may be used to provide a method of video decoding that includes determining that use of a coding mode to represent a video block of a video in a coded representation of the video is not permitted by using an alternative interpolation filter that is enabled for the video block, and generating a decoded video block by parsing the coded representation based on the determination.

[0021] Furthermore, in a representative aspect, any one of the disclosed methods is an encoder-side implementation.

[0022] Also, in a representative aspect, any one of the disclosed methods is implemented on the decoder side.

[0023] One of the methods described above is embodied in the form of processor executable code and stored on a computer readable program medium.

[0024] In yet another representative aspect, an apparatus in a video system is disclosed that includes a processor and a non-transitory memory having instructions that, when executed by the processor, cause the processor to implement any of the methods disclosed herein.

[0025] These and other aspects and features of the disclosed technology are explained in more detail in the drawings, description and claims. [Brief description of the drawings]

[0026] [Figure 1] A diagram showing the quadtree + binary tree (QTBT) block structure. [Diagram 2] FIG. 13 is a diagram showing an example of constructing a merge candidate list. [Diagram 3] FIG. 2 shows examples of spatial candidate locations. [Figure 4] FIG. 13 illustrates an example of candidate pairs that are subject to a spatial merge candidate redundancy check. [Figure 5A] 1 illustrates an example of a second Prediction Unit (PU) position based on the size and shape of a current block. [Figure 5B] 13A-13C are diagrams illustrating examples of second prediction unit (PU) positions based on the size and shape of the current block. [Figure 6] 13A and 13B are diagrams illustrating examples of scaling of motion vectors for temporal merging candidates. [Figure 7] FIG. 13 illustrates examples of candidate positions for temporal merge candidates. [Figure 8] FIG. 13 is a diagram showing an example of generating joint bidirectional prediction merge candidates. [Figure 9] FIG. 13 is a diagram showing an example of constructing motion vector prediction candidates. [Figure 10] 13A and 13B are diagrams illustrating examples of motion vector scaling for spatial motion vector candidates. [Figure 11A] FIG. 1 is a block diagram illustrating an example of a hardware platform for implementing the visual media decoding or visual media encoding techniques described herein. [Figure 11B] FIG. 1 is a block diagram illustrating an example of a hardware platform for implementing the visual media decoding or visual media encoding techniques described herein. [Figure 12A] 1 is a flowchart of an example method for video processing according to some implementations of the disclosed technology. [Figure 12B] 1 is a flowchart of an example method for video processing according to some implementations of the disclosed technology. [Figure 13A] 1 is a flowchart of an example method for video processing according to some implementations of the disclosed technology. [Figure 13B] 1 is a flowchart of an example method for video processing according to some implementations of the disclosed technology. [Figure 13C] 1 is a flowchart of an example method for video processing according to some implementations of the disclosed technology. [Figure 14A] 1 is a flowchart of an example method for video processing according to some implementations of the disclosed technology. [Figure 14B] 1 is a flowchart of an example method for video processing according to some implementations of the disclosed technology. [Figure 15A] 1 is a flowchart of an example method for video processing according to some implementations of the disclosed technology. [Figure 15B] 1 is a flowchart of an example method for video processing according to some implementations of the disclosed technology. [Figure 15C] 1 is a flowchart of an example method for video processing according to some implementations of the disclosed technology. [Figure 15D] 1 is a flowchart of an example method for video processing according to some implementations of the disclosed technology. [Figure 16A] 1 shows a flowchart of an exemplary method for video processing in accordance with some implementations of the disclosed technology. [Figure 16B] 1 shows a flowchart of an exemplary method for video processing in accordance with some implementations of the disclosed technology. [Figure 16C] 1 shows a flowchart of an exemplary method for video processing in accordance with some implementations of the disclosed technology. [Figure 16D]1 shows a flowchart of an exemplary method for video processing in accordance with some implementations of the disclosed technology. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0027] 1. Video Coding in HEVC / H.265

[0028] Video coding standards have evolved primarily through the development of well-known ITU-T and ISO / IEC standards. ITU-T created H.261 and H.263, ISO / IEC created MPEG-1 and MPEG-4 Visual, and the two organizations jointly created H.262 / MPEG-2 Video, H.264 / MPEG-4 AVC (Advanced Video Coding), and H.265 / HEVC standards. Since H.262, video coding standards have been based on hybrid video coding structures where temporal prediction and transform coding are utilized. In 2015, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) to explore future video coding technologies beyond HEVC. Since then, many new methods have been adopted by JVET and incorporated into reference software called JEM (Joint Exploration Mode). In April 2018, the Joint Video Expert Team (JVET) was established between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG), and is working on formulating the VVC standard with the goal of reducing the bitrate by 50% compared to HEVC.

[0029] 2.1. Quadtree + binary tree (QTBT) block structure with larger CTU

[0030] In HEVC, CTUs are divided into CUs using a quad-tree structure called a coding tree to adapt to various local features. The decision of whether to code a picture region using inter-picture (temporal) prediction or intra-picture (spatial) prediction is made at the CU level. Each CU can be further divided into one, two or four PUs depending on the PU partition type. Inside one PU, the same prediction process is applied, and related information is sent to the decoder on a PU-by-PU basis. After applying the prediction process based on the PU partition type to obtain the residual block, the CU can be divided into transform units (TUs) based on another quad-tree structure similar to the coding tree for CUs. One of the important features of the HEVC structure is that it has a multiple partition concept, including CUs, PUs and TUs.

[0031] FIG. 1 is a diagram showing a quadtree plus binary tree (QTBT) block structure. The QTBT structure removes the concept of multiple partition types. That is, it removes the separation of the concepts of CU, PU, ​​and TU, and improves the flexibility of the shape of CU partition. In the QTBT block structure, a CU can have either a square or a rectangle. As shown in FIG. 1, first, a coding tree unit (CTU) is partitioned by a quadtree structure. The leaf nodes of the quadtree are further partitioned by a binary tree structure. There are two partition types for the partition of the binary tree: symmetric horizontal partition and symmetric vertical partition. The leaf nodes of the binary tree are called coding units (CUs), and this segmentation is used for prediction and transformation processes without further partitioning. This means that in the QTBT coding block structure, CUs, PUs, and TUs have the same block size. In JEM, a CU often consists of coding blocks (CBs) of different color components; for example, for P and B slices in 4:2:0 chroma format, a CU includes one luma CB and two chroma CBs; a CU also often consists of CBs of a single component; for example, for an I slice, a CU includes only one luma CB or only two chroma CBs.

[0032] The following parameters are specified for the QTBT partitioning scheme: -CTU size: The size of the root node of the quad tree, the same concept as HEVC -MinQTSize: The minimum allowable size of a quadtree leaf node. -MaxBTSize: Maximum allowed binary tree root node size -MaxBTDepth: Maximum allowed binary tree depth -MinBTSize: The minimum allowable size of a leaf node in a binary tree.

[0033] In one example of a partitioning structure for QTBT, the size of the CTU is set as 128×128 luma samples with two corresponding 64×64 blocks of chroma samples, MinQTSize is set as 16×16, MaxBTSize is set as 64×64, MinBTSize (for both width and height) is set as 4×4, and MaxBTDepth is set as 4. A quadtree partition is first applied to the CTU to generate quadtree leaf nodes. The quadtree leaf nodes may have sizes from 16×16 (i.e., MinQTSize) to 128×128 (i.e., CTU size). If a leaf quadtree node is 128×128, it is not further partitioned by the binary tree because the size exceeds MaxBTSize (i.e., 64×64). Otherwise, the leaf quadtree node may be further partitioned by the binary tree. Therefore, a leaf node of a quadtree is also the root node of a binary tree, whose depth is 0. If the depth of the binary tree reaches MaxBTDepth (i.e., 4), no further splits are considered. If the width of a binary tree node is equal to MinBTSize (i.e., 4), no further horizontal splits are considered. Similarly, if the height of a binary tree node is equal to MinBTSize, no further vertical splits are considered. Leaf nodes of a binary tree are further processed by the prediction and transformation process without further splits. In JEM, the maximum CTU size is 256x256 luma samples.

[0034] Figure 1 (left) shows an example of block partitioning using QTBT, and Figure 1 (right) shows the corresponding tree representation. Solid lines represent quadtree partitioning, and dotted lines represent binary tree partitioning. At each partition (i.e., non-leaf) node of the binary tree, one flag is signaled to indicate which partition type (i.e., horizontal or vertical) is used, where 0 represents a horizontal partition and 1 represents a vertical partition. In the case of quadtree partitioning, there is no need to indicate the partition type, since a quadtree partition always partitions a block horizontally and vertically, generating four sub-blocks of equal size.

[0035] In addition, the QTBT scheme supports the ability for luma and chroma to have separate QTBT structures. Currently, for P and B slices, the luma and chroma CTBs in one CTU share the same QTBT structure. However, for I slices, the luma CTB is divided into CUs by a QTBT structure, and the chroma CTB is divided into chroma CUs by another QTBT structure. This means that one CU in an I slice consists of one coding block of one luma component or coding blocks of two chroma components, and one CU in a P or B slice consists of coding blocks of all three color components.

[0036] In HEVC, inter prediction for small blocks is restricted to reduce memory access for motion compensation, resulting in no bidirectional prediction being supported for 4x8 and 8x4 blocks, and no inter prediction being supported for 4x4 blocks. In JEM's QTBT, these restrictions are removed.

[0037] 2.2. Inter Prediction in HEVC / H.265

[0038] Each inter-predicted PU has motion parameters for one or two reference picture lists. The motion parameters include a motion vector and a reference picture index. The use of one of the two reference picture lists may be signaled using inter_pred_idc. The motion vector may be explicitly coded as a differential to the predictor.

[0039] If a CU is coded in skip mode, one PU is associated with this CU, and there are no significant residual coefficients, coded motion vector differentials, or reference picture indexes. A merge mode is specified, which obtains motion parameters for the current PU from neighboring PUs, including spatial and temporal candidates. The merge mode can be applied to any inter-predicted PU, not just for skip mode. As an alternative to the merge mode, there is an explicit transmission of motion parameters, where the motion vectors (more precisely, the motion vector differentials compared to the motion vector predictor), the corresponding reference picture indexes of each reference picture list, and the use of the reference picture list are explicitly signaled to each PU. Such a mode is referred to as Advanced Motion Vector Prediction (AMVP) in this disclosure.

[0040] If the signaling indicates to use one of the two reference picture lists, the PU is generated from one block of samples. This is called "uni-prediction." Uni-prediction is available for both P and B slices.

[0041] If the signaling indicates to use both reference picture lists, the PU is generated from two blocks of samples. This is called "bi-prediction." Bi-prediction is only available for B slices.

[0042] The inter prediction modes defined in HEVC will be described in detail below. First, the merge mode will be described.

[0043] Merge Mode 2.2.1.1. Deriving Merge Mode Candidates

[0044] When predicting a PU using merge mode, an index pointing to an entry in the merge candidate list is parsed from the bitstream and used to look up the motion information. The construction of this list is specified in the HEVC standard and can be summarized based on the following sequence of steps: ● Step 1: Derive initial candidates 〇Step 1.1: Spatial candidate derivation Step 1.2: Check for redundancy of spatial candidates 〇Step 1.3: Temporal candidate derivation Step 2: Insert additional candidates Step 2.1: Creating bidirectional prediction candidates Step 2.2: Inserting zero motion candidates

[0045] These steps are also shown diagrammatically in Figure 2. For spatial merge candidate derivation, select up to four merge candidates among candidates at five different positions. For temporal merge candidate derivation, select up to one merge candidate among two candidates. Since the decoder side assumes a constant number of candidates per PU, if the number of candidates obtained in step 1 does not reach the maximum number of merge candidates (MaxNumMergeCand) signaled in the slice header, generate additional candidates. Since the number of candidates is constant, we use truncated unary binarization (TU) to encode the index of the best merge candidate. If the size of the CU is equal to 8, all PUs of the current CU share one merge candidate list, which is the same as the merge candidate list of the 2N × 2N prediction units.

[0046] The operations associated with the above steps are described in detail below.

[0047] 2.2.1.2. Spatial candidate derivation

[0048] In the derivation of spatial merge candidates, up to four merge candidates are selected from the candidates at the positions shown in FIG. 3. The order of derivation is A1, B1, B0, A0, B2. Position B2 is considered only if any of the PUs at positions A1, B1, B0, A0 are not available (e.g., because they belong to another slice or tile) or are intra-coded. After adding the candidate at position A1, the remaining candidates are subjected to a redundancy check, which ensures that candidates with the same motion information are removed from the list, improving coding efficiency. To reduce computational complexity, the aforementioned redundancy check does not consider all possible candidate pairs. Instead, only the pairs linked by arrows in FIG. 4 are considered, and a candidate is added to the list only if the corresponding candidate used for the redundancy check does not have the same motion information. Another source of duplicated motion information is a "second PU" associated with a partition different from 2N×2N. As an example, FIG. 5 shows the second PU for N×2N and 2N×N cases, respectively. When splitting the current PU into N×2N, the candidate at position A1 is not considered in list construction. In fact, adding this candidate would lead to two prediction units with the same motion information, which is redundant for having only one PU in one coding unit. Similarly, when splitting the current PU into 2N×N, position B1 is not considered.

[0049] 2.2.1.3. Temporal candidate derivation

[0050] In this step, only one candidate is added to the list. Specifically, in the derivation of this temporal merge candidate, a scaled motion vector is derived based on the co-located PU belonging to the picture with the smallest POC difference with the current picture in a given reference picture list. In the slice header, the reference picture list to be used for the derivation of the co-located PU is explicitly signaled. As shown by the dotted line in Figure 6, the scaled motion vector of the temporal merge candidate is obtained, which is scaled from the motion vector of the co-located PU using the POC distances tb and td, where tb is defined as the POC difference between the reference picture of the current picture and the current picture, and td is defined as the POC difference between the reference picture of the co-located picture and the co-located picture. The reference picture index of the temporal merge candidate is set equal to zero. The practical realization of this scaling process is described in the HEVC specification. For a B slice, two motion vectors are obtained, one for reference picture list 0 and one for reference picture list 1, and combined to form a bi-predictive merge candidate.

[0051] For the co-located PU(Y) belonging to the reference frame, the location of the temporal candidate is selected between candidate C0 and candidate C1 as shown in Figure 7. If the PU at location C0 is not available, is intra-coded, or is outside the current CTU row, location C1 is used. Otherwise, location C0 is used to derive the temporal merge candidate.

[0052] 2.2.1.4. Additional Candidate Inserts

[0053] Besides the spatial-temporal merge candidates, there are two additional types of merge candidates: joint bi-predictive merge candidates and zero merge candidates. The joint bi-predictive merge candidates are generated using the spatial-temporal merge candidates. The joint bi-predictive merge candidates are used only for B slices. The joint bi-predictive candidate is generated by combining the first reference picture list motion parameters of the first candidate with the second reference picture list motion parameters of another candidate. If these two tuples provide different motion hypotheses, they form a new bi-predictive candidate. As an example, FIG. 8 shows the case where two candidates in the original list (left side) with mvL0 and refIdxL0, or mvL1 and refIdxL1 are used to generate the joint bi-predictive merge candidate that is added to the final list (right side). There are various rules for the combinations considered to generate these additional merge candidates.

[0054] By inserting zero motion candidates and filling the remaining entries in the merge candidate list, the MaxNumMergeCand capacity is hit. These candidates have a spatial displacement of zero and a reference picture index that starts at zero and increases each time a new zero motion candidate is added to the list. The number of reference frames used by these candidates is one for unidirectional prediction and two for bidirectional prediction, respectively. Finally, no redundancy check is performed on these candidates.

[0055] 2.2.1.5. Motion Estimation Regions for Parallel Processing

[0056] To speed up the encoding process, motion estimation can be done in parallel, thereby deriving motion vectors for all prediction units in a given region simultaneously. Derivation of merge candidates from spatial neighborhoods can interfere with parallel processing, since one prediction unit cannot derive motion parameters from neighboring PUs until its associated motion estimation is completed. To mitigate the tradeoff between coding efficiency and processing latency, HEVC specifies a Motion Estimation Region (MER), the size of which is signaled in the picture parameter set using the "log2_parallel_merge_level_minus2" syntax element. When specifying one MER, merge candidates in the same region are marked as unavailable and therefore not considered in list construction.

[0057] 2.2.2 AMVP

[0058] AMVP exploits the spatial-temporal correlation between motion vectors and neighboring PUs and uses it for explicit transmission of motion parameters. For each reference picture list, we first check the availability of the left and top temporal neighboring PU positions, then build a motion vector candidate list by removing redundant candidates and adding zero vectors to keep the length of the candidate list constant. The encoder can then select the best predictor from the candidate list and transmit the corresponding index indicating the selected candidate. Similar to the merge index signaling, the index of the best motion vector candidate is coded using a shortened unary term. The maximum value to be coded in this case is 2 (see Figure 9). The following sections will explain the details of the motion vector prediction candidate derivation process.

[0059] 2.2.2.1. Derivation of AMVP Candidates

[0060] FIG. 9 summarizes the process of deriving motion vector prediction candidates.

[0061] In motion vector prediction, two types of motion vector candidates are considered: spatial motion vector candidates and temporal motion vector candidates. To derive spatial motion vector candidates, as shown in Figure 3, we finally derive two motion vector candidates based on the motion vectors of each PU at five different positions.

[0062] To derive a temporal motion vector candidate, select one motion vector candidate from two candidates derived based on two different co-located positions. After creating an initial list of spatial-temporal candidates, remove duplicate motion vector candidates in the list. If the number of candidates is greater than two, remove motion vector candidates whose reference picture index in the associated reference picture list is greater than 1 from the list. If the number of spatial-temporal motion vector candidates is less than two, add an additional zero motion vector candidate to the list.

[0063] 2.2.2.2. Spatial Motion Vector Candidates

[0064] In the derivation of spatial motion vector candidates, up to two candidates are considered out of five possible candidates derived from PUs located as shown in FIG. 3, which are the same locations as the motion merge. The order of derivation for the left side of the current is defined as A0, A1, scaled A0, scaled A1. The order of derivation for the top side of the current PU is defined as B0, B1, B2, scaled B0, scaled B1, scaled B2. For each edge, there are four cases that can be used as motion vector candidates, namely two cases that are not associated with spatial scaling and two cases that use spatial scaling. The four different cases can be summarized as follows: No spatial scaling -(1) Same reference picture list and same reference picture index (same POC) - (2) Different reference picture lists and the same reference picture (same POC) Spatial Scaling - (3) Same reference picture list but different reference pictures (different POC) (4) Different reference picture lists and different reference pictures (different POCs)

[0065] First check the non-spatial scaling case, then check spatial scaling. Regardless of the reference picture list, if the POC is different between the reference picture of the neighboring PU and the reference picture of the current PU, spatial scaling is considered. If all PUs of the left candidate are not available or are intra-coded, scaling of the upper motion vector is allowed to help the parallel derivation of the left and upper MV candidates. Otherwise, spatial scaling is not allowed for the upper motion vector.

[0066] In the spatial scaling process, the motion vectors of neighboring PUs are scaled in a similar manner to the temporal scaling, as shown in Figure 10. The main difference is that the reference picture list and index of the current PU are given as input, and the actual scaling process is the same as the temporal scaling.

[0067] 2.2.2.3. Temporal Motion Vector Candidates

[0068] Except for deriving the reference picture index, all the processes for deriving the temporal merge candidates are the same as those for deriving the spatial motion vector candidates (see FIG. 7). The reference picture index is signaled to the decoder.

[0069] 2.3. AMVR (Adaptive Motion Vector Resolution)

[0070] In VVC, for normal inter modes, MVD can be coded in units of 1 / 4 luma samples, integer luma samples, or 4 luma samples. MVD resolution is controlled at the coding unit (CU) level, and an MVD resolution flag is conditionally signaled for each CU that has at least one non-zero MVD component.

[0071] For a CU with at least one non-zero MVD component, a first flag is signaled to indicate whether ¼ luma sample MV precision is used in the CU. If the first flag (equal to 1) indicates that ¼ luma sample MV precision is not used, another flag is signaled to indicate whether integer luma sample MV precision or 4 luma sample MV precision is used.

[0072] If the first MVD resolution flag of a CU is zero or is not coded for the CU (i.e., all MVDs in the CU are zero), then 1 / 4 luma sample MV resolution is used for the CU. If the CU uses integer luma sample MV precision or 4 luma sample MV precision, round the MVPs in the CU's AMVP candidate list to the corresponding precision.

[0073] 2.4. Interpolation Filters in VVC

[0074] For luma interpolation filtering, an 8-tap separable interpolation filter is used for samples with 1 / 16 pixel accuracy, as shown in Table 1.

[0075] [Table 1]

[0076] Similarly, a 4-tap separable interpolation filter is used for chroma interpolation with 1 / 32 pixel accuracy, as shown in Table 2.

[0077] [Table 2]

[0078] For 4:2:2 vertical interpolation, and 4:4:4 horizontal and vertical interpolation of the chroma channel, the odd positions in Table 2 are not used, resulting in 1 / 16 pixel chroma interpolation.

[0079] 2.5. Alternative Luminance Half-Pixel Interpolation Filter

[0080] In JVET-N0309, an alternative half-pixel interpolation filter is proposed.

[0081] The switching of half-pixel luma interpolation filters is done based on the precision of the motion vectors. In addition to the existing quarter-pixel, full-pixel, and 4-pixel AMVR modes, a new half-pixel precision AMVR mode is introduced. Only in the case of half-pixel motion vector precision, the alternative half-pixel luma interpolation filter can be selected.

[0082] 2.5.1. 1 / 2 pixel AMVR mode

[0083] An additional AMVR mode for non-affine non-merged inter-coded CUs is proposed, which allows to signal motion vector differentials with half-pixel precision. The existing AMVR scheme of the current VVC draft is extended simply as follows: Immediately after the syntax element amvr_flag, there is a new context-modeled binary syntax element hpel_amvr_flag, which indicates the use of the new half-pixel AMVR mode if hpel_amvr_flag==1. Otherwise, i.e. if hpel_amvr_flag==0, the choice between full-pixel and 4-pixel AMVR modes is indicated by the syntax element amvr_precision_flag, as in the current VVC draft.

[0084] 2.5.2. Alternative Luminance Half-Pixel Interpolation Filter

[0085] For non-affine non-merged inter-coded CUs using half-pixel motion vector precision (i.e., half-pixel AMVR mode), switching between the HEVC / VVC half-pixel luma interpolation filter and one or more alternative half-pixel interpolators is done based on the value of the new syntax element if_idx. The syntax element if_idx is signaled only for half-pixel AMVR mode. For skip / merge modes with spatial merge candidates, the value of the syntax element if_idx is inherited from the neighboring blocks.

[0086] 2.5.2.1. Test 1: One alternative half-pixel interpolation filter

[0087] In this test case, there is one 6-tap interpolation filter as an alternative to the normal HEVC / VVC 1 / 2 pixel interpolation filter. The following table shows the mapping between the values ​​of the syntax element if_idx and the selected 1 / 2 pixel luma interpolation filter.

[0088] [Table 3]

[0089] 2.5.2.2. Test 2: Two alternative half-pixel interpolation filters

[0090] In this test case, there are two 8-tap interpolation filters as alternatives to the normal HEVC / VVC 1 / 2 pixel interpolation filters. The following table shows the mapping between the values ​​of the syntax element if_idx and the selected 1 / 2 pixel luma interpolation filters.

[0091] [Table 4]

[0092] amvr_precision_idx is signaled to indicate whether the current CU is using 1 / 2 pixel, 1 pixel, or 4 pixel MV precision. There are 2 bins to be coded.

[0093] hpel_if_idx is signaled to indicate whether to use the default half-pel interpolation filter or an alternative half-pel interpolation filter. If two alternative half-pel interpolation filters are used, there are two bins to code.

[0094] 2.6. Generalized Bidirectional Prediction

[0095] In traditional bi-prediction, the predictors from L0 and L1 are averaged and an equal weight of 0.5 is used to generate the final predictor. The predictor generation formula is shown in Equation (3). P TraditionalBiPred= (P L0+ P L1+ RoundingOffset)>>shiftNum, (1) In equation (3), PT raditionalBiPred is the final predictor for conventional bi-prediction, and P L0 and P L1 are the predictors from L0 and L1 respectively, and RoundingOffset and shiftNum are used to normalize the final predictor.

[0096] To enable applying different weights to predictors from L0 and L1, GBI (Generated Bi-prediction) has been proposed. The generation of predictors is shown in Equation (4). P GBi= ((1-w1)*P L0+ w1*P L1+ RoundingOffset GBi )>>shiftNum GBi , (2) In equation (4), P GBi is the final predictor of GBi. (1-w1) and w1 are the selected GBI weights applied to the L0 and L1 predictors, respectively. RoundingOffset GBi and seftNum GBi is used to normalize the final predictor in GBi.

[0097] The supported w1 weights are {-1 / 4, 3 / 8, 1 / 2, 5 / 8, 5 / 4}. One even weight set and four unequal weight sets are supported. For even weights, the process to generate the final predictor is exactly the same as in traditional bi-prediction modes. For true bi-prediction in random access (RA) conditions, the number of candidate weight sets is reduced to three.

[0098] In Advanced Motion Vector Prediction (AMVP) mode, if the CU is coded with bi-prediction, the weight selection in the GBI is explicitly signaled at the CU level. In merge mode, the weight selection is inherited from the merge candidate.

[0099] 3. Issues with Conventional Mounting Forms

[0100] The alternative half-pixel interpolation filters may be inherited in Merge with Motion Vector Difference (MMVD) mode, even though the MVs derived in MMVD mode are not half-pixel accurate and therefore not valid.

[0101] When coding amvr_precision_idx and hpel_if_idx, all bins are context coded.

[0102] 4. Exemplary embodiments and techniques

[0103] The details of the following embodiments should be considered as examples to explain the general concept. These embodiments should not be construed in a narrow sense. Moreover, these embodiments can be combined in any manner.

[0104] DMVD (Decoder-dide Motion Vector Derivation) is used to represent BDOF (Bi-Directional Optical Flow) and / or DMVR (Decoder-side Motion Vector Refinement) and / or other tools associated with refinement of motion vectors or prediction samples at the decoder.

[0105] In the following context, the default interpolation filter may refer to the one defined in HEVC / VVC. In the following description, newly introduced interpolation filters (e.g., those proposed in JVET-N0309) may also be referred to as alternative interpolation filters.

[0106] 1. For different N where N is not equal to 2, an alternative 1 / N pixel interpolation filter may be used. In one example, N may be equal to 4, 16, etc. b. In one example, the index of the 1 / N pixel interpolation filter may be signaled in AMVR mode. i. Additionally, alternatively, the index of the 1 / N-pel interpolation filter may be signaled only if 1 / N-pel MV / MVD precision is selected by the block. c. In one example, the alternative 1 / N pixel interpolation filter may not be inherited in merge mode and / or MMVD mode. i. Additionally, alternatively, only the default 1 / N pixel interpolation filter may be used in merge mode and / or MMVD mode. d. In one example, an alternative 1 / N pixel interpolation filter may be inherited in merge mode. e. In one example, an alternative 1 / N pixel interpolation filter may be inherited in MMVD mode. i. In one example, an alternative 1 / N pixel interpolation filter may be inherited in MMVD mode if the final derived MV is at 1 / N pixel accuracy, i.e., the MV components are not at the finer MV accuracy. ii. In one example, an alternative 1 / N pixel interpolation filter may be inherited in MMVD mode if K (K≧1) MV components of the final derived MV are 1 / N pixel accurate. f. In one example, the alternative 1 / N pixel interpolation filter may be inherited in MMVD mode and / or merge mode, but the alternative 1 / N pixel interpolation filter is used only for motion compensation. The index of the alternative 1 / N pixel interpolation filter may not be stored for the block and may not be used by subsequent coded blocks.

[0107] 2. An indication of the interpolation filter (eg, default half-pel interpolation filter, alternative half-pel interpolation filter) may be stored along with other motion information such as motion vectors, reference indexes, etc. a. In one example, if a block to be encoded / decoded accesses a second block located in a different area (e.g., a different CTU row, a different VPDU), the interpolation filter associated with the second block is not allowed to be used for encoding / decoding the current block.

[0108] 3. The alternative half-pixel interpolation filter may not be inherited in merge and / or MMVD modes. In one example, the alternative half-pixel interpolation filter may not be inherited in MMVD mode. i. Additionally, alternatively, the default half-pixel interpolation filter in VVC may always be used for MMVD mode. ii. Alternatively, the alternative half-pixel interpolation filter may be inherited in MMVD mode, i.e., when in MMVD mode, the alternative half-pixel interpolation filter associated with the base merge candidate may be inherited. b. In one example, an alternative half-pixel interpolation filter may be inherited in MMVD mode under certain conditions. i. In one example, an alternative half-pixel interpolation filter may be inherited when the final derived MV is at half-pixel accuracy, i.e., there are no MV components at finer MV accuracy such as quarter-pixel accuracy, sixteenth-pixel accuracy. ii. In one example, an alternative half-pixel interpolation filter may be inherited in MMVD mode if K (K≧1) MV components of the final derived MV are half-pixel accurate. In one example, the alternative half-pel interpolation filter may be inherited in MMVD mode and / or merge mode, but the alternative half-pel interpolation filter is used only for motion compensation. In place of the alternative half-pel interpolation filter, an index for a default half-pel interpolation filter may be stored for the block and used by subsequent coded blocks. d. The above method is also applicable to other cases where multiple interpolation filters can be applied for 1 / N pixel accuracy.

[0109] 4. The interpolation filter information may be stored in a History-based Motion Vector Prediction (HMVP) table and may be inherited by HMVP merge candidates. In some implementations, the HMVP table is selectively updated after transforming between a video block in the video domain and a coded representation. The selectivity of whether to update the table, i.e., when to update the table, is based on determining whether there are motion candidates used in the transform that are suitable for updating the HMVP table after transforming the video block (e.g., by applying pruning, etc.). In one example, when inserting a new candidate into the HMVP lookup table, the interpolation filter information may be taken into consideration. For example, two candidates with the same motion information but different interpolation filter information may be considered as two different candidates. b. In one example, when inserting a new candidate into the HMVP lookup table, two candidates with the same motion information but different interpolation filter information may be considered as the same candidate.

[0110] 5. When inserting merging candidates into the merging candidate list, the pruning process may take into account the interpolation filter information. In one example, two merging candidates with different interpolation filters may be considered as two different merging candidates. b. In one example, the pruning process may take into account the interpolation filter information when inserting HMVP merge candidates into the merge list. c. In one example, the pruning process may not take into account the interpolation filter information when inserting HMVP merge candidates into the merge list.

[0111] 6. Instead of always using default interpolation filters, the interpolation filter information may be taken into account when generating pairwise merge candidates and / or combined merge candidates and / or zero motion vector candidates and / or other default candidates. a. In one example, if both candidates (involved in generating the pairwise merge candidate or / and the combine merge candidate) use the same alternative interpolation filter, such interpolation filter may be inherited in the pairwise merge candidate or / and the combine merge candidate. b. In one example, if one of the two candidates (involved in generating the pairwise merge candidate or / and the join merge candidate) does not use a default interpolation filter, that interpolation filter may be inherited by the pairwise merge candidate or / and the join merge candidate. In one example, if one of the two candidates (involved in generating the combined merge candidate) does not use a default interpolation filter, the interpolation filter may be inherited by the combined merge candidate. However, such an interpolation filter may only be used for the corresponding prediction direction. d. In one example, if two candidates (involved in generating the combined merge candidate) use different interpolation filters, those interpolation filters may both be inherited in the combined merge candidate. In this case, different interpolation filters may be used for different prediction directions. e. In one example, K (K≧0) or fewer pairwise merge candidates or / and combined merge candidates may use alternative interpolation filters. f. In one example, a default interpolation filter is always used for pairwise merge candidates or / and join merge candidates.

[0112] 7. It is proposed to disable the use of 1 / 2 pixel motion vector / motion vector differential precision when coding in the current block IBC mode. Further, alternatively, there is no need to signal an indication of the use of 1 / 2 pixel MV / MVD precision. b. In one example, if the current block is coded in IBC mode, the alternative half-pixel interpolation filter is always disabled. c. Additionally, alternatively, there is no need to signal an indication of the half-pixel interpolation filter. d. In one example, the condition "code the current block in IBC mode" may be replaced with "code the current block in mode." Such modes may be defined as triangle mode, merge mode, etc. One example mode corresponds to a coding mode that splits a block into two parts, each part associated with one motion candidate, and the two motion candidates are derived from the same motion candidate list.

[0113] 8. When encoding amvr_precision_idx and / or hpel_if_idx, only the first bin may be context coded. Additionally, alternatively, other bins may be bypass coded. b. In one example, the first bin g of amvr_precision_idx may be bypass coded. c. In one example, the first bin of hpel_if_idx may be bypass coded. d. In one example, only one context may be used to code the first bin of amvr_precision_idx. e. In one example, only one context may be used to code the first bin of hpel_if_idx. f. In one example, all bins of amvr_precision_idx may share the same context. g. In one example, all bins of hpel_if_idx may share the same context.

[0114] 9. When using alternative interpolation filters, some coding tools may not be allowed. In one example, when using alternative interpolation filters, Bi-Directional Optical Flow (BDOF) may not be allowed. b. In one example, when using an alternative interpolation filter, DMVR and / or DMVD may not be enabled. c. In one example, when using alternative interpolation filters, Combined Inter-Intra Prediction (CIIP) may not be allowed. i. In one example, if a merge candidate inherits an alternative interpolation filter, the CIIP flag may be skipped and inferred to be false. ii. Alternatively, if the CIIP flag is true, the default interpolation filter may always be used. d. In one example, when using alternative interpolation filters, Symmetric Motion Vector Difference (SMVD) may not be allowed. i. In one example, when using SMVD, a default interpolation filter is always used and no syntax elements for alternative interpolation filters are signaled. ii. Alternatively, if the syntax element for the alternative interpolation filter indicates to use an alternative interpolation filter, then the syntax element for SMVD may not be signaled and the SMVD mode is not used. e. In one example, when using alternative interpolation filters, SubBlock Transforms (SBTs) may not be allowed. i. In one example, when using SBT, the default interpolation filter is always used and no syntax elements for alternative interpolation filters are signaled. ii. Alternatively, if the syntax element for an alternative interpolation filter indicates to use an alternative interpolation filter, then the syntax element for SBT may not be signaled and SBT is not used. f. In one example, when using alternative interpolation filters, triangular prediction modes and other coding modes in which a block is divided into two parts may not be allowed. In an embodiment of the present invention, when dividing a block into two parts, each part is associated with one motion candidate, and the two motion candidates are derived from the same motion candidate list. i. In one example, the interpolation filter information may not be inherited in triangle prediction and only default interpolation filters may be used. g. Alternatively, triangular prediction and other coding modes may be allowed to split a block into two parts when using alternative interpolation filters. In an embodiment of the present invention, when splitting a block into two parts, each part is associated with one motion candidate, and the two motion candidates are derived from the same motion candidate list. i. In one example, the interpolation filter information may be inherited in the triangulation prediction. h. Alternatively, for the coding tools described above, the alternative half-pixel interpolation filter may be disabled if it is enabled.

[0115] 10. A filter may be applied to the N-pixel accurate MV. In one example, N may be equal to 1, 2, or 4, etc. b. In one example, the filter may be a low pass filter. c. In one example, the filter may be a one-dimensional filter. i. For example, the filter may be a one-dimensional horizontal filter. ii. For example, the filter may be a one-dimensional vertical filter. d. In one example, a flag may be signaled to indicate whether such a filter is being used. i. Additionally, alternatively, such a flag may be signaled only when using N-pixel MVD precision for the block (signaled in AMVR mode).

[0116] 11. Different sets of weighting coefficients may be used for normal inter and affine modes in GBI mode. In one example, the weighting coefficient sets used for normal inter and affine modes may be signaled in the SPS / tile group header / slice header / VPS / PPS, etc. b. In one example, the weighting coefficient sets used for normal inter and affine modes may be predefined in the encoder and decoder.

[0117] 12. How alternative interpolation filters are defined / selected may depend on coding mode information. In one example, the allowed sets of alternative interpolation filters may be different for affine and non-affine modes. b. In one example, the allowed sets of alternative interpolation filters may be different for IBC and non-IBC modes.

[0118] 5. Exemplary implementations of the disclosed technology

[0119] FIG. 11A is a block diagram of a video processing device 1100. The device 1100 may be used to implement one or more of the methods described herein. The device 1100 may be implemented by a smartphone, a tablet, a computer, an Internet of Things (IoT) receiver, etc. The device 1100 may include one or more processors 1102, one or more memories 1104, and video processing hardware 1106. The processor(s) 1102 may be configured to implement one or more methods described herein. The memory(s) 1104 may be used to store data and code used to implement the methods and techniques described herein. The video processing hardware 1106 may be used to implement some of the techniques described herein in a hardware circuit, which may be part or all of the processor 1102 (e.g., a graphics processor core GPU or other signal processing circuit).

[0120] FIG. 11B is another example of a block diagram of a video processing system in which the disclosed technology may be implemented. FIG. 11B is a block diagram illustrating an example video processing system 4100 in which various technologies disclosed herein may be implemented. Various implementations may include some or all of the components of the system 4100. The system 4100 may include an input 4102 for receiving video content. The video content may be received in a raw or uncompressed format, for example, 8 or 10 bit multi-module pixel values, or may be received in a compressed or encoded format. The input 4102 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces such as Ethernet, Passive Optical Network (PON), and wireless interfaces such as Wi-Fi or cellular interfaces.

[0121] The system 4100 may include a coding component 4104 that may implement various coding or encoding methods described herein. The coding component 4104 may reduce the average bit rate of the video from the input 4102 to the output of the coding component 4104, generating a coded representation of the video. Thus, this coding technique may be referred to as a video compression or video transcoding technique. The output of the coding component 4104 may be stored or transmitted via a connected communication, as represented by component 4106. The bitstream (or coded) representation of the video received at the input 4102, stored or communicated, may be used by component 4108 to generate pixel values ​​or displayable video that are sent to the display interface 4110. The process of generating video viewable by a user from the bitstream representation may be referred to as video unfolding. Additionally, although certain video processing operations are referred to as "coding" operations or tools, it will be understood that the coding tools or operations are used at the encoder, and that corresponding decoding tools or operations that reverse the results of the decoding are performed by the decoder.

[0122] Examples of peripheral bus interface units or display interface units may include Universal Serial Bus (USB) or High Definition Multimedia Interface (HDMI) or DisplayPort, etc. Examples of storage interfaces include Serial Advanced Technology Attachment (SATA), PCI, IDE interfaces, etc. The techniques described herein may be implemented in various electronic devices such as mobile phones, laptops, smartphones, or other devices capable of digital data processing and / or video display.

[0123] Some embodiments of the disclosed technology include determining or determining to enable a video processing tool or mode. In one example, if a video processing tool or mode is enabled, the encoder uses or implements the tool or mode when processing one video block, but does not necessarily modify the resulting bitstream based on the use of the tool or mode. That is, the conversion from a block of video to a bitstream representation of video uses the video processing tool or mode if the video processing tool or mode is enabled based on the decision or determination. In another example, if the video processing tool or mode is enabled, the decoder processes the bitstream knowing that the bitstream has been modified based on the video processing tool or mode. That is, the conversion from the bitstream representation of video to a block of video is performed using the video processing tool or mode enabled based on the decision or determination.

[0124] Some embodiments of the disclosed techniques include deciding or determining to disable a video processing tool or mode. In one example, when a video processing tool or mode is disabled, an encoder does not use the tool or mode in converting blocks of a video into a bitstream representation of the video. In another example, when a video processing tool or mode is disabled, a decoder processes the bitstream with the knowledge that the bitstream has not been modified using the video processing tool or mode that was disabled based on the decision or determination.

[0125] As used herein, the term "video processing" can refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm may be applied during conversion of a pixel representation of a video to a corresponding bitstream representation, or vice versa. The bitstream representation of a current video block may correspond to bits that are spread to the same or different locations in the bitstream, e.g., as specified by a syntax. For example, one macroblock may be coded in terms of transformed and coded error residual values, and using bits in the header and other fields in the bitstream.

[0126] It will be appreciated that the disclosed methods and techniques will be beneficial in embodiments of video encoders and / or decoders that are integrated into video processing devices such as smart phones, laptops, desktop computers, and similar appliances, by enabling the use of the techniques disclosed herein.

[0127] FIG. 12A is a flow chart illustrating an example method 1210 of video processing. The method 1210 includes, at 1212, converting between a current video block of a video and a coded representation of the video. In some implementations, the coded representation includes a first parameter indicating a motion information precision from a plurality of precision sets for the current video block that does not use a default motion information precision and / or a second parameter identifying whether an alternative half-pixel interpolation filter is used for the conversion. In some implementations, the first parameter and / or the second parameter are each associated with one or more bins, and the context model based coding is used only for a first bin of the one or more bins in the coded representation. In some implementations, the current video block is represented in the coded representation using a merge mode or a merge with motion vector different (MMVD) mode, and an interpolation filter having 1 / N prediction is used to interpolate a prediction block associated with the current video block according to a rule, where N is a positive integer, and the rule defines a condition for inheriting the interpolation information when the interpolation filter is an alternative interpolation filter different from the default interpolation filter.

[0128] 12B is a flow chart illustrating an example method 1220 of video processing. The method 1220 includes, at 1222, determining motion information using an interpolation filter for conversion between a current video block of the video and a coded representation of the video having M integer pixel precision or 1 / N sub-pixel precision, where M, N are positive integers and N is not equal to 2. The method 1220 includes, at 1224, performing the conversion based on the motion information.

[0129] 13A is a flow chart illustrating an example method 1310 of video processing. The method 1310 includes, at 1312, generating a first motion candidate based on one or more motion candidates in a motion candidate list and one or more interpolation filters associated with the one or more motion candidates for conversion between a current video block of the video and a coded representation of the video, where the interpolation filters are assigned to the first motion candidate according to a rule that depends on the one or more interpolation filters associated with the one or more motion candidates. The method 1310 further includes, at 1314, inserting the first motion candidate into the motion candidate list. The method 1310 includes, at 1316, performing the conversion based on the motion candidate list.

[0130] 13B is a flow chart illustrating an example method 1320 of video processing. The method 1320 includes, at 1322, associating with each of a plurality of blocks, including a first block in a first image region and a second block in a second image region of the image, motion information including information about respective interpolation filters used to interpolate motion vector difference information for each of the plurality of blocks. The method 1320 further includes, at 1324, converting between the image and a coded representation of the image using the motion information.

[0131] 13C is a flow chart illustrating an example method 1330 of video processing. The method 1330 includes, at 1332, processing the current video block during conversion between the video including the current video block and the coded representation of the video. The method 1330 further includes, at 1334, comparing the merge candidate list to motion information of the current video block and selectively updating the merge candidate list. In some implementations, the motion information includes interpolation filter information, the interpolation filter information including parameters of an interpolation filter used to interpolate motion vector difference values ​​used to represent the current video block in the coded representation.

[0132] 14A is a flow chart illustrating an example method 1410 of video processing. The method 1410 includes, prior to converting between a current video block of a video domain and a coded representation of the video, maintaining at least one History-based Motion Vector Prediction (HMVP) table at 1412, the HMVP table including one or more entries corresponding to motion information of one or more previously processed blocks. The method 1410 further includes, at 1414, performing the conversion using the at least one HMVP table. In some implementations, the motion information of each entry is configured to include interpolation filter information for one or more previously processed blocks. In some implementations, the interpolation filter information indicates an interpolation filter used for an interpolated prediction block of the one or more previously processed blocks.

[0133] 14B is a flow chart illustrating an example method 1420 of video processing. The method 1420 includes, at 1422, maintaining a History-based Motion Vector Prediction (HMVP) table including one or more entries corresponding to motion information of one or more previously processed blocks prior to conversion between a current video block of a video domain and a coded representation of the video, the motion information of each entry being configured to include interpolation filter information for the one or more previously processed blocks. The method 1420 further includes, at 1424, constructing a motion candidate list including HMVP merge candidates for the conversion, the HMVP candidates being derived by inheriting an entry from an HMVP table including corresponding interpolation filter information associated with an entry. The method 1420 includes, at 1426, performing the conversion based on the motion candidate list.

[0134] 15A is a flow chart illustrating an example method 1510 of video processing. The method 1510 includes determining a coding mode used to represent a current video block of the video in a coded representation of the video, at 1512. The method 1510 further includes coding the current video block into the coded representation according to the coding mode, at 1514, where use of the coding mode disables, for the current video block, the use of half-pixel precision to represent motion information.

[0135] 15B is a flow chart illustrating an example method 1520 of video processing. The method 1520 includes parsing a coded representation of the video to determine that a current video block of the video is coded using a coding mode, at 1522. The method 1520 further includes generating a decoded representation of the current video block from the coded representation in accordance with the coding mode, at 1524, where use of the coding mode disables, for the current video block, the use of half-pixel precision to represent motion information.

[0136] 15C is a flow chart illustrating an example method 1530 of video processing. The method 1530 includes, at 1532, determining to use a first weighting factor and a second different weighting factor for a first predictive block and a second predictive block, respectively, for a current video block processed using a generalized bi-prediction (GBi) mode, where the first weighting factor and the second weighting factor are selected from a set of weighting factors. The method 1530 further includes, at 1534, converting between the current video block of the video and the coded representation of the video based on the determination. In some implementations, the first weighting factor set used for the inter mode is different from the second weighting factor set used for the affine inter mode.

[0137] 15D is a flow chart illustrating an example method 1540 of video processing. The method 1540 includes, at 1542, determining information regarding an interpolation filter depending on a coding mode of the video units for converting between a plurality of video units of a video region of a video and a coded representation of the plurality of video units, the interpolation filter being used to interpolate motion vector difference values ​​in the coded representation and having M integer pixel precision or 1 / N sub-pixel precision, where M and N are positive integers. The method 1540 further includes, at 1544, performing the conversion using the interpolation filter.

[0138] 16A is a flowchart of an example method 1610 of video processing. The method 1610 includes determining a coding mode used to represent a current video block of the video in a coded representation of the video, at 1612. The method 1610 further includes coding the current video block into the coded representation according to the coding mode, at 1614. In some implementations, use of an alternative half-pixel precision filter in addition to a default half-pixel precision filter for representing motion information is disabled for the current video block due to use of the coding mode.

[0139] 16B is a flowchart of an example method 1620 of video processing. The method 1620 includes parsing a coded representation of the video to determine that a current video block of the video is coded using a coding mode, at 1622. The method 1620 further includes generating a decoded representation of the current video block from the coded representation in accordance with the coding mode, at 1624. In some implementations, use of an alternative half-pixel precision filter in addition to a default half-pixel precision filter for representing motion information is disabled for the current video block due to use of the coding mode.

[0140] 16C is a flowchart of an example method 1630 of video processing. The method 1630 includes determining, at 1632, that a coding mode is not permitted for coding the video block in a coded representation of the video due to using an alternative interpolation filter that is enabled for the video block of the video. The method 1630 further includes generating, at 1634, a coded representation of the video block based on the determination, where the alternative interpolation filter is used to interpolate an inter-predicted block of the current video block.

[0141] 16D is a flowchart of an example method 1640 of video processing. The method 1640 includes determining, at 1642, that a coding mode is not permitted to be used to represent the video block in a coded representation of the video due to use of an alternative interpolation filter that is enabled for the video block of the video. The method 1640 further includes, at 1644, generating a decoded video block by parsing the coded representation based on the determination.

[0142] The various techniques and embodiments may be described using the following section-based format.

[0143] The first set of sections describes certain features and aspects of the technology disclosed in the previous section.

[0144] 1. A video processing method comprising: determining a set of single motion information for a current video block based on applying at least one interpolation filter to a set of neighboring blocks, the at least one interpolation filter being configurable to integer pixel accuracy or sub-pixel accuracy of the single set of motion information; and converting between the current video block and a bitstream representation of the current video block, the conversion including a Decoder Motion Vector Refinement (DMVR) step for improving the single set of motion information signaled in the bitstream representation.

[0145] 2. The method of claim 1, wherein an index of the at least one interpolation filter is signaled in the bitstream representation if the single set of motion information is associated with an Adaptive Motion Vector Resolution (AMVR) mode.

[0146] 3. The method of claim 1, wherein if the single set of motion information is associated with one merge mode, an index of the at least one interpolation filter is inherited from a previous video block.

[0147] 4. The method according to item 1, wherein, if the single set of motion information is associated with a MMVD (Merge with Motion Vector Difference) mode, an index of the at least one interpolation filter is inherited from a previous video block.

[0148] 5. The method according to item 1, wherein the at least one interpolation filter corresponds to a default filter having sub-pixel accuracy, and the single set of motion information is associated with a MMVD (Merge with Motion Vector Difference) mode.

[0149] 6. The method of any of claims 2 to 4, wherein coefficients of the at least one interpolation filter for the current video block are inherited from the previous video block.

[0150] 7. The method according to any of items 1 to 6, wherein the sub-pixel accuracy of the single set of motion information is equal to 1 / 4 pixel or 1 / 16 pixel.

[0151] 8. A method according to any of items 1 to 7, wherein one or more components of the single set of motion information have sub-pixel accuracy.

[0152] 9. The method according to claim 1, wherein the at least one interpolation filter is represented using six coefficients or eight coefficients.

[0153] 10. The method of claim 5, wherein the at least one interpolation filter index is associated only with a current video block and not with a subsequent video block.

[0154] 11. The method of claim 1, wherein information about the at least one interpolation filter is stored together with the single set of motion information.

[0155] 12. The method of claim 11, wherein the information about the at least one interpolation filter identifies the at least one interpolation filter as a default filter.

[0156] 13. The method of claim 1, wherein coefficients of the at least one interpolation filter for the current video block are prevented from being used by an interpolation filter of another video block.

[0157] 14. A method according to any of items 1 to 13, wherein the at least one interpolation filter corresponds to a plurality of filters, each filter in the plurality of filters being associated with the sub-pixel accuracy of the single set of motion information.

[0158] 15. A method according to any one of items 1 to 14, wherein the accuracy of each component of the single set of motion information is equal to or less than the sub-pixel accuracy of the single set of motion information.

[0159] 16. The method according to any one of items 1 to 15, wherein the at least one interpolation filter is stored in a History-based Motion Vector Prediction (HMVP) lookup table.

[0160] 17. The method according to item 16, further comprising:

[0161] A method comprising: upon detecting that motion information of another video block is the same as the single motion set of the current video block, inserting the single motion information set into the HMVP table without inserting the motion information of the other video block.

[0162] 18. The method of claim 16, further comprising, upon detecting that motion information of another video block is the same as the single motion set of the current video block, inserting the single motion information set of the current video block and the motion information of the other video block into an HMVP table.

[0163] 19. A method according to any of items 17 to 18, wherein the other image block is associated with an interpolation filter, and the inserting is based at least in part on at least one interpolation filter of the current image block and / or an interpolation filter of the other image block.

[0164] 20. The method according to any of items 17 to 19, wherein the current video block and the other video block correspond to pair-wise candidates or combined merge candidates.

[0165] 21. A method according to any one of items 17 to 20, wherein the at least one interpolation filter of the current image block and the interpolation filter of the other image block are the same.

[0166] 22. The method according to any one of items 17 to 20, wherein the at least one interpolation filter of the current image block and the interpolation filter of the other image block are different.

[0167] 23. The method of claim 1, wherein the current video block is coded in Intra Block Copy (IBC) mode and the use of sub-pixel precision in the representation of the single set of motion information is disabled.

[0168] 24. The method according to any one of items 1 to 23, wherein the use of the at least one interpolation filter is disabled.

[0169] 25. The method of claim 1, wherein the at least one interpolation filter is associated with an amvr_precision_idx flag and / or an hpel_if_idx flag.

[0170] 26. The method of claim 25, wherein the amvr_precision_idx flag and / or the hpel_if_idx flag are associated with a bypass coded bin or a context coded bin.

[0171] 27. The method according to item 26, wherein the first bin is a bypass coded bin or a context coded bin.

[0172] 28. The method of any of items 25 to 27, wherein all bins share the same context.

[0173] 29. The method of claim 1, further comprising disabling one or more image processing steps based on the use of the at least one interpolation filter.

[0174] 30. The method described in item 29, wherein the one or more image processing steps include a Decoder Motion Vector Refinement (DMVR) step, a Bi-Directional Optical Flow (BDOF) step, a Combined Inter-Intra Prediction (CIIP) step, a Symmetric Motion Vector Difference (SMVD) step, a SubBlock Transform (SBT) step, or a triangular prediction step.

[0175] 31. The method of claim 30, wherein the at least one interpolation filter corresponds to a default filter.

[0176] 32. A method according to any one of items 30 to 31, wherein disabling the one or more video processing steps comprises disabling an indication of the one or more video processing steps in the bitstream representation.

[0177] 33. A method according to any of items 30 to 31, wherein disabling the one or more image processing steps includes disabling inheritance of the at least one interpolation filter of the current image block to another image block.

[0178] 34. The method of claim 1, wherein the integer pixel precision of the single set of motion information corresponds to 1 pixel, 2 pixels, or 4 pixels.

[0179] 35. The method according to claim 34, wherein the at least one interpolation filter is a low-pass filter.

[0180] 36. The method according to claim 34, wherein the at least one interpolation filter is a one-dimensional filter.

[0181] 37. The method according to claim 36, wherein the one-dimensional filter is a horizontal filter or a vertical filter.

[0182] 38. The method of claim 34, wherein a flag in the bitstream representation indicates whether the at least one interpolation filter is used.

[0183] 39. A method according to any one of items 1 to 38, wherein the current image block is associated with an Adaptive Motion Vector Resolution (AMVR) mode.

[0184] 40. The method of any of items 1-39, wherein the at least one interpolation filter for an inter mode of the current video block is different from a generalized bi-prediction (GBI) mode of the current video block.

[0185] 41. The method according to any one of items 1 to 40, wherein the at least one interpolation filter is predetermined.

[0186] 42. A method according to any of items 1 to 41, wherein the bitstream representation includes a Video Parameter Set (VPS), a Picture Parameter Set (PPS), a picture header, a tile group header, or a slice header associated with the current video block.

[0187] 43. A method according to any one of items 1 to 42, wherein the video processing is implemented on the encoder side.

[0188] 44. A method according to any one of items 1 to 70, wherein the video processing is implemented on the decoder side.

[0189] 45. An apparatus in a video system comprising a processor and a non-transitory memory having instructions stored therein, the instructions being executed by the processor to cause the processing device to implement a method according to any one of items 1 to 44.

[0190] 46. ​​A computer program product stored on a non-transitory computer-readable medium, the computer program product comprising program code for performing any of the methods of items 1 to 45.

[0191] The second set of items describes certain features and aspects of the disclosed technology described in the previous section, including, for example, example implementations 1, 8, and 10.

[0192] 1. A method of video processing comprising: converting between a current video block of a video and a coded representation of the video, the coded representation including a first parameter indicating, for the current video block, a motion information precision from a set of precisions that does not use a default motion information precision, and / or a second parameter identifying whether to use an alternative half-pixel interpolation filter for the conversion, the first parameter and / or the second parameter each being associated with one or more bins, and coding based on a context model being used only for a first bin of the one or more bins in the coded representation.

[0193] 2. The method of claim 1, wherein the motion information comprises at least one of a motion vector prediction, a motion vector differential, and a motion vector.

[0194] 3. The method according to item 1, wherein the first parameter is amvr_precision_idx.

[0195] 4. The method of claim 1, wherein the default motion information precision is 1 / 4 luminance samples.

[0196] 5. The method of claim 1, wherein the multiple precision sets have at least one of 1 / 16 luminance samples, 1 / 2 luminance samples, 1 luminance samples, and 4 luminance samples.

[0197] 6. The method according to item 1, wherein the current block is coded in inter mode, affine inter mode, or intra block copy mode.

[0198] 7. The method of claim 1, wherein one context is used for the first bin of the first parameter.

[0199] 8. The method according to item 1, wherein the remaining bins are bypass coded.

[0200] 9. The method of claim 1, wherein the first bin of the first parameter and / or the first bin of the second parameter are bypass coded.

[0201] 10. The method according to item 1, wherein one context is used for the first bin of the second parameter.

[0202] 11. The method according to item 1, wherein one context is shared by all bins of the first parameter.

[0203] 12. The method according to item 1, wherein one context is shared by all bins of the second parameter.

[0204] 13. The method of claim 1, wherein the second parameter has a first value indicating the use of a default half-pixel interpolation filter.

[0205] 14. The method of claim 1, wherein the second parameter has a second value that uses the alternative half-pixel interpolation filter.

[0206] 15. The method according to item 13, wherein the default half-pixel interpolation filter has a coefficient set of [-1, 4, -11, 40, 40, -11, 4, -1].

[0207] 16. The method of claim 1, wherein the alternative half-pixel interpolation filter has a coefficient set of [0, 3, 9, 20, 20, 9, 3, 0].

[0208] 17. A method for processing video comprising: determining motion information using an interpolation filter for converting between a current video block of a video and a coded representation of the video, the motion information having M-integer pixel precision or 1 / N sub-pixel precision, where M, N are positive integers and N is not equal to 2; and performing the conversion based on the motion information, wherein a syntax field of the coded representation corresponds to the interpolation filter.

[0209] 18. The method of claim 17, wherein N is equal to 4. Alternatively, in some embodiments, N is equal to 16.

[0210] 19. The method according to claim 17, wherein due to the current video block being coded in an adaptive motion vector difference resolution (AMVR) mode, the coded representation includes an index of the interpolation filter.

[0211] 20. The method of claim 17, wherein due to a current video block being coded in merge mode and / or MMVD (Merge with Motion Vector Difference) mode, the index of the interpolation filter is not inherited from a previous video block.

[0212] 21. The method of claim 17, wherein the syntax field indicates a default interpolation filter due to the current video block being coded in merge mode and / or MMVD (Merge with Motion Vector Difference) mode.

[0213] 22. The method of claim 17, wherein the index of the interpolation filter is inherited from a previous video block due to the current video block being coded in merge mode and / or Merge with Motion Vector Difference (MMVD) mode.

[0214] 23. The method according to claim 22, wherein the motion information has sub-pixel accuracy.

[0215] 24. The method of claim 22, wherein the motion information includes one or more components having sub-pixel accuracy.

[0216] 25. The method of claim 22, wherein the interpolation filter index is associated only with the current video block and not with subsequent video blocks.

[0217] 26. The method according to item 17, wherein M is equal to 1, 2 or 4.

[0218] 27. The method according to claim 17, wherein the interpolation filter is a low-pass filter.

[0219] 28. The method according to claim 17, wherein the interpolation filter is a one-dimensional filter.

[0220] 29. The method according to claim 28, wherein the one-dimensional filter is a horizontal filter or a vertical filter.

[0221] 30. The method of claim 17, wherein the coded representation optionally includes a flag indicating whether the interpolation filter having M integer pixel precision is enabled.

[0222] 31. The method of claim 30, wherein the flag is signaled if and only if the current video block is coded using integer pixel motion vector precision.

[0223] 32. A method according to any one of items 1 to 31, wherein performing the conversion includes generating the image from the coded representation.

[0224] 33. A method according to any one of items 1 to 31, wherein performing the conversion includes generating the coded representation from the video.

[0225] 34. An apparatus in a video system comprising a processor and a non-transitory memory having instructions stored therein, the instructions being executed by the processor to cause the processor to implement a method according to any one of items 1 to 33.

[0226] 35. A computer program product stored on a non-transitory computer-readable medium, the computer program product comprising program code for carrying out the method according to any one of items 1 to 35.

[0227] The third set of items describes certain features and aspects of the disclosed techniques described in the previous section, including, for example, example implementations 2, 3, 5 and 6.

[0228] 1. A video processing method comprising: generating a first motion candidate based on one or more motion candidates in a motion candidate list and one or more interpolation filters associated with the one or more motion candidates for a conversion between a current video block of a video and a coded representation of the video, wherein the interpolation filter is assigned to the first motion candidate according to a rule that depends on the one or more interpolation filters associated with the one or more motion candidates; inserting the first motion candidate into the motion candidate list; and performing the conversion based on the motion candidate list.

[0229] 2. The method of claim 1, wherein the first motion candidate corresponds to at least one of a pairwise merge candidate, a combined merge candidate, a zero motion vector candidate, and / or other default candidate.

[0230] 3. The method of item 1, wherein each motion candidate is associated with a 1 / 2 sample interpolation filter index, and the 1 / 2 sample interpolation filter of the first motion candidate is determined by the 1 / 2 sample interpolation filter indexes of at least two motion candidates.

[0231] 4. The method of claim 1, wherein for two motion candidates associated with the same 1 / 2 sample interpolation filter, the rule specifies that the first motion candidate inherits the same 1 / 2 sample interpolation filter.

[0232] 5. The method of claim 4, wherein the same 1 / 2 sample interpolation filter corresponds to an alternative 1 / 2 sample interpolation filter associated with a 1 / 2 sample interpolation filter index equal to 1, and the alternative 1 / 2 sample interpolation filter is different from a default 1 / 2 sample interpolation filter associated with a 1 / 2 sample interpolation filter index equal to 0.

[0233] 6. The method of claim 1, wherein for one of the motion candidates not associated with a default interpolation filter, the rule specifies that the interpolation filter is inherited by the first motion candidate.

[0234] 7. The method according to item 6, wherein the interpolation filter is used only for the corresponding prediction direction.

[0235] 8. The method of claim 1, wherein for two motion candidates associated with different interpolation filters, the rule specifies that the different interpolation filter is inherited in the first motion candidate.

[0236] 9. The method according to item 1, wherein the different interpolation filters are used for different prediction directions.

[0237] 10. The method of claim 1, wherein the number of the first motion candidates of the alternative interpolation filter corresponding to the assigned interpolation filter is less than or equal to K, where K is greater than or equal to 0.

[0238] 11. The method according to item 1, wherein the default interpolation filter is always used for the first motion candidate.

[0239] 12. A method of image processing comprising: associating motion information with each of a plurality of blocks, including a first block in a first image region of an image and a second block in a second image region of the image, the motion information including information about a respective interpolation filter used to interpolate motion vector difference information for each of the plurality of blocks; and using the motion information to convert between the image and a coded representation of the image.

[0240] 13. The method of claim 12, wherein the motion information includes information indicating the use of a default motion interpolation filter.

[0241] 14. The method of claim 12, wherein the motion information identifies an alternative interpolation filter that is different from a default interpolation filter.

[0242] 15. The method of claim 12, wherein the motion information includes one or more motion vectors and one or more reference frame indexes.

[0243] 16. The method according to any one of items 12 to 15, wherein the first image area and the second image area are coding tree unit rows.

[0244] 17. A method according to any one of items 12 to 15, wherein the first image area and the second image area are virtual pipeline data units.

[0245] 18. A method according to any one of items 12 to 17, wherein the first image area and the second image area are different areas.

[0246] 19. A method according to any of items 12 to 18, wherein the second block is encoded or decoded by accessing the first block, and the motion information follows a rule specifying that if the first image area is different from the second image area, the interpolation filter used for the second block is not allowed to be the same as the interpolation filter used for the first block.

[0247] 20. A method according to any one of items 12 to 17, wherein the first image area and the second image area are the same.

[0248] 21. A method for processing video, comprising: converting between a current video block of a video and a coded representation of the video, the current video block being represented in the coded representation using a merge mode or a Merge with Motion Vector Different (MMVD) mode; and an interpolation filter having 1 / N precision is used to interpolate a predictive block associated with the current video block according to a rule, N being a positive integer, the rule defining a condition for inheriting interpolation information when the interpolation filter is an alternative interpolation filter different from a default interpolation filter.

[0249] 22. The method of claim 21, wherein the rules determine that coefficients of the alternative interpolation filter are not allowed to be inherited.

[0250] 23. The method of claim 21, wherein a syntax element in the coded representation always indicates the default interpolation filter.

[0251] 24. The method of claim 21, wherein the rules determine whether coefficients of the alternative interpolation filter are permitted to be inherited.

[0252] 25. The method of claim 24, wherein the coefficients of the alternative interpolation filter are inherited if the final derived motion vector is of half-pixel accuracy and the motion vector components do not have finer motion vector accuracy.

[0253] 26. The method according to item 24, wherein the coefficients of the alternative interpolation filter are inherited if the final derived motion vector includes one or more motion vector components having half-pixel accuracy.

[0254] 27. The method according to claim 24, wherein the alternative interpolation filter is used only for motion compensation.

[0255] 28. The method of claim 24, wherein an index of the default interpolation filter is stored for the current video block and used in subsequent coded blocks of the current video block.

[0256] 29. A method of video processing comprising: processing a current video block during conversion between an image including the current video block and a coded representation of the image; and comparing and selectively updating a merge candidate list with motion information of the current video block, the motion information including interpolation filter information, the interpolation filter information including parameters of an interpolation filter used to interpolate motion vector difference values ​​used to represent the current video block in the coded representation.

[0257] 30. The method according to item 29, wherein two merging candidates associated with different interpolation filters are considered as two different merging candidates.

[0258] 31. The method of claim 29, wherein comparing and selectively updating the merge list includes inserting History-massed Motion Vector Prediction (HMVP) merge candidates into the merge candidate list by taking into account the interpolation filter information.

[0259] 32. The method of claim 29, wherein comparing and selectively updating the merge candidate list includes inserting History-based Motion Vector Prediction (HMVP) merge candidates into the merge candidate list without considering the interpolation filter information.

[0260] 33. A method according to any of items 1 to 32, wherein the default motion interpolation filter has a coefficient set of [-1, 4, -11, 40, 40, -11, 4, -1].

[0261] 34. The method according to any of items 1 to 32, wherein the alternative interpolation filter has a coefficient set of [0, 3, 9, 20, 20, 9, 3, 0].

[0262] 35. The method of any of items 1 to 34, wherein performing the transformation includes generating the coded representation from the current video block.

[0263] 36. The method of any of items 1 to 34, wherein performing the transformation includes generating the current video block from the coded representation.

[0264] 37. An apparatus in a video system comprising a processor and a non-transitory memory having instructions stored therein, the instructions being executed by the processor to cause the processor to implement a method according to any one of items 1 to 36.

[0265] 38. A computer program product stored on a non-transitory computer-readable medium, the computer program product comprising program code for performing the method according to any one of items 1 to 36.

[0266] The fourth set of items describes certain features and aspects of the disclosed techniques described in the previous section, including, for example, example implementation 4.

[0267] 1. A video processing method comprising: maintaining at least one History-based Motion Vector Prediction (HMVP) table prior to conversion between a current video block in an image domain and a coded representation of the video, the HMVP table including one or more entries corresponding to motion information of one or more previously processed blocks; and performing the conversion using the at least one HMVP table, the motion information of each entry being configured to include interpolation filter information for one or more previously processed blocks, the interpolation filter information indicating an interpolation filter used to interpolate a predictive block among the one or more previously processed blocks.

[0268] 2. A video processing method comprising: maintaining one or more History-based Motion Vector Prediction (HMVP) tables corresponding to motion information of one or more previously processed blocks prior to conversion between a current video block of an image domain and a coded representation of the video, the motion information of each entry being configured to include interpolation filter information for one or more previously processed blocks; constructing a motion candidate list including HMVP merge candidates for the conversion, the HMVP candidates being derived by inheriting an entry from the HMVP table including corresponding interpolation filter information associated with an entry; and performing the conversion based on the motion candidate list.

[0269] 3. After the conversion, the method further comprises selectively updating the HMVP table. The method according to paragraph 1 or 2.

[0270] 4. The method of claim 1 or 2, further comprising selectively updating the HMVP table using the motion information derived during the transform for the current video block, the motion information derived for the current video block including interpolation filter information for the current video block.

[0271] 5. The method of any one of items 3 and 4, wherein the updating includes determining whether to insert a new candidate into the HMVP table without taking into account the interpolation filter information.

[0272] 6. The method described in item 4, wherein the new candidate and an entry in the HMVP table before the update, in which the interpolation filter information is different but some or all of the remaining motion information excluding the interpolation filter information is the same, are considered to be the same candidate.

[0273] 7. The method according to item 3 or 4, wherein the updating includes determining whether to insert a new candidate into the HMVP table by taking into account the interpolation filter information.

[0274] 8. The method according to item 7, wherein the new candidate and an entry in the HMVP table before the update, in which some or all of the remaining motion information except for the interpolation filter information is the same, are considered as two different candidates.

[0275] 9. The method according to any of items 5 to 8, wherein the new candidates are derived based on the motion information of the current video block.

[0276] 10. The method according to any one of items 5 to 8, wherein the updating includes, for a new candidate that is different from an entry in the HMVP table, adding the new candidate to the HMVP table.

[0277] 11. The method according to any one of items 5 to 8, wherein the updating includes, for the new candidate that is the same as an entry in the HMVP table, deleting the entry from the HMVP table and adding the new candidate to the HMVP table.

[0278] 12. The method according to any one of items 1 to 11, wherein the interpolation filter information includes a 1 / 2 sample interpolation filter index that indicates use of an alternative interpolation filter or a default interpolation filter.

[0279] 13. The method of claim 12, wherein an index of the half-sample interpolation filter is equal to 0 to indicate the use of the default interpolation filter.

[0280] 14. The method of claim 12, wherein an index of the half-sample interpolation filter is equal to 1 to indicate the use of the alternative interpolation filter.

[0281] 15. The method of claim 12, wherein the default interpolation filter has a coefficient set that is [-1, 4, -11, 40, 40, -11, 4, -1].

[0282] 16. The method according to claim 12, wherein the alternative interpolation filter has a coefficient set of [0, 3, 9, 20, 20, 9, 3, 0].

[0283] 17. The method of any one of items 1 to 16, wherein performing the transformation includes generating the coded representation from the current video block.

[0284] 18. The method of any one of items 1 to 16, wherein performing the transformation includes generating the current video block from the coded representation.

[0285] 19. An apparatus in a video system comprising a processor and a non-transitory memory having instructions stored therein, the instructions being executed by the processor to cause the processor to implement a method according to any one of items 1 to 18.

[0286] 20. A computer program product stored on a non-transitory computer readable medium, the computer program product comprising program code for performing the method according to any one of items 1 to 18.

[0287] The fifth set of items describes certain features and aspects of the disclosed techniques described in the previous section, including, for example, example implementations 7 and 11-12.

[0288] 1. A video encoding method comprising: determining a coding mode used to represent a current video block of a video in a coded representation of the video; and coding the current video block into the coded representation in accordance with the coding mode, wherein use of half-pixel precision for representing motion information is disabled for the current video block due to use of the coding mode.

[0289] 2. A video decoding method comprising: parsing a coded representation of a video to determine whether a current video block of the video is coded using a coding mode; and generating a decoded representation of the current video block from the coded representation in accordance with the coding mode, wherein use of half-pixel precision to represent motion information is disabled for the current video block due to use of the coding mode.

[0290] 3. The method of claim 1 or 2, wherein the motion information corresponds to one or more motion vectors for the current video block.

[0291] 4. The method of claim 1 or 2, wherein the motion information corresponds to one or more motion vector difference values ​​of the current video block.

[0292] 5. The method of claim 1 or 2, wherein the motion information corresponds to a motion vector of the current video block and one or more motion vector differential values ​​of the current video block.

[0293] 6. A method according to any of items 1 to 4, wherein due to the use of the coding mode, the coded representation omits bits and / or bins for signalling whether half pixel resolution is applicable to the current video block.

[0294] 7. A method according to any of items 1 to 6, wherein the coding mode corresponds to an Intra Block Copy (IBC) mode in which a predictive block is generated using at least a block vector pointing to a video frame including the current video block in order to code the current video block.

[0295] 8. The method according to item 7, in which an indication of a 1 / 2 pixel interpolation filter is not signaled.

[0296] 9. The method of claim 1, wherein the coding mode corresponds to a mode in which the current video block is divided into two parts, each part being associated with one motion candidate, and the two motion candidates are derived from the same motion candidate list.

[0297] 10. The method according to item 9, wherein the coding mode corresponds to a triangular prediction mode.

[0298] 11. The method of claim 1, wherein the coding mode corresponds to a merge mode in which the current video block and a neighboring block share the motion information.

[0299] 12. A method of image processing comprising: determining, for a current image block processed using GBi (Generalized Bi-prediction) mode, to use a first weighting factor and a second different weighting factor for a first prediction block and a second prediction block, respectively, the first weighting factor and the second weighting factor being selected from a set of weighting factors; and using the final predictor to convert between the current image block of an image and a coded representation of the image, wherein the first weighting factor set used in inter mode is different from the second weighting factor set used in affine inter mode.

[0300] 13. The method of claim 12, wherein the sum of the first weighting factor and the second weighting factor is equal to one.

[0301] 14. The method of claim 12, wherein the weighting coefficient set is signaled in a Sequence Parameter Set (SPS), a Video Parameter Set (VPS), a Picture Parameter Set (PPS), a picture header, a tile group header, or a slice header associated with the current video block.

[0302] 15. The method according to claim 12, wherein the set of weighting coefficients is predefined.

[0303] 16. A video processing method comprising: determining information regarding an interpolation filter depending on a coding mode of a video unit for converting between a plurality of video units of a video region of a video and a coded representation of the plurality of video units, the interpolation filter being used to interpolate motion vector difference values ​​in the coded representation and having M integer pixel accuracy or 1 / N sub-pixel accuracy, where M and N are positive integers; and performing the conversion using the interpolation filter.

[0304] 17. The method of claim 16, wherein determining determines a first set of coefficients of the interpolation filter for the video unit coded in an affine mode, and determining determines a different second set of coefficients of the interpolation filter for another video unit coded in a non-affine mode.

[0305] 18. The method of claim 16, wherein determining determines a first set of coefficients of the interpolation filter for the video unit coded in an IBC mode, and determining determines a different second set of coefficients of the interpolation filter for another video unit coded in a non-IBC mode.

[0306] 19. The method of any one of items 1 to 18, wherein performing the transformation includes generating the coded representation from the current video block.

[0307] 20. The method of any one of items 1 to 18, wherein performing the transformation includes generating the current video block from the coded representation.

[0308] 21. An apparatus in a video system comprising a processor and a non-transitory memory having instructions stored therein, the instructions being executed by the processor to cause the processor to implement a method according to any one of items 1 to 20.

[0309] 22. A computer program product stored on a non-transitory computer readable medium, the computer program product comprising program code for performing the method according to any one of items 1 to 20.

[0310] The sixth set of items describes certain features and aspects of the disclosed techniques described in the previous section, including, for example, example implementation 9.

[0311] 1. A video encoding method comprising: determining a coding mode used to represent a current video block of a video in a coded representation of the video; and coding the current video block into the coded representation in accordance with the coding mode, wherein use of the coding mode causes the use of an alternative half-pixel precision filter in addition to a default half-pixel precision filter for representing motion information to be disabled for the current video block.

[0312] 2. A video decoding method comprising: parsing a coded representation of a video to determine that a current video block of the video is coded using a coding mode; and generating a decoded representation of the current video block from the coded representation in accordance with the coding mode, wherein use of the coding mode causes the use of an alternative half-pixel precision filter for representing motion information to be disabled for the current video block.

[0313] 3. The method of claim 1 or 2, wherein the coding mode corresponds to a triangular prediction mode that divides the video block into a plurality of partitions, at least one of which is a non-rectangular partition.

[0314] 4. The method according to item 3, wherein in the triangular prediction mode, information regarding the alternative half-pixel precision filter is not inherited and only the default half-pixel precision filter is used.

[0315] 5. The method according to item 1 or 2, wherein the coding mode corresponds to a Bi-Direction Optical Flow (BDOF) in which the current block is bidirectionally predicted.

[0316] 6. The method according to item 1 or 2, wherein the coding mode corresponds to Decoder-side Motion Vector Refinement (DMVR), which improves prediction information from motion information derived on the decoder side.

[0317] 7. The method according to item 1 or 2, wherein the coding mode corresponds to Decoder-side Motion Vector Derivation (DMVD), which derives motion information on the decoder side.

[0318] 8. The method according to item 1 or 2, wherein the coding mode corresponds to Combined Inter-Intra Prediction (CIIP), which combines inter prediction and intra prediction to generate a final prediction signal.

[0319] 9. The method according to item 1 or 2, wherein the coding mode corresponds to Symmetric Motion Vector Difference (SMVD), which processes motion vector differences symmetrically.

[0320] 10. The method according to item 1 or 2, wherein the coding mode corresponds to a SubBlock Transform (SBT) that transforms a subblock into one transform block.

[0321] 11. A video encoding method comprising: determining that a coding mode is not permitted for coding a video block of a video due to the use of an alternative interpolation filter that is enabled for the video block in a coded representation of the video; and generating the coded representation of the video block based on the determination, wherein the alternative interpolation filter is used to interpolate an inter-predicted block of the current video block.

[0322] 12. A method of decoding video comprising: determining that use of a coding mode for representing a video block in a coded representation of a video is not permitted due to use of an alternative interpolation filter that is enabled for the video block; and generating a decoded video block by parsing the coded representation based on the determination.

[0323] 13. The method according to claim 11 or 12, wherein the alternative interpolation filters are alternative half-sample interpolation filters.

[0324] 14. The method of item 11, wherein the determining step determines that the current video block is divided into two parts, each part is associated with one motion candidate, and the two motion candidates do not allow the coding modes corresponding to coding modes derived from the same motion candidate list.

[0325] 15. The method according to claim 14, wherein the coding mode corresponds to a triangular prediction mode.

[0326] 16. The method according to item 13 or 14, wherein information about the alternative interpolation filter is not inherited in the coding mode and only a default 1 / 2 sample interpolation filter is used.

[0327] 17. The method according to item 11 or 12, wherein the determining determines that the coding mode corresponding to a bi-directional predicted BDOF (Bi-Direction Optical Flow) is not allowed for the current block.

[0328] 18. The method according to item 17, wherein the determining step determines whether to disallow the coding mode corresponding to Decoder-side Motion Vector Refinement (DMVR), which improves prediction information from motion information derived on the decoder side.

[0329] 19. The method according to claim 12, wherein the determining step determines that the coding mode corresponding to Decoder-side Motion Vector Derivation (DMVD), which derives motion information on the decoder side, is not permitted.

[0330] 20. The method described in item 11, wherein the determining step determines that the coding mode corresponding to Combined Inter-Intra Prediction (CIIP), which generates a final prediction signal by combining inter prediction and intra prediction, is not allowed.

[0331] 21. The method according to item 20, wherein if a merge candidate inherits the interpolation filter, the CIIP flag is skipped and inferred to be false.

[0332] 22. The method according to item 20, wherein if the CIIP flag is true, the default interpolation filter is always used.

[0333] 23. The method according to claim 11, wherein the determining step determines not to allow the coding mode corresponding to Symmetric Motion Vector Difference (SMVD), which processes motion vector differences symmetrically.

[0334] 24. The method according to item 23, wherein a default interpolation filter is always used for the use of the SMVD and no syntax element relating to the interpolation filter is signaled.

[0335] 25. The method of claim 23, wherein a syntax element for the interpolation filter indicates that the interpolation filter is not used, and a syntax element for the SMVD is not signaled and the SMVD is not used.

[0336] 26. The method according to claim 12, wherein the determining step determines that the coding mode corresponding to a SubBlock Transform (SBT) that transforms a subblock into a transform block is not allowed.

[0337] 27. The method of claim 26, wherein a default interpolation filter is always used for use with the SBT, and no syntax element relating to the interpolation filter is signaled.

[0338] 28. The method of claim 26, wherein a syntax element for the interpolation filter indicates that the interpolation filter is not used, and a syntax element for the SBT is not signaled and the SBT is not used.

[0339] 29. The method of claim 11, wherein generating the coded representation includes generating the coded representation by coding the video block using a triangular coding mode, in which the video block is divided into a plurality of portions, at least one of which is a rectangular portion.

[0340] 30. The method according to claim 29, wherein information about the interpolation filter is inherited in the triangle coding mode.

[0341] 31. The method of claim 11, wherein generating the coded representation includes generating the coded representation by omitting syntax elements that signal use of the coding mode.

[0342] 32. The method of claim 12, wherein parsing the coded representation includes parsing the coded representation in the absence of a syntax element that signals use of the coding mode.

[0343] 33. An apparatus in a video system comprising a processor and a non-transitory memory having instructions stored therein, the instructions being executed by the processor to cause the processor to implement a method according to any one of items 1 to 32.

[0344] 34. A computer program product stored on a non-transitory computer-readable medium, the computer program product comprising program code for performing the method according to any of items 1 to 32.

[0345] In some embodiments, the methods disclosed above may be implemented by an apparatus comprising a processor configurable to perform the methods.

[0346] Implementations of the disclosed and other solutions, examples, embodiments, modules, and functional operations described herein, including the structures disclosed herein and their structural equivalents, may be implemented in digital electronic circuitry, or computer software, firmware, or hardware, or in one or more combinations thereof. The disclosed and other embodiments may be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer-readable medium for implementation by or for controlling the operation of a data processing apparatus. The computer-readable medium may be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter that provides a machine-readable propagated signal, or one or more combinations thereof. The term "data processing apparatus" includes all apparatus, devices, and machines for processing data, including, for example, a programmable processor, a computer, or multiple processors, or computers. In addition to hardware, the apparatus may include code that creates an environment for the execution of the computer program, such as code that constitutes a processor firmware, a protocol stack, a database management system, an operating system, or one or more combinations thereof. A propagated signal is an artificially generated signal, for example a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to an appropriate receiving device.

[0347] A computer program (also called a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program may be recorded as part of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), may be stored in a single file dedicated to the program, or may be stored in multiple coordinating files (e.g., a file that stores one or more modules, subprograms, or code portions). A computer program can be deployed to run on one computer located at one site, or on multiple computers distributed across multiple sites and interconnected by a communication network.

[0348] The processing and logic flows described herein may be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processing and logic flows may also be performed by, and an apparatus may be implemented as, special purpose logic circuitry, such as a Field Programmable Gate Array (FPGA) or an Application Specific Integrated Circuit (ASIC).

[0349] Processors suitable for executing computer programs include, for example, both general purpose and special purpose microprocessors, as well as any one or more processors of any kind of digital computer. Typically, a processor receives instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Typically, a computer may include one or more mass storage devices, such as magnetic, magneto-optical, or optical disks, for storing data, or may be operatively coupled to receive data from or transfer data to these mass storage devices. However, a computer need not have such devices. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including, for example, EPROMs, EEPROMs, flash storage devices, magnetic disks, such as internal hard disks or removable disks, magneto-optical disks, and semiconductor storage devices such as CD-ROM and DVD-ROM disks. The processor and memory may be supplemented by, or incorporated in, special purpose logic circuitry.

[0350] Although this patent specification contains many details, these should not be construed as limiting the scope of any subject matter or the scope of the claims, but rather as descriptions of features that may be specific to particular embodiments of a particular technology. Certain features described in this patent document in the context of separate embodiments may be implemented in combination in one example. Conversely, various features described in the context of one example may be implemented in multiple embodiments separately or in any suitable subcombination. Furthermore, although features may be described above as acting in a particular combination and initially claimed as such, one or more features from a claimed combination may, in some cases, be extracted from the combination, and the claimed combination may be directed to a subcombination or a variation of the subcombination.

[0351] Similarly, although operations are shown in a particular order in the figures, this should not be understood as requiring that such operations be performed in the particular order or sequential order shown, or that all of the operations shown be performed, to achieve desired results, nor should the separation of various system components in the examples described in this patent specification be understood as requiring such separation in all embodiments.

[0352] Only some implementations and examples have been described; other embodiments, extensions and variations are possible based on the content described and illustrated in this patent specification.

Claims

1. 1. A method for processing video data, comprising the steps of: determining a coding mode of a first video block of a video for a first conversion between the first video block and a bitstream of the video; performing the first transformation based at least on the coding mode of the first video block; and having In response to the coding mode of the first image block being a first particular coding mode, a first half-pixel precision interpolation filter other than a second half-pixel precision interpolation filter is used for the first image block, the first half-pixel precision interpolation filter being an 8-tap filter and the second half-pixel precision interpolation filter being a 6-tap filter; In the first particular coding mode, first motion information for a first geometric partition of the first video block and second motion information for a second geometric partition of the first video block are determined, and a weighting process for generating a final prediction of samples within a weighted region of the first video block is applied based on a weighted sum of prediction samples derived based on the first motion information and the second motion information; A half-pixel precision interpolation filter index (hpelIfIdx) of the first half-pixel precision interpolation filter is equal to 0 and a half-pixel precision interpolation filter index of the second half-pixel precision interpolation filter is equal to 1.

2. The method of claim 1 , wherein the first half-pixel precision interpolation filter is a default half-pixel precision interpolation filter.

3. The method of claim 1 , wherein the first particular coding mode is a triangular prediction mode.

4. The method of claim 1 , wherein no indication is present in the bitstream of whether the first half-pixel precision interpolation filter or the second half-pixel precision interpolation filter is to be used.

5. The method further comprises: determining a coding mode of a second video block of the video for a second conversion between the second video block and the bitstream; and performing the second transformation based at least on the coding mode of the second video block; and having 2. The method of claim 1, wherein in response to the coding mode of the second video block being a second particular coding mode, half-pixel motion vector precision is disabled for the second video block.

6. 6. The method of claim 5, wherein in the second particular coding mode, predictive samples of the second video block are generated using at least a block vector that points to another video block in a same picture that contains the second video block.

7. The method of claim 5 , wherein the second particular coding mode is an intra block copy mode.

8. The method of claim 5 , wherein in the second particular coding mode, no indication of the use of half-pixel motion vector precision is present in the bitstream.

9. the first transformation includes encoding the first video block into the bitstream; The method of claim 8 , wherein the second transformation includes encoding the second video block into the bitstream.

10. the first transformation includes decoding the first video block from the bitstream; The method of claim 8 , wherein the second transforming comprises decoding the second video block from the bitstream.

11. 1. An apparatus for coding video data, comprising a processor and a non-transitory memory having instructions, comprising: The instructions, when executed by the processor, cause the processor to: determining a coding mode of a first video block of a video for a first conversion between the first video block and a bitstream of the video; performing the first transformation based at least on the coding mode of the first video block; and Run the command, In response to the coding mode of the first image block being a first particular coding mode, a first half-pixel precision interpolation filter other than a second half-pixel precision interpolation filter is used for the first image block, the first half-pixel precision interpolation filter being an 8-tap filter and the second half-pixel precision interpolation filter being a 6-tap filter; In the first particular coding mode, first motion information for a first geometric partition of the first video block and second motion information for a second geometric partition of the first video block are determined, and a weighting process for generating a final prediction of samples within a weighted region of the first video block is applied based on a weighted sum of prediction samples derived based on the first motion information and the second motion information; A half-pixel precision interpolation filter index (hpelIfIdx) of the first half-pixel precision interpolation filter is equal to 0, and a half-pixel precision interpolation filter index of the second half-pixel precision interpolation filter is equal to 1.

12. A processor comprising: determining a coding mode of a first video block of a video for a first conversion between the first video block and a bitstream of the video; performing the first transformation based at least on the coding mode of the first video block; and Run the command, In response to the coding mode of the first image block being a first particular coding mode, a first half-pixel precision interpolation filter other than a second half-pixel precision interpolation filter is used for the first image block, the first half-pixel precision interpolation filter being an 8-tap filter and the second half-pixel precision interpolation filter being a 6-tap filter; In the first particular coding mode, first motion information for a first geometric partition of the first video block and second motion information for a second geometric partition of the first video block are determined, and a weighting process for generating a final prediction of samples within a weighted region of the first video block is applied based on a weighted sum of prediction samples derived based on the first motion information and the second motion information; A half-pixel precision interpolation filter index (hpelIfIdx) of the first half-pixel precision interpolation filter is equal to 0 and a half-pixel precision interpolation filter index of the second half-pixel precision interpolation filter is equal to 1.

13. A method for storing a bitstream, comprising the steps of: determining a coding mode for a first video block of a video; generating the bitstream based at least on the coding mode of the first video block; and storing the bitstream on a non-transitory computer readable recording medium; having In response to the coding mode of the first image block being a first particular coding mode, a first half-pixel precision interpolation filter other than a second half-pixel precision interpolation filter is used for the first image block, the first half-pixel precision interpolation filter being an 8-tap filter and the second half-pixel precision interpolation filter being a 6-tap filter; In the first particular coding mode, first motion information for a first geometric partition of the first video block and second motion information for a second geometric partition of the first video block are determined, and a weighting process for generating a final prediction of samples within a weighted region of the first video block is applied based on a weighted sum of prediction samples derived based on the first motion information and the second motion information; A half-pixel precision interpolation filter index (hpelIfIdx) of the first half-pixel precision interpolation filter is equal to 0 and a half-pixel precision interpolation filter index of the second half-pixel precision interpolation filter is equal to 1.

Citation Information

Patent Citations

  • Method of decoding video data

    US20140269926A1

  • Systems and methods of switching interpolation filters

    WO2018067848A1