Derivation of inter-frame prediction parameters for video encoding and decoding
By deriving inter-frame prediction parameters, especially weighted bidirectional prediction and interpolation filter indexes, the inter-frame prediction process is optimized, solving the problem of low inter-frame prediction efficiency in existing technologies and achieving more efficient video encoding and decoding.
Patent Information
- Application Number
- CN202080038301.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-09-23
- Filing Date
- 2020-03-26
- Publication Date
- 2025-10-31
- Estimated Expiration
- 2040-03-26
AI Technical Summary
Existing video encoding and decoding technologies struggle to effectively improve compression efficiency when utilizing inter-frame prediction, especially when processing complex video content, where determining inter-frame prediction parameters presents challenges due to complexity and redundancy.
By deriving inter-frame prediction parameters, including the index of weighted bidirectional prediction and the index of interpolation filter, the inter-frame prediction process is optimized. Weighted bidirectional prediction and interpolation filter index are used to improve inter-frame prediction, especially by deriving a pairwise merging method to improve encoding and decoding efficiency.
It improves the compression efficiency of video encoding and decoding, reduces the complexity and redundancy of inter-frame prediction, and enhances the encoding quality and decoding performance of video data.
Smart Images

Figure CN114208194B_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to video encoding and decoding. Background Technology
[0002] To achieve high compression efficiency, image and video codec schemes typically employ prediction and transform to fully utilize the spatial and temporal redundancy in video content. Generally, intra-frame or inter-frame prediction is used to leverage intra-frame or inter-frame correlations, followed by transform, quantization, and entropy encoding / decoding of the differences between the original and predicted blocks (often represented as prediction error or prediction residual). To reconstruct the video, the compressed data is decoded through the inverse processes corresponding to entropy encoding / decoding, quantization, transform, and prediction. Summary of the Invention
[0003] At least one example of the embodiments described herein relates to a method for encoding image information, comprising: deriving inter-frame prediction parameters based on first and second merge candidates for generating pairwise merge candidates, wherein the inter-frame prediction parameters include at least one of an index for weighted bidirectional prediction or an interpolation filter index; and encoding at least a portion of the image information based on the inter-frame prediction parameters.
[0004] At least one example of the embodiments described herein relates to a method for decoding image information, comprising: deriving inter-frame prediction parameters based on first and second merge candidates for generating pairwise merge candidates, wherein the inter-frame prediction parameters include at least one of an index for weighted bidirectional prediction or an interpolation filter index; and decoding at least a portion of the image information based on the inter-frame prediction parameters.
[0005] At least one example of the embodiments described herein relates to an apparatus for encoding image information, comprising: one or more processors configured to derive inter-frame prediction parameters based on first and second merge candidates for generating pairwise merge candidates, wherein the inter-frame prediction parameters include at least one of an index for weighted bidirectional prediction or an interpolation filter index; and to encode at least a portion of the image information based on the inter-frame prediction parameters.
[0006] At least one example of the embodiments described herein relates to an apparatus for decoding image information, comprising: deriving inter-frame prediction parameters based on first and second merge candidates for generating pairwise merge candidates, wherein the inter-frame prediction parameters include at least one of an index for weighted bidirectional prediction or an interpolation filter index; and decoding at least a portion of the image information based on the inter-frame prediction parameters.
[0007] In general, at least one example of the embodiments described herein provides a computer-readable storage medium having instructions stored thereon for encoding or decoding video data according to one or more aspects and / or embodiments described herein; and / or a non-transitory computer-readable medium storing executable program instructions to cause a computer executing the instructions to perform a method according to any embodiment of this disclosure; and / or an electronic device including the means described herein and one or more additional features such as a display or antenna.
[0008] The foregoing provides a simplified overview of the subject matter of this invention to offer a basic understanding of some aspects of this disclosure. This overview is not a broad summary of the subject matter of this invention. It is not intended to identify key / essential elements of the embodiments or to depict the scope of the subject matter of this invention. Its sole purpose is to present some concepts of the subject matter of this invention in a simplified form as a prelude to the more detailed description provided below. Attached Figure Description
[0009] This disclosure can be better understood by considering the following detailed description in conjunction with the accompanying drawings, in which:
[0010] Figure 1 A block diagram illustrating an embodiment of a video encoder is shown.
[0011] Figure 2 A block diagram illustrating an embodiment of a video decoder is shown.
[0012] Figure 3 Various aspects of this disclosure relating to the codec tree unit (CTU) are illustrated;
[0013] Figure 4 Various aspects of this disclosure relating to the CTU and the codec unit (CU) are shown;
[0014] Figure 5 A flowchart illustrating the signaling of inter-frame prediction information is provided;
[0015] Figure 6 A block diagram is provided showing the locations of the spatial and temporal motion vector predictors used in the merged mode;
[0016] Figure 7 A flowchart illustrating the creation of a combined list of motion vector prediction candidates is provided;
[0017] Figure 8 Another flowchart is provided to illustrate the creation of a combined list of motion vector prediction candidates;
[0018] Figure 9 A flowchart illustrating an example of determining pairwise average merge candidates is provided;
[0019] Figure 10An example of updating the merged candidate table based on a history-based motion vector prediction (HMVP) method is shown;
[0020] Figure 11 A flowchart illustrating an example of a method for constructing a list of non-sub-block merging candidates is provided;
[0021] Figure 12 An example of constructing a candidate list for motion vector prediction based on sub-blocks is shown;
[0022] Figure 13 A flowchart illustrating an example of an embodiment for obtaining pairwise merge candidates is provided;
[0023] Figure 14 A flowchart illustrating another embodiment for obtaining pairwise merge candidates is provided;
[0024] Figure 15 A flowchart illustrating another embodiment for obtaining pairwise merge candidates is provided;
[0025] Figure 16 An example is shown where averaging two motion vectors may or may not be correlated;
[0026] Figure 17 shows an example of an interpolation filter;
[0027] Figure 18 provides a flowchart illustrating an example of deriving a motion compensation filter;
[0028] Figure 19 provides a flowchart illustrating an example associated with an interpolation filter index;
[0029] Figure 20 shows an example of a storage buffer for the corresponding location of motion information;
[0030] Figure 21 provides a flowchart illustrating an example of the derivation of the interpolation filter index;
[0031] Figure 22 provides a flowchart illustrating another example of the derivation of the interpolation filter index;
[0032] Figure 23 A flowchart illustrating examples of embodiments according to this disclosure is provided; and
[0033] Figure 24 Block diagrams are provided illustrating examples of embodiments of the device according to various aspects described herein.
[0034] It should be understood that the accompanying drawings are for illustrating various aspects and examples of embodiments, and are not necessarily the only possible configurations. In the various drawings, the same reference numerals denote the same or similar features. Detailed Implementation
[0035] In block-based video codecs, some coding parameters are signaled to each block. Advantageously, some coding parameters can be inherited or derived from adjacent blocks at corresponding positions in the spatial or temporal domains.
[0036] For example, as described in detail below, one or more indices can be derived. An example of index derivation involves deriving an index for a given pairwise merge candidate's generalized bidirectional prediction (e.g., GBi). Pairwise merge candidates can be improved by deriving their generalized bidirectional prediction weights (or bidirectional predictions with CU-weighted BiCW or bidirectional predictions with weighted average BPWA) and their motion vectors.
[0037] Another example, elaborated below, relates to an index associated with interpolation filtering. A video codec may include interpolation filtering with optional or switchable filter characteristics. Control over the filtering characteristics may be based on parameters (e.g., an interpolation filter index that can be signaled in the bitstream). Generally, at least one embodiment described herein relates to deriving the interpolation filter index in the case of pairwise merging of candidates.
[0038] Now turn to the attached diagram. Figure 1 An example of a video encoder 100, such as an HEVC encoder, is shown. HEVC is a compression standard developed by the Joint Collaborative Team for Video Coding (JCT-VC) (see, for example, "ITU-T H.265 Telecommunications Standardization Sector of ITU (10 / 2014), Series H: Audiovisual and Multitimed Systems, Infrastructure for Audiovisual Services - Mobile Video Coding, Efficient Video Coding, Recommended by ITU-T H.265"). Various variations of this encoder 100 are considered. However, for clarity, the encoder 100 described below does not depict all anticipated variations. For example, Figure 1 Encoders that improve upon the HEVC standard or employ HEVC-like technologies may also be shown, such as encoders based on or improved upon the JEM (Joint Exploration Model) being developed by the Joint Video Exploration Group (JVET), such as encoders associated with development work designated as Universal Video Coding (VVC).
[0039] For ease of illustration, examples and / or features of one or more aspects and / or embodiments described herein may be described in the context of a particular standard (such as HEVC or VVC). However, references to VVC or any other particular standard are not intended to limit, and do not restrict, the potential application of the various embodiments and features described herein.
[0040] In this application, the terms “reconstructed” and “decoded” are used interchangeably, the terms “pixel” and “sample” are used interchangeably, and the terms “image” and “frame” are used interchangeably.
[0041] Before being encoded, the video sequence may undergo pre-coding (101), for example, applying color transformations to the input color image (e.g., a conversion from RGB 4:4:4 to YCbCr 4:2:0), or performing remapping on the input image components to obtain a signal distribution that is more resilient to compression (e.g., using histogram equalization of one of the color components). Metadata may be associated with the pre-processing and appended to the bitstream.
[0042] In HEVC, to encode a video sequence using one or more images, the images are divided into one or more stripes, where each strip can include one or more strip segments. These strip segments are organized into encoding / decoding units, prediction units, and transform units. The HEVC specification distinguishes between "blocks" and "units," where a "block" addresses a specific region (e.g., luma, Y) in a sample array, while a "unit" comprises a juxtaposed block of all encoded color components (Y, Cb, Cr, or monochromatic), syntax elements, and prediction data associated with the block (e.g., motion vectors).
[0043] For encoding and decoding, the image is segmented into square codec tree blocks (CTBs) of configurable size, and consecutive sets of CTBs are grouped into stripes. A codec tree unit (CTU) contains the CTBs of the encoded color components. A CTB is the root of a quadtree segmented into codec blocks (CBs), and a codec block can be segmented into one or more prediction blocks (PBs) and form the root of a quadtree segmented into transform blocks (TBs). Corresponding to the codec blocks, prediction blocks, and transform blocks, a codec unit (CU) includes prediction units (PUs) and a tree-structured set of transform units (TUs). PUs contain prediction information for all color components, and TUs contain the residual codec syntax structure for each color component. The dimensions of the CBs, PBs, and TBs for the luma component are appropriate for the corresponding CUs, PUs, and TUs.
[0044] In JEM, the QTBT (Quadtree Plus Binary Tree) structure removes the concept of multiple segmentation types from HEVC, specifically eliminating the distinction between CU, PU, and TU concepts. The codec tree unit (CTU) is first segmented by a quadtree structure. The leaf nodes of the quadtree are further segmented by a binary tree structure. The leaf nodes of the binary tree are named codec units (CUs), which are used for prediction and transformation without further segmentation. Therefore, in the new codec QTBT block structure, CUs, PUs, and TUs have the same block size. In JEM, a CU consists of codec blocks (CBs) with different color components.
[0045] In this application, the term "block" can be used to refer to any of, for example, CTU, CU, PU, TU, CB, PB, and TB. Furthermore, "block" can also refer to macroblocks and segments specified in H.264 / AVC or other video codec standards, and more generally refers to data arrays of various sizes.
[0046] In encoder 100, the image is encoded by encoder elements as described below. The image to be encoded can be segmented and processed, for example, in units of CUs, in the manner described above. Encoding and decoding parameters can be obtained at (102) and provided to functions such as motion compensation (170) within the encoder (100). For example, each unit is encoded using either intra-frame or inter-frame mode. When a unit is encoded in intra-frame mode, it performs intra-frame prediction (160). In inter-frame mode, motion estimation (175) and compensation (170) are performed. The encoder determines (105) which of the intra-frame or inter-frame modes to use to encode the unit and indicates the intra-frame / inter-frame decision by, for example, a prediction mode flag. The prediction residual is calculated by subtracting (110) the predicted block from the original image block.
[0047] The predicted residual is then transformed (125) and quantized (130). The quantized transform coefficients, motion vectors, and other syntax elements are entropy encoded (145) to output a bitstream. The encoder can skip the transform and apply the quantization directly to the untransformed residual signal. The encoder can bypass both the transform and quantization, i.e., the residual is directly encoded without applying the transform or quantization process.
[0048] The encoder decodes the encoded blocks to provide a reference for further prediction. The quantized transform coefficients are dequantized (140) and inversely transformed (150) to decode the prediction residuals. The decoded prediction residuals and the predicted blocks are combined (155) to reconstruct the image blocks. A loop filter (165) is applied to the reconstructed image, for example, to perform deblocking / SAO (sample adaptive offset) filtering to reduce coding artifacts. The filtered image is stored in a reference image buffer (180).
[0049] Figure 2 A block diagram of a video decoder (200) is shown. In the decoder (200), the bitstream is decoded by decoder elements as described below. The video decoder 200 generally performs the functions described below. Figure 1 The encoding traversal shown corresponds to the decoding traversal, which performs video decoding as part of the encoded video data.
[0050] Specifically, the input to the decoder includes a video bitstream that can be generated by the video encoder 100. In the decoder (200), the bitstream is first entropy decoded (220) to obtain transform coefficients, motion vectors, and other encoding / decoding information. For example, segmentation information indicating how the image is segmented can be obtained, and the decoder can then segment the image based on the decoded image segmentation information. After entropy decoding, the encoding / decoding parameters can be derived at (230) and provided to various other functions such as motion compensation (275) within the decoder (200). The transform coefficients are dequantized (240) and inverse transformed (250) to decode the prediction residuals. The decoded prediction residuals and the predicted blocks are combined (255) to reconstruct the image blocks. The predicted blocks (270) can be obtained from intra-frame prediction (260) or motion-compensated prediction (i.e., inter-frame prediction) (275). Advanced motion vector prediction (AMVP) and merging mode techniques can be used to derive motion vectors for motion compensation, which can use interpolation filters to compute interpolation of sub-integer samples of the reference block. The in-loop filter (265) is applied to reconstruct the image. The filtered image is stored in the reference image buffer (280).
[0051] The decoded image can undergo further post-decoding processing, such as inverse color transformation (e.g., from YCbCr 4:2:0 to RGB 4:4:4) or inverse remapping of the remapping process mentioned above, which is performed in the pre-encoding process prior to the encoder (100). The post-decoding processing can utilize metadata derived in the pre-encoding process and signaled in the bitstream.
[0052] In the HEVC video compression standard, motion-compensated temporal prediction is used to utilize the redundancy that exists between consecutive images in a video. For this purpose, a motion vector is associated with each prediction unit (PU). Each codec tree unit (CTU) is represented by a codec tree in the compression domain. This is a quadtree cross-referencing of the CTU, where each leaf is called as shown in the diagram. Figure 3 The diagram shows a codec unit (CU).
[0053] Then, each CU is given some intra-frame or inter-frame prediction parameters (prediction information). For this purpose, it is spatially partitioned into one or more prediction units (PUs), and each PU is assigned some prediction information. For example... Figure 4 The diagram illustrates the allocation of intra-frame or inter-frame encoding / decoding modes at the CU level, which ( Figure 4 This demonstrates an example of dividing the codec tree unit into codec units, prediction units, and transform units.
[0054] In HEVC, each PU is assigned only one motion vector. This motion vector is used for temporal prediction of motion compensation for the PU under consideration. Therefore, in HEVC, the motion model of the linked predicted block and its reference block involves translation.
[0055] HEVC employs two modes to encode motion data. These are referred to as AMVP (Adaptive Motion Vector Prediction) and merging. AMVP involves sending signals to inform the current PU of a reference image, motion vector predictor indices (taken from a list of two predictors), and motion vector differences. Overall, at least one embodiment described herein relates to the merging mode.
[0056] The merging pattern involves sending a signal to notify and decoding an index of some motion data collected in a motion data predictor list. This list consists of five candidates and is constructed in the same way on both the decoder and encoder sides. Therefore, the merging pattern aims to derive some motion information taken from the merging list. The merging list typically contains motion information associated with some spatial and temporal surrounding blocks, which is available in its decoding state when the current PU is being processed.
[0057] Some video encoding and decoding methods can be based on different types of merging candidates. For example, one method may involve two types of candidates: history-based motion vector prediction (HMVP) candidates and pairwise averaging candidates. The ordering of candidates in the merging list may include inserting HMVP candidates into the merging list before any pairwise averaging candidates.
[0058] Pairwise candidates are computed based on two existing motion vector pairs in the merged candidate list being constructed. In the case of bidirectional motion vector prediction, averaging applies to motion vectors associated with reference image lists 0 and 1. Two existing motion vector pairs are averaged regardless of the consistency between the two considered motion vectors (MVs). Thus, one possible example is averaging motion vectors pointing to two reference images with different temporal distances from the current image. Some methods for generating the average between motion vectors may include subjecting these motion vectors to a scaling process that takes into account the temporal distances between the current image and the two reference images to which the two motion vectors point. This scaling ensures consistency between them before averaging the motion vectors. However, compared to other pairwise candidate computation methods, scaling implies increased complexity. Therefore, scaling may be undesirable due to considerations of complexity.
[0059] The merging mode in the HEVC standard involves deriving inter-frame prediction information (hereinafter also referred to as motion information) for a given prediction unit from selected motion information predictor candidates. Motion information includes all inter-frame prediction parameters of the PU, namely:
[0060] - One-way or two-way time-domain prediction type
[0061] - Reference image index in each reference image list
[0062] - Motion vectors
[0063] A summary of the encoding and decoding of inter-frame prediction information in HEVC is presented below. Figure 5 The diagram illustrates the signaling for inter-frame prediction information. It shows that motion information encoding / decoding, based on the merging mode, is performed in two modes: skip mode and merge mode. In both modes, a single field is sent to allow the decoder to query the PU's motion information: the so-called merge index. The merge index indicates which motion vector predictor from the merge motion information predictor list is used to derive the current PU's motion information. In the following text, the motion information predictor list is referred to as the merge list or merge candidate list. Furthermore, candidate motion information predictors are referred to as merge candidates.
[0064] In HEVC, the merge candidate list systematically consists of five merge candidates. As shown below, the merge list is constructed on both the encoder and decoder sides. Figure 6 As shown, a maximum of five airspace locations can be considered to query some potential candidates. They are visited in the following order:
[0065] 1-Left(A1)
[0066] 2-Up (B1)
[0067] 3-Top right (B0)
[0068] 4-Lower left (A0)
[0069] 5-Top Left (B2)
[0070] The symbols A0, A1, B0, B1, and B2 represent Figure 6 The airspace location is shown on the left. Figure 6 In the context of merging patterns with spatial merging candidates, the positions of the spatial and temporal motion vector predictors used are... Figure 6 The left side shows the time-domain merging candidates in Figure 6 The right side is shown. Four distinct spatial candidates are selected. Then, a temporal predictor, represented as TMVP, is selected by considering temporal motion information at location H, and then the "center" is the unavailable candidate at location H in the considered reference image. A trimming process is then performed (see...). Figure 7 This ensures that the selected spatial and temporal candidate sets do not contain redundant candidates.
[0071] Next, in the case of B-bands, if the list is not full, another type of candidate is pushed into the merge list: the so-called combined candidate. This can involve forming a candidate from one already existing candidate in the list, consisting of motion information associated with a list of reference images (L0), and forming a candidate from another already existing candidate in the merge list, having motion associated with another list of reference images (L1). If the merge list is still not full (five elements), the zero motion vector is pushed to the back of the merge list until it is full. The overall process of building the merge list in HEVC is as follows: Figure 8 Describe it in detail in the box.
[0072] In methods for constructing the merge candidate list, such as those used in the system being developed by JVET, so-called pairwise averaged candidates are added to the merge candidate list to improve compression efficiency. The calculation of these pairwise candidates is as follows: For each list of reference images, some predefined candidate pairs are taken from the merge candidate list and averaged. The merge list is in its current state when calculating the pairwise candidates. A pairwise candidate is formed if one or two candidates are available for the considered list of reference images and at the considered position in the merge candidate list. A maximum of six candidates are considered to enrich the merge candidate list. An example of the process for constructing pairwise averaged merge candidates is provided in [link to example]. Figure 9 As shown in the image.
[0073] exist Figure 9 First, candidate index sets CL0 and CL1 are initialized to specify which candidates in the currently constructed merge candidate list will be used to compute the pairwise average candidate. Then, as... Figure 9 The maximum number of pairwise candidates is calculated as shown in the diagram. Next, a loop is performed for all pairs of indices "idx". For each "idx" value, the corresponding indices "i" and "j" considered for forming the pairwise merged candidates are taken from sets CL0 and CL1, respectively. Then, for each reference image list value "refPicList" (equal to L0, then equal to L1), if at least one of the candidate's reference image indices "i" and "j" is valid, a pairwise motion with indices and for the reference image refPicList is constructed. If both candidate reference image indices "i" and "j" are valid, the pairwise candidate is calculated as the average of the two considered motion vectors and stored in the merged candidate list being constructed. Furthermore, the reference image index assigned to the average motion vector is the candidate's reference image index "i".
[0074] If only one of the two candidates "i" and "j" has a valid reference image index (meaning the other is a one-way candidate, a valid motion vector from another list of reference images rather than the current list of reference images refPicList), then the resulting pairwise motion vectors are set to the motion vector of the candidate with the valid reference image index. Furthermore, the reference image index of each pairwise candidate is set to the reference image index of the candidate with the valid reference image index.
[0075] When the entire list of candidates to be merged has reached its maximum number of candidates, or when the index "idx" has reached its last value "end-1" in the loop under consideration, Figure 9 The process is over.
[0076] The merging enhancement tool developed as part of the VVC (Virtual Cryogenic Frame Rendering) results is called History-Based Motion Vector Prediction (HMVP). The history-based approach involves maintaining a table containing multiple motion information components used for encoding and decoding blocks preceding the current block. Each time a non-affine inter-frame block is encoded and decoded, its associated motion data is added to the end of this table as a new HMVP merging candidate. The maximum HMVP table size is 6, and past motion data is discarded from this table according to a FIFO (First-In, First-Out) rule. The management of the history-based buffer (table) for the motion vector predictor is handled in… Figure 10 As shown in the image.
[0077] Figure 11 An example of an embodiment of a method for constructing a non-sub-block-based (or translation-based) merge candidate list is shown. Figure 11 The image shows an example of an embodiment for constructing a classic (as opposed to an affine) merge list. By "classic," this description refers to a merge list used for temporal prediction of translational motion compensation, where for each list of reference images, a motion vector is associated with a CU. Figure 11 The example shown corresponds to one or more aspects of the VVC video compression system.
[0078] Compared to HEVC, it offers a richer approach to constructing classic merge lists. It can be seen that... Figure 11 The first stage of the process uses the same spatial and temporal predictors. After adding the spatial and temporal LV predictors, if the merge list contains at least two remaining free positions, the HMVP candidates obtained as described above are added to the list. Next, if the list is still not full (i.e., the number of added candidates is less than the maximum allowed number of merge candidates), some pairwise merge candidates as described above are evaluated and added to the list. Finally, if the classic merge list is still not full, it will be filled with zero motion vectors.
[0079] Figure 12An example of how to construct an affine merge list is shown, for instance, in a VVC system. Figure 12 The affine merging list collects all merging MV predictors involved in sub-block-based motion compensation temporal prediction. Therefore, this includes both the Advanced Temporal Motion Vector Predictor (ATMVP) merging mode and the affine merging mode. An affine merging candidate represents a merging candidate derived from the affine motion field based on a 4×4 block for the current CU, and used in the temporal prediction of the current CU. ATMVP involves temporally predicting one or more motion vectors for the current block from a region in a reference image, directed by motion vectors derived from the spatially neighboring blocks of the current block.
[0080] According to one aspect of this disclosure, the determination of pairwise averaging candidates can be based on increasing the consistency between pairs of motion vectors being averaged, while keeping the complexity at a limited level. Various aspects, embodiments, features, etc., will be described in more detail below. For example, generally, at least one embodiment may involve allowing or enabling pairwise averaging of two candidates only if both candidates have a reference image index equal to 0 in the considered list of reference images. Figure 13 An example of one embodiment is shown. Also in Figure 13 In this case, if both reference image indices are valid, but one of them is not equal to 0, then... Figure 13 One implementation selects only candidate 'i' to form the current pairwise candidate MV in the list of considered reference images. According to one variation, the candidate MV with the smallest reference image index between 'i' and 'j' can be selected. According to another variation, the merge list order can be modified based on the pairwise average candidate. For example, the pairwise average candidate can be inserted into the merge list before other candidates (such as HMVP candidates).
[0081] According to another approach, if two reference image indices are equal, one or more merging candidates can be obtained based on allowed or enabled pairwise averaging. Generally, examples of at least one embodiment may include, for instance... Figure 14 The example embodiment shown illustrates a pairwise average of two candidates, which is allowed or enabled only if the two candidates have valid and equal corresponding reference image indices.
[0082] According to another approach, if both reference image indices are valid, one or more merge candidates can be obtained based on allowing or enabling pairwise averaging. Generally, examples of at least one embodiment may include allowing pairwise averaging of two candidates only if both candidates have valid reference image indices. In at least one embodiment, if one reference image index associated with one of the two considered MVs is equal to twice the other reference image index, the pairwise candidate is calculated as a simple weighted average of the two MVs, where... Figure 15 As shown, a weight of 1 / 2 is given to the MV with the smallest reference image index, and a weight of 1 / 4 is given to the MV with the largest reference image index.
[0083] According to another aspect, Figure 14 and 15 One or more features of the illustrated embodiments can be combined. For example, generally, at least one embodiment may include allowing or enabling averaging of two candidate motion vectors (MVs) if the two reference image indices are equal or one is twice the other, and disallowing or prohibiting averaging of the two motion vectors to produce pairwise candidates in other cases (i.e., the two reference image indices are not equal and one is not twice the other). In the latter case, if averaging between two valid MVs is not enabled, the process may select the first MV to form a pairwise candidate. According to a variation, candidates may be selected based on the relationship between the reference image indices, such as selecting the smallest reference image index among "i" and "j".
[0084] According to another approach, one or more merge candidates can be obtained based on allowing or enabling averaging of two motion vectors according to their MV values. Generally, at least one embodiment may include setting one or more conditions on relevance to calculate the average of some candidate motion vectors already present in a merge candidate list constructed for the current CU. For example, it is generally understood that if the average of two MVs is equal to or close to zero motion vector, while the derived motion vector is far from zero MV, the average may be irrelevant to including the average candidate in the merge list. Generally, at least one embodiment may include considering the average candidate as potentially relevant based on the value of the average MV relative to the two MVs to be averaged.
[0085] For example, in at least one embodiment, the described standard may take the following form:
[0086] -If the average motion vector L ∞ If the norm is negligible compared to the motion vector for each query, then the average motion vector is considered unavailable in the spatiotemporal motion vector predictor (STMVP) merging candidate. Therefore, the criterion includes evaluating the following tests:
[0087]
[0088] Where ∈ is the threshold. If the above test is true, the STMVP merge candidate may not be included in the merge candidate list.
[0089] In at least one other embodiment, other norms can be used to calculate the above-mentioned standard, such as the L2 or L1 norm. According to another embodiment, another standard allowing averaging between two MVs can be based on the scalar product of the two MVs, relative to the product of the L2 norms of the two MVs. This standard takes the following form. Averaging is allowed if the following condition is met:
[0090]
[0091] Where ∈ is a strictly positive value, less than 1. Intuitively, it can be understood that if two MVs are "sufficiently" collinear, then averaging the two MVs to form an additional MV predictor can be correlated. This is achieved by constraining the scalar product of the two vectors to be positive and sufficiently large.
[0092] Figure 16 It shows the relationship between two vectors and The average may be related to or unrelated to the potential candidates in the merge candidate list. Figure 16 The example shown on the left illustrates an example of motion vector arrangement, where averaging two motion vectors according to the criteria discussed above may be relevant. Figure 16 The example shown on the right illustrates an example of a motion vector arrangement where averaging two vectors may be uncorrelated.
[0093] As described above, at least one other embodiment may involve deriving an index (e.g., GBi) for the pairwise merge candidates. For example, the pairwise merge candidates can be improved by deriving their generalized bidirectional prediction weights (or bidirectional predictions with CU-weighted BiCW or bidirectional predictions with weighted average BPWA) and their motion vectors.
[0094] BiCW can involve the following. Inter-frame CUs can be predicted in the temporal domain using so-called generalized bidirectional prediction. In generalized bidirectional prediction, the temporal prediction of the bidirectional prediction block is calculated as a weighted average of the two reference blocks according to the following expression:
[0095] p bipred =((8-w)×P0+w×P1+4)>>3
[0096] Where P bipredThis represents the bidirectional prediction block, and P0 and P1 are the motion compensations computed for the block from two reference images in the L0 and L1 reference image lists. The weights w (e.g., GBi) can be selected from, for example, the following set:
[0097] -For low-latency images (where all reference images are from the past):
[0098] -For non-low latency images (which have at least one past and one future reference image):
[0099] The preceding expression is a more general floating-point representation of an integer-based equation:
[0100] P bipred = (1-α)×P0+α×P1
[0101] It should be noted that although P0 and P1 are computed as inter-frame prediction blocks with motion compensation for the example method described in this paper, such as VVC, other methods may involve, for example, combining different weights to perform other types of predictions (e.g., intra-frame and inter-frame predictions).
[0102] Syntax elements can be included in the bitstream to signal the weights used for prediction, such as GBi weights for predicting the CU. Such syntax elements can be referred to as indices for weighted prediction or for predictions with weights, such as GBi indices. The index identifies the weighting factor to be used. For example, the index identifies a weight or weighting factor in a set of weights or weighting factors, such as the weight sets for low-latency and non-low-latency images mentioned above. The index can identify a first weight, such as w1 for a predictor (e.g., P1 in the equation above). A second weight, for example, for another predictor (e.g., P0 in the equation above), can be determined or derived based on the first predictor (e.g., w0 = 1 – w1). For merged modes, weights (e.g., GBi weights) can be inherited from the same neighboring blocks used for motion vectors and reference images.
[0103] For AMVP mode, GBi weights can be selected based on the rate distortion optimization process on the encoder side and signaled in the bitstream. For example, indices can be encoded at the CU level of AMVP to indicate which weight or weighting factor in the weight set will be used for weighted bidirectional prediction or weighted bidirectional prediction as described above. GBi can also be combined with various motion compensation tools, such as affine motion compensation or adaptive motion vector accuracy.
[0104] When calculating pairwise merge candidates, they can be systematically assigned GBi weight values (e.g., w = 4), corresponding to the bidirectional prediction case where equal weights 1 / 2 and 1 / 2 are applied to each temporal prediction block. However, when calculating pairwise merge candidates from two bidirectional motion vector predictors and these two MV predictors have the same GBi index (which may differ from the default case of w = 4), assigning this same GBi index value to the averaging motion vector prediction candidate may be appropriate, desirable, or useful. Therefore, in at least one embodiment, when the pairwise motion vector averaging process calculates merge candidates from two bidirectional MVs with the same GBi index, the merged pairwise candidates inherit the considered GBi weights.
[0105] In at least one other embodiment, if only one of the two motion vector predictors to be averaged is bidirectional, the GBi index assigned to the pairwise merge candidate can be a default GBi index value. Alternatively, if only one of the two motion predictors to be averaged is bidirectional, the GBi index of the bidirectional motion vector can be assigned to the pairwise merge candidate.
[0106] If the two motion vector predictors to be averaged are unidirectional (e.g., one on each of the list of reference images), the pairwise merge candidate mechanism can generate a combined bidirectional candidate and assign default GBi weights to the combined merge candidate. In at least one other example of the embodiment, GBi weights can be assigned to the combined pairwise merge candidate such that higher weight values are associated with the inter-frame prediction direction of the combined bidirectional merge candidate pointing to a reference image that is temporally closer to the current image.
[0107] In at least one other embodiment, if the two input motion vectors in the pairwise computation process are bidirectional types with different GBi weights, the average weights of the two input MVs can be assigned to the pairwise merged candidates. If necessary, the average weight value can be rounded to the nearest value of equal weights or deviate from this equal weight.
[0108] In at least one other embodiment, if the two input motion vectors of the pairwise computation process are of bidirectional type, then pairwise candidates are computed only if the two MVs have equal GBi weights. Otherwise, some other candidates in the merging list being constructed are considered to generate pairwise candidates. An iterative process for searching for MV pairs that can combine a unidirectional MV with a bidirectional MV or two bidirectional MVs with equal GBi weights can be invoked until such a merging candidate pair is found in the merging list being constructed.
[0109] In at least one other embodiment, if the first motion vector predictor (e.g., Figure 9If candidate i) is bidirectional, then both of its reference images are used to construct pairwise candidates. The GBi weights of the first motion vector predictor are then assigned to the pairwise merged candidates. Otherwise, if a second motion vector predictor (e.g., ...) is considered to construct the pairwise merged candidates... Figure 9 If candidate j) is bidirectional, a combination of reference images can be used (one from a first predictor for one list of reference images and one from a second predictor for another list of reference images). In this case, if a single reference image from the first candidate is the same as one from the second predictor (for the same list of reference images), the GBi weights of the second motion vector predictor are assigned to the pairwise merged candidate, and in any other case, the GBi weights of the pairwise merged candidate are set to the default weights.
[0110] As described above, another example of encoding / decoding parameters inherited or derived from adjacent blocks at corresponding positions in the spatial or temporal domains involves deriving an index associated with interpolation filtering. The video codec may include interpolation filtering with optional or switchable filter characteristics. Control over the filter characteristics may be based on parameters such as the interpolation filter index, which can be signaled in the bitstream. Generally, at least one embodiment described herein relates to deriving the interpolation filter index in the case of pairwise merging of candidates.
[0111] The principle of the switchable interpolation filter (IF) is to improve motion-compensated prediction by selecting the IF index (IF-idx) used for prediction of each block. The IF associated with each index value can exhibit different characteristics, such as examples of different smoothing characteristics shown in Figure 17.
[0112] For example, a standard such as VVC might provide an IF index to be selected for each codec unit (CU), and this IF index can be derived from the “imv” index of the codec that indicates the precision of the motion vector difference (MVD): if IMV = HALF_PEL, then IF-idx = 1 is selected, otherwise IF-idx = 0.
[0113] In merge operation mode, the IF index is not explicitly encoded or decoded, but rather derived from the merge candidate.
[0114] As an example, standards such as VVC might provide an IF index value indicating one of two filters: IF-0 or IF-1. However, IF-1 can be used only for HALF_PEL motion vector values. Then, if the IF-index is not equal to zero and the horizontal (or vertical) component of the motion vector (MV) is not HALF_PEL, IF-0, as shown in Figure 18, is used.
[0115] For ease of explanation, the following description will generally describe embodiments involving N=2 IF filters (IF=0 and IF=1). However, the aspects, embodiments, and features described herein are not limited to the case of N=2 IF filters and can be readily extended to the case of N>2 (IF=0, ..., IF=(N-1)), in which case IF=0 and IF≠0 corresponding to IF=0 and IF=1 in the following text can be distinguished. Furthermore, the term "default filter" may be used hereinafter to refer to filter IF=0 (IF-default). However, the default filter may be a filter other than IF=0. Moreover, one or more of the described aspects, embodiments, and features can also be applied to configurations and embodiments other than those described, such as when IF applies to a non-HALF PEL MV.
[0116] In merge mode, some codec block parameters are not explicitly encoded but derived from adjacent reconstructed blocks. For example, in VVC, these codec block parameters may include motion vectors, reference indices, and IF indices. In merge mode, a candidate list is created from spatially adjacent and temporally corresponding reconstructed blocks, and a signal is sent indicating the candidate indices to be used for the current block. In VVC and HEVC, the reference indices are derived from the reconstructed blocks located in the temporal domain. Figure 6 At most four merge candidates can be selected from the candidates at the indicated positions. The derivation order is A0, B0, B1, A1, and B2.
[0117] Possibly, an additional temporal candidate for the corresponding location can be added to the list (the list of reference images to be used for deriving the CU at the corresponding location can be explicitly signaled in the block header). Furthermore, additional history-based motion vector prediction (HMVP) candidates can be added. Additional "pairwise average" candidates can be generated from two other candidates (C0 and C1) by performing motion averaging on predefined candidate pairs (e.g., in VVC, C0 and C are named mergeCandList[0], mergeCandList[0]).
[0118] In traditional bidirectional prediction, the prediction sample (biPred[x]) is constructed by averaging two motion-compensated unidirectional prediction samples (refi[x+mvi], i=0,1) with equal weights (w0=1; w1=1):
[0119] biPred[x]=(w0.ref0[x+mv0]+w1.ref1[x+mv1]+1) / 2
[0120] In the case of generalized bidirectional prediction (e.g., GBI, BPWA, or BCW), the weights (w0; w1) are not necessarily equal and are signaled in the bitstream (or inherited in merge mode).
[0121] Other codec parameters must be derived from each merge list candidate, including the "pairwise average" candidate. One of these parameters is the "IF-index". When blocks are located in the same image region with homogeneous signal characteristics, there is a strong correlation with the optimal value of the IF-index (the IF-index value that gives the best codec tradeoff is highly likely to be the same as the IF-index value for blocks in the same region). However, in the case of "pairwise average" candidates, two candidates C0 and C1 can have different "IF-index" values.
[0122] "Pairwise averaging" candidates are generated from two other candidates (C0 and C1) by averaging the motion of predefined candidate pairs. The average motion vector is calculated separately for each reference list (e.g., at 305 in Figure 19). If both motion vectors are available in a list, they are averaged even if they point to different reference images; if only one motion vector is available, that motion vector is used directly; if no motion vector is available, then "pairwise averaging" has no motion for that reference list (see Table 2 below).
[0123] Let IF[PW] denote the IF-index value associated with the "pairwise average" candidate (IF-index is represented as hpelIfIdxavgCand in VVC). In VVC, unless the IF values of C0 and C1 are equal and are not the default value, the deduced value of IF[PW] is set to the default value (0) (e.g., at 300 in Figure 19). If the IF-index values of C0 and C1 are different, then IF[PW] is set to the default value (0); otherwise, IF-index[PW] is set to the IF-index of C0 (i.e., the same as the IF-index of C1) (see Table 2):
[0124] IF[PW] = (IF[C0] == IF[C1]) ? IF[C0]:IF - default value. In the current VVC standard draft, this is represented as:
[0125] The derivation of the half-sample interpolation filter index hpelIfIdxavgCand is as follows:
[0126] - If hpelIfIdxp0Cand is equal to hpelIfIdxp1Cand, then hpelIfIdxavgCand is set to be equal to hpelIfIdxp0Cand.
[0127] Otherwise, hpelIfIdxavgCand is set to be equal to 0.
[0128] Let C0 = {(mv00, idx00); (mv01, idx01)} denote the reference indices associated with two motion vectors C0 and C0, and let C1 = {(mv10, idx10); (mv11, idx11)} denote the reference indices associated with two motion vectors C1, if these candidates are bidirectional candidates. If a motion value is unavailable, it is denoted as (-, -).
[0129] It is possible that C0 and / or C1 may be unidirectional. For example:
[0130] -If C0 = {(mv00, idx00); (-,-)}, then C0 is a list of unidirectional motion vectors.
[0131] -If C0 = {(-,-); (mv01,idx01)}, then C0 is a list of unidirectional motion vectors.
[0132] If C1 = {(mv10, idx10); (-, -)}, then C1 is a unidirectional motion vector column -0,
[0133] If C1 = {(-,-); (mv11,idx11)}, then C1 is a unidirectional motion vector column -1.
[0134] It is possible that C0 and / or C1 may be undefined. For example:
[0135] If C0 = {(-,-); (-,-)}, then C0 is undefined.
[0136] If C1 = {(-,-); (-,-)}, then C1 is undefined.
[0137] The derivation of (mv[PW][r], Idx[PW][r]) (r = 0, 1) and the prediction direction (“interDir”) are completed at (305) in Figure 19 and described in Table 2. The values of interDir correspond to: one-way L0 (1), one-way L1 (2), and two-way prediction (3). In VVC, the mapping of the value of “interDir” to the variables “predFlagL0” and “predFlagL1” is as follows (Table 1):
[0138] Table 1: Mapping between "interDir" and (predFlagL0, predFlagL1)
[0139] interDir predFlagL0 predFlagL1 0 0 0 1 1 0 2 0 1 3 1 1
[0140] Table 2: Derivation of MV[PW], Idx[PW], and IF[PW] in VVC ('-' indicator values are not available)
[0141]
[0142]
[0143]
[0144] However, if IF[0] and IF[1] are not the same, then the value of IF[PW] is 0 and it can be suboptimal.
[0145] To enable the IF-index value used to reconstruct the current block (e.g., at 330 in Figure 19) to be further used by the block in merge mode, the current value of the IF-index is typically stored with 4×4 precision (e.g., at 340 in Figure 17) in a storage buffer at the corresponding location (e.g., Figure 20). To avoid memory storage burden, only one IF-index is stored.
[0146] An example of the embodiment referred to herein as "Emb 0" or "emb 0" involves deriving an IF[PW] value for "pairwise average" such that IF[PW] can be equal to a non-default value even if IF[0] or IF[1] is equal to the default value, or deriving an IF[PW] value for "pairwise average" as a function of the reference index value (referring to "idx") of the candidates C0 and C1 (idx-00, idx-01, idx-10, idx-10). In the following text, the IF[0] or IF[C0] value corresponds to hpelIfIdxp0Cand, and the IF[1] or IF[C1] corresponds to hpelIfIdxp1Cand. Examples of various embodiments including variations and sub-variants of emb-0 are described below with reference to Figure 21.
[0147] Examples of embodiments based on emb-0, and generally referred to herein as Embodiment-1 (or emb-1), involve the following variations. In the first variation, referred to herein as Variation or Embodiment 1.1 (or emb-1.1), the initialization settings at 300 in Figure 21 are as follows:
[0148] IF[PW] = (IF[C0] || IF[C1])
[0149] The half-sample interpolation filter index hpelIfIdxavgCand is set to be equal to the maximum value (hpelIfIdxp0Cand, hpelIfIdxp1Cand).
[0150] In the second variant, referred to herein as variant or embodiment 1.2 (or emb-1.2), the initialization settings at 300 in Figure 21 are as follows:
[0151] IF[PW] = IF - default value
[0152] In the second variant, referred to herein as variant or embodiment 1.3 (or emb-1.3), the initialization settings at 300 in Figure 21 are as follows:
[0153] IF[PW] = (IF[C0] == IF[C1]) ? IF[C0]: IF - default value
[0154] Examples of embodiments based on emb-0, and which are generally referred to herein as Embodiment-2 (or emb-2), are as follows.
[0155] In Figure 21, (300) (initializing IF[PW]), (305), (330), and (340) remain unchanged. Intermediate values IF[PW][0] and IF[PW][1] are calculated in (310), and IF[PW] is updated with IF[PW][0] and IF[PW][1] in (320). For example, (310) could be (r = 0 or 1):
[0156] If both mv0r and mv1r are available: IF[PW][r] = IF[0]
[0157] Otherwise, if only mv0r is available: IF[PW][r] = IF[0]
[0158] Otherwise, if only mv1r is available: IF[PW][r]=IF[1]
[0159] Otherwise, IF[PW][r] = IF[PW]
[0160] Various implementations are possible for (320). Some examples are described below, each forming a variant of em-2 as follows.
[0161] In the first variant referred to herein as variant or embodiment 2.1 (or emb-2.1), in Figure 9 The update at (320) could be:
[0162] IF[PW]|=(IF[PW][0]||IF[PW][1])
[0163] In the second variation, referred to herein as variant or embodiment 2.2 (or emb-2.2), in Figure 9 The update at (320) could be:
[0164] IF[PW] = (IF[PW][0] == IF[PW][1]) ? IF[PW][0]: IF - default value
[0165] In the second variant referred to herein as variant or embodiment 2.3 (or emb-2.3):
[0166] If both mv0r and mv1r are available: IF[PW] = (IF[PW][0] || IF[PW][1])
[0167] Otherwise, if only mv0r is available: IF[PW]|=IF[0]
[0168] Otherwise, if only mv0r is available: IF[PW]|=IF[1]
[0169] In the second variant referred to herein as variant or embodiment 2.4 (or emb-2.4):
[0170] If both mv0r and mv1r are available: IF[PW]|=IF[0]
[0171] Otherwise, if only mv0r is available: IF[PW]|=IF[0]
[0172] Otherwise, if only mv1r is available: IF[PW]|=IF[1]
[0173] Figure 22 illustrates an example of an embodiment based on emb-0 and emb-2, and is generally referred to herein as Embodiment-3 (or emb-3), which relates to the following. In Figure 22, if C0 (or C1) is a bidirectional prediction candidate, then (315) is included to be able to collect bidirectional prediction weights (also referred to as GBI or BPWA or BCW) associated with C0 (or C1), which are further used to derive IF[PW] in (320). In the following, let us denote the bidirectional prediction weights associated with C0 as gbiW[0][r=0] and gbiW[0][r=1], and the bidirectional prediction weights associated with C1 as gbiW[1][r=0] and gbiW[1][r=1], respectively. If C0 (or C1) is unidirectional, then gbiW[0][r=0] and gbiW[0][r=1] (or gbiW[1][r=0] and gbiW[1][r=1]) are considered to be equal weights.
[0174] In the example of the first variant of emb-3, referred to herein as variant or embodiment 3.1 (or emb-3.1), in (315), the value gbiW[PW][r] (r=0,1) is derived as follows:
[0175] If mv0r and mv1r are available:
[0176] gbiW[PW][r] = maximum value(abs(gbiW[0][r]); abs(gbiW[1][r]))
[0177] If (abs(gbiW[0][r])>abs(gbiW[1][r]))IF[PW][r]=IF[0]
[0178] Otherwise, if (abs(gbiW[0][r]) <abs(gbiW[1][r]))IF[PW][r]=IF[1]
[0179] Otherwise IF[PW][r]=(IF[0]||IF[1])
[0180] Otherwise, if only mv0r is available: gbiW[PW][r] = abs(gbiW[0][r]) and IF[PW][r] = IF[0]
[0181] Otherwise, if only mv1r is available: gbiW[PW][r] = abs(gbiW[1][r]) and IF[PW][r] = IF[1]
[0182] Otherwise, gbiW[PW][r] = 0 and IF[PW][r] = default value
[0183] In variant 3.1, (320) is modified as follows:
[0184] If (gbiW[PW][0]>gbiW[PW][1]):IF[PW]=IF[PW][0]
[0185] Otherwise, if (gbiW[PW][0]) <gbiW[PW][1]):IF[PW]=IF[PW][1]
[0186] Otherwise: IF[PW] = (IF[PW][0] == IF[PW][1]) ? IF[PW][0]: IF - default value
[0187] In the example of the second variant of emb-3, referred to herein as variant or embodiment 3.2 (or emb-3.2),
[0188] (320) is revised as follows:
[0189] If (gbiW[PW][0]>gbiW[PW][1]):IF[PW]=IF[PW][0]
[0190] Otherwise, if (gbiW[PW][0]) <gbiW[PW][1]):IF[PW]=IF[PW][1]
[0191] If IF[PW] = (IF[PW][0] == IF[PW][1]) ? IF[PW][0]: IF - default value
[0192] In the example of the third variant of emb-3, referred to herein as variant or embodiment 3.3 (or emb-3.3), the following applies:
[0193] If (gbiW[PW][0]>gbiW[PW][1]):IF[PW]=IF[PW][0]
[0194] Otherwise, if (gbiW[PW][0]) <gbiW[PW][1]):IF[PW]=IF[PW][1]
[0195] Otherwise: IF[PW]=(IF[PW][0]||IF[PW][1])
[0196] In the example of the fourth variant of eMB-3, referred to herein as variant or embodiment 3.4 (or eMB-3.4), it relates to the following
[0197] IF[PW]|=(IF[PW][0]||IF[PW][1])
[0198] Examples of embodiments commonly referred to herein as Embodiment 4 (or emb-4) are described below. In the case where the “pairwise average” candidate is a bidirectional prediction, the IF-index value for motion compensation of L0 (or L1) is IF[PW][0] (or the corresponding IF[PW][1]). The stored value (340) is IF[PW] as calculated in emb-1, emb-2, or emb-3.
[0199] Based on the current version (draft 6) of the VVC standard, examples of various embodiments of the syntax used to implement the examples and variations described herein are shown below, where the insertion of text indicated by gray shading (e.g., And to delete text indicated by gray shading and strikethrough (e.g., ).
[0200] Regarding embodiments 0, 1, and 2 (emb-0, emb-1, emb-2) and related variants, examples of modifications to paragraphs in the current version of the VVC standard are provided below. The values IF[0] and IF[1] correspond to hpelIfIdxp0Cand and hpelIfIdxp1Cand. Candidate avgCand is added to the end of mergeCandList (i.e., mergeCandList[numCurrMergeCand] is set to be equal to avgCand), and the derivation of the reference index, prediction list utilization flag, and motion vector of avgCand is as follows, with numCurrMergeCand incremented by 1.
[0201] Regarding the example of Embodiment 1, variant 1.1 (i.e., emb-1.1), in Figure 9 Or at (300) in 10:
[0202]
[0203] Regarding the example of Embodiment 1, variant 1.3 (i.e., emb-1.3), in Figure 9 Or at (300) in 10:
[0204]
[0205] – For each list of reference images LX, where X ranges from 0 to (NumRefLists-1), the following applies:
[0206] –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:
[0207] refIdxLXavgCand=refIdxLXp0Cand (8-347)
[0208] predFlagLXavgCand=1 (8-348)
[0209] For the example of Embodiment 2, variant 2.1 (i.e., emb-2.1):
[0210]
[0211] For the example of Embodiment 2, Variant 2.4 (i.e., emb-2.4):
[0212]
[0213] – Call the motion vector rounding process specified in Clause 8.5.2.14, setting mvX to equal mvLXp0Cand[0]+mvLXp1Cand[0], rightShift to equal 1 and leftShift to equal 0 as input, and the rounded mvLXavgCand[0] as output.
[0214] – Call the motion vector rounding process specified in Clause 8.5.2.14, set mvX to equal mvLXp0Cand[1]+mvLXp1Cand[1], set rightShift to equal 1 and leftShift to equal 0 as input, and set the rounded mvLXavgCand[1] as output.
[0215] 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:
[0216] refIdxLXavgCand=refIdxLXp0Cand (8-349)
[0217] predFlagLXavgCand=1 (8-350)
[0218] mvLXavgCand[0]=mvLXp0Cand[0] (8-351)
[0219] mvLXavgCand[1]=mvLXp0Cand[1] (8-352)
[0220] For the example of Embodiment 2, variant 2.1 (i.e., emb-2.1):
[0221]
[0222] 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:
[0223] refIdxLXavgCand=refIdxLXp1Cand (8-353)
[0224] predFlagLXavgCand=1 (8-354)
[0225] mvLXavgCand[0]=mvLXp1Cand[0] (8-355)
[0226] mvLXavgCand[1]=mvLXp1Cand[1] (8-356)
[0227] For the example of Embodiment 2, variant 2.1 (i.e., emb-2.1):
[0228]
[0229] 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:
[0230] refIdxLXavgCand=-1 (8-357)
[0231] predFlagLXavgCand=0 (8-358)
[0232] mvLXavgCand[0]=0 (8-359)
[0233] mvLXavgCand[1]=0 (8-360)
[0234] – When numRefLists equals 1, the following applies:
[0235] refIdxL1avgCand=-1 (8-361)
[0236] predFlagL1avgCand=0 (8-362)
[0237]
[0238] Examples for embodiments 0, 3, and 4 (i.e., emb-0, emb-3, and emb-4):
[0239] In the following:
[0240] The value “IF[PW][r],r=0,1” corresponds to hpelIfIdxavgCandX,X=0,1;
[0241] The value gbiW[0][r=0,1] corresponds to bcwW0X,X=0,1;
[0242] The value gbiW[1][r=0,1] corresponds to bcwW1X,X=0,1;
[0243] The value gbiW[PW][r=0,1] corresponds to bcwWavgX,X=0,1;
[0244] The value IF[PW] corresponds to hpelIfIdxavgCand.
[0245] The candidate avgCand is added to the end of mergeCandList (i.e., mergeCandList[numCurrMergeCand] is set to be equal to avgCand), and the derivation of the reference index, prediction list using flags, and motion vector of avgCand is as follows, with numCurrMergeCand incremented by 1:
[0246] – For each list of reference images LX, where X ranges from 0 to (NumRefLists-1), the following applies:
[0247] For the example of Embodiment 3, variant 3.1 (i.e., emb-3.1):
[0248] –If predFlagLXp0Cand is equal to 1 and predFlagLXp1Cand is equal to 1, the variable The derivations of efIdxLXavgCand, predFlagLXavgCand, mvLXavgCand[0], and mvLXavgCand[1] are as follows:
[0249] refIdxLXavgCand=refIdxLXp0Cand (8-347)
[0250] predFlagLXavgCand=1 (8-348)
[0251]
[0252] – Call the motion vector rounding process specified in Clause 8.5.2.14, setting mvX to equal mvLXp0Cand[0]+mvLXp1Cand[0], rightShift to equal 1 and leftShift to equal 0 as input, and the rounded mvLXavgCand[0] as output.
[0253] – Call the motion vector rounding process specified in Clause 8.5.2.14, setting mvX to equal mvLXp0Cand[1]+mvLXp1Cand[1], rightShift to equal 1, and leftShift to equal 0 as inputs, and the rounded mvLXavgCand[1] as output. – Otherwise, if predFlagLXp0Cand is equal to 1 and predFlagLXp1Cand is equal to 0, the variable The derivations of refIdxLXavgCand, predFlagLXavgCand, mvLXavgCand[0] and mvLXavgCand[1] are as follows:
[0254] refIdxLXavgCand=refIdxLXp0Cand (8-349)
[0255] predFlagLXavgCand=1 (8-350)
[0256]
[0257] mvLXavgCand[0]=mvLXp0Cand[0] (8-351)
[0258] mvLXavgCand[1]=mvLXp0Cand[1] (8-352)
[0259] Otherwise, if predFlagLXp0Cand is equal to 0 and predFlagLXp1Cand is equal to 1, the variable... The derivations of refIdxLXavgCand, predFlagLXavgCand, mvLXavgCand[0], and mvLXavgCand[1] are as follows:
[0260] refIdxLXavgCand=refIdxLXp1Cand (8-353)
[0261] predFlagLXavgCand=1 (8-354)
[0262] (in (315))
[0263]
[0264] mvLXavgCand[0]=mvLXp1Cand[0] (8-355)
[0265] mvLXavgCand[1]=mvLXp1Cand[1] (8-356)
[0266] Otherwise, if predFlagLXp0Cand is equal to 0 and predFlagLXp1Cand is equal to 0, the variable... The derivations of refIdxLXavgCand, predFlagLXavgCand, mvLXavgCand[0], and mvLXavgCand[1] are as follows:
[0267] refIdxLXavgCand=-1 (8-357)
[0268] predFlagLXavgCand=0 (8-358)
[0269]
[0270] mvLXavgCand[0]=0 (8-359)
[0271] mvLXavgCand[1]=0 (8-360)
[0272] – When numRefLists equals 1, the following applies:
[0273] refIdxL1avgCand=-1 (8-361)
[0274] predFlagL1avgCand=0 (8-362)
[0275] The derivation of the half-sample interpolation filter index hpelIfIdxavgCand is as follows:
[0276]
[0277] For the example of Embodiment 3, variant 3.1 (i.e., emb-3.1):
[0278]
[0279] Various examples of embodiments (including tools, features, models, methods, etc.) are described herein and include, but are not limited to:
[0280] - Derive the interpolation filter index in the case of pairwise candidate merging;
[0281] - For the "pairwise average" candidate derivation interpolation filter index value (i.e., IF[PW]), such that even if the interpolation filter index for candidate 0 (i.e., the specified IF[C0] or IF[0]) or the intrinsic filter index for candidate 1 (i.e., the specified IF[C1] or IF[1]) is equal to the default value, IF[PW] can also be equal to a non-default value.
[0282] - Derive the equation for the IF[PW] value as the reference index value (i.e. the specified "idx") for candidates C0 and C1 (idx-00, idx-01, idx-10, idx-10);
[0283] - Derive the value of IF[PW], where the derivation includes initializing IF[PW] to the maximum value of IF[0] and IF[1];
[0284] - Derive the value of IF[PW], where the derivation includes initializing IF[PW] to its default value;
[0285] - Derive the value of IF[PW], wherein the derivation includes initializing IF[PW] to the value of IF[0] if IF[0] equals IF[1], otherwise initializing IF[PW] to the default value;
[0286] - Derive the value of IF[PW], wherein the derivation includes initializing IF[PW] to one of the following:
[0287] The maximum value of IF[0] and IF[1]; or
[0288] ○ Default value; or
[0289] If IF[0] equals IF[1], then IF[0] is initialized to its default value; otherwise, IF[PW] is initialized to its default value.
[0290] - Derive the IF[PW] value, where the derivation includes:
[0291] ○ Initialize IF[PW] according to any of the methods described above; and
[0292] Based on the availability of motion vectors mv0r and mv1r, determine the intermediate value IF[PW][r], r = 0, 1, where:
[0293] ■If both mv0r and mv1r are available: IF[PW][r]=IF[0]
[0294] ■ Otherwise, if only mv0r is available: IF[PW][r]=IF[0]
[0295] ■ Otherwise, if only mv1r is available: IF[PW][r]=IF[1]
[0296] ■ Otherwise, IF[PW][r] = IF[PW]
[0297] ○ Update IF[PW] based on IF[PW][r];
[0298] - The derivation of the IF[PW] value as described above, where updating IF[PW] based on IF[PW][r] includes setting IF[PW] to the maximum of IF[PW][0] and IF[PW][1];
[0299] - As described above, the IF[PW] value is derived, where updating IF[PW] based on IF[PW][r] includes setting IF[PW] to IF[PW][0] if IF[PW][0] equals IF[PW][1]; otherwise, setting IF[PW] to the default value.
[0300] - The derivation of the IF[PW] value as described above, where updating IF[PW] based on IF[PW][r] includes setting IF[PW] based on the availability of motion vectors mv0r and mv1r, for example:
[0301] ○ If both mv0r and mv1r are available: IF[PW] = (IF[PW][0] || IF[PW][1])
[0302] Otherwise, if only mv0r is available: IF[PW]|=IF[0]
[0303] Otherwise, if only mv1r is available: IF[PW]|=IF[1]
[0304] - The derivation of the IF[PW] value as described above, where updating IF[PW] based on IF[PW][r] includes setting IF[PW] based on the availability of motion vectors mv0r and mv1r, for example:
[0305] ○If both mv0r and mv1r are available: IF[PW] = IF[0]
[0306] Otherwise, if only mv0r is available: IF[PW]|=IF[0]
[0307] Otherwise, if only mv1r is available: IF[PW]|=IF[1]
[0308] - As described above, the IF[PW] value is derived, where:
[0309] ○ After determining the intermediate value IF[PW][r]
[0310] ■ If candidate 0 is a bidirectional prediction candidate, then determine the bidirectional prediction weights associated with candidate 0 (e.g., gbiW[0][r], r = 0, 1) and / or if candidate 1 is a bidirectional prediction candidate, then determine the bidirectional prediction weights associated with candidate 1 (e.g., gbiW[0][r], r = 0, 1); and
[0311] ○ The update of IF[PW] is further based on the bidirectional prediction weights, wherein determining the bidirectional prediction weights and updating IF[PW] based on the bidirectional prediction weights is based on the availability of motion vectors mv0r and mv1r in the embodiment emb-3.1 described herein;
[0312] - The IF[PW] value is derived based on bidirectional prediction weights as described above, wherein the updated IF[PW] is based on embodiment emb-3.2 as described herein;
[0313] - The IF[PW] value is derived based on bidirectional prediction weights as described above, wherein the updated IF[PW] is based on the embodiment emb-3.3 as described herein;
[0314] - As described above, the IF[PW] value is derived based on bidirectional prediction weights, where updating IF[PW] includes setting IF[PW] to the maximum value of IF[PW][0] or IF[PW][1].
[0315] - As described above, the IF[PW] value is derived based on bidirectional prediction weights, where
[0316] ○ The IF-index value used for motion compensation in L0 (or L1) is IF[PW][0] (or the corresponding IF[PW][1]), and its value is...
[0317] ○ The derivation further includes storing the IF[PW] value determined according to any of the embodiments described herein;
[0318] - Provide video encoding and / or decoding according to any embodiment described herein in the form of a method, apparatus, device, computer program product, bitstream, or any combination thereof for implementing any embodiment described herein.
[0319] Figure 23 Another example based on the embodiments described above is shown. Figure 23 In step 1810, methods for deriving inter-frame prediction parameters are provided. The derivation of inter-frame prediction parameters is based on first and second merge candidates used to generate pairwise merge candidates. Inter-frame prediction parameters may include at least one of an index for weighted prediction or an interpolation filter index. For example, inter-frame prediction parameters may be parameters other than motion vector information, or parameters other than a reference image index. The index for weighted bidirectional prediction (also referred to as the index for weighted bidirectional prediction) may, for example, be a GBi index as described herein. The interpolation filter index may, for example, be an index such as IF[PW] as described herein. Then, in step 1820, at least a portion of the image information is encoded or decoded based on the inter-frame prediction parameters.
[0320] This document describes various examples of embodiments, features, models, methods, etc. Many of these examples are specific descriptions and at least demonstrate individual characteristics, often described in a manner that may appear restrictive. However, for the purpose of clarification, they do not limit the application or scope of those aspects. In fact, all the different aspects can be combined and interchanged to provide further aspects. Furthermore, embodiments, features, etc., can also be combined and interchanged with other content described in earlier documents.
[0321] In general, the examples of the embodiments described and considered herein can be implemented in many different forms. Figure 1 , Figure 2 and Figure 24 Some examples of embodiments have been provided, but other embodiments may be considered, and Figure 1 , Figure 2 and Figure 24 The discussion does not limit the breadth of implementations. At least one aspect of one or more examples of the embodiments described herein relates generally to video encoding and decoding, and at least one other aspect relates generally to transmitting a generated or encoded bitstream. These and other aspects can be implemented in various embodiments, such as methods, apparatuses, computer-readable storage media having instructions thereon stored thereon for encoding or decoding video data according to any of the described methods, and / or computer-readable storage media having a bitstream generated according to any of the described methods stored thereon.
[0322] This document describes various methods, and each method includes one or more steps or actions for implementing the described method. Unless proper operation of the method requires a specific order of steps or actions, the order and / or use of specific steps and / or actions may be modified or combined.
[0323] The various methods and other aspects described in this application can be used to modify the module, for example, including Figure 1 The example of video encoder embodiment 100 shown includes modules 102 and 170, as well as modules including... Figure 2 Modules 230 and 275 are shown in the example of the video decoder embodiment 200. Furthermore, the various embodiments, features, etc., described herein are not limited to VVC or HEVC and can be applied to, for example, other standards and recommendations (whether previously existing or future developments) and any extensions of such standards and recommendations (including VVC and HEVC). Unless otherwise specified or technically excluded, the aspects described in this application may be used alone or in combination.
[0324] Various numerical values are used in this application, such as the size of the maximum quantization matrix and the number of block sizes considered. These specific values are for illustrative purposes only, and the aspects described are not limited to these specific values.
[0325] Figure 24 A block diagram illustrating an example system implementing various aspects and embodiments is shown. System 1000 may be embodied as a device including the various components described below and configured to perform one or more aspects of the aspects described in this application. Examples of such devices include, but are not limited to, various electronic devices such as personal computers, laptop computers, smartphones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected home appliances, encoders, transcoders, and servers. Elements of system 1000 may be embodied individually or in combination in a single integrated circuit, multiple ICs, and / or discrete components. For example, in at least one embodiment, the processing and encoder / decoder elements of system 1000 are distributed across multiple ICs and / or discrete components. In various embodiments, system 1000 is communicatively coupled to other similar systems or other electronic devices via, for example, a communication bus or through dedicated input and / or output ports. In various embodiments, system 1000 is configured to implement one or more aspects of the aspects described in this document.
[0326] System 1000 includes at least one processor 1010 configured to execute instructions loaded thereon for implementing various aspects, such as those described in this document. Processor 1010 may include embedded memory, input / output interfaces, and various other circuitry known in the art. System 1000 includes at least one memory 1020 (e.g., a volatile memory device and / or a non-volatile memory device). System 1000 includes a storage device 1040, which may include non-volatile memory and / or volatile memory, including but not limited to EEPROM, ROM, PROM, RAM, DRAM, SRAM, flash memory, disk drives, and / or optical disk drives. As a non-limiting example, storage device 1040 may include internal storage devices, attached storage devices, and / or network-accessible storage devices.
[0327] System 1000 includes an encoder / decoder module 1030 configured to, for example, process data to provide encoded or decoded video, and the encoder / decoder module 1030 may include its own processor and memory. The encoder / decoder module 1030 represents a module that can be included in a device to perform encoding and / or decoding functions. It is well known that a device may include one or both encoding and decoding modules. Furthermore, the encoder / decoder module 1030 may be implemented as a separate element of system 1000, or it may be incorporated into processor 1010 as a combination of hardware and software known to those skilled in the art.
[0328] Program code to be loaded onto processor 1010 or encoder / decoder 1030 to execute the various aspects described in this document may be stored in storage device 1040 and subsequently loaded onto memory 1020 for execution by processor 1010. According to various embodiments, one or more of processor 1010, memory 1020, storage device 1040, and encoder / decoder module 1030 may store one or more of various items during the execution of the processes described in this document. Such stored items may include, but are not limited to, input video, decoded video or portions of decoded video, bitstreams, matrices, variables, and intermediate or final results from the processing of equations, formulas, operations, and operational logic.
[0329] In several embodiments, the memory within processor 1010 and / or encoder / decoder module 1030 is used to store instructions and provide working memory for processing required during encoding or decoding. However, in other embodiments, external memory (e.g., processor 1010 or encoder / decoder module 1030) is used for one or more of these functions. External memory may be memory 1020 and / or storage device 1040, such as volatile memory and / or non-volatile memory. In several embodiments, external non-volatile flash memory is used to store the television's operating system. In at least one embodiment, a fast external dynamic volatile memory, such as RAM, is used as working memory for video encoding and decoding operations, such as for MPEG-2 (MPEG stands for Moving Picture Experts Group, MPEG-2 also refers to ISO / IEC 13818, while 13818-1 is also called H.222, and 13818-2 is also called H.262), HEVC (HEVC stands for High Efficiency Video Codec, also called H.265 and MPEG-H Part 2), or VVC (Universal Video Codec, a new standard being developed by JVET (Joint Video Exploration Group)).
[0330] Inputs to the components of system 1000 can be provided through various input devices, as shown in block 1130. Such input devices include, but are not limited to, (i) radio frequency (RF) portions that receive, for example, RF signals transmitted over the air by a broadcaster, (ii) component input terminals (or sets of COMP input terminals), (iii) universal serial bus (USB) input terminals, and / or (iv) high-definition multimedia interface (HDMI) input terminals. Figure 24 Other examples not shown include composite video.
[0331] In various embodiments, the input device of block 1130 has associated corresponding input processing elements, as known in the art. For example, the RF section may be associated with elements suitable for: (i) selecting a desired frequency (also known as selecting a signal, or limiting a signal band to one band), (ii) down-converting the selected signal, (iii) band-limiting the signal again to a narrower band to select (e.g.,) a signal band that may be referred to as a channel in some embodiments), (iv) demodulating the down-converted and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select a desired data packet stream. The RF section of various embodiments includes one or more elements performing these functions, such as frequency selectors, signal selectors, band limiters, channel selectors, filters, down-converters, demodulators, error correctors, and demultiplexers. The RF section may include tuners performing various of these functions, including, for example, down-converting a received signal to a lower frequency (e.g., intermediate frequency or near-baseband frequency) or baseband. In one set-top box embodiment, the RF section and its associated input processing elements receive RF signals transmitted over a wired (e.g., cable) medium and perform frequency selection by filtering, down-converting, and re-filtering to a desired frequency band. Various embodiments rearrange the order of the aforementioned (and other) components, remove some of these components, and / or add other components that perform similar or different functions. Adding components may include inserting components between existing components, such as inserting amplifiers and analog-to-digital converters. In various embodiments, the RF section includes an antenna.
[0332] Furthermore, the USB and / or HDMI terminals may include corresponding interface processors for connecting the system 1000 to other electronic devices across USB and / or HDMI connections. It should be understood that various aspects of input processing (e.g., Reed-Solomon error correction) may be implemented as needed, for example, within a separate input processing IC or within the processor 1010. Similarly, various aspects of USB or HDMI interface processing may be implemented as needed, either within a separate interface IC or within the processor 1010. The demodulated, error-corrected, and demultiplexed streams are provided to various processing elements, including, for example, the processor 1010, and an encoder / decoder 1030 operating in conjunction with memory and storage elements, to process the data streams as needed for presentation on the output device.
[0333] Various components of system 1000 can be provided within an integrated housing. Within the integrated housing, various components can be interconnected and data can be transferred between them using a suitable connection arrangement 1140 (e.g., internal buses known in the art, including I2C buses, wiring, and printed circuit boards).
[0334] System 1000 includes a communication interface 1050, which enables communication with other devices via a communication channel 1060. The communication interface 1050 may include, but is not limited to, a transceiver configured to transmit and receive data via the communication channel 1060. The communication interface 1050 may include, but is not limited to, a modem or network interface card (NIC), and the communication channel 1060 may be implemented, for example, within a wired and / or wireless medium.
[0335] In various embodiments, a Wi-Fi network such as IEEE 802.11 (IEEE refers to the Institute of Electrical and Electronics Engineers) is used to transmit data streams (or otherwise provide) to system 1000. In these embodiments, the Wi-Fi signal is received on a communication channel 1060 and a communication interface 1050 suitable for Wi-Fi communication. The communication channel 1060 in these embodiments is typically connected to an access point or router that provides access to external networks, including the Internet, to allow streaming applications and other over-the-air communications. Other embodiments use a set-top box to provide streaming data to system 1000, delivering data via an HDMI connection to input block 1130. Still other embodiments use an RF connection to input block 1130 to provide streaming data to system 1000. As indicated above, various embodiments provide data in a non-streaming manner. Additionally, various embodiments use networks other than Wi-Fi, such as cellular networks or Bluetooth networks.
[0336] System 1000 can provide output signals to various output devices, including display 1100, speaker 1110, and other peripheral devices 1120. Display 1100 can be used in televisions, tablets, laptops, mobile phones, or other devices. Display 1100 can also be integrated with other components (e.g., in a smartphone) or separate (e.g., an external monitor for a laptop). In various examples of embodiments, other peripheral devices 1120 include one or more of a standalone DVR, a disc player, a stereo system, and a lighting system. Various embodiments use one or more peripheral devices 1120 that provide functionality based on the output of system 1000. For example, a disc player performs the function of playing the output of system 1000.
[0337] In various embodiments, control signals are transmitted between system 1000 and display 1100, speaker 1110, or other peripheral devices 1120, with or without user intervention, using signaling such as AV.Link, CEC, or other communication protocols enabling device-to-device control. Output devices may be communicatively coupled to system 1000 via dedicated connections through corresponding interfaces 1070, 1080, and 1090. Alternatively, output devices may be connected to system 1000 via communication interface 1050 using communication channel 1060. In electronic devices (e.g., televisions), display 1100 and speaker 1110 may be integrated with other components of system 1000 into a single unit. In various embodiments, display interface 1070 includes a display driver, such as a timing controller (TCon) chip.
[0338] For example, if the RF section of input 1130 is part of a separate set-top box, then display 1100 and speaker 1110 can alternatively be separate from one or more of the other components. In various embodiments where display 1100 and speaker 1110 are external components, the output signal can be provided via a dedicated output connection including, for example, an HDMI port, a USB port, or a COMP output.
[0339] The embodiments can be implemented by computer software implemented by processor 1010, or by hardware, or by a combination of hardware and software. As a non-limiting example, the embodiments can be implemented by one or more integrated circuits. As a non-limiting example, memory 1020 can be of any type suitable for the technical environment and can be implemented using any suitable data storage technology, such as optical storage devices, magnetic storage devices, semiconductor-based storage devices, fixed memory, and removable memory. As a non-limiting example, processor 1010 can be of any type suitable for the technical environment and can include one or more of microprocessors, general-purpose computers, special-purpose computers, and processors based on multi-core architectures.
[0340] Various broad and specific embodiments are supported and contemplated throughout this disclosure. Examples of embodiments according to this disclosure include, but are not limited to, the following.
[0341] At least one example of the embodiments described herein relates to a method for encoding image information, comprising: deriving inter-frame prediction parameters based on first and second merge candidates for generating pairwise merge candidates, wherein the inter-frame prediction parameters include at least one of an index for weighted bidirectional prediction or an interpolation filter index; and encoding at least a portion of the image information based on the inter-frame prediction parameters.
[0342] At least one example of the embodiments described herein relates to a method for decoding image information, comprising: deriving inter-frame prediction parameters based on first and second merge candidates for generating pairwise merge candidates, wherein the inter-frame prediction parameters include at least one of an index for weighted bidirectional prediction or an interpolation filter index; and decoding at least a portion of the image information based on the inter-frame prediction parameters.
[0343] At least one example of the embodiments described herein relates to an apparatus for encoding image information, comprising: one or more processors configured to derive inter-frame prediction parameters based on first and second merge candidates for generating pairwise merge candidates, wherein the inter-frame prediction parameters include at least one of an index for weighted bidirectional prediction or an interpolation filter index; and to encode at least a portion of the image information based on the inter-frame prediction parameters.
[0344] At least one example of the embodiments described herein relates to an apparatus for decoding image information, comprising: deriving inter-frame prediction parameters based on first and second merge candidates for generating pairwise merge candidates, wherein the inter-frame prediction parameters include at least one of an index for weighted bidirectional prediction or an interpolation filter index; and decoding at least a portion of the image information based on the inter-frame prediction parameters.
[0345] At least one example of the embodiments described herein relates to a method for encoding image information, comprising: deriving inter-frame prediction parameters other than motion vector information and a reference image index based on first and second merge candidates for generating pairwise merge candidates, wherein the inter-frame prediction parameters include at least one of an index for weighted bidirectional prediction or an interpolation filter index; and encoding at least a portion of the image information based on the inter-frame prediction parameters.
[0346] At least one example of the embodiments described herein relates to a method for decoding image information, comprising: deriving inter-frame prediction parameters other than motion vector information and a reference image index based on first and second merge candidates for generating pairwise merge candidates, wherein the inter-frame prediction parameters include at least one of an index for weighted bidirectional prediction or an interpolation filter index; and decoding at least a portion of the image information based on the inter-frame prediction parameters.
[0347] At least one example of the embodiments described herein relates to an apparatus for encoding image information, comprising: one or more processors configured to derive inter-frame prediction parameters, other than motion vector information and a reference image index, based on first and second merge candidates for generating pairwise merge candidates, wherein the inter-frame prediction parameters include at least one of an index for weighted bidirectional prediction or an interpolation filter index; and to encode at least a portion of the image information based on the inter-frame prediction parameters.
[0348] At least one example of the embodiments described herein relates to an apparatus for decoding image information, comprising: one or more processors configured to derive inter-frame prediction parameters, other than motion vector information and a reference image index, based on first and second merge candidates for generating pairwise merge candidates, wherein the inter-frame prediction parameters include at least one of an index for weighted bidirectional prediction or an interpolation filter index; and to decode at least a portion of the image information based on the inter-frame prediction parameters.
[0349] At least one example of the embodiments described herein relates to a method or apparatus, wherein the index for weighted bidirectional prediction includes a bidirectional prediction index associated with bidirectional prediction weights, the first and second merge candidates have the same bidirectional prediction index, and the pairwise merge candidates have the bidirectional prediction weights.
[0350] At least one example of the embodiments described herein relates to a method or apparatus in which the index for weighted bidirectional prediction includes a bidirectional prediction index associated with bidirectional prediction weights, only one of the first and second merge candidates is a bidirectional candidate, and a default value of the bidirectional prediction index is assigned to the pairwise merge candidate.
[0351] At least one example of the embodiments described herein relates to a method or apparatus in which the index for weighted bidirectional prediction includes a bidirectional prediction index associated with bidirectional prediction weights, only one of the first and second merge candidates is a bidirectional candidate, and the value of the bidirectional prediction index associated with the bidirectional candidate is assigned to the pairwise merge candidate.
[0352] At least one example of the embodiments described herein relates to a method in which the index for weighted bidirectional prediction includes a bidirectional prediction index associated with bidirectional prediction weights, the first and second merge candidates are unidirectional types associated with corresponding first and second reference image lists, and deriving the inter-frame prediction parameters includes generating a combined bidirectional merge candidate based on the first and second unidirectional merge candidates and assigning default bidirectional prediction weights to the combined bidirectional merge candidate.
[0353] At least one example of the embodiments described herein relates to a device in which the index for weighted bidirectional prediction includes a bidirectional prediction index associated with bidirectional prediction weights, the first and second merge candidates are unidirectional types associated with corresponding first and second reference image lists, and the one or more processors are configured to derive the inter-frame prediction parameters including generating a combined bidirectional merge candidate based on the first and second unidirectional merge candidates and assigning default bidirectional prediction weights to the combined bidirectional merge candidate.
[0354] At least one example of the embodiments described herein relates to a method or apparatus in which the index for weighted bidirectional prediction includes a bidirectional prediction index associated with bidirectional prediction weights assigned to pairwise merge candidates of the combination, such that a higher weight value is associated with an inter-frame prediction direction in which the bidirectional merge candidates of the combination point to a reference image having a closer temporal distance to the current image.
[0355] At least one example of the embodiments described herein relates to a method or apparatus, wherein the index for weighted bidirectional prediction includes a bidirectional prediction index associated with bidirectional prediction weights, the first and second merge candidates are bidirectional types having corresponding first and second different bidirectional prediction weights, and the average of the first and second weights is assigned to the pairwise merge candidates.
[0356] At least one example of the embodiments described herein relates to a method or apparatus in which the average of the first and second weights is rounded to the nearest value of equal weights or a value deviating from the equal weights.
[0357] At least one example of the embodiments described herein relates to a method in which the index for weighted bidirectional prediction includes a bidirectional prediction index associated with bidirectional prediction weights, the first and second merge candidates are bidirectional types having corresponding first and second weights, and the method further includes determining the pairwise merge candidates only if the first and second weights are equal.
[0358] At least one example of the embodiments described herein relates to a device in which the index for weighted bidirectional prediction includes a bidirectional prediction index associated with bidirectional prediction weights, the first and second merge candidates are bidirectional types with corresponding first and second weights, and the one or more processors are configured to determine the pairwise merge candidates only if the first and second weights are equal.
[0359] At least one example of the embodiments described herein relates to a method in which deriving the inter-frame prediction parameters includes searching among a plurality of merge candidates for the first and second merge candidates, which include a one-way merge candidate and a two-way merge candidate or two two-way merge candidates with equal weights.
[0360] At least one example of the embodiments described herein relates to an apparatus in which the one or more processors configured to derive the inter-frame prediction parameters include the one or more processors further configured to search among a plurality of merging candidates for the first and second merging candidates, including a one-way merging candidate and a two-way merging candidate or two two-way merging candidates with equal weights.
[0361] At least one example of the embodiments described herein relates to a method or apparatus in which the bidirectional prediction weights include generalized bidirectional prediction (GBi) weights, bidirectional prediction with weighted average (BPWA) weights, or bidirectional prediction with CU weights (BiCW).
[0362] At least one example of the embodiments described herein relates to a method in which the inter-frame prediction parameters include the interpolation filter index, and deriving the inter-frame prediction parameters includes initializing the interpolation filter index to one of the following: the maximum value of a first interpolation filter index associated with a first merge candidate and a second interpolation filter index associated with a second merge candidate, or a default interpolation filter index, or the first interpolation filter index if the first and second interpolation filter indices are equal, otherwise the default interpolation filter index.
[0363] At least one example of the embodiments described herein relates to an apparatus in which the inter-frame prediction parameters include the interpolation filter index, and the one or more processors configured to derive the inter-frame prediction parameters include the one or more processors configured to initialize the interpolation filter index to one of the following: the maximum value of a first interpolation filter index associated with a first merge candidate and a second interpolation filter index associated with a second merge candidate, or a default interpolation filter index, or the first interpolation filter index if the first and second interpolation filter indices are equal, otherwise the default interpolation filter index.
[0364] At least one example of the embodiments described herein relates to a method wherein the inter-frame prediction parameters include the interpolation filter index, and derives the inter-frame prediction parameters including determining corresponding first and second intermediate values of the first interpolation filter index associated with the first merging candidate and the second interpolation filter index associated with the second merging candidate based on first availability of first and second motion vectors associated with the first merging candidate and third and fourth motion vectors associated with the second merging candidate, and updates the interpolation filter index based on the first and second intermediate values to one of: the maximum value of the first and second intermediate values, or the first intermediate value if the first and second intermediate values are equal, otherwise the default interpolation filter index, or a value based on the second availability of the first, second, third, and fourth motion vectors.
[0365] At least one example of the embodiments described herein relates to a method in which determining the first and second intermediate values based on the first availability includes, if the first, second, third, and fourth motion vectors are available, then the first and second intermediate values are equal to the interpolation filter index associated with the first merge candidate; or if only the first and second motion vectors are available, then the first and second intermediate values are equal to the interpolation filter index associated with the first merge candidate; or if only the third and fourth motion vectors are available, then the first and second intermediate values are equal to the interpolation filter index associated with the second merge candidate; or otherwise, the first and second intermediate values are equal to the interpolation index associated with the pairwise merge candidates.
[0366] At least one example of the embodiments described herein relates to a method in which updating the interpolation filter index based on the first and second intermediate values to a value of the second availability based on the first, second, third, and fourth motion vectors includes updating the interpolation filter index to the maximum value of the first and second intermediate values if the first, second, third, and fourth motion vectors are available, or updating the interpolation filter index to the interpolation filter index associated with the first merge candidate if only the first and second motion vectors are available, or updating the interpolation filter index to the interpolation filter index associated with the second merge candidate if only the third and fourth motion vectors are available.
[0367] At least one example of the embodiments described herein relates to a method in which updating the interpolation filter index based on the first and second intermediate values to a value based on the second availability of the first, second, third, and fourth motion vectors includes updating the interpolation filter index to the interpolation filter index associated with the first merge candidate if the first, second, third, and fourth motion vectors are available, or updating the interpolation filter index to the interpolation filter index associated with the first merge candidate if only the first and second motion vectors are available, or updating the interpolation filter index to the interpolation index associated with the second merge candidate if only the third and fourth motion vectors are available.
[0368] At least one example of the embodiments described herein relates to a device, wherein the inter-frame prediction parameters include the interpolation filter index, and the one or more processors configured to derive the inter-frame prediction parameters include processors configured to determine corresponding first and second intermediate values of the first interpolation filter index associated with the first merging candidate and the second interpolation filter index associated with the second merging candidate based on first availability of first and second motion vectors associated with the first merging candidate and third and fourth motion vectors associated with the second merging candidate, and to update the interpolation filter index based on the first and second intermediate values to one of the following: the maximum value of the first and second intermediate values, or the first intermediate value if the first and second intermediate values are equal, otherwise the default interpolation filter index, or the one or more processors based on the value of the second availability of the first, second, third, and fourth motion vectors.
[0369] At least one example of the embodiments described herein relates to an apparatus in which one or more processors configured to determine the first and second intermediate values based on the first availability include: if the first, second, third, and fourth motion vectors are available, the first and second intermediate values are equal to the interpolation filter index associated with the first merge candidate; or if only the first and second motion vectors are available, the first and second intermediate values are equal to the interpolation filter index associated with the first merge candidate; or if only the third and fourth motion vectors are available, the first and second intermediate values are equal to the interpolation filter index associated with the second merge candidate; or otherwise, the first and second intermediate values are equal to the interpolation index associated with the pairwise merge candidates.
[0370] At least one example of the embodiments described herein relates to an apparatus in which one or more processors configured to update the interpolation filter index to a value based on the second availability of the first, second, third, and fourth motion vectors based on the first and second intermediate values include being configured to update the interpolation filter index to the maximum value of the first and second intermediate values if the first, second, third, and fourth motion vectors are available, or to update the interpolation filter index to the interpolation filter index associated with the first merge candidate if only the first and second motion vectors are available, or to update the interpolation filter index to the interpolation filter index associated with the second merge candidate if only the third and fourth motion vectors are available.
[0371] At least one example of the embodiments described herein relates to an apparatus in which one or more processors configured to update the interpolation filter index to a value based on the second availability of the first, second, third, and fourth motion vectors based on the first and second intermediate values include being configured to update the interpolation filter index to the interpolation filter index associated with the first merge candidate if the first, second, third, and fourth motion vectors are available, or to update the interpolation filter index to the interpolation filter index associated with the first merge candidate if only the first and second motion vectors are available, or to update the interpolation filter index to the interpolation index associated with the second merge candidate if only the third and fourth motion vectors are available.
[0372] At least one example of the embodiments described herein relates to a method in which bidirectional prediction weights associated with the first and second merge candidates are determined before the interpolation filter index is updated, and the interpolation filter index is updated based on the bidirectional prediction weights.
[0373] At least one example of the embodiments described herein relates to an apparatus that further includes the one or more processors configured to determine bidirectional prediction weights associated with the first and second merge candidates, and to update the interpolation filter index based on the bidirectional prediction weights.
[0374] At least one example of the embodiments described herein relates to a computer program product including instructions that, when executed by a computer, cause the computer to perform a method according to any example of the embodiments described herein.
[0375] At least one example of the embodiments described herein relates to a non-transitory computer-readable medium storing executable program instructions to cause a computer executing the instructions to perform a method according to any example of the embodiments described herein.
[0376] At least one example of the embodiments described herein relates to a signal that includes data generated according to any example of the methods described herein.
[0377] At least one example of the embodiments described herein relates to a bitstream that is formatted to include syntax elements and encoded image information according to any example of the methods described herein.
[0378] At least one example of the embodiments described herein relates to a device comprising: means according to any example of the embodiments described herein; and at least one of (i) an antenna configured to receive a signal including data representing image information, (ii) a band limiter configured to limit the received signal to a frequency band including the data representing the image information, and (iii) a display configured to display an image from the image information.
[0379] At least one example of the embodiments described herein relates to a device including one of a television, a television signal receiver, a set-top box, a gateway device, a mobile device, a mobile phone, a tablet computer, or other electronic devices.
[0380] Various implementations involve decoding. As used herein, “decoding” can encompass all or part of a process performed, for example, on a received encoded sequence to produce a final output suitable for display. In various embodiments, such processing includes one or more of processes typically performed by a decoder, such as entropy decoding, inverse quantization, inverse transform, and differential decoding. In various embodiments, such processing may also, or optionally, include processing performed by a decoder of the various implementations described herein.
[0381] As a further example, in one embodiment "decoding" refers only to entropy decoding, in another embodiment "decoding" refers only to differential decoding, and in yet another embodiment "decoding" refers to a combination of entropy decoding and differential decoding. It will be apparent, and believed that those skilled in the art, whether the phrase "decoding processing" is intended to specifically refer to a subset of operations or to refer more broadly to a wider range of decoding processes, based on the context of the particular description.
[0382] Various implementations involve encoding. In a manner similar to the discussion above regarding “decoding,” as used in this application, “encoding” can encompass all or part of the processing performed on, for example, an input video sequence to produce an encoded bitstream. In various embodiments, this processing includes one or more processes typically performed by an encoder, such as segmentation, differential encoding / decoding, transform, quantization, and entropy coding.
[0383] As a further example, in one embodiment "decoding" refers only to entropy decoding, in another embodiment "decoding" refers only to differential decoding, and in yet another embodiment "decoding" refers to a combination of entropy decoding and differential decoding. It will be apparent, and believed that those skilled in the art, whether the phrase "decoding processing" is intended to specifically refer to a subset of operations or to refer more broadly to a wider range of decoding processes, based on the context of the particular description.
[0384] Note that the grammatical elements used in this article are descriptive terms. Therefore, the use of other grammatical element names is not excluded.
[0385] When a diagram is presented as a flowchart, it should be understood that it also provides a block diagram of the corresponding apparatus. Similarly, when a diagram is presented as a block diagram, it should be understood that it also provides a flowchart of the corresponding method / process.
[0386] Generally, the implementations and aspects described herein can be implemented, for example, as methods or processes, apparatus, software programs, data streams, or signals. Even if discussed only in the context of a single form of implementation (e.g., discussed only as a method), implementations of the discussed features can also be implemented in other forms (e.g., apparatus or program). Apparatus can be implemented, for example, with suitable hardware, software, and firmware. One or more examples of methods can be implemented, for example, in an apparatus, such as a processor, which generally refers to a processing device, including, for example, a computer, microprocessor, integrated circuit, or programmable logic device. Processors also include communication devices, such as computers, mobile phones, portable / personal digital assistants (“PDAs”), and other devices that facilitate communication of information between end users. Furthermore, the use of the term “processor” herein is intended to broadly cover various configurations of one or more processors.
[0387] References to “an embodiment” or “an embodiment” or “a implementation” or “implementation”, and other variations thereof, refer to specific features, structures, characteristics, etc., described in connection with that embodiment, which are included in at least one embodiment. Therefore, the appearance of the phrases “in an embodiment” or “in an embodiment” or “in an implementation” or “in an implementation”, and any other variations thereof throughout this application, does not necessarily refer to all the same embodiment.
[0388] Furthermore, this application may refer to "determining" various types of information. Determining information may include, for example, one or more of the following: estimated information, calculated information, predicted information, or information retrieved from memory.
[0389] Additionally, this application may refer to "accessing" various types of information. Accessing information may include, for example, one or more of the following: receiving information, retrieving information (e.g., from memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or estimating information.
[0390] Furthermore, this application may refer to "receiving" various types of information. Like "accessing," receiving is a broad term. Receiving information may include one or more of the following: for example, accessing information or retrieving information (e.g., from memory). Additionally, "receiving" generally refers to actions such as storing information, processing information, sending information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information, in one or more ways.
[0391] It should be recognized that, for example, the use of any of the following " / ", "and / or", and "...at least one of A and B" in the context of "A / B", "A and / or B", and "at least one of A and B" is intended to cover selecting only the first listed option (A), or only the second listed option (B), or both options (A and B). As another example, in the context of "A, B, and / or C" and "at least one of A, B, and C", this wording is intended to cover selecting only the first listed option (A), or only the second listed option (B), or only the third listed option (C), or only the first and second listed options (A and B), or only the first and third listed options (A and C), or only the second and third listed options (B and C), or all three options (A, B, and C). This can be extended to multiple listed items, as will be apparent to those skilled in the art and related fields.
[0392] As will be apparent to those skilled in the art, implementations can generate various signals that are formatted to carry, for example, information that can be stored or transmitted. The information may include, for example, instructions for performing a method or data generated by one of the described implementations. For example, the signal may be formatted to carry a bitstream of the described embodiment. Such a signal may be formatted as, for example, electromagnetic waves (e.g., using the radio frequency portion of the spectrum) or baseband signals. Formatting may include, for example, encoding the data stream and modulating a carrier wave with the encoded data stream. The information carried by the signal may be, for example, analog or digital information. As is known, signals can be transmitted via a variety of different wired or wireless links. The signal may be stored on a processor-readable medium.
[0393] This document describes various embodiments. Features of these embodiments may be provided individually or in any combination across various claim classes and types. Furthermore, embodiments may include one or more of the following features, devices, or aspects across various claim classes and types, individually or in any combination:
[0394] ● Providing encoded / decoded image information involves deriving inter-frame prediction parameters based on first and second merge candidates for generating pairwise merge candidates, wherein the inter-frame prediction parameters include at least one of an index for weighted bidirectional prediction or an interpolation filter index; and encoding / decoding at least a portion of the image information based on the inter-frame prediction parameters.
[0395] ● Providing encoded / decoded image information involves one or more processors configured to derive inter-frame prediction parameters based on first and second merge candidates for generating pairwise merge candidates, wherein the inter-frame prediction parameters include at least one of an index for weighted bidirectional prediction or an interpolation filter index; and to encode / decode at least a portion of the image information based on the inter-frame prediction parameters.
[0396] ● Providing encoded / decoded image information involves deriving inter-frame prediction parameters, excluding motion vector information and a reference image index, based on first and second merge candidates used to generate pairwise merge candidates, wherein the inter-frame prediction parameters include at least one of an index for weighted bidirectional prediction or an interpolation filter index; and encoding / decoding at least a portion of the image information based on the inter-frame prediction parameters.
[0397] ● Providing encoded / decoded image information involves one or more processors configured to derive inter-frame prediction parameters, excluding motion vector information and a reference image index, based on first and second merge candidates for generating pairwise merge candidates, wherein the inter-frame prediction parameters include at least one of an index for weighted bidirectional prediction or an interpolation filter index; and to encode / decode at least a portion of the image information based on the inter-frame prediction parameters.
[0398] ● Provides encoded / decoded image information as described herein, wherein the index for weighted bidirectional prediction includes a bidirectional prediction index associated with bidirectional prediction weights, the first and second merge candidates have the same bidirectional prediction index, and the pairwise merge candidates have the bidirectional prediction weights;
[0399] ● Provides encoded / decoded image information as described herein, wherein the index for weighted bidirectional prediction includes a bidirectional prediction index associated with bidirectional prediction weights, only one of the first and second merge candidates is a bidirectional candidate, and a default value of the bidirectional prediction index is assigned to the pairwise merge candidate;
[0400] ● Provides encoded / decoded image information as described herein, wherein the index for weighted bidirectional prediction includes a bidirectional prediction index associated with bidirectional prediction weights, only one of the first and second merge candidates is a bidirectional candidate, and the value of the bidirectional prediction index associated with the bidirectional candidate is assigned to the pairwise merge candidate;
[0401] ● Provides encoded / decoded image information as described herein, wherein the index for weighted bidirectional prediction includes a bidirectional prediction index associated with bidirectional prediction weights, the first and second merge candidates are unidirectional types associated with corresponding first and second reference image lists, and the derivation of the inter-frame prediction parameters includes generating a combined bidirectional merge candidate based on the first and second unidirectional merge candidates and assigning default bidirectional prediction weights to the combined bidirectional merge candidate.
[0402] ● Provides encoded / decoded image information as described herein, wherein the index for weighted bidirectional prediction includes a bidirectional prediction index associated with bidirectional prediction weights, the first and second merge candidates are unidirectional types associated with corresponding first and second reference image lists, and the one or more processors are configured to derive the inter-frame prediction parameters including generating a combined bidirectional merge candidate based on the first and second unidirectional merge candidates and assigning default bidirectional prediction weights to the combined bidirectional merge candidate.
[0403] ● Provides encoded / decoded image information as described herein, wherein the index for weighted bidirectional prediction includes a bidirectional prediction index associated with bidirectional prediction weights assigned to the pairwise merge candidates of the combination, such that a higher weight value is associated with an inter-frame prediction direction in which the bidirectional merge candidates of the combination point to a reference image that has a closer temporal distance to the current image.
[0404] ● Provides encoded / decoded image information as described herein, wherein the index for weighted bidirectional prediction includes bidirectional prediction indexes associated with bidirectional prediction weights, the first and second merge candidates are bidirectional types with corresponding first and second different bidirectional prediction weights, and the average of the first and second weights is assigned to the pairwise merge candidates;
[0405] ● Provide encoded / decoded image information as described herein, wherein the average of the first and second weights is rounded to the nearest value of equal weights or deviating from the equal weights;
[0406] ● Provides encoded / decoded image information as described herein, wherein the index for weighted bidirectional prediction includes a bidirectional prediction index associated with bidirectional prediction weights, the first and second merge candidates are bidirectional types with corresponding first and second weights, and further includes determining the pairwise merge candidates only when the first and second weights are equal;
[0407] ● Provides encoded / decoded image information as described herein, wherein the index for weighted bidirectional prediction includes a bidirectional prediction index associated with bidirectional prediction weights, the first and second merge candidates are bidirectional types with corresponding first and second weights, and further includes the one or more processors configured to determine the pairwise merge candidates only if the first and second weights are equal;
[0408] ● Provide encoded / decoded image information as described herein, wherein deriving the inter-frame prediction parameters includes searching among a plurality of merge candidates for the first and second merge candidates, including unidirectional merge candidates and bidirectional merge candidates or two bidirectional merge candidates with equal weights;
[0409] ●Providing encoded / decoded image information as described herein, wherein the one or more processors configured to derive the inter-frame prediction parameters include the one or more processors further configured to search for the first and second merge candidates, including unidirectional merge candidates and bidirectional merge candidates or two bidirectional merge candidates with equal weights, among a plurality of merge candidates;
[0410] ● Provide encoded / decoded image information as described herein, wherein the bidirectional prediction weights include generalized bidirectional prediction (GBi) weights, bidirectional prediction with weighted average (BPWA) weights, or bidirectional prediction with CU weights (BiCW).
[0411] ● Provides video encoding and / or decoding including deriving interpolation filter indices in the case of pairwise merging of candidates;
[0412] ● Provides video encoding and / or decoding including the derivation of interpolation filter index values for “pairwise average” candidates (i.e., IF[PW]), such that even if the interpolation filter index for candidate 0 (i.e., the specified IF[C0] or IF[0]) or the interpolation filter index for candidate 1 (i.e., the specified IF[C1] or IF[1]) is equal to the default value, IF[PW] can also be equal to a non-default value;
[0413] ● Provides equations for video encoding and / or decoding that derive the IF[PW] value as a reference index value (i.e., the specified “idx”) for candidate C0 and C1 (idx-00, idx-01, idx-10, idx-10);
[0414] ●Providing video encoding and / or decoding includes deriving the IF[PW] value, wherein the derivation includes initializing IF[PW] to the maximum value of IF[0] and IF[1];
[0415] ● Providing video encoding and / or decoding includes deriving the IF[PW] value, wherein the derivation includes initializing the IF[PW] to a default value;
[0416] ● Provide video encoding and / or decoding including deriving the IF[PW] value, wherein the derivation includes initializing IF[PW] to the IF[0] value if IF[0] equals IF[1], otherwise initializing IF[PW] to the default value;
[0417] ● Providing video encoding and / or decoding includes deriving the IF[PW] value, wherein the derivation includes initializing the IF[PW] to one of the following:
[0418] The maximum value of IF[0] and IF[1]; or
[0419] ○ Default value; or
[0420] If IF[0] equals IF[1], then IF[0] is initialized to its default value; otherwise, IF[PW] is initialized to its default value.
[0421] ● Providing video encoding and / or decoding includes deriving the IF[PW] value, where the derivation includes:
[0422] ○ Initialize IF[PW] according to any of the methods described above; and
[0423] ○ Determine the intermediate value based on the availability of motion vectors mv0r and mv1r.
[0424] IF[PW][r], r = 0, 1, where:
[0425] ■If both mv0r and mv1r are available: IF[PW][r]=IF[0]
[0426] ■ Otherwise, if only mv0r is available: IF[PW][r]=IF[0]
[0427] ■ Otherwise, if only mv1r is available: IF[PW][r]=IF[1]
[0428] ■ Otherwise, IF[PW][r] = IF[PW]
[0429] ○ Update IF[PW] based on IF[PW][r];
[0430] ● Provide video encoding and / or decoding including deriving IF[PW] values as described above, wherein updating IF[PW] based on IF[PW][r] includes setting IF[PW] to the maximum value of IF[PW][0] and IF[PW][1];
[0431] ● Provide video encoding and / or decoding including deriving IF[PW] values as described above, wherein updating IF[PW] based on IF[PW][r] includes setting IF[PW] to IF[PW][0] if IF[PW][0] equals IF[PW][1]; otherwise, setting IF[PW] to the default value;
[0432] ● Provide video encoding and / or decoding including the derivation of IF[PW] values as described above, where updating IF[PW] based on IF[PW][r] includes setting IF[PW] based on the availability of motion vectors mv0r and mv1r, for example:
[0433] ○ If both mv0r and mv1r are available: IF[PW] = (IF[PW][0] || IF[PW][1])
[0434] Otherwise, if only mv0r is available: IF[PW]|=IF[0]
[0435] Otherwise, if only mv1r is available: IF[PW]|=IF[1]
[0436] ● Provide video encoding and / or decoding including the derivation of IF[PW] values as described above, where updating IF[PW] based on IF[PW][r] includes setting IF[PW] based on the availability of motion vectors mv0r and mv1r, for example:
[0437] ○If both mv0r and mv1r are available: IF[PW] = IF[0]
[0438] Otherwise, if only mv0r is available: IF[PW]|=IF[0]
[0439] Otherwise, if only mv1r is available: IF[PW]|=IF[1]
[0440] ● Provide video encoding and / or decoding including the derived IF[PW] value as described above, where:
[0441] ○ After determining the intermediate value IF[PW][r]
[0442] ■ If candidate 0 is a bidirectional prediction candidate, then determine the bidirectional prediction weights associated with candidate 0 (e.g., gbiW[0][r], r = 0, 1) and / or if candidate 1 is a bidirectional prediction candidate, then determine the bidirectional prediction weights associated with candidate 1 (e.g., gbiW[0][r], r = 0, 1); and
[0443] ○ The update of IF[PW] is further based on the bidirectional prediction weights, wherein determining the bidirectional prediction weights and updating IF[PW] based on the bidirectional prediction weights is based on the availability of motion vectors mv0r and mv1r in the embodiment emb-3.1 described herein;
[0444] ● Provide video encoding and / or decoding including deriving IF[PW] values based on bidirectional prediction weights as described above, wherein updating IF[PW] is based on embodiment emb-3.2 as described herein;
[0445] ● Provide video encoding and / or decoding including deriving IF[PW] values based on bidirectional prediction weights as described above, wherein updating IF[PW] is based on embodiment emb-3.3 as described herein;
[0446] ● Provide video encoding and / or decoding including deriving IF[PW] values based on bidirectional prediction weights as described above, wherein updating IF[PW] includes setting IF[PW] to the maximum value of IF[PW][0] or IF[PW][1].
[0447] ● Provides video encoding and / or decoding, including IF[PW] values derived based on bidirectional prediction weights as described above, where
[0448] ○ The IF-index value used for motion compensation in L0 (or L1) is IF[PW][0] (or the corresponding IF[PW][1]), and its value is...
[0449] ○ The derivation further includes storing the IF[PW] value determined according to any of the embodiments described herein;
[0450] ● Methods or apparatus for providing video encoding and / or decoding include (alone or in any combination) deriving interpolation filter indices in the case of pairwise candidate merging according to any embodiment, feature or entity as described herein;
[0451] ● A method or apparatus for providing video encoding and / or decoding includes determining a first value of a first interpolation filter index associated with a pairwise average merge candidate, and determining the availability of at least one motion vector associated with the pairwise average merge candidate based on at least one of a second and a third interpolation filter index associated with corresponding first and second merge candidates associated with the pairwise average merge candidate, and determining a second value of the first interpolation filter index based on at least one of the second and third interpolation filter indices and the availability of at least one of the motion vectors;
[0452] ● A method or apparatus for providing video encoding and / or decoding includes one or more processors configured to determine a first value of a first interpolation filter index associated with a pairwise average merge candidate, and based on at least one of a second and a third interpolation filter index associated with a corresponding first and second merge candidate associated with the pairwise average merge candidate, determine the availability of at least one motion vector associated with the pairwise average merge candidate, and based on at least one of the second and third interpolation filter indices and the availability of at least one of the motion vectors, determine a second value of the first interpolation filter index;
[0453] ● A method or apparatus for providing video encoding and / or decoding includes determining a first value of a first interpolation filter index associated with a pairwise average merging candidate, and determining the availability of at least one motion vector associated with at least one of a second and a third interpolation filter index associated with a corresponding first and second merging candidate associated with the pairwise average merging candidate, determining whether the at least one of the first and second merging candidates corresponds to a bidirectional prediction candidate, determining bidirectional prediction weights associated with the at least one of the first and second merging candidates corresponding to the bidirectional prediction candidate, and determining a second value of the first interpolation filter index based on at least one of the second and third interpolation filter indices and the availability of the at least one motion vector and the bidirectional prediction weights;
[0454] ● A method or apparatus for providing video encoding and / or decoding includes one or more processors configured to determine a first value of a first interpolation filter index associated with a pairwise average merging candidate, and based on at least one of a second and a third interpolation filter index associated with a corresponding first and second merging candidate associated with the pairwise average merging candidate, determine the availability of at least one motion vector associated with at least one of the first and second merging candidates, determine whether the at least one of the first and second merging candidates corresponds to a bidirectional prediction candidate, determine bidirectional prediction weights associated with the at least one of the first and second merging candidates corresponding to the bidirectional prediction candidate, and based on at least one of the second and third interpolation filter indices and the availability of the at least one motion vector and the bidirectional prediction weights, determine a second value of the first interpolation filter index;
[0455] ● Provide a method or apparatus as described herein, wherein determining the first value of the first interpolation filter index includes initializing the first interpolation filter index according to any embodiment described herein, and determining the second value of the first interpolation index includes:
[0456] ○ Determine at least one intermediate value for the first interpolation filter index based on any embodiment described herein and the availability of the at least one motion vector, and
[0457] ○ Update the at least one intermediate value according to any embodiment described herein and based on the availability of the at least one motion vector and based on at least one of the second and third interpolation filter indices;
[0458] ● Provide a method or apparatus as described herein, wherein determining the first value of the first interpolation filter index includes initializing the first interpolation filter index according to any embodiment described herein, and determining the second value of the first interpolation filter index includes:
[0459] ○ Determine at least one intermediate value of the first interpolation filter index vector based on any embodiment described herein and the availability of the at least one motion vector.
[0460] ○ The bidirectional prediction weights are determined based on any of the embodiments described herein and based on the at least one intermediate value.
[0461] ○ Update the at least one intermediate value according to any embodiment described herein, based on the availability of the at least one motion vector, the bidirectional prediction weights, and at least one of the second and third interpolation filter indices;
[0462] ●Based on providing reduced complexity and / or improved compression efficiency, a method for video encoding and / or decoding is provided for deriving interpolation filter indices (alone or in any combination) in the case of pairwise merging of candidates based on any embodiment, feature or entity as described herein;
[0463] ●A device for providing video encoding and / or decoding based on providing reduced complexity and / or improved compression efficiency for deriving interpolation filter indices (alone or in any combination) in the case of pairwise merging of candidates according to any embodiment, feature or entity as described herein;
[0464] ● Provides, based on providing reduced complexity and / or improved compression efficiency, the encoder and / or decoder for deriving interpolation filter indices in the case of pairwise candidate merging, according to any embodiment, feature or entity as described herein;
[0465] ● Provide a bitstream or signal including one or more of the syntax elements or their variants;
[0466] ● Provide a bitstream or signal including a syntax that carries information generated according to any of the described embodiments;
[0467] ● Provides an insert signaling syntax element, enabling the decoder to operate in a manner corresponding to that used by the encoder;
[0468] ● Provides insert signaling syntax elements that enable encoders and / or decoders to (alone or in any combination) provide encoding and / or decoding according to any of the embodiments, features or entities described herein;
[0469] ● Provides the ability to select features or entities, as described herein, individually or in any combination, based on these grammatical elements for application to the decoder;
[0470] ● Provides the ability to create and / or send and / or receive and / or decode bit streams or signals including one or more of the syntax elements or variations thereof;
[0471] ●According to any of the described embodiments, it is provided to create and / or send and / or receive and / or decode bitstreams;
[0472] ● Methods, processes, apparatus, media for storing instructions, media for storing data or signals according to any of the described embodiments;
[0473] ● Televisions, set-top boxes, mobile phones, tablets or other electronic devices that provide (alone or in any combination) applications that encode and / or decode according to any of the embodiments, features or entities described herein;
[0474] ● Televisions, set-top boxes, mobile phones, tablets or other electronic devices that (alone or in any combination) perform encoding and / or decoding according to any of the embodiments, features or entities described herein and display (e.g., using a monitor, screen or other type of display) the resulting images;
[0475] ● Televisions, set-top boxes, mobile phones, tablets, or other electronic devices that tune (e.g., using a tuner) channels to receive signals including encoded images and (alone or in any combination) perform encoding and / or decoding according to any of the embodiments, features, or entities described herein;
[0476] ● Televisions, set-top boxes, mobile phones, tablets, or other electronic devices that receive signals including encoded images over the air (e.g., using an antenna) and (alone or in any combination) perform encoding and / or decoding according to any of the embodiments, features, or entities described herein;
[0477] ● A computer program product that stores program code, which, when executed by a computer, is encoded and / or decoded individually or in any combination according to any embodiment, feature or entity as described herein;
[0478] ● A non-transitory computer-readable medium comprising executable program instructions that cause a computer executing the instructions to encode and / or decode according to any embodiment, feature, or entity as described herein, either alone or in any combination.
[0479] Various other generalized and specific embodiments are also supported and considered throughout this disclosure.
Claims
1. A method for encoding image information, comprising: Based on the first and second merge candidates used to generate pairwise merge candidates, inter-frame prediction parameters are derived, wherein the inter-frame prediction parameters include interpolation filter indices associated with the pairwise merge candidates. Determine a first bidirectional prediction weight associated with the first merge candidate and a second bidirectional prediction weight associated with the second merge candidate; Based on the first bidirectional prediction weight and the second bidirectional prediction weight, set the value of the interpolation filter index associated with the pairwise merged candidate; as well as Based on the inter-frame prediction parameters, at least a portion of the image information is encoded.
2. A method for decoding image information, comprising: Based on the first and second merge candidates used to generate pairwise merge candidates, inter-frame prediction parameters are derived, wherein the inter-frame prediction parameters include interpolation filter indices associated with the pairwise merge candidates. Determine a first bidirectional prediction weight associated with the first merge candidate and a second bidirectional prediction weight associated with the second merge candidate; Based on the first bidirectional prediction weight and the second bidirectional prediction weight, set the value of the interpolation filter index associated with the pairwise merged candidate; as well as Based on the inter-frame prediction parameters, at least a portion of the image information is decoded.
3. A device for encoding image information, comprising: One or more processors are configured as follows: Based on the first and second merge candidates used to generate pairwise merge candidates, inter-frame prediction parameters are derived, wherein the inter-frame prediction parameters include interpolation filter indices associated with the pairwise merge candidates. Determine a first bidirectional prediction weight associated with the first merge candidate and a second bidirectional prediction weight associated with the second merge candidate; Based on the first bidirectional prediction weight and the second bidirectional prediction weight, set the value of the interpolation filter index associated with the pairwise merged candidate; as well as Based on the inter-frame prediction parameters, at least a portion of the image information is encoded.
4. A device for decoding image information, comprising: One or more processors are configured as follows: Based on the first and second merge candidates used to generate pairwise merge candidates, inter-frame prediction parameters are derived, wherein the inter-frame prediction parameters include interpolation filter indices associated with the pairwise merge candidates. Determine a first bidirectional prediction weight associated with the first merge candidate and a second bidirectional prediction weight associated with the second merge candidate; Based on the first bidirectional prediction weight and the second bidirectional prediction weight, set the value of the interpolation filter index associated with the pairwise merged candidate; as well as Based on the inter-frame prediction parameters, at least a portion of the image information is decoded.
5. The method according to claim 1 or 2, further comprising: The average of the first bidirectional prediction weight and the second bidirectional prediction weight is determined, wherein the value of the interpolation filter index associated with the pairwise merge candidate is based on the average of the first bidirectional prediction weight and the second bidirectional prediction weight.
6. The apparatus of claim 3 or 4, wherein the one or more processors are further configured to: The average of the first bidirectional prediction weight and the second bidirectional prediction weight is determined, wherein the value of the interpolation filter index associated with the pairwise merge candidate is based on the average of the first bidirectional prediction weight and the second bidirectional prediction weight.
7. The method of claim 5 or the apparatus of claim 6, wherein the average of the first bidirectional prediction weight and the second bidirectional prediction weight is rounded to the nearest value of equal weight or deviating from the equal weight.
8. A computer program product comprising instructions that, when executed by a computer, cause the computer to perform the method according to any one of claims 1, 2, 5, and 7.
9. A non-transitory computer-readable medium storing executable program instructions that cause a computer executing the instructions to perform the method according to any one of claims 1, 2, 5, and 7.
10. An apparatus comprising: The apparatus according to any one of claims 3, 4, 6 and 7; and At least one of the following: (i) an antenna configured to receive a signal including data representing image information; (ii) a band limiter configured to limit the received signal to a frequency band including the data representing the image information; and (iii) a display configured to display an image from the image information.
11. The device of claim 10, wherein the device comprises one of a television, a television signal receiver, a set-top box, a gateway device, a mobile device, a mobile phone, a tablet computer, or other electronic devices.
Citation Information
Patent Citations
Method and device for filtering
US20190268594A1
Switchable interpolation filtering (SIF) for video coding
US20200366924A1
Video encoding / decoding method and apparatus using motion information candidate, and method for transmitting bitstream
US20220286689A1