Improvements to merge candidates
By optimizing the use of weighted bidirectional prediction mode and optional half-pixel interpolation filter, and adjusting the merge candidate list, the problem of insufficient optimization of pairwise average candidate design in the existing technology is solved, thereby improving the coding efficiency and image quality of video coding.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2020-09-02
- Publication Date
- 2026-03-20
AI Technical Summary
Existing video coding technologies suffer from inefficient coding practices due to insufficient optimization of pairwise averaging candidate designs and inflexible use of optional luminance half-pixel interpolation filters when processing video blocks and their bitstream representations.
By adjusting the weight index in the weighted bidirectional prediction mode, dynamically enabling or disabling optional half-pixel interpolation filters, reordering the merge candidate list, adding motion vector candidates pointing to half-pixel locations, and optimizing the generation process of pairwise average candidates.
It improves the compression performance of video encoding, enhances encoding efficiency and image quality, and reduces bandwidth requirements.
Smart Images

Figure CN114365494B_ABST
Abstract
Description
[0001] Cross-references to related applications
[0002] This application is filed in accordance with applicable patent law and / or the Paris Convention to promptly claim priority and interest in international patent application PCT / CN2019 / 103963, filed September 2, 2019. The entire disclosure of international patent application PCT / CN2019 / 103963 is incorporated herein by reference as part of the disclosure of this application. Technical Field
[0003] This patent document relates to video encoding and decoding. Background Technology
[0004] Despite advancements in video compression, digital video still consumes the largest share of bandwidth on the Internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, the bandwidth demand for digital video is expected to continue to grow. Summary of the Invention
[0005] Apparatus, systems, and methods relating to digital video coding, and more particularly, apparatus, systems, and methods wherein video and image coding and decoding employ merge candidates during video coding or decoding.
[0006] In one example aspect, a video processing method is disclosed. The method includes a transformation between video blocks and a coded representation of the video, determining an interpolation filter for motion candidate interpolation using rules, and performing the transformation based on that determination, wherein the interpolation scheme is one of a default interpolation filter and an optional half-pixel (half-pel) interpolation filter.
[0007] In yet another example, a different method for video processing is disclosed. This method includes a conversion between an encoded representation of a video block and the pixel values of the video block; determining whether to use an encoding tool during the conversion based on information about associated candidates used to generate paired merge candidates during the conversion process, or information about selected motion candidates in the merge list before adding paired merge candidates to the merge list; and performing the conversion based on this determination.
[0008] In yet another example, a different video processing method is disclosed. This method includes a transformation between the coded representation of a video block and the pixel values of the video block, determining a bidirectional prediction mode for generating motion candidates including a default motion candidate, conditionally determining whether to use unequal weights in computing the default motion candidate, and performing the transformation based on that determination.
[0009] In yet another example aspect, another video processing method is disclosed. The method includes performing a conversion between a coded representation of a video region and pixel values of the video region, wherein the conversion uses a motion candidate list of candidates representing motion information for the video region, and wherein the motion candidate list uses one or more motion candidates having motion vectors pointing to a half-pel position.
[0010] In yet another example aspect, another video processing method is disclosed. The method includes performing a conversion between a coded representation of a video block and pixel values of the video block using a rule that specifies, due to a lack of a motion vector of a current block having a horizontal or vertical half-pel resolution, the coded representation omits signaling of a selectable half-pel filter used in the conversion process for merge candidate computation.
[0011] In yet another example aspect, another video processing method is disclosed. The method includes determining, in a process of a conversion between a coded representation of a video block and pixel values of the video block, whether to perform a reordering of a merge candidate list based on a use of a selectable half-pel interpolation filter in the conversion process or an encoding condition; and performing the conversion based on the determination.
[0012] In yet another example aspect, another video processing method is disclosed. The method includes determining, for a conversion between a video block of a video and a bitstream representation of the video block, whether a selectable luma half-pel interpolation filter is applied to all pair- wise average candidates based on a flag used to represent whether the selectable luma half-pel interpolation filter is employed; and performing the conversion based on the determination.
[0013] In yet another example aspect, another video processing method is disclosed. The method includes determining, for a conversion between a video block of a video and a bitstream representation of the video block, whether to enable or disable a coding tool for a pair- wise average candidate based on information of associated candidates used to generate the pair- wise average candidate; and performing the conversion based on the determination.
[0014] In yet another example aspect, another video processing method is disclosed. The method includes determining, for a conversion between a video block of a video and a bitstream representation of the video block, whether to enable or disable unequal weights in bi-prediction weights for a default motion candidate in a merge candidate list associated with the video block based on one or more conditions; and performing the conversion based on the determination.
[0015] In yet another example aspect, another video processing method is disclosed. The method includes, for a conversion between a video block of a video and a bitstream representation of the video block, deriving a merge candidate list associated with the video block; adding one or more half-pel motion vector (MV) candidates having a motion vector pointing to a half-pel to the merge candidate list; and performing the conversion based on the merge candidate list.
[0016] In yet another exemplary aspect, there is disclosed another video processing method. The method includes, for a conversion between a video block of a video and a bitstream representation of the video block, determining whether to enable or disable a default motion candidate in a merge candidate list associated with the video block based on one or more conditions; and performing the conversion based on the determination.
[0017] In yet another exemplary aspect, there is disclosed another video processing method. The method includes, for a conversion between a video block of a video and a bitstream representation of the video block, determining whether to enable or disable a coding tool for a pair- wise average candidate based on information of all or selected motion lists in a merge candidate list before the pair- wise average candidate is added to the merge candidate list; and performing the conversion based on the determination.
[0018] In yet another exemplary aspect, there is disclosed another video processing method. The method includes, for a conversion between a video block of a video and a bitstream representation of the video block, determining a value for a flag used to indicate whether to employ an optional luma half-pel interpolation filter based on a motion vector (MV) of the video block; and performing the conversion based on the determination.
[0019] In yet another exemplary aspect, there is disclosed another video processing method. The method includes, for a conversion between a video block of a video and a bitstream representation of the video block, performing a reordering process on motion candidates in a merge candidate list associated with the video block based on usage of an optional half-pel interpolation filter; and performing the conversion based on the reordered merge candidate list.
[0020] In another representative aspect, the aforementioned method is embodied in the form of processor-executable code, and stored in a computer-readable program medium.
[0021] In another representative aspect, there is disclosed a device configured to perform or operable for performing the aforementioned method. The device can include a processor programmed to implement the method.
[0022] In another representative aspect, there is disclosed a video decoder apparatus as described herein, which can implement the method described herein.
[0023] In another representative aspect, there is disclosed a computer program product as described herein, stored on a non-transitory computer readable medium, the computer program product comprising program code for performing the method.
[0024] In another representative aspect, there is disclosed a non-transitory computer readable medium as described herein, having recorded thereon program code for performing the method.
[0025] In another representative aspect, a non-transitory computer-readable recording medium storing a bitstream representation generated by a method described herein, which is executed by a video processing apparatus, is provided.
[0026] The above and other aspects and features of the disclosed technology are more fully described in the following detailed description, in conjunction with the accompanying drawings. BRIEF DESCRIPTION OF DRAWINGS
[0027] Figures 1A-1B An example table for signaling is shown. Figure 1A VTM-5.0 tables are shown, and Figure 1B Proposed tables are shown.
[0028] Figure 2 Graphical examples of filter characteristics are shown.
[0029] Figure 3 A block diagram of an example implementation of a hardware platform for video processing is shown.
[0030] Figure 4 A flowchart of an example method of video processing is shown.
[0031] Figure 5 A block diagram of an example video processing system in which the disclosed technology can be implemented is shown.
[0032] Figure 6 A flowchart of an example method of video processing is shown.
[0033] Figure 7 A flowchart of an example method of video processing is shown.
[0034] Figure 8 A flowchart of an example method of video processing is shown.
[0035] Figure 9 A flowchart of an example method of video processing is shown.
[0036] Figure 10 A flowchart of an example method of video processing is shown.
[0037] Figure 11 A flowchart of an example method of video processing is shown.
[0038] Figure 12 A flowchart of an example method of video processing is shown.
[0039] Figure 13 A flowchart of an example method of video processing is shown. DETAILED DESCRIPTION
[0040] Embodiments of the disclosed technology can be used in existing video coding standards (e.g., HEVC, H.265) and future standards that will improve compression performance. The section headings used in this document are for ease of readability and do not limit the discussion or the embodiments (and / or implementations) to sections in any way.
[0041] 1. SUMMARY
[0042] The disclosed technology relates to video coding technology. In particular, it relates to merge candidates in video coding. It can be used in existing video coding standards like HEVC, or in standards under development (Versatile Video Coding). It can also be used in future video coding standards or video codecs.
[0043] 2. INTRODUCTION
[0044] Video coding standards have evolved mainly through the development of the well-known ITU-T and ISO / IEC standards. ITU-T produced H.261 and H.263, ISO / IEC produced MPEG-1 and MPEG-4 Visual, and both organizations jointly produced the H.262 / MPEG-2 Video and H.264 / MPEG-4 Advanced Video Coding (AVC) and H.265 / HEVC standards. Since H.262, video coding standards are based on the hybrid video coding structure, where temporal prediction and transform coding are utilized. To explore future video coding technologies beyond HEVC, the Joint Video Exploration Team (JVET) was founded by VCEG and MPEG jointly in 2015. Since then, many new methods have been adopted by JVET and brought into the reference software named “Joint Exploration Model” (JEM). In April 2018, the Joint Video Team (JVT) was established between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) to work on the VVC standard with the goal of 50% bitrate reduction compared to HEVC.
[0045] 2.1 Pairwise average merge candidate derivation
[0046] The pairwise average candidate is generated by averaging a predefined pair of candidates in the existing merge candidate list, the predefined pair is defined as {(0, 1), (0, 2), (1, 2), (0, 3), (1, 3), (2, 3)}, where the numbers represent the merge indices to the merge candidate list. The averaged motion vector is calculated independently for each reference list. If both motion vectors in one list are available, they are averaged even if they point to different reference pictures; if only one motion vector is available, it is used directly; if no motion vector is available, the list is kept invalid.
[0047] If the merge list is not full after adding pairwise average merge candidates, insert zero MVP at the end until the maximum number of merge candidates is reached.
[0048] 2.2 Bidirectional Prediction (BCW) with CU-level Weights
[0049] In HEVC, bidirectional prediction signaling is generated by averaging two prediction signals acquired from two different reference images and / or using two different motion vectors. In VTM6, the bidirectional prediction mode is extended beyond simple averaging to allow a weighted average of the two prediction signals.
[0050] P bi-pred =((8-w)*P0+w*P1+4)>>3 (3-19)
[0051] Five weights are allowed in weighted average bidirectional prediction, w∈{-2,3,4,5,10}. For each bidirectional prediction CU, the weights w are determined in one of two ways: 1) for non-merge CUs, the weight index is signaled after the motion vector difference; 2) for merge CUs, the weight index is inferred from neighboring blocks based on the merge candidate index. Weighted average bidirectional prediction is only used for CUs with 256 or more luma samples (i.e., CU width multiplied by CU height is greater than or equal to 256). For low-latency images, all five weights are used. For non-low-latency images, only three weights are used (w∈{3,4,5}).
[0052] - At the encoder, a fast search algorithm is used to find the weight indices without significantly increasing encoder complexity. The algorithm is summarized below. For further details, readers can refer to the VTM software and documentation. When combined with AMVR, if the current image is a low-latency image, unequal weights are only conditionally checked for 1-pixel and 4-pixel motion vector precision.
[0053] - When combined with affine mode, perform affine ME for unequal weights if and only if the affine mode is selected as the current best mode.
[0054] - When the two reference images in bidirectional prediction are the same, unequal weights are conditionally checked.
[0055] -Unequal weights are not searched when certain conditions are met, depending on the POC distance between the current image and its reference image, the QP encoding, and the temporal level.
[0056] The BCW weight index is coded using one context-coded bin followed by bypass-coded bins. The first context-coded bin indicates whether equal weights are used; and if unequal weights are used, the additional bins are signaled using bypass coding to indicate which unequal weights are used.
[0057] Weighted prediction (WP) is a coding tool supported by H.264 / AVC and HEVC standards to efficiently code video content with fading. The support of WP is also added to VVC standard. WP allows signaling of weighting parameters (weights and offsets) for each reference picture in each reference picture list L0 and L1. Then, in the process of motion compensation, the weights and offsets of the corresponding reference picture are applied. WP and BCW are designed for different categories of video content. To avoid the interaction between WP and BCW that complicates the design of VVC decoder, if a CU uses WP, the BCW weight index is not signaled and w is inferred to be 4 (i.e., equal weights are applied). For merge CU, the weight index is inferred from neighboring blocks based on the merge candidate index. It can be applied to both normal merge mode and inherited affine merge mode. For constructed affine merge mode, the affine motion information is constructed based on the motion information of up to three blocks. The following process is used to derive the BCW index for a CU that uses constructed affine merge mode.
[0058] 1. The range {0, 1, 2, 3, 4} of BCW index is divided into three groups {0}, {1, 2, 3} and {4}. If the BCW indices of all control points come from the same group, the BCW index is derived according to step 2; otherwise, the BCW index is set to 2.
[0059] 2. If at least two control points have the same BCW index, this BCW index value is assigned to the candidate; otherwise the BCW index of the current constructed candidate is set to 2.
[0060] BCW is also known as generalized bi-prediction (GBi).
[0061] 2.3 Switchable interpolation filter
[0062] 2.3.1 Half-pel AMVR mode (CE4-1.1)
[0063] An additional AMVR mode for non-affine non-merge inter coded CUs is proposed, which allows signaling of motion vector differences with half-pel accuracy. The existing AMVR scheme of the current VVC draft is straightforwardly extended in the following way: directly following the syntax element amvr_flag, if amvr_flag == 1, there is a new context-based modeling based binarized syntax element hpel_amvr_flag, which, if hpel_amvr_flag == 1, indicates the usage of the new half-pel AMVR mode. Otherwise, as described in the current VVC draft, i.e., if hpel_amvr_flag == 0, the selection between the integer-pel and the four-pel AMVR mode is indicated by the syntax element amvr_precision_flag.
[0064] As Figures 1A-1B shown, the AMVR signaling is extended. Figure 1A The VTM-5.0 table is shown, and Figure 1B The proposed table is shown.
[0065] 2.3.2 Optional luma half-pel interpolation filter with merging (CE4-1.2, CE4-1.3)
[0066] An optional luma half-pel interpolation filter is proposed, where the following two six-tap filters have a smoothing property, denoted as FlatTop and Gauss, which are tested in CE4-1 (see Figure 2 ).
[0067] Filter Coefficient h[i] HEVC [-1 4-11 40 40-11 4-1] Flat Top [-3 4 31 31 4-3] Gauss [3 9 20 20 9 3]
[0068] Explicit signaling
[0069] For non-affine and non-merge inter coded CUs using half-pel motion vector precision (e.g., half-pel AMVR mode), an optional luma half-pel interpolation filter is used. For test 1.2, the Gauss luma half-pel interpolation filter is used. For test 1.3, a switch between the two optional half-pel interpolation filters is made based on the value of a new syntax element hpel_if_idx. The syntax element hpel_if_idx is only signaled in the case of the half-pel AMVR mode, as described below:
[0070] AMVR mode hpel_if_idx Interpolation filter QPEL, FPEL, 4PEL Not shown (inferred to be 2) HEVC HPEL 0 FlatTop HPEL 1 Gauss
[0071] Implicit signaling
[0072] In the case of skip / merge mode using spatial merging candidates, the information of the interpolation filter applied at the half-pel positions is inherited from the neighboring block.
[0073] 3. Examples of technical problems solved by the technical solution of the present disclosure
[0074] The current design of the pair-wise average candidate can be further improved, e.g., how to set its GBi index and whether to use the alternative luma half-pel interpolation filter.
[0075] In VTM-6.0, the GBi index of the pair-wise average candidate is set equal to GBI_DEFAULT (i.e., equal weights are used for both prediction blocks). And if the alternative luma half-pel interpolation filter flags of the two merge candidates used to generate the pair-wise merge candidate are equal, then the alternative luma half-pel interpolation filter flag of the pair-wise merge candidate is set equal to the alternative luma half-pel interpolation filter of the merge candidate with the smaller merge index; otherwise, it is set to false.
[0076] For the default merge candidate (i.e., the zero motion candidate), the half-pel interpolation filter index hpelIfIdx of each new candidate added is set equal to 0. The bi-prediction weight index (i.e., the GBi index) of each new candidate added is set equal to GBI_DEFAULT.
[0077] 4. List of embodiments and techniques
[0078] The following list of items should be considered as examples of explaining general concepts. These items should not be interpreted in a narrow way. Furthermore, these items can be combined in any way.
[0079] In the following, GBiIdx is used to denote the GBi index indicating the weighting factors used in the BCW (i.e., the GBi), and UseAltHpelIf is used to denote whether the alternative luma half-pel interpolation filter is adopted (e.g., the alternative luma half-pel interpolation filter is used when UseAltHpelIf is equal to 1; otherwise, the alternative luma half-pel interpolation filter is not used). Candidates Cand1 and Cand2 are used to denote the two merge candidates used to generate the pair-wise merge candidate.
[0080] 1. The alternative half-pel interpolation filter can be applied to all pair-wise candidates.
[0081] a. Optionally, the UseAltHpelIf flag of the pair-wise average candidate can be set to 0, e.g., the default interpolation filter is always used.
[0082] b. Optionally, in addition, the above method can be used for half-pel motion vector interpolation.
[0083] 2. Whether to enable or disable coding tools (e.g., BCW / optional half-pel interpolation filter) for pair-wise average candidate can depend on the associated information used to generate the pair-wise merge candidate.
[0084] a. In one example, different pair-wise merge candidates can dynamically determine the use or disable of use of coding tools.
[0085] b. In one example, the GBiIdx of the pair-wise average candidate can depend on the GBiIdx of only one candidate of the pair.
[0086] i. In one example, the GBiIdx of the pair-wise average candidate can be set equal to the GBiIdx of Candl.
[0087] ii. In one example, the GBiIdx of the pair-wise average candidate can be set equal to the GBiIdx of Cand2.
[0088] c. In one example, the GBiIdx of the pair-wise average candidate (denoted as GBiIdxC) can be derived as a function of the GBiIdx of the two candidates of the pair (denoted as GBiIdxl and GBiIdx2).
[0089] i. In one example, GBiIdxC can be set equal to the smaller GBiIdx of Candl and Cand2.
[0090] ii. In one example, GBiIdxC can be set equal to the larger GBiIdx of Candl and Cand2.
[0091] iii. In one example, GBiIdxC can be set equal to the average GBiIdx of Candl and Cand2.
[0092] iv. In one example, BCW can be disabled for pair-wise average candidate when the GBiIdx of Candl is not equal to the GBiIdx of Cand2.
[0093] v. In one example, GBiIdxC = (GBiIdxl == GBiIdx2? GBiIdxl : GBI_DEFAULT).
[0094] d. In one example, the UseAltHpelIf flag of the pair-wise average candidate can depend on the UseAltHpelIf flag of only one candidate of the pair.
[0095] i. In one example, the UseAltHpelIf flag of the pair-wise average candidate can be set equal to the UseAltHpelIf flag associated with one candidate (e.g., Candl or Cand2).
[0096] ii. In one example, the UseAltHpelIf flag can be set to false when Candl's UseAltHpelIf is not equal to Cand2's UseAltHpelIf.
[0097] e. In one example, the UseAltHpelIf flag of a pair-averaged candidate can depend on the UseAltHpelIf flags of the two candidates of the pair.
[0098] i. In one example, the UseAltHpelIf flag of a pair-averaged candidate can be set to equal to 1 if both Candl's and Cand2's UseAltHpelIf are equal to 1.
[0099] ii. In one example, the UseAltHpelIf flag of a pair-averaged candidate can be set to equal to 1 if either Candl's or Cand2's UseAltHpelIf is equal to 1.
[0100] 3. It is proposed to allow unequal weights for default motion candidates, instead of always disabling unequal weights in GBI_DEFAULT (i.e., bi- weight index equal to GBI_DEFAULT) in default motion candidates.
[0101] a. In one example, whether to enable / disable unequal weights can depend on the index of the default motion candidate.
[0102] b. In one example, whether to enable / disable unequal weights can depend on the slice / picture class.
[0103] c. In one example, whether to enable / disable unequal weights can depend on all or some of the existing merge candidates in the merge list before the default motion candidate is added.
[0104] d. In one example, whether to enable / disable unequal weights can depend on the use of unequal weights from spatial / temporal neighboring (adjacent or non-adjacent) blocks.
[0105] 4. It is proposed to add motion candidates with motion vectors pointing to half-pel.
[0106] a. In one example, a half-pel MV candidate can be added to the merge candidate list just after the derivation of pair-merge candidates / combined bi-predictive merge candidates.
[0107] b. In one example, a half-pel MV candidate can be added to the merge candidate list after the derivation of HMVP candidates.
[0108] c. In one example, whether to add the half-pel MV candidate or the zero MV candidate (default in current design) can vary from block to block, such as based on the decoded information from the previously coded blocks and / or based on the merge candidates before adding these default candidates.
[0109] d. In one example, both the half-pel MV candidate and the zero MV candidate (default in current design) can be added to the motion candidate list.
[0110] i. In one example, they can be added in an interleaved manner.
[0111] ii. In one example, the half-pel MV candidate can be added before all the zero MV candidates.
[0112] iii. In one example, the half-pel MV candidate can be added after all the zero MV candidates.
[0113] 5. It is proposed to allow the half-pel interpolation filter for the default motion candidate, instead of always disabling the half-pel interpolation filter in the default motion candidate.
[0114] a. In one example, whether to enable / disable the half-pel interpolation filter can depend on the index of the default motion candidate.
[0115] b. In one example, whether to enable / disable the half-pel interpolation filter can depend on the slice / picture class.
[0116] c. In one example, whether to enable / disable the half-pel interpolation filter can depend on all or part of the existing merge candidates in the merge list before adding the default motion candidate.
[0117] d. In one example, whether to enable / disable the half-pel interpolation filter can depend on the use of unequal weights from the spatial / temporal neighboring (adjacent or non-adjacent) blocks.
[0118] 6. Whether to enable / disable the coding tool for the pair-wise average candidate can depend on the information of all or part of the motion candidates (named selected motion candidates) in the merge list before adding the pair-wise average candidate.
[0119] a. In one example, the selected motion candidates can be those spatial merge candidates;
[0120] b. In one example, the selected motion candidates can be those HMVP candidates in the merge candidate list;
[0121] c. In one example, the part of the motion candidates can be one or more HMVP candidates in the HMVP table;
[0122] d. In one example, the UseAltHpelIf flag and / or the BCW index can depend on a function of those information associated with the selected motion candidate.
[0123] i. In one example, the UseAltHpelIf can be set to 1 (or 0) if there are more candidates with UseAltHpelIf equal to 1 than remaining candidates.
[0124] e. In one example, whether to enable / disable the tool can depend on the usage of the tool from spatial / temporal neighboring (adjacent or non-adjacent) blocks.
[0125] 7. If no MV of a block points to a horizontal and / or vertical half-pel position, the UseAltHpelIf flag is set equal to zero.
[0126] a. In one example, when the current block is coded with a paired horizontal candidate, if no MV of a block points to a horizontal and / or vertical half-pel position, the UseAltHpelIf flag is set equal to zero.
[0127] 8. The above-mentioned 'paired average candidate' can be replaced by other new kinds of motion candidates, which are derived from the existing candidates added before, such as combined bi-predictive merge candidate.
[0128] 9. The usage candidates with the optional half-pel interpolation filter can reorder the motion in the Merge candidate list.
[0129] a. In one example, the candidates with the enabled optional half-pel interpolation filter can be placed before the candidates with the disabled optional half-pel interpolation filter.
[0130] b. In one example, the candidates with the enabled optional half-pel interpolation filter can be placed after the candidates with the disabled optional half-pel interpolation filter.
[0131] c. In one example, the order of the candidates with the enabled optional half-pel interpolation filter and the order of the candidates with the disabled optional half-pel interpolation filter can be adaptively changed based on the decoded information, such as the usage of the optional half-pel interpolation filter of the neighboring (adjacent or non-adjacent) blocks.
[0132] d. Optionally, in addition, the proposed method can be used only for spatial merge candidates.
[0133] e. Optionally, in addition, the proposed method can be used only for spatial merge candidates and HMVP candidates.
[0134] 5. Embodiments
[0135] The deleted parts are highlighted with strikethrough and the newly added parts are highlighted with underlining.
[0136] 5.1. UseAltHpelIf on example #1
[0137] The UseAltHppelIf flag for the pair-wise average candidate can be equal to false.
[0138] 8.5.2.4 Derivation process of pair-wise average merging candidates
[0139] The input of this process are:
[0140] - the merging candidate list mergeCandList,
[0141] - the reference indices refldxL0N and refldxL1N of each candidate N in the mergeCandList,
[0142] - the prediction list usage flags predFlagL0N and predFlagL1N of each candidate N in the mergeCandList,
[0143] - the motion vectors of 1 / 16 fractional sample precision mvL0N and mvL1N of each candidate N in the mergeCandList
[0144]
[0145] - the number of elements in the mergeCandList numCurrMergeCand.
[0146] The output of this process are:
[0147] - the merging candidate list mergeCandList,
[0148] - the number of elements in the mergeCandList numCurrMergeCand,
[0149] - the reference indices refldxL0avgCand and refldxL1avgCand of the candidate avgCand added to the mergeCandList in the course of the process invocation,
[0150] - the prediction list usage flags predFlagL0avgCand and predFlagL1avgCand of the candidate avgCand added to the mergeCandList in the course of the process invocation,
[0151] - motion vectors of the 1 / 16 fraction sample precision mvL0avgCand and mvL1avgCand of the candidate avgCand added to the mergeCandList in the invocation of the process,
[0152] - the half pel interpolation filter index hpelIfIdxavgCand of each candidate avgCand added to the mergeCandList in the invocation of the process.
[0153] The variable numRefLists is derived as follows:
[0154] numRefLists = ( slice_type == B )? 2 : 1 (8-344)
[0155] The following assignments are made, where p0Cand is the candidate at position 0 and p1Cand is the candidate at position 1 in the merging candidate list mergeCandList:
[0156] p0Cand = mergeCandList[ 0 ] (8-345)
[0157] p1Cand = mergeCandList[ 1 ] (8-346)
[0158] The candidate avgCand is added to the end of the mergeCandList, i.e., mergeCandList[ numCurrMergeCand ] is set equal to avgCand, and the reference index, the prediction list usage flag, and the motion vectors of avgCand are derived as follows, and numCurrMergeCand is increased by 1:
[0159] - for each reference picture list LX with X in the range of 0 to ( numRefLists - 1 ), the following applies:
[0160] - if predFlagLXp0Cand is equal to 1 and predFlagLXp1Cand is equal to 1, the variables refIdxLXavgCand, predFlagLXavgCand, mvLXavgCand[ 0 ], and mvLXavgCand[ 1 ] are derived as follows:
[0161] refIdxLXavgCand = refIdxLXp0Cand (8-347)
[0162] predFlagLXavgCand = 1 (8-348)
[0163] - Otherwise, if predFlagLXp0Cand is equal to 1 and predFlagLXp1Cand is equal to 0, the variables refldxLXavgCand, predFlagLXavgCand, mvLXavgCand[0] and mvLXavgCand[1] are derived as follows:
[0164] - Otherwise, if predFlagLXp0Cand is equal to 1 and predFlagLXp1Cand is equal to 0, the variables refldxLXavgCand, predFlagLXavgCand, mvLXavgCand[0] and mvLXavgCand[1] are derived as follows:
[0165] - Otherwise, if predFlagLXp0Cand is equal to 1 and predFlagLXp1Cand is equal to 0, the variables refldxLXavgCand, predFlagLXavgCand, mvLXavgCand[0] and mvLXavgCand[1] are derived as follows:
[0166] refldxLXavgCand = refldxLXp0Cand (8-349)
[0167] predFlagLXavgCand = 1 (8-350)
[0168] mvLXavgCand[0] = mvLXp0Cand[0] (8-351)
[0169] mvLXavgCand[1] = mvLXp0Cand[1] (8-352)
[0170] - Otherwise, if predFlagLXp0Cand is equal to 1 and predFlagLXp1Cand is equal to 0, the variables refldxLXavgCand, predFlagLXavgCand, mvLXavgCand[0] and mvLXavgCand[1] are derived as follows:
[0171] refldxLXavgCand = refldxLXp1Cand (8-353)
[0172] predFlagLXavgCand = 1 (8-354)
[0173] mvLXavgCand[0] = mvLXp1Cand[0] (8-355)
[0174] mvLXavgCand[1]=mvLXp1Cand[1] (8-356)
[0175] – Otherwise, if predFlagLXp0Cand equals 0 and predFlagLXp1Cand equals 0, then the variables refIdxLXavgCand, predFlagLXavgCand, mvLXavgCand[0] and mvLXavgCand[1] are derived as follows:
[0176] refIdxLXavgCand=-1 (8-357)
[0177] predFlagLXavgCand=0 (8-358)
[0178] mvLXavgCand[0]=0 (8-359)
[0179] mvLXavgCand[1]=0 (8-360)
[0180] - When numRefLists equals 1, apply the following:
[0181] refIdxL1avgCand=-1 (8-361)
[0182] predFlagL1avgCand=0 (8-362)
[0183] -The half-sample interpolation filter index hpelIfIdxavgCand is derived as follows:
[0184]
[0185] – Set hpelIfIdxavgCand to equal 0.
[0186] 5.2. Example #2 on UseAltHpelIf
[0187] The UseAltHpelIf flag for pairwise average candidates can be equal to the UseAltHpelIf flag for Cand1.
[0188] 8.5.2.4 Derivation of Pairwise Average Merging Candidates
[0189] The input to this process is:
[0190] -merging candidate list mergeCandList,
[0191] - reference indices refldxL0N and refldxL1N of each candidate N in mergeCandList,
[0192] - prediction list usage flags predFlagL0N and predFlagL1N of each candidate N in mergeCandList,
[0193] - motion vectors of 1 / 16 fractional sample precision mvL0N and mvL1N of each candidate N in mergeCandList
[0194] - half pel interpolation filter index hpelIfIdx of each candidate N in mergeCandList,
[0195] - number of elements numCurrMergeCand in mergeCandList.
[0196] The output of the process is:
[0197] - the merging candidate list mergeCandList,
[0198] - the number of elements numCurrMergeCand in mergeCandList,
[0199] - reference indices refldxL0avgCand and refldxL1avgCand of the candidate avgCand added to mergeCandList in the process of the process call,
[0200] - prediction list usage flags predFlagL0avgCand and predFlagL1avgCand of the candidate avgCand added to mergeCandList in the process of the process call,
[0201] - motion vectors of 1 / 16 fractional sample precision mvL0avgCand and mvL1avgCand of the candidate avgCand added to mergeCandList in the process of the process call,
[0202] - half pel interpolation filter index hpelIfIdxavgCand of each candidate avgCand added to mergeCandList in the process of the process call.
[0203] The variable numRefLists is derived as follows:
[0204] numRefLists = ( slice_type == B )? 2 : 1 (8-344)
[0205] The following assignments are made, where p0Cand is the candidate at position 0 and p1Cand is the candidate at position 1 in the merging candidate list mergeCandList:
[0206] p0Cand = mergeCandList[ 0 ] (8-345)
[0207] p1Cand = mergeCandList[ 1 ] (8-346)
[0208] The candidate avgCand is added to the end of mergeCandList, i.e., mergeCandList[ numCurrMergeCand ] is set equal to avgCand, and the reference index, the prediction list usage flag, and the motion vector of avgCand are derived as follows, and numCurrMergeCand is increased by 1:
[0209] - For each reference picture list LX with X in the range of 0 to ( numRefLists - 1 ), the following applies:
[0210] - If predFlagLXp0Cand is equal to 1 and predFlagLXp1Cand is equal to 1, the variables refIdxLXavgCand, predFlagLXavgCand, mvLXavgCand[ 0 ], and mvLXavgCand[ 1 ] are derived as follows:
[0211] refIdxLXavgCand = refIdxLXp0Cand (8-347)
[0212] predFlagLXavgCand = 1 (8-348)
[0213] - The clipping process for motion vectors specified in item 8.5.2.14 is invoked with mvX set equal to mvLXp0Cand[ 0 ] + mvLXp1Cand[ 0 ], rightShift set equal to 1, and leftShift set equal to 0 as inputs, and the clipped mvLXavgCand[ 0 ] as output.
[0214] - Otherwise, if predFlagLXp0Cand is equal to 1 and predFlagLXp1Cand is equal to 0, the variables refldxLXavgCand, predFlagLXavgCand, mvLXavgCand[0] and mvLXavgCand[1] are derived as follows:
[0215] - Otherwise, if predFlagLXp0Cand is equal to 1 and predFlagLXp1Cand is equal to 0, the variables refldxLXavgCand, predFlagLXavgCand, mvLXavgCand[0] and mvLXavgCand[1] are derived as follows:
[0216] refldxLXavgCand = refldxLXp0Cand (8-349)
[0217] predFlagLXavgCand = 1 (8-350)
[0218] mvLXavgCand[0] = mvLXp0Cand[0] (8-351)
[0219] mvLXavgCand[1] = mvLXp0Cand[1] (8-352)
[0220] - Otherwise, if predFlagLXp0Cand is equal to 0 and predFlagLXp1Cand is equal to 1, the variables refldxLXavgCand, predFlagLXavgCand, mvLXavgCand[0] and mvLXavgCand[1] are derived as follows:
[0221] refldxLXavgCand = refldxLXp1Cand (8-353)
[0222] predFlagLXavgCand = 1 (8-354)
[0223] mvLXavgCand[0] = mvLXp1Cand[0] (8-355)
[0224] mvLXavgCand[1] = mvLXp1Cand[1] (8-356)
[0225] - Otherwise, if predFlagLXp0Cand is equal to 0 and predFlagLXp1Cand is equal to 0, the variables refldxLXavgCand, predFlagLXavgCand, mvLXavgCand[0] and mvLXavgCand[1] are derived as follows:
[0226] refldxLXavgCand = -1 (8-357)
[0227] predFlagLXavgCand = 0 (8-358)
[0228] mvLXavgCand[0] = 0 (8-359)
[0229] mvLXavgCand[1] = 0 (8-360)
[0230] - When numRefLists is equal to 1, the following applies:
[0231] refldxL1avgCand = -1 (8-361)
[0232] predFlagL1avgCand = 0 (8-362)
[0233] - The half-pel interpolation filter index hpelIfIdxavgCand is derived as follows:
[0234] - hpelIfIdxavgCand is set equal to hpelIfIdxp0Cand.
[0235] -
[0236] 5.3. Embodiment #3 on UseAltHpelIf
[0237] The UseAltHpelIf flag for the pair-wise average candidate can be equal to the UseAltHpelIf of Cand2.
[0238] 8.5.2.4 Derivation process of pair-wise average merging candidate
[0239] The inputs of this process are:
[0240] - the merging candidate list mergeCandList,
[0241] - the reference indices refldxL0N and refldxL1N of each candidate N in mergeCandList,
[0242] The prediction list for each candidate N in -mergeCandList uses the flags predFlagL0N and predFlagL1N.
[0243] The motion vectors of mvL0N and mvL1N, representing 1 / 16 fractional sample precision for each candidate N in mergeCandList.
[0244] The half-sample interpolation filter index hpelIfIdx for each candidate N in -mergeCandList,
[0245] The number of elements in -mergeCandList, numCurrMergeCand.
[0246] The output of this process is:
[0247] -merging candidate list mergeCandList,
[0248] The number of elements in -mergeCandList, numCurrMergeCand.
[0249] - During the invocation of this procedure, the reference indices refIdxL0avgCand and refIdxL1avgCand of the candidate avgCands added to mergeCandList are...
[0250] - During the call to this procedure, the prediction list of candidate avgCands added to mergeCandList uses the flags predFlagL0avgCand and predFlagL1avgCand.
[0251] - During the call to this procedure, the motion vectors of candidate avgCand with 1 / 16 fractional sample precision mvL0avgCand and mvL1avgCand are added to mergeCandList.
[0252] - During the call to this procedure, add the half-sample interpolation filter index hpelIfIdxavgCand to each candidate avgCand in mergeCandList.
[0253] The following is the derivation of the variable numRefLists:
[0254] numRefLists=(slice_type==B)? 2:1 (8-344)
[0255] Make the following allocation, where in the merging candidate list mergeCandList, p0Cand is the candidate at position 0 and p1Cand is the candidate at position 1:
[0256] p0Cand=mergeCandList[0] (8-345)
[0257] p1Cand=mergeCandList[1] (8-346)
[0258] Add the candidate avgCand to the end of mergeCandList, that is, set mergeCandList[numCurrMergeCand] to be equal to avgCand, and derive the reference index of avgCand, the flag used in the prediction list, and the motion vector as follows, and increment numCurrMergeCand by 1:
[0259] - For each list of reference images LX with a range of X from 0 to (numRefLists-1), apply the following:
[0260] –If predFlagLXp0Cand equals 1 and predFlagLXp1Cand equals 1, then the variables refIdxLXavgCand, predFlagLXavgCand, mvLXavgCand[0] and mvLXavgCand[1] are derived as follows:
[0261] refIdxLXavgCand=refIdxLXp0Cand (8-347)
[0262] predFlagLXavgCand=1 (8-348)
[0263] – Using mvX set to equal mvLXp0Cand[0]+mvLXp1Cand[0], rightShift set to equal 1, and leftShift set to equal 0 as input, the rounding procedure for motion vectors specified in entry 8.5.2.14 is invoked, and the rounded mvLXavgCand[0] is output.
[0264] – Using mvX set to equal mvLXp0Cand[1]+mvLXp1Cand[1], rightShift set to equal 1, and leftShift set to equal 0 as input, the rounding procedure for motion vectors specified in entry 8.5.2.14 is invoked, and the rounded mvLXavgCand[1] is output.
[0265] - Otherwise, if predFlagLXp0Cand is equal to 1 and predFlagLXp1Cand is equal to 0, the variables refldxLXavgCand, predFlagLXavgCand, mvLXavgCand[0] and mvLXavgCand[1] are derived as follows:
[0266] refldxLXavgCand = refldxLXp0Cand (8-349)
[0267] predFlagLXavgCand = 1 (8-350)
[0268] mvLXavgCand[0] = mvLXp0Cand[0] (8-351)
[0269] mvLXavgCand[1] = mvLXp0Cand[1] (8-352)
[0270] - Otherwise, if predFlagLXp0Cand is equal to 0 and predFlagLXp1Cand is equal to 1, the variables refldxLXavgCand, predFlagLXavgCand, mvLXavgCand[0] and mvLXavgCand[1] are derived as follows:
[0271] refldxLXavgCand = refldxLXp1Cand (8-353)
[0272] predFlagLXavgCand = 1 (8-354)
[0273] mvLXavgCand[0] = mvLXp1Cand[0] (8-355)
[0274] mvLXavgCand[1] = mvLXp1Cand[1] (8-356)
[0275] - Otherwise, if predFlagLXp0Cand is equal to 0 and predFlagLXp1Cand is equal to 0, the variables refldxLXavgCand, predFlagLXavgCand, mvLXavgCand[0] and mvLXavgCand[1] are derived as follows:
[0276] refldxLXavgCand = -1 (8-357)
[0277] predFlagLXavgCand = 0 (8-358)
[0278] mvLXavgCand[ 0 ] = 0 (8-359)
[0279] mvLXavgCand[ 1 ] = 0 (8-360)
[0280] - When numRefLists is equal to 1, the following applies:
[0281] refIdxL1avgCand = -1 (8-361)
[0282] predFlagL1avgCand = 0 (8-362)
[0283] - The half pel interpolation filter index hpelIfIdxavgCand is derived as follows:
[0284] - hpelIfIdxavgCand is set equal to
[0285] -
[0286] 5.4 Embodiment #4 on GBiIdx
[0287] The GBiIdx of the pair-wise average candidate can be equal to the GBiIdx of Cand1.
[0288] 8.5.2.4 Derivation process of pair-wise average merging candidate
[0289] The inputs of this process are:
[0290] - the merging candidate list mergeCandList,
[0291] - the reference indices refIdxL0N and refIdxL1N of each candidate N in mergeCandList,
[0292] - the prediction list usage flags predFlagL0N and predFlagL1N of each candidate N in mergeCandList,
[0293] - the motion vectors of 1 / 16 fractional sample precision mvL0N and mvL1N of each candidate N in mergeCandList,
[0294] - the half pel interpolation filter index hpelIfIdx of each candidate N in mergeCandList,
[0295]
[0296] - the number of elements in the mergeCandList, numCurrMergeCand.
[0297] The output of the process is:
[0298] - the merging candidate list mergeCandList,
[0299] - the number of elements in the mergeCandList, numCurrMergeCand,
[0300] - the reference indices refIdxL0avgCand and refIdxL1avgCand of the candidate avgCand added to the mergeCandList in the process of the process call,
[0301] - the prediction list usage flags predFlagL0avgCand and predFlagL1avgCand of the candidate avgCand added to the mergeCandList in the process of the process call,
[0302] - the motion vectors in the 1 / 16 fractional sample precision mvL0avgCand and mvL1avgCand of the candidate avgCand added to the mergeCandList in the process of the process call,
[0303] - the half-pel interpolation filter index hpelIfIdxavgCand of each candidate avgCand added to the mergeCandList in the process of the process call,
[0304]
[0305] The variable numRefLists is derived as follows:
[0306] numRefLists = ( slice_type == B )? 2 : 1 (8-344)
[0307] The following assignments are made, where p0Cand is the candidate at position 0 and p1Cand is the candidate at position 1 in the merging candidate list mergeCandList:
[0308] p0Cand = mergeCandList[ 0 ] (8-345)
[0309] p1Cand = mergeCandList[ 1 ] (8-346)
[0310] The candidate avgCand is added to the end of mergeCandList, i.e., mergeCandList[ numCurrMergeCand ] is set equal to avgCand, and the reference index, the prediction list usage flag, and the motion vector of avgCand are derived as follows, and numCurrMergeCand is increased by 1:
[0311] - For each reference picture list LX with X in the range of 0 to ( numRefLists - 1 ), the following applies:
[0312] - If predFlagLXp0Cand is equal to 1 and predFlagLXp1Cand is equal to 1, the variables refIdxLXavgCand, predFlagLXavgCand, mvLXavgCand[ 0 ], and mvLXavgCand[ 1 ] are derived as follows:
[0313] refIdxLXavgCand = refIdxLXp0Cand (8-347)
[0314] predFlagLXavgCand = 1 (8-348)
[0315] - The clipping process for motion vectors specified in item 8.5.2.14 is invoked with mvX set equal to mvLXp0Cand[ 0 ] + mvLXp1Cand[ 0 ], rightShift set equal to 1, and leftShift set equal to 0 as inputs, and the clipped mvLXavgCand[ 0 ] as output.
[0316] - The clipping process for motion vectors specified in item 8.5.2.14 is invoked with mvX set equal to mvLXp0Cand[ 1 ] + mvLXp1Cand[ 1 ], rightShift set equal to 1, and leftShift set equal to 0 as inputs, and the clipped mvLXavgCand[ 1 ] as output.
[0317] - Otherwise, if predFlagLXp0Cand is equal to 1 and predFlagLXp1Cand is equal to 0, the variables refIdxLXavgCand, predFlagLXavgCand, mvLXavgCand[ 0 ], and mvLXavgCand[ 1 ] are derived as follows:
[0318] refIdxLXavgCand = refIdxLXp0Cand (8-349)
[0319] predFlagLXavgCand = 1 (8-350)
[0320] mvLXavgCand[ 0 ] = mvLXp0Cand[ 0 ] (8-351)
[0321] mvLXavgCand[ 1 ] = mvLXp0Cand[ 1 ] (8-352)
[0322] - Otherwise, if predFlagLXp0Cand is equal to 0 and predFlagLXp1Cand is equal to 1, the variables refIdxLXavgCand, predFlagLXavgCand, mvLXavgCand[ 0 ], and mvLXavgCand[ 1 ] are derived as follows:
[0323] refIdxLXavgCand = refIdxLXp1Cand (8-353)
[0324] predFlagLXavgCand = 1 (8-354)
[0325] mvLXavgCand[ 0 ] = mvLXp1Cand[ 0 ] (8-355)
[0326] mvLXavgCand[ 1 ] = mvLXp1Cand[ 1 ] (8-356)
[0327] - Otherwise, if predFlagLXp0Cand is equal to 0 and predFlagLXp1Cand is equal to 0, the variables refIdxLXavgCand, predFlagLXavgCand, mvLXavgCand[ 0 ], and mvLXavgCand[ 1 ] are derived as follows:
[0328] refIdxLXavgCand = -1 (8-357)
[0329] predFlagLXavgCand = 0 (8-358)
[0330] mvLXavgCand[ 0 ] = 0 (8-359)
[0331] mvLXavgCand[ 1 ] = 0 (8-360)
[0332] - When numRefLists is equal to 1, the following applies:
[0333] refIdxL1avgCand = -1 (8-361)
[0334] predFlagL1avgCand = 0 (8-362)
[0335] - The half pel interpolation filter index hpelIfIdxavgCand is derived as follows:
[0336] - If hpelIfIdxp0Cand is equal to hpelIfIdxp1Cand, hpelIfIdxavgCand is set equal to hpelIfIdxp0Cand.
[0337] - Otherwise, hpelIfIdxavgCand is set equal to 0.
[0338] - The bi-prediction weight index bcwldxavgCand is derived as follows:
[0339] The bi-prediction weight index bcwldxavgCand is set equal to bcwldxp0Cand.
[0340] 5.5 Embodiment #5 on GBiIdx
[0341] The GBiIdx of the pair-wise average candidate can be equal to the GBiIdx of Cand2.
[0342] 8.5.2.4 Derivation process of pair-wise average merging candidate
[0343] The inputs of this process are:
[0344] - the list of merging candidates mergeCandList,
[0345] - the reference indices refIdxL0N and refIdxL1N of each candidate N in mergeCandList,
[0346] - the prediction list usage flags predFlagL0N and predFlagL1N of each candidate N in mergeCandList,
[0347] - the motion vectors of 1 / 16 fractional sample precision mvL0N and mvL1N of each candidate N in mergeCandList,
[0348] - the half pel interpolation filter index hpelIfIdx of each candidate N in mergeCandList,
[0349] - The bi-prediction weight index bcwldxN of each candidate N in the mergeCandList,
[0350] - the number of elements in the mergeCandList, numCurrMergeCand.
[0351] The output of the process is:
[0352] - the merging candidate list mergeCandList,
[0353] - the number of elements in the mergeCandList, numCurrMergeCand,
[0354] - the reference indices refIdxL0avgCand and refIdxL1avgCand of the candidate avgCand added to the mergeCandList in the process of the process call,
[0355] - the prediction list usage flags predFlagL0avgCand and predFlagL1avgCand of the candidate avgCand added to the mergeCandList in the process of the process call,
[0356] - the motion vectors of the 1 / 16 fractional sample precision mvL0avgCand and mvL1avgCand of the candidate avgCand added to the mergeCandList in the process of the process call,
[0357] - the half pel interpolation filter index hpelIfIdxavgCand of each candidate avgCand added to the mergeCandList in the process of the process call,
[0358] - The bi-prediction weight index bcwldxavgCand of each candidate avgCand added to the mergeCandList in the invocation of the process. The bi-prediction weight index bcwldxavgCand is derived as follows:
[0359] The variable numRefLists is derived as follows:
[0360] numRefLists = ( slice_type == B )? 2 : 1 (8-344)
[0361] The following assignments are made, where p0Cand is the candidate at position 0 and p1Cand is the candidate at position 1 in the merging candidate list mergeCandList:
[0362] p0Cand = mergeCandList[ 0 ] (8-345)
[0363] p1Cand = mergeCandList[ 1 ] (8-346)
[0364] add the candidate avgCand to the end of the mergeCandList, i.e., mergeCandList[ numCurrMergeCand ] is set equal to avgCand, and the reference index, the prediction list usage flag, and the motion vector of avgCand are derived as follows, and numCurrMergeCand is increased by 1:
[0365] - For each reference picture list LX with X in the range of 0 to ( numRefLists - 1 ), the following applies:
[0366] - If predFlagLXp0Cand is equal to 1 and predFlagLXp1Cand is equal to 1, the variables refIdxLXavgCand, predFlagLXavgCand, mvLXavgCand[ 0 ] and mvLXavgCand[ 1 ] are derived as follows:
[0367] refIdxLXavgCand = refIdxLXp0Cand (8-347)
[0368] predFlagLXavgCand = 1 (8-348)
[0369] - The rounding process for motion vectors specified in clause 8.5.2.14 is invoked with mvX set equal to mvLXp0Cand[ 0 ] + mvLXp1Cand[ 0 ], rightShift set equal to 1 and leftShift set equal to 0 as inputs, and the rounded mvLXavgCand[ 0 ] as output.
[0370] - The rounding process for motion vectors specified in clause 8.5.2.14 is invoked with mvX set equal to mvLXp0Cand[ 1 ] + mvLXp1Cand[ 1 ], rightShift set equal to 1 and leftShift set equal to 0 as inputs, and the rounded mvLXavgCand[ 1 ] as output.
[0371] - Otherwise, if predFlagLXp0Cand is equal to 1 and predFlagLXp1Cand is equal to 0, the variables refIdxLXavgCand, predFlagLXavgCand, mvLXavgCand[ 0 ] and mvLXavgCand[ 1 ] are derived as follows:
[0372] refIdxLXavgCand = refIdxLXp0Cand (8-349)
[0373] predFlagLXavgCand = 1 (8-350)
[0374] mvLXavgCand[ 0 ] = mvLXp0Cand[ 0 ] (8-351)
[0375] mvLXavgCand[ 1 ] = mvLXp0Cand[ 1 ] (8-352)
[0376] - Otherwise, if predFlagLXp0Cand is equal to 0 and predFlagLXp1Cand is equal to 1, the variables refIdxLXavgCand, predFlagLXavgCand, mvLXavgCand[ 0 ] and mvLXavgCand[ 1 ] are derived as follows:
[0377] refIdxLXavgCand = refIdxLXp1Cand (8-353)
[0378] predFlagLXavgCand = 1 (8-354)
[0379] mvLXavgCand[ 0 ] = mvLXp1Cand[ 0 ] (8-355)
[0380] mvLXavgCand[ 1 ] = mvLXp1Cand[ 1 ] (8-356)
[0381] - Otherwise, if predFlagLXp0Cand is equal to 0 and predFlagLXp1Cand is equal to 0, the variables refIdxLXavgCand, predFlagLXavgCand, mvLXavgCand[ 0 ] and mvLXavgCand[ 1 ] are derived as follows:
[0382] refIdxLXavgCand = -1 (8-357)
[0383] predFlagLXavgCand = 0 (8-358)
[0384] mvLXavgCand[ 0 ] = 0 (8-359)
[0385] mvLXavgCand[ 1 ] = 0 (8-360)
[0386] - When numRefLists is equal to 1, the following applies:
[0387] refIdxL1avgCand = -1 (8-361)
[0388] predFlagL1avgCand = 0 (8-362)
[0389] - The half-sample interpolation filter index hpelIfIdxavgCand is derived as follows:
[0390] - If hpelIfIdxp0Cand is equal to hpelIfIdxp1Cand, hpelIfIdxavgCand is set equal to hpelIfIdxp0Cand.
[0391] - Otherwise, hpelIfIdxavgCand is set equal to 0.
[0392] - The bi-prediction weight index bcwldxavgCand is set equal to bcwldxp0Cand.
[0393] Figure 5
[0394] Figure 3 is a block diagram illustrating an example video processing system 1900 that can implement various techniques disclosed herein. Various implementations can include some or all of the components of the system 1900. The system 1900 can include an input 1902 for receiving video content. The video content can be received in a raw or uncompressed format, e.g., 8 or 10 bit multiple component pixel values, or can be in a compressed or encoded format. The input 1902 can represent a network interface, an external bus interface, or a storage interface. Examples of network interfaces include wired interfaces such as Ethernet, passive optical networks (PONs), etc., and wireless interfaces such as Wi-Fi or cellular interfaces.
[0395] The system 1900 can include an encoding component 1904 that can implement various encoding or decoding methods described by this document. The encoding component 1904 can reduce the average bitrate of a video from the input 1902 to the output of the encoding component 1904 to produce an encoded representation of the video. Thus, the encoding techniques are sometimes referred to as video compression or video transcoding techniques. The output of the encoding component 1904 can be stored, or transmitted via a communication connection, as represented by component 1906. The stored or communicated bitstream (or encoded) representation of the video received at the input 1902 can be used by component 1908 for generating pixel values or displayable video that is sent to a display interface 1910. The process of generating user-viewable video from a bitstream representation is sometimes referred to as video decompression. Furthermore, although certain video processing operations are denoted as “encoding” operations or tools, it should be understood that the encoding tools or operations are for use at an encoder, and corresponding decoding tools or operations that reverse the results of the encoding will be performed by a decoder.
[0396] Examples of external bus interfaces or display interfaces may include Universal Serial Bus (USB), High Resolution Multimedia Interface (HDMI), or DisplayPort. Examples of storage interfaces include SATA (Serial Advanced Connectivity), PCI, IDE, etc. The technologies described in this document can be found in a variety of electronic devices, such as mobile phones, laptops, smartphones, or other devices capable of performing digital data processing and / or video display.
[0397] Figure 4 This is a block diagram of a video processing apparatus 300. Apparatus 300 can be used to implement one or more methods described herein. Apparatus 300 can be embodied in smartphones, tablets, computers, Internet of Things (IoT) receivers, etc. Apparatus 300 may include one or more processors 302, one or more memories 304, and video processing hardware 306. The processor(s)(s)302 can be configured to implement one or more methods described herein. The memories(s)304 can be used to store data and code for implementing the methods and techniques described herein. The video processing hardware 306 can be used to implement some of the techniques described herein in hardware circuitry.
[0398] The following solutions may be implemented as preferred solutions in some embodiments.
[0399] The following solutions can be implemented in conjunction with the additional techniques described in the items listed in previous chapters (e.g., item 1).
[0400] 1. A method for video processing (e.g., Figure 6 The method described (400) includes a conversion between video blocks and coded representations of the video, determining (402) an interpolation filter for motion candidate interpolation using rules, and performing (404) a conversion based on the determination, wherein the interpolation scheme is one of a default interpolation filter and an optional half-pixel interpolation filter.
[0401] 2. The method according to solution 1, wherein since the video block is in the video region, the rule specifies the use of an optional half-pixel interpolation filter for the video block.
[0402] 3. The method according to any one of solutions 1-2, wherein the determination of a flag corresponding to the encoded representation, wherein a first value of the flag indicates the use of a default interpolation filter, and a second value of the flag indicates the use of an optional interpolation filter.
[0403] The following solutions can be implemented in conjunction with the additional techniques described in the items listed in the previous chapters (e.g., items 2, 6).
[0404] 4. A method of video processing, comprising, for a conversion between a coded representation of a video block and pixel values of the video block, determining whether to use an encoding tool in the conversion based on information of an associated candidate used to generate a paired merge candidate in the conversion or information of a selected motion candidate in a merge list prior to adding the paired merge candidate to the merge list; and performing the conversion based on the determination.
[0405] 5. The method of solution 4, wherein the encoding tool comprises use of generalized bi-prediction weights for generating the paired merge candidate.
[0406] 6. The method of solution 4, wherein the encoding tool comprises use of an optional half-pel interpolation filter for generating the paired merge candidate.
[0407] 7. The method of any of solutions 4-6, wherein an index of the paired merge candidate is derived as a function of an index of a candidate used to generate the paired merge candidate.
[0408] 8. The method of any of solutions 4-6, wherein whether to use half-pel calculation for generating the merge candidate depends on a determination of use of half-pel calculation for one or both of the candidates in the pair.
[0409] 9. The method of solution 8, wherein a flag in the coded representation is included to indicate use of the half-pel calculation.
[0410] 10. The method of solution 4, wherein the selected motion candidate comprises a spatial merge candidate.
[0411] 11. The method of solution 4, wherein the selected motion candidate comprises a history-based motion vector prediction candidate.
[0412] The following solutions can be implemented with the additional techniques described in the items listed in the previous sections (e.g., item 3).
[0413] 12. A method of video processing, comprising, for a conversion between a coded representation of a video block and pixel values of the video block, determining that a bi-prediction mode is used for generating motion candidates including a default motion candidate, determining whether to use unequal weights in computing the default motion based on a condition; and performing the conversion based on the determination.
[0414] 13. The method of solution 12, wherein the condition depends on an index of the default motion candidate.
[0415] 14. The method of solution 12, wherein the condition depends on a slice or a picture class containing the video block.
[0416] 15. The method of solution 12, wherein the condition depends on already existing merge candidates in the list prior to computing the default motion candidate.
[0417] The following solutions can be implemented with the additional techniques described in the items listed in the previous sections (e.g., item 4).
[0418] 16. A method of video processing, comprising performing a conversion between an encoded representation of a video region and pixel values of the video region, wherein the conversion uses a list of motion candidates that represent motion information for the video region, and wherein the list of motion candidates uses one or more motion candidates having motion vectors pointing to half-pixel positions.
[0419] 17. The method of solution 16, wherein the one or more motion vectors are added to the list of merge candidates immediately after derivation of a pair-wise merge candidate or a combined bi-predictive merge candidate.
[0420] 18. The method of solution 16, wherein the one or more motion vectors are added to the list of merge candidates immediately after a history-based motion vector prediction candidate.
[0421] 19. The method of solution 16, wherein the one or more motion vectors are added to the list along with a zero motion vector candidate.
[0422] The following solutions can be implemented with the additional techniques described in the items listed in the previous sections (e.g., item 5).
[0423] 20. The method of any of solutions 1-19, wherein a coding condition enables the default motion candidate for using an optional half-pixel interpolation filter.
[0424] 21. The method of solution 20, wherein the coding condition comprises an index of the default motion candidate.
[0425] 22. The method of solution 20, wherein the coding condition comprises a location of the video block.
[0426] The following solutions can be implemented with the additional techniques described in the items listed in the previous sections (e.g., item 7).
[0427] 23. A method of video processing, comprising performing a conversion between an encoded representation of a video block and a pixel representation of the video block using a rule that specifies, due to a motion vector of the current block having no horizontal or vertical half-pixel resolution, the encoded representation omits signaling of an optional half-pixel filter for merge candidate computation in the conversion process.
[0428] The following solutions can be implemented with the additional techniques described in the items listed in the previous sections (e.g., item 8).
[0429] 24. The method of any of solutions 1-23, wherein the pair- wise average candidates comprise candidates computed using a pre-defined motion candidate computation scheme.
[0430] The following solutions can be implemented with the additional techniques described in the items listed in the previous sections (e.g., item 9).
[0431] 25. A method of video processing, comprising, in a conversion between an encoded representation of a video block and pixel values of the video block, determining whether reordering of a merge candidate list is based on use of a selectable half-pel interpolation filter in the conversion process or based on an encoding condition; and performing the conversion based on the determination.
[0432] 26. The method of solution 25, wherein the reordering places candidates with the selectable half-pel interpolation filter enabled before those with the selectable half-pel interpolation filter disabled.
[0433] 27. The method of solution 25, wherein the reordering places candidates with the selectable half-pel interpolation filter enabled after those with the selectable half-pel interpolation filter disabled.
[0434] 28. The method of any of solutions 25-27, wherein the encoding condition specifies reordering of only spatial merge candidates.
[0435] 29. The method of any of solutions 25-28, wherein the encoding condition specifies reordering of only spatial merge and history-based motion vector prediction candidates.
[0436] 30. The method of any of solutions 1 to 29, wherein the conversion comprises encoding the video into the encoded representation.
[0437] 31. The method of any of solutions 1 to 29, wherein the conversion comprises decoding the encoded representation to generate the pixel values of the video.
[0438] 32. A video decoding apparatus comprising a processor configured to implement one or more methods of solutions 1 to 31.
[0439] 33. A video encoding apparatus comprising a processor configured to implement one or more methods of solutions 1 to 31.
[0440] 34. A computer program product having computer code stored thereon, which, when executed by a processor, causes the processor to implement the method of any of solutions 1 to 31.
[0441] 35. A method, apparatus or system is described in this document.
[0442] Figure 7 A flowchart of an example method for video processing is shown. The method includes, for a conversion between a video block of a video and a bitstream representation of the video block, determining (602), based on a flag used to indicate whether an optional luma half-pel interpolation filter is employed, whether the optional luma half-pel interpolation filter is applied to all pair- wise average candidates; and performing (604) the conversion based on the determination.
[0443] In some examples, when the flag has a first value, the optional luma half-pel interpolation filter is applied to all pair- wise average candidates.
[0444] In some examples, when the flag has a second value different from the first value, a default interpolation filter is applied to all pair- wise average candidates.
[0445] In some examples, the first value is 1 and the second value is 0, and the flag is a UseAltHpelIf flag.
[0446] In some examples, the method further includes determining, based on a second flag used to indicate whether half-pel motion vector interpolation is employed, whether half-pel motion vector interpolation is applied to all pair- wise average candidates.
[0447] Figure 8 A flowchart of an example method for video processing is shown. The method includes, for a conversion between a video block of a video and a bitstream representation of the video block, determining (702), based on information used to generate an associated candidate of a pair- wise average candidate, whether a coding tool is enabled or disabled for the pair- wise average candidate; and performing the conversion based on the determination.
[0448] In some examples, the coding tool includes at least one of a bi-prediction with CU-level weights (BCW) and an optional half-pel interpolation filter.
[0449] In some examples, different pair- wise average candidates dynamically determine usage or disabling of usage of the coding tool.
[0450] In some examples, a GBiIdx of a pair- wise average candidate depends on a GBiIdx of only one candidate of a pair of candidates used to generate the pair- wise average candidate, where the GBiIdx is used to indicate a generalized bi-prediction (GBi) index that indicates weighting factors used in the BCW.
[0451] In some examples, GBiIdx of the pair-averaged candidate is set equal to GBiIdx of the first candidate of the pair of candidates.
[0452] In some examples, GBiIdx of the pair-averaged candidate is set equal to GBiIdx of the second candidate of the pair of candidates.
[0453] In some examples, GbiIdx of the pair-averaged candidate, denoted as GBiIdxC, is pushed to be a function of GbiIdx of the pair of candidates used to generate the pair-averaged candidate, where the GbiIdx of the pair of candidates are GBiIdx1 and GBiIdx2, respectively.
[0454] In some examples, GBiIdxC is set equal to the smaller of GBiIdx1 and GBiIdx2.
[0455] In some examples, GBiIdxC is set equal to the larger of GBiIdx1 and GBiIdx2.
[0456] In some examples, GBiIdxC is set equal to the average of GBiIdx1 and GBiIdx2.
[0457] In some examples, BCW is disabled for the pair-averaged candidate when GBiIdx1 is not equal to GBiIdx2.
[0458] In some examples, GBiIdxC = (GBiIdx1 == GBiIdx2? GBiIdx1 : GBI_DEFAULT), where GBI_DEFAULT indicates that equal weights are used for both prediction blocks.
[0459] In some examples, a UseAltHpelIf flag used to indicate whether an optional luma half-pel interpolation filter is employed depends on both UseAltHpelIf flags of the pair of candidates.
[0460] In some examples, if both UseAltHpelIf flags of the pair of candidates are equal to 1, the UseAltHpelIf flag of the pair-averaged candidate is set equal to 1.
[0461] In some examples, if the UseAltHpelIf flag of one of the pair of candidates is equal to 1, the UseAltHpelIf flag of the pair-averaged candidate is set equal to 1.
[0462] Figure 9A flowchart of an example method for video processing is shown. The method includes, for a conversion between a video block of a video and a bitstream representation of the video block, determining (802), based on one or more conditions, whether to enable or disable unequal weights in bi-prediction weights for a default motion candidate in a merge candidate list associated with the video block; and performing (804) the conversion based on the determination.
[0463] In some examples, the one or more conditions include an index of the default motion candidate.
[0464] In some examples, the one or more conditions include a slice or picture class.
[0465] In some examples, the one or more conditions include all or part of existing merge candidates in the merge list before adding the default motion candidate.
[0466] In some examples, the one or more conditions include usage of neighboring or non- neighboring blocks from spatial and / or temporal neighbors.
[0467] Figure 10 A flowchart of an example method for video processing is shown. The method includes, for a conversion between a video block of a video and a bitstream representation of the video block, deriving (902) a merge candidate list associated with the video block; adding (904) one or more half-pel motion vector (MV) candidates having a pointing to a half-pel to the merge candidate list; and performing (906) the conversion based on the merge candidate list.
[0468] In some examples, the one or more half-pel MV candidates are added to the merge candidate list just after derivation of paired merge candidates and / or combined bi-predictive merge candidates.
[0469] In some examples, the one or more half-pel MV candidates are added to the merge candidate list just after derivation of history-based motion vector prediction (HMVP) merge candidates.
[0470] In some examples, whether to add one or more half-pel MV candidates or one or more zero MV candidates to the merge candidate list varies from block to block based on decoded information from previously coded blocks and / or based on merge candidates in the merge candidate list before adding these candidates.
[0471] In some examples, both one or more half-pel MV candidates and one or more zero MV candidates are added to the merge candidate list.
[0472] In some examples, one or more half-pixel MV candidates and one or more zero MV candidates are added to the merge candidate list in an alternating manner.
[0473] In some examples, one or more half-pixel MV candidates are added before all zero MV candidates.
[0474] In some examples, one or more half-pixel MV candidates are added after all zero MV candidates.
[0475] Figure 11 A flowchart of an example method for video processing is shown. The method includes a conversion between video blocks and bitstream representations of the video blocks, determining (1002) whether to enable or disable a half-pixel interpolation filter for a default motion candidate in a merge candidate list associated with the video block based on one or more conditions; and performing a conversion (1004) based on that determination.
[0476] In some examples, the one or more conditions include an index of the default motion candidate.
[0477] In some examples, the one or more conditions include bar or image categories.
[0478] In some examples, the one or more conditions include all or part of the existing merge candidates in the merge list before adding the default motion candidate.
[0479] In some examples, the one or more conditions include the use of neighboring or non-neighboring blocks from spatial and / or temporal domains.
[0480] Figure 12 A flowchart of an example method for video processing is shown. The method includes a conversion between video blocks and bitstream representations of video blocks, determining (1102) whether to enable or disable the encoding tool for the pairwise average candidate based on information about all or selected motion candidates in the merge candidate list before adding the pairwise average candidate to the merge candidate list; and performing (1104) the conversion based on this determination.
[0481] In some examples, the selected motion candidates are those spatial merge candidates in the merge candidate list.
[0482] In some examples, the selected motion candidate may be one of the history-based motion vector prediction (HMVP) candidates in the merge candidate list.
[0483] In some examples, the selected motion candidate is one or more HMVP candidates in the HMVP table.
[0484] In some examples, a UseAltHpelIf flag for a pair- wise average candidate and / or a bi-predictive with CU-level weight (BCW) index is a function of information associated with selected motion candidates.
[0485] In some examples, a UseAltHpelIf flag for a pair- wise average candidate is set to 1 or 0 if there are more candidates with UseAltHpelIf equal to 1 than remaining candidates.
[0486] In some examples, enabling / disabling tools depends on usage of tools from neighboring or non-neighboring blocks in spatial or temporal domain.
[0487] Figure 13 A flowchart of an example method for video processing is shown. The method includes, for a conversion between a video block of a video and a bitstream representation of the video block, determining (1202) a value for a flag that represents whether to employ an optional half-pixel interpolation filter based on a motion vector (MV) of the video block; and performing (1204) the conversion based on the determination.
[0488] In some examples, the flag is a UseAltHpelIf flag.
[0489] In some examples, a UseAltHpelIf flag is set to zero if no MV of a video block points to a horizontal and / or vertical half-pixel position.
[0490] In some examples, a UseAltHpelIf flag is set to zero if no MV of a video block points to a horizontal and / or vertical half-pixel position when the video block is encoded using a pair- wise average candidate.
[0491] In some examples, the method applies to one or more new kinds of motion candidates that are derived from existing candidates added before the new kinds of motion candidates in a merge candidate list.
[0492] A flowchart of an example method for video processing is shown. The method includes, for a conversion between a video block of a video and a bitstream representation of the video block, performing (1302) a reordering process on motion candidates in a merge candidate list associated with the video block based on usage of an optional half-pixel interpolation filter; and performing (1304) the conversion based on the reordered merge candidate list.
[0493] In some examples, candidates with the optional half-pixel interpolation filter enabled are placed before those with the optional half-pixel interpolation filter disabled.
[0494] In some examples, the candidates with the enabled optional half-pixel interpolation filter are placed after those with the disabled optional half-pixel interpolation filter.
[0495] In some examples, the order of the candidates with the enabled and disabled optional half-pixel interpolation filter is adaptively changed based on the decoding information including the use of the optional half-pixel interpolation filter in the neighboring, adjacent or non-adjacent blocks.
[0496] In some examples, the reordering process is only performed for the spatial merge candidates.
[0497] In some examples, the reordering process is only performed for the spatial merge candidates and the history-based motion vector prediction merge candidates.
[0498] In some examples, the conversion generates the video block of the video from the bitstream representation.
[0499] In some examples, the conversion generates the bitstream representation of the video from the video block of the video.
[0500] In the above solutions, the performing of the conversion includes using the result of a previous decision step (e.g., using or not using a certain encoding or decoding step) to reach the conversion result.
[0501] The disclosed and other solutions, examples, embodiments, modules and functional operations set forth in this document can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structural equivalents of such as disclosed herein, or in combinations of one or more of them. The disclosed and other embodiments can 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 execution by, or to control the operation of, data processing apparatus. The computer readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more of them. The term "data processing apparatus" encompasses all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include, in addition to hardware, code that creates an execution environment for the mentioned computer program in order to execute it, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. The propagated signal is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus.
[0502] A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it 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 can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and are interconnected by a communication network.
[0503] The processes and logic flows described in this specification can 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 processes and logic flows can also be performed by special purpose logic circuitry, and that
[0504] Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive 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 performing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. 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 by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
[0505] While this patent document contains many specifics, these should not be construed as limitations on the scope of any subject matter or of any embodiment, but as descriptions of particular embodiments, which can be practiced with or without the particular details that have been provided. Certain features that are described in this patent document in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Moreover, although certain features can be described in the context of certain combinations, in some cases, features from one combination can be used in other combinations. Moreover, although features can be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination and the claimed combination can be directed to a subcombination or variation of a subcombination.
[0506] Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring such an order, or that all illustrated operations be performed, to achieve desirable results. Further, the division of various system components described in the embodiments described in this patent document should not be understood as requiring such division in all embodiments.
[0507] Only a few implementations and examples are described and other implementations, enhancements and variations can be made based on what is described and illustrated in this patent document.
Claims
1. A method for video processing, comprising: For the conversion between video blocks and the bitstream of the video blocks, based on a flag indicating whether an optional lumen half-pixel interpolation filter is used, it is determined whether to apply the optional lumen half-pixel interpolation filter to all pairwise average candidates. as well as The conversion is performed based on the determination.
2. The method of claim 1, wherein when the flag has a first value, an optional luminance half-pixel interpolation filter is applied to all pairwise average candidates.
3. The method of claim 2, wherein when the flag has a second value different from the first value, a default interpolation filter is applied to all pairwise average candidates.
4. The method of claim 3, wherein the first value is 1 and the second value is 0, and the flag is the UseAltHpelIf flag.
5. The method according to any one of claims 1-4, further comprising: Based on a second flag indicating whether half-pixel motion vector interpolation is used, it is determined whether half-pixel motion vector interpolation is applied to all pairwise average candidates.
6. The method according to claim 1, further comprising: Based on one or more conditions, determine whether to enable or disable unequal weights in the bidirectional prediction weights for the default motion candidate in the merge candidate list associated with the video block; as well as The conversion is performed based on the determination.
7. The method of claim 6, wherein one or more conditions include an index of the default motion candidate.
8. The method of claim 6, wherein the one or more conditions include bar or image categories.
9. The method of claim 6, wherein one or more conditions include all or part of the existing merge candidates in the merge candidate list before adding the default motion candidate.
10. The method of claim 6, wherein the one or more conditions include the use of unequal weights from spatially and / or temporally adjacent neighboring or non-neighboring blocks.
11. The method according to claim 1, further comprising: Derive the merge candidate list associated with the video block; Add one or more half-pixel motion vector (MV) candidates pointing to half-pixels to the merge candidate list; as well as The transformation is performed based on the merge candidate list.
12. The method of claim 11, wherein the one or more half-pixel MV candidates are added to the merge candidate list immediately after the derivation of the pairwise merge candidates and / or the combined bidirectional prediction merge candidates.
13. The method of claim 11, wherein the one or more half-pixel MV candidates are added to the merge candidate list immediately after the derivation of the historical motion vector prediction HMVP merge candidate.
14. The method according to any one of claims 11-13, wherein whether to add the one or more half-pixel MV candidates or the one or more zero MV candidates to the merge candidate list based on decoding information from previously encoded blocks and / or based on merge candidates in the merge candidate list before adding these candidates is a block-to-block change.
15. The method of any one of claims 11-13, wherein both the one or more half-pixel MV candidates and the one or more zero MV candidates are added to the merge candidate list.
16. The method of claim 15, wherein the one or more half-pixel MV candidates and the one or more zero MV candidates are added to the merge candidate list in an interleaved manner.
17. The method of claim 15, wherein the one or more half-pixel MV candidates are added before all zero MV candidates.
18. The method of claim 15, wherein the one or more half-pixel MV candidates are added after all zero MV candidates.
19. The method according to claim 1, further comprising: Based on one or more conditions, determine whether to enable or disable the half-pixel interpolation filter for the default motion candidate in the merge candidate list associated with the video block. as well as The conversion is performed based on the determination.
20. The method of claim 19, wherein the one or more conditions include an index of the default motion candidate.
21. The method of claim 19, wherein the one or more conditions include bar or image categories.
22. The method of claim 19, wherein one or more conditions include all or part of the existing merge candidates in the merge candidate list prior to adding the default motion candidate.
23. The method of claim 19, wherein the one or more conditions include the use of unequal weights from spatially and / or temporally adjacent neighboring or non-neighboring blocks.
24. The method according to claim 1, further comprising: Based on information about all or selected motion candidates in the merge candidate list before adding the pairwise average candidate to the merge candidate list, determine whether to enable or disable the encoding tool for the pairwise average candidate. as well as The conversion is performed based on the determination.
25. The method of claim 24, wherein the selected motion candidates are those spatial merge candidates in the merge candidate list.
26. The method of claim 24, wherein the selected motion candidates are those historical motion vector prediction HMVP candidates in the merge candidate list.
27. The method of claim 24, wherein the selected motion candidate is one or more HMVP candidates in the HMVP table.
28. The method according to any one of claims 24-27, wherein the UseAltHpelIf flag for the pairwise averaged candidate and / or the index of the bidirectional prediction BCW with CU-level weights depend on a function of those information associated with the selected motion candidate.
29. The method of claim 28, wherein if there are more candidates with UseAltHpelIf equal to 1 than the remaining candidates, then UseAltHpelIf for the pairwise averaged candidates is set to 1 or 0.
30. The method according to claim 1, further comprising: Based on the motion vector MV of the video block, determine the value of the flag used to indicate whether an optional half-pixel interpolation filter is used; as well as The conversion is performed based on the determination.
31. The method of claim 30, wherein the flag is the UseAltHpelIf flag.
32. The method of claim 31, wherein if the MV of the video block does not point to a horizontal and / or vertical half-pixel position, the UseAltHpelIf flag is set to zero.
33. The method of claim 31, wherein when the video block is encoded using the pairwise average candidate encoding, if no MV of the video block points to a horizontal and / or vertical half-pixel position, the UseAltHpelIf flag is set to zero.
34. The method according to any one of claims 6-13, 16-27, wherein the method is applied to one or more new types of motion candidates, the one or more new types of motion candidates being derived from existing candidates added before the new types of motion candidates in the merge candidate list.
35. The method according to claim 1, further comprising: Based on the use of optional half-pixel interpolation filters, motion candidates in the merge candidate list associated with the video block are reordered. as well as The transformation is performed based on the reordered list of merge candidates.
36. The method of claim 35, wherein candidates having the enabled optional half-pixel interpolation filter are placed before those having the disabled optional half-pixel interpolation filter.
37. The method of claim 35, wherein candidates having the enabled optional half-pixel interpolation filter are placed after those having the disabled optional half-pixel interpolation filter.
38. The method of claim 35, wherein the order of candidates having enabled and disabled optional half-pixel interpolation filters is adaptively changed based on decoding information including the use of the optional half-pixel interpolation filters in adjacent neighboring or non-neighboring blocks.
39. The method according to any one of claims 35-38, wherein the reordering process is performed only on spatial merge candidates.
40. The method according to any one of claims 35-38, wherein the reordering process is performed only on spatial merge candidates and history-based motion vector prediction merge candidates.
41. A method for video processing, comprising: For the conversion between video blocks and the bitstream of those video blocks, based on information about the associated candidates used to generate pairwise averaging candidates, it is determined whether to enable or disable the encoding tool for the pairwise averaging candidates; and The conversion is performed based on the determination. The encoding tool mentioned above includes an optional half-pixel interpolation filter.
42. The method of claim 41, wherein the encoding tool further comprises bidirectional prediction BCW with CU-level weights.
43. The method of claim 41 or 42, wherein different pairwise averaged candidates dynamically determine the use of the encoding tool or disable the use of the encoding tool.
44. The method of claim 41 or 42, wherein the GBiIdx of the pairwise average candidate depends on the GBiIdx of only one candidate of the candidate pair used to generate the pairwise average candidate, wherein the GBiIdx is used to represent a generalized bidirectional prediction GBi index indicating the weighting factor used in BCW.
45. The method of claim 44, wherein the GBiIdx of the pairwise average candidate is set to be equal to the GBiIdx of the first candidate of the candidate pair.
46. The method of claim 44, wherein the GBiIdx of the pairwise average candidate is set to be equal to the GBiIdx of the second candidate of the candidate pair.
47. The method of claim 41 or 42, wherein the GbiIdx of the pairwise average candidate denoted as GBiIdxC is derived as a function for generating the GBiIdx of the candidate pairs of the pairwise average candidate, wherein the GBiIdx of the candidate pairs are denoted as GBiIdx1 and GBiIdx2, respectively.
48. The method of claim 47, wherein GBiIdxC is set to be the smaller of GBiIdx1 and GBiIdx2.
49. The method of claim 47, wherein GBiIdxC is set to be equal to the larger of GBiIdx1 and GBiIdx2.
50. The method of claim 47, wherein GBiIdxC is set to be equal to the average of GBiIdx1 and GBiIdx2.
51. The method of claim 47, wherein when GBiIdx1 is not equal to GBiIdx2, BCW is disabled for the pairwise average candidate.
52. The method of claim 47, wherein GBiIdxC = (GBiIdx1 == GBiIdx2 ? GBiIdx1 : GBI_DEFAULT), wherein GBI_DEFAULT indicates that equal weights were used for the two prediction blocks.
53. The method of claim 44, wherein the UseAltHpelIf flag indicating whether an optional luminance half-pixel interpolation filter is used depends on both UseAltHpelIf flags of the candidate pair.
54. The method of claim 53, wherein if the UseAltHpelIf flag of both candidates in the candidate pair is equal to 1, then the UseAltHpelIf flag of the pairwise average candidate is set to equal to 1.
55. The method of claim 53, wherein if the UseAltHpelIf flag of one of the candidate pairs is equal to 1, then the UseAltHpelIf flag of the pairwise average candidate is set to equal to 1.
56. The method according to any one of claims 1-4, 6-13, 16-27, 41-42, wherein enabling or disabling a tool depends on the use of a tool from a spatially or temporally adjacent neighboring or non-neighboring block.
57. The method according to any one of claims 1-4, 6-13, 16-27, 30-33, 35-38, 41-42, wherein the conversion generates video blocks of the video from the bitstream.
58. The method according to any one of claims 1-4, 6-13, 16-27, 30-33, 35-38, 41-42, wherein the conversion generates the bitstream from video blocks of the video.
59. An apparatus in a video system comprising a processor and a non-transitory memory having instructions thereon, wherein the instructions, upon execution by the processor, cause the processor to perform the method of any one of claims 1-58.
60. A computer program product stored on a non-transitory computer-readable medium, the computer program product comprising program code, wherein the program code, when executed by a processor, causes the processor to perform the method of any one of claims 1-58.
61. A non-transitory computer-readable medium having program code recorded thereon, wherein the program code, when executed by a processor, causes the processor to perform the method of any one of claims 1-58.
Citation Information
Patent Citations
Indication of half-pel interpolation filters in inter coding mode
CN113647110A