Motion refinement and weighted prediction

文档序号:174676 发布日期:2021-10-29 浏览:37次 中文

阅读说明:本技术 运动细化和加权预测 (Motion refinement and weighted prediction ) 是由 余若洋 刘度 于 2020-03-05 设计创作,主要内容包括:一种用于确定预测块以用于对视频流的当前图片中的当前块进行解码或编码的方法。该方法包括获得一对初始运动矢量,一对初始运动矢量包括第一初始运动矢量和第二初始运动矢量。该方法还包括确定是否细化初始运动矢量。该方法还包括作为确定细化初始运动矢量的结果,细化初始运动矢量。确定是否细化初始运动矢量的步骤包括:i)确定是否启用了第一预测方案和/或第二预测方案,以及ii)作为确定启用了第一预测方案或第二预测方案的结果,确定抑制细化初始运动矢量,或者作为确定第一预测方案和第二预测方案均未启用的结果,确定细化初始运动矢量。(A method for determining a prediction block for decoding or encoding a current block in a current picture of a video stream. The method includes obtaining a pair of initial motion vectors, the pair of initial motion vectors including a first initial motion vector and a second initial motion vector. The method also includes determining whether to refine the initial motion vector. The method also includes refining the initial motion vector as a result of determining a refined initial motion vector. The step of determining whether to refine the initial motion vector includes: i) determining whether the first prediction scheme and/or the second prediction scheme is enabled, and ii) determining to suppress refinement of the initial motion vector as a result of determining that the first prediction scheme or the second prediction scheme is enabled, or determining to refine the initial motion vector as a result of determining that neither the first prediction scheme nor the second prediction scheme is enabled.)

1. A method (900, 1600) for determining a prediction block for decoding or encoding a current block in a current picture of a video stream, the method comprising:

obtaining a pair of initial motion vectors (s902, s1602), the pair of initial motion vectors comprising a first initial motion vector and a second initial motion vector;

determining whether to refine the initial motion vector (s904, s1604), wherein determining whether to refine the initial motion vector comprises determining whether a first prediction scheme is enabled; and

refining (s908, s1606) the initial motion vector as a result of determining to refine the initial motion vector, or refraining (s906, s1608) from refining the initial motion vector as a result of determining to not refine the initial motion vector.

2. The method of claim 1, wherein the determining whether to refine the initial motion vector further comprises determining whether a second prediction scheme is enabled.

3. The method of claim 2, wherein the first prediction scheme is weighted prediction and the second prediction scheme is generalized bi-directional prediction with weighted averaging.

4. The method of claim 2 or 3, wherein the determining whether to refine the initial motion vector further comprises:

determining not to refine the initial motion vector as a result of determining that the first prediction scheme or the second prediction scheme is enabled; or

Determining to refine the initial motion vector as a result of determining that neither the first prediction scheme nor the second prediction scheme is enabled.

5. The method of any of claims 1 to 4, further comprising:

generating the prediction block using the refined motion vector if it is determined to refine the initial motion vector, or

Generating the prediction block using the initial motion vector if it is determined not to refine the initial motion vector.

6. A computer program (1443) comprising instructions (1444) which, when executed by a processing circuit (1402), cause the processing circuit (1402) to carry out the method according to any one of claims 1 to 5.

7. A carrier containing the computer program according to claim 6, wherein the carrier is one of an electronic signal, an optical signal, a radio signal or a computer readable storage medium (1442).

8. An encoder or decoder device (1400), the encoder or decoder device (1400) being adapted to:

obtaining a pair of initial motion vectors (s902, s1602), the pair of initial motion vectors comprising a first initial motion vector and a second initial motion vector;

determining whether to refine the initial motion vector (s904, s1604), wherein the apparatus is adapted to determine whether to refine the initial motion vector by performing a process comprising determining whether a first prediction scheme is enabled;

as a result of determining to refine an initial motion vector, refining the initial motion vector (s908, s 1606); and

suppressing (s906, s1608) refinement of the initial motion vector as a result of the determination not to refine the initial motion vector.

9. The encoder or decoder device of claim 8, wherein the process further comprises determining whether a second prediction scheme is enabled.

10. Encoder or decoder device according to claim 9, wherein the first prediction scheme is weighted prediction and the second prediction scheme is generalized bi-directional prediction with weighted averaging.

11. The encoder or decoder device of claim 9 or 10, wherein the process further comprises:

determining not to refine the initial motion vector as a result of determining that the first prediction scheme or the second prediction scheme is enabled; or

Determining to refine the initial motion vector as a result of determining that neither the first prediction scheme nor the second prediction scheme is enabled.

12. Encoder or decoder arrangement according to any of claims 8 to 11, wherein the encoder or decoder arrangement is further adapted to:

generating the prediction block using the refined motion vector if it is determined to refine the initial motion vector, or

Generating the prediction block using the initial motion vector if it is determined not to refine the initial motion vector.

13. A method (1500) for determining a prediction block Pbi for decoding or encoding a current block in a current picture of a video stream, the method comprising:

obtaining a first pair of initial motion vectors (s1502), the first pair of initial motion vectors comprising a first initial motion vector and a second initial motion vector;

obtaining first prediction parameters (s 1504);

obtaining second prediction parameters (s 1506);

generating a first pair of modified motion vectors using the first pair of initial motion vectors and a first motion vector offset (s1508), the first pair of modified motion vectors including a first modified motion vector and a second modified motion vector;

obtaining a first prediction block using the first modified motion vector (s 1510);

obtaining a second prediction block using the second modified motion vector (s 1512);

calculating a first difference (s1514) using the first prediction block and the second prediction block;

generating a second pair of modified motion vectors using the first pair of initial motion vectors and a second motion vector offset (s1516), the second pair of modified motion vectors including a third modified motion vector and a fourth modified motion vector;

obtaining a third prediction block using the third modified motion vector (s 1518);

obtaining a fourth prediction block (s1520) using the fourth modified motion vector;

calculating a second difference using the third prediction block and the fourth prediction block (s 1522);

determining a best motion vector offset using the first difference and the second difference (s 1524); and

determining the prediction block using the determined optimal motion vector offset (s1526), wherein,

obtaining the first prediction block comprises: deriving an initial first prediction block using the first modified motion vector and deriving the first prediction block using the initial first prediction block and at least the first prediction parameter, an

Obtaining the third prediction block includes: deriving an initial third prediction block using the third modified motion vector, and deriving the third prediction block using the initial third prediction block and at least the first prediction parameter.

14. The method of claim 13, further comprising:

determining a first optimal motion vector using the first initial motion vector and the optimal motion vector offset;

determining a second optimal motion vector using the second initial motion vector and the optimal motion vector offset;

generating a first best prediction block using the first best motion vector;

generating a second best prediction block using the second best motion vector; and

determining the prediction block based on a product of the first best prediction block and the first prediction parameter and a product of the second best prediction block and the second prediction parameter.

15. The method of claim 13 or 14,

obtaining the second prediction block comprises: deriving an initial second prediction block using the second modified motion vector and deriving the second prediction block using the initial second prediction block and at least the second prediction parameter; and

obtaining the fourth prediction block includes: deriving an initial fourth prediction block using the fourth modified motion vector, and deriving the fourth prediction block using the initial fourth prediction block and at least the second prediction parameter.

16. The method of claim 15, wherein,

deriving the first prediction block based on a product of the initial first prediction block and the first prediction parameter, an

Deriving the second prediction block based on a product of the initial second prediction block and the second prediction parameter.

17. The method of claim 13 or 14,

deriving the first prediction block based on (W1/W2) × Pi1, wherein W1 is the first prediction parameter, W2 is the second prediction parameter, and Pi1 is the initial first prediction block.

18. The method of any of claims 13 to 17, further comprising:

obtaining a third prediction parameter; and

a fourth prediction parameter is obtained.

19. The method of claim 18, wherein the prediction block is determined based on (W1 × P1_ best) + O3+ (W2 × P2_ best) + O4, wherein W1 is the first prediction parameter, P1_ best is the first best prediction block, O3 is the third prediction parameter, W2 is the second prediction parameter, P2_ best is the second best prediction block, and O4 is the fourth prediction parameter.

20. The method of claim 19, wherein the first prediction block is derived further based at least on the third prediction parameter.

21. The method of claim 19, wherein the first prediction block is derived further based on a difference between the third prediction parameter and the fourth prediction parameter (O4).

22. The method according to any of claims 13 to 21, wherein the first prediction parameter is one of the parameters for weighted prediction or one of the parameters for generalized bi-directional prediction with weighted average.

23. A computer program (1443) comprising instructions (1444) which, when executed by a processing circuit (1402), cause the processing circuit (1402) to carry out the method according to any one of claims 13 to 22.

24. A carrier containing the computer program according to claim 23, wherein the carrier is one of an electronic signal, an optical signal, a radio signal, or a computer readable storage medium (1442).

25. An encoder or decoder device (1400), the encoder or decoder device (1400) being adapted to:

determining a prediction block for encoding or decoding a current block in a current picture of a video stream, wherein,

the apparatus is adapted to cause the apparatus to determine the prediction block by performing a process comprising:

obtaining a first pair of initial motion vectors (s1502), the first pair of initial motion vectors comprising a first initial motion vector and a second initial motion vector;

obtaining first prediction parameters (s 1504);

obtaining second prediction parameters (s 1506);

generating a first pair of modified motion vectors using the first pair of initial motion vectors and a first motion vector offset (s1508), the first pair of modified motion vectors including a first modified motion vector and a second modified motion vector;

obtaining a first prediction block using the first modified motion vector (s 1510);

obtaining a second prediction block using the second modified motion vector (s 1512);

calculating a first difference (s1514) using the first prediction block and the second prediction block;

generating a second pair of modified motion vectors using the first pair of initial motion vectors and a second motion vector offset (s1516), the second pair of modified motion vectors including a third modified motion vector and a fourth modified motion vector;

obtaining a third prediction block using the third modified motion vector (s 1518);

obtaining a fourth prediction block (s1520) using the fourth modified motion vector;

calculating a second difference using the third prediction block and the fourth prediction block (s 1522);

determining a best motion vector offset using the first difference and the second difference (s 1524); and

determining the prediction block using the determined optimal motion vector offset (s1526), wherein,

obtaining the first prediction block comprises: deriving an initial first prediction block using the first modified motion vector and deriving the first prediction block using the initial first prediction block and at least the first prediction parameter, an

Obtaining the third prediction block includes: deriving an initial third prediction block using the third modified motion vector, and deriving the third prediction block using the initial third prediction block and at least the first prediction parameter.

26. Encoder or decoder device (1400) according to claim 25, wherein the device is further adapted to perform the steps of any of claims 14 to 22.

Technical Field

Embodiments related to motion refinement and weighted prediction of video sequences are disclosed.

Background

A video sequence comprises a series of pictures ordered in display order. Each picture is assigned a Picture Order Count (POC) value indicating its display order.

Video coding is used to compress a video sequence into a sequence of coded pictures. Typically, a picture is divided into blocks ranging in size from 4 × 4 to 128 × 128. The block serves as a basis for encoding each picture. The video decoder then decodes the encoded picture into a picture containing sample values.

The universal video coding (VVC) standard draft uses a block structure called quadtree plus binary tree plus ternary tree block structure (QTBT + TT) where each picture is first divided into square blocks called Coding Tree Units (CTUs). The size of all CTUs is the same and the partitioning of the picture into CTUs is performed without any syntax control partitioning. Each CTU is further divided into Coding Units (CUs), which may have a square or rectangular shape. The CTUs are first divided by a quadtree structure, and then may further divide it vertically or horizontally by partitions of the same size in a binary structure to form CUs. Thus, the blocks may have a square or rectangular shape. The depths of the quadtree and the binary tree may be set in the bitstream by the encoder. An example of partitioning CTUs using QTBT is shown in fig. 1A. The Ternary Tree (TT) part increases the probability of dividing a CU into three partitions instead of two partitions of the same size. This increases the likelihood of using a block structure that is more appropriate for the content structure in the picture.

Intra prediction (also known as spatial prediction)

Intra-prediction techniques aim at exploring the similarities between different blocks of the same picture. Intra prediction uses previously decoded blocks in the same picture to predict blocks in the picture. One way of predicting a block is to predict (i.e., determine) the values (e.g., luma, chroma) of the display elements included in the block. A picture composed of only intra prediction blocks is referred to as an intra picture.

Inter prediction (also called temporal prediction)

Inter-prediction techniques aim at exploring similarities between pictures. Inter prediction uses one or more blocks in a previously decoded picture to predict a block in a current picture ("current block"). Samples from a block in a previously decoded picture are used to predict samples within the current block. A previously decoded picture is referred to as a reference picture, and a block in the previously decoded picture is referred to as a reference block.

A Motion Vector (MV) is used to indicate the position of a reference block within a reference picture. Each MV comprises x and y components, each component representing the displacement of the current picture in the x or y dimension relative to the reference picture. The values of the components may have a finer resolution than the integer positions. In this case, the value for prediction may be calculated using filtering (e.g., interpolation). Fig. 1B shows an exemplary MV for a current block C in a current picture.

An inter picture may use several reference pictures. Reference pictures are typically included in two different reference picture lists: l0 and L1. The reference picture displayed before the current picture is typically the first picture in list L0, and the reference picture displayed after the current picture is typically the first picture in list L1.

A block of a current picture is referred to as an inter block if the block of the current picture is predicted from at least one reference block in a reference picture that is not the current picture. One of two prediction types (unidirectional prediction and bidirectional prediction) may be used to predict the inter block. In uni-directional prediction, an inter block is predicted from one reference picture selected from list L0 or list L1. In contrast, in bi-prediction, an inter block is predicted from two reference pictures selected from both list L0 and list L1. Fig. 2 shows an inter block 201 predicted using unidirectional prediction and an inter block 203 predicted using bidirectional prediction.

In a typical bi-directional prediction scheme, a final prediction block for a current block is generated by averaging sample values from two prediction blocks, which are obtained using two motion vectors. The process of generating a prediction block using a motion vector is called motion compensation. The motion compensated output prediction block may also be referred to as a motion compensated block.

In fig. 2, there are two motion vectors MV0 and MV1 corresponding to the inter block Pbi. The first prediction block P0 is obtained using MV0, and the second prediction block P1 is obtained using MV 1. The inter block Pbi (i.e., the prediction block) is generated using the equation Pbi (x, y) ═ P0(x, y) + P1(x, y)) > >1, where Pbi (x, y) is the sample value at position (x, y) in the block Pbi. In other words, each sample value in the prediction block Pbi is calculated as an average value of corresponding sample values in the first and second prediction blocks P0 and P1.

Weighted Prediction (WP) -picture level tool

WP is a tool that applies a multiplication factor and an addition offset to the prediction block obtained from the motion vector.

When WP is enabled, after the prediction block P is obtained from motion compensation (using motion vectors), each sample value in P is further modified using the equation P ' (x, y) ═ W × P (x, y) + O, where P (x, y) is the sample value at position (x, y) in the prediction block P, P ' (x, y) is the sample value at position (x, y) in the modified prediction block P ', W is the weighting factor, and O is the offset. Both W and O are referred to as WP parameters. The WP parameters may be signaled at the picture level. In other words, the same WP parameters may be used for different blocks in the same picture, but different WP parameters may be used for different pictures.

The following table shows examples of syntax for WP in HEVC and VVC.

num _ ref _ idx _ Lx _ active _ minus1(x is 0 or 1) specifies the number of reference pictures in Lx (x is 0 or 1) for the current picture. For each reference picture in Lx, luma _ weight _ Lx _ flag indicates whether WP should be enabled when using that reference picture. When luma _ weight _ lx _ flag is not zero, delta _ luma _ weight _ lx and luma _ offset _ lx are obtained. delta _ luma _ weight _ lx is used to derive the weight factor and luma _ offset _ lx is used to derive the offset. However, when luma _ weight _ lx _ flag is zero, it means WP is not used for the reference picture. In this case, default weights and offsets should be applied (e.g., W ═ 1 and O ═ 0).

In a bi-prediction scheme that enables weighted prediction for two reference pictures, WP parameters for the L0 reference picture (i.e., W0 and O0) and WP parameters for the L1 reference picture (i.e., W1 and O1) are obtained. Thus, the final prediction block would be ((W0 × P0+ O0) + (W1 × P1+ O1)) > >1, where P0 is the prediction block from the L0 reference picture and P1 is the prediction block from the L1 reference picture.

Generalized bi-prediction/bi-prediction with weighted average (BWA) -block level tool in addition to WP, VVC also provides generalized bi-prediction/bi-prediction with weighted average (BWA). BWA is a block-level tool that provides a weighted average of multiple (e.g., two) predicted blocks.

In BWA, the final prediction block Pbi may be represented as (W0 × P0+ W1 × P1+4) > >3, where W0 ═ (8-W1), and W1 allows for five weights in total (e.g., W1 ∈ { -2,3,4,5,10 }. for low latency pictures (i.e., all reference pictures have POC values less than the POC of the current picture), all five weights are used.

In BWA, an appropriate value of W1 is obtained based on the index (gbi _ idx) signaled for the CU. Specifically, gbi _ idx is used to obtain the corresponding weight from the look-up table (gbilput). For example, if gbilcut [ k ] ═ {4,5,4,10, -2}, a value of gbi _ idx of 1 would result in W1 ═ gbilcut [1] ═ 5 and W0 ═ 8-W1 ═ 3. Here, gbi _ idx is referred to as BWA parameter. When gbi _ idx is equal to 0, then W0 and W1 are both equal to 4, thus resulting in a default bi-prediction average. BWA allows different weights to be used for different CUs in the same picture to generate the prediction block compared to WP, thus providing more flexibility.

The following table shows an example of syntax tables related to BWA in VVC.

Inter-frame prediction information/motion information

For an inter block within an inter picture, its inter prediction information may include the following three elements:

1. reference picture list flag (RefPicListFlag) -this flag indicates which reference picture list to use. For example, when the value of the flag is equal to 0, it means that list 0 is used. When the value of the flag is equal to 1, it means that list 1 is used. When the value of the flag is equal to 2, it means that both list 0 and list 1 are used.

2. Reference picture index (RefPicIdx) -this index indicates which reference picture within the reference picture list to use.

3. Motion Vector (MV) -this vector indicates the position within the reference picture to be used for predicting the current block.

In the present disclosure, inter prediction information is also referred to as motion information. Motion information is stored in each inter block, so each inter block retains its own motion information.

Motion information signaling

Current VVC includes several methods of signaling motion information for each block. One of these methods is merging. The motivation for the approach described herein is to use motion information in other blocks to predict motion information of the current block.

Merging method

The merging method in VVC is similar to that provided by the High Efficiency Video Coding (HEVC) standard. The method first generates a list of motion information candidates (i.e., a merged list). The length of the merge list is 6 in VVC (version 4) and 5 in HEVC. Candidates are derived from other encoded blocks. For example, the encoded blocks may be temporally co-located blocks or spatially adjacent blocks, such as those shown in fig. 3A. Fig. 3A shows five spatial neighboring blocks (left (L), upper (T), upper left (TL), upper right (TR), lower Left (LB)), which are motion information candidates included in the merge list. After generating the merge list, one of the motion information candidates is selected for deriving motion information of the current block. The selection of candidates is performed at the encoder side. After the encoder selects the best candidate, the encoder includes an index (merge idx) in the bitstream sent to the decoder. The decoder receives the index, which follows the same merge list derivation procedure as the encoder, and uses the index to obtain the correct candidate.

Fig. 3B is an example of merging candidate column lists. For simplicity, only the motion vectors for each candidate are listed. According to the merge list shown in fig. 3B, when the merge index (merge _ idx) is equal to 4, MV0 ═ 1,1 and MV1 ═ 1, -1) will be selected as the motion vector of the current block.

The motion vector of the current block can be further refined by a tool called decoder-side motion vector refinement (DMVR). It is generally applicable to merge mode and requires that MVs are bi-directionally predicted. For a block in merge mode, the merge mode is used to derive an initial MV for the block. The DMVR searches around the initial MV and finds the MV that gives the minimum difference between the L0 prediction block and the L1 prediction block.

Disclosure of Invention

Certain challenges currently exist. For example, in a conventional DMVR search, the bi-directional prediction parameters and/or the weighted prediction parameters are not considered. This lack of consideration of the prediction parameters may affect the accuracy of the DMVR search and thus have a negative impact on DMVR performance.

Embodiments of the present disclosure improve the accuracy of DMVR searches by considering predicted parameters (e.g., WP parameters or BWA parameters) during the DMVR search.

According to some embodiments, in an aspect, a process is provided for determining a prediction block for decoding or encoding a current block in a current picture of a video stream. The process may begin by obtaining a first pair of initial motion vectors, the first pair of initial motion vectors including a first initial motion vector and a second initial motion vector. The process further comprises: obtaining a first prediction parameter; obtaining second prediction parameters, generating a first pair of modified motion vectors using the first pair of initial motion vectors and the first motion vector offset, the first pair of modified motion vectors comprising a first modified motion vector and a second modified motion vector, obtaining a first prediction block using the first modified motion vector, obtaining a second prediction block using the second modified motion vector, calculating a first difference using the first prediction block and the second prediction block, generating a second pair of modified motion vectors using the first pair of initial motion vectors and the second motion vector offset, the second pair of modified motion vectors comprising a third modified motion vector and a fourth modified motion vector, obtaining a third prediction block using the third modified motion vector; obtaining a fourth prediction block using the fourth modified motion vector, calculating a second difference using the third prediction block and the fourth prediction block, determining an optimal motion vector offset using the first difference and the second difference, and determining a prediction block using the determined optimal motion vector offset.

In some embodiments, obtaining the first prediction block comprises deriving an initial first prediction block using the first modified motion vector and deriving the first prediction block using the initial first prediction block and at least the first prediction parameter, and obtaining the third prediction block comprises deriving an initial third prediction block using the third modified motion vector and deriving the third prediction block using the initial third prediction block and at least the first prediction parameter.

With regard to other embodiments, in an aspect, a process for determining a prediction block for decoding or encoding a current block in a current picture of a video stream is provided. The process may begin by obtaining a pair of initial motion vectors, the pair of initial motion vectors including a first initial motion vector and a second initial motion vector. The process further includes determining whether to refine the initial motion vector (s904, s1604), wherein determining whether to refine the initial motion vector includes determining whether the first prediction scheme is enabled. The process further includes refining the initial motion vector as a result of determining to refine the initial motion vector, or suppressing refining the initial motion vector as a result of determining not to refine the initial motion vector.

In another aspect, there is provided a computer program comprising instructions which, when executed on at least one processor, cause the at least one processor to perform any of the methods disclosed herein. In another aspect, a carrier containing a computer program is provided, wherein the carrier is one of an electronic signal, optical signal, radio signal, or computer readable storage medium.

In another aspect, there is provided an encoder or decoder device operable to perform any of the methods disclosed herein. In one embodiment, an encoder or decoder device includes processing circuitry and memory. In one embodiment, the memory stores the computer program described above.

Drawings

The accompanying drawings, which are incorporated herein and form a part of the specification, illustrate various embodiments.

Fig. 1A shows an exemplary partitioning of CTUs into CUs using QTBT.

Fig. 1B shows motion vectors for a block in a current picture.

Fig. 2 shows unidirectional prediction and bidirectional prediction.

Fig. 3A shows possible spatial blocks for deriving neighboring motion information.

Fig. 3B shows an example of merging candidate lists.

Fig. 4 shows a system according to an embodiment.

Fig. 5 is a schematic block diagram of an encoder according to an embodiment.

Fig. 6 is a schematic block diagram of a decoder according to an embodiment.

Fig. 7 shows the general steps of a DMVR procedure.

Fig. 8A and 8B show how modified motion vectors are obtained.

Fig. 9 illustrates a DMVR process according to one embodiment.

Figure 10 illustrates a DMVR process according to one embodiment.

Fig. 11 illustrates a DMVR process according to one embodiment.

Fig. 12 illustrates a DMVR process according to one embodiment.

Fig. 13 shows a DMVR process according to one embodiment.

Fig. 14 is a block diagram illustrating an apparatus for implementing an encoder or decoder according to an embodiment.

FIG. 15 is a flow chart illustrating a process according to some embodiments.

FIG. 16 is a flow chart illustrating a process according to some embodiments.

Detailed Description

Fig. 4 shows a system 400 according to an example embodiment. The system 400 includes an encoder 402 in communication with a decoder 404 via a network 410 (e.g., the internet or other network).

Fig. 5 is a schematic block diagram of an encoder 402 for encoding blocks of pixel values (hereinafter "blocks") in video frames (pictures) of a video sequence, according to an embodiment. The current block is predicted by performing motion estimation by the motion estimator 50 from a block that has been provided in the same frame or in a previous frame. In the case of inter prediction, the result of motion estimation is a motion or displacement vector associated with the reference block. The motion vectors are used by the motion compensator 50 to output inter prediction of the block. The intra predictor 49 calculates intra prediction of the current block. The outputs from the motion estimator/compensator 50 and the intra predictor 49 are input in a selector 51, and the selector 51 selects either intra prediction or inter prediction for the current block. The output from the selector 51 is input to an error calculator in the form of an adder 41, the adder 41 also receiving the pixel values of the current block. The adder 41 calculates and outputs a residual as a difference between the pixel values of the block and its prediction. The error is transformed in a transformer 42 (e.g. by a discrete cosine transform) and quantized by a quantizer 43 and then encoded in an encoder 44 (e.g. by an entropy encoder). In inter coding, the estimated motion vectors are also taken to the encoder 44 for generating an encoded representation of the current block. The transformed and quantized residue of the current block is also provided to an inverse quantizer 45 and an inverse transformer 46 to obtain the original residue. The adder 47 adds the error to the block prediction output from the motion compensator 50 or the intra predictor 49 to create a reference block that can be used in prediction and encoding of the next block. According to an embodiment, the new reference block is first processed by the deblocking filter unit 100 to perform deblocking filtering to cope with any block artifacts. The processed new reference block is then temporarily stored in a frame buffer 48 where it can be used by the intra predictor 49 and the motion estimator/compensator 50.

Fig. 6 is a corresponding schematic block diagram of the decoder 404 according to some embodiments. The decoder 404 comprises a decoder 61, e.g. an entropy decoder, for decoding the encoded representation of the block to obtain a set of quantized and transformed residuals. These residuals are dequantized in an inverse quantizer 62 and inverse transformed by an inverse transformer 63 to obtain a set of residuals. These residuals are added to the pixel values of the reference block in adder 64. The reference block is determined by the motion estimator/compensator 67 or the intra predictor 66 depending on whether inter prediction or intra prediction is performed. Thus, the selector 68 is interconnected to the adder 64 as well as the motion estimator/compensator 67 and the intra predictor 66. According to the embodiment, the decoded block output from the adder 64 is input to the deblocking filter unit 100 to deblock filter any block artifacts. The filtered block is output from the decoder 504 and is further preferably temporarily provided to the frame buffer 65 and can be used as a reference block for a subsequent block to be decoded. The frame buffer 65 is thus connected to the motion estimator/compensator 67 so that the stored pixel blocks can be used by the motion estimator/compensator 67. The output from the adder 64 is also preferably input to an intra predictor 66 for use as an unfiltered reference block.

Fig. 7 shows an example of a DMVR procedure.

In step s702, two initial motion vectors (MV0 and MV1) are derived for a block of the current picture. For example, the decoder receives the merge index and retrieves MV0 and MV1 from the merge list based on the received merge index.

In step s704, two modified motion vectors (MV0 'and MV 1') are obtained based on MV0, MV1, and the offset (MVoffset). The MVoffset corresponds to a point in the search window, as shown in fig. 8A. In fig. 8A, the search window 801 includes a plurality of circles. A circle 803 (as the center of the search window 801) represents the initial MV position, and the other circles of the search window 801 represent various offset candidates. For example, the open circle in the search window 801 corresponds to the initial position MVoffset (-1,1) from MV 0. When MVoffset is present, the first modified motion vector (MV 0') is equal to MV0+ MVoffset. Further, based on the mirroring rule, the second modified motion vector (MV 1') is equal to MV 1-MVoffset. In other words, MVoffset represents the offset between the initial MV and the refined MV in one of the reference pictures. In VVC (version 4), the refined search range is two integer luma samples from the initial MV.

Referring again to step s704, after obtaining MV0 'and MV 1', the first prediction block (P0) is derived using MV0 ', and the second prediction block (P1) is derived using MV 1'. Then, the sample value difference is calculated using P0 and P1. For example, the sample value difference may be the Sum of Absolute Differences (SAD) between two prediction blocks, where SAD ∑ Σx,yI P0(x, y) -P1(x, y) |, and P (x, y) represents the sample value at position (x, y) in block P.

The steps of generating MV0 'and MV 1', deriving P0 and P1 using MV0 'and MV 1', and calculating a difference using P0 and P1 are repeatedly performed for each offset candidate in the search window. After obtaining a plurality of sample value differences for different offset candidates, a smallest sample value difference of the plurality of sample value differences is determined. The minimum sample value difference corresponds to the best offset (MVoffsetBest).

In step s706, a pair of optimal motion vectors (MV0_ best and MV1_ best) are obtained using MVoffsetBest and a pair of initial motion vectors (MV0 and MV 1). Specifically, the first optimal motion vector (MV0_ best) may be equal to MV0+ MVoffsetBest, and the second optimal motion vector (MV1_ best) may be equal to MV 1-MVoffsetBest.

In step s708, the MV0_ best is used to determine the first best prediction block (P0_ best), and the MV1_ best is used to determine the second best prediction block (P1_ best). The final prediction block (Pbi) is determined using P0_ best and P1_ best. When neither WP nor BWA is enabled, Pbi will be (P0_ best + P1_ best) > > 1. When WP is enabled, Pbi will be (W0 × P0_ best + O0+ W1 × P1_ best + O1) > > 1. When BWA is enabled, Pbi will be (W0 × P0_ best + W1 × P1_ best) > > 3.

Fig. 9 illustrates a DMVR process 900 according to an embodiment.

Process 900 may begin at step s 902. In step s902, initial motion vectors MV0 and MV1 are derived. Step s902 is similar to step s702 in fig. 7, and overlapping description thereof is omitted.

After obtaining MV0 and MV1, a check is performed in step s904 as to whether the current block is BWA or WP enabled. It may be determined whether BWA is enabled by checking the BWA parameter (gbi _ idx). For example, gbi _ idx is a binary value (0 or 1), and the value of gbi _ idx determines whether BWA is enabled.

It can be determined whether WP is enabled by checking a parameter (luma _ weight _ lx _ flag). For example, luma _ weight _ lx _ flag is a binary value (0 or 1), and the value of luma _ weight _ lx _ flag determines whether WP is enabled.

If either BWA or WP is enabled, process 900 proceeds to step s 906.

Step s906 includes: as a result of determining that BWA or WP is enabled, BWA or WP is withheld from refining the initial motion vector (e.g., stopping the DMVR process) and MV0 and MV1 are used directly to derive the prediction block.

If both BWA and WP are not enabled, process 900 proceeds to step s 908.

Step s908 comprises: as a result of determining that neither BWA nor WP is enabled, the process of refining MV0 and MV1 continues (i.e., the DMVR process continues).

Fig. 10 shows a DMVR process 1000 according to an embodiment. In this embodiment, when BWA is enabled for the current block, the DMVR process is modified such that BWA parameters are taken into account during the DMVR search. In particular, during DMVR search, generating a prediction block for a reference picture list Lx (x being 0 or 1) involves a subsequent process of modifying the prediction block using the corresponding BWA parameters of Lx.

Process 1000 may begin at step s 1002. In step s1002, initial motion vectors MV0 and MV1 are derived. Step s1002 is similar to step s702 in fig. 7, and overlapping description thereof is omitted.

After MV0 and MV1 are obtained, in step s1004, a DMVR search is performed. Step s1004 is similar to step s704 except that instead of the first initial prediction block (P0) and the second initial prediction block (P1), the first prediction block (P0 ') and the second prediction block (P1') are used when determining that a sample value difference for MVoffset is given. Specifically, in step s1004, after obtaining P0 using MV0 ', P0' is obtained by modifying P0 based on the first prediction parameters (W0). For example, P0 ═ W0 × P0. Similarly, after obtaining P1 using MV1 ', P1' is obtained by modifying P1 based on second prediction parameters (W1). For example, P1 ═ W1 × P1. P0 'and P1' are used to determine sample value differences for the corresponding offsets. Thus, the prediction parameters (i.e., BWA parameters) are taken into account during the DMVR search, which improves the accuracy of the DMVR search compared to the DMVR process shown in fig. 7.

As explained for step s704, performing step s1004 results in finding the best offset value (MVoffsetBest) resulting in the smallest sample difference among the plurality of sample value differences obtained using different offset candidates.

In step s1006, after obtaining the MVoffsetBest, a pair of optimal motion vectors (MV0_ best and MV1_ best) is obtained. Step s1006 is similar to step s706 in fig. 7, and overlapping description thereof is omitted.

In step s1008, the MV0_ best is used to determine the first best prediction block (P0_ best), and the MV1_ best is used to determine the second best prediction block (P1_ best). The final prediction block (Pbi) is determined using P0_ best and P1_ best. Pbi can be determined based on (W0 × P0_ best + W1 × P1_ best) > > 3. For example, Pbi ═ (W0 × P0_ best + W1 × P1_ best) > > 3.

Fig. 11 shows a DMVR process 1100 according to an embodiment. In this embodiment, when WP is enabled for the current block, the DMVR procedure is modified such that WP parameters are taken into account during the DMVR search. In particular, during the DMVR search, the generation of a prediction block for a reference picture list Lx (x is 0 or 1) involves subsequent processes that modify the prediction block using Lx's corresponding WP parameter.

Process 1100 may begin at step s 1102. In step s1102, initial motion vectors MV0 and MV1 are derived. Step s1102 is similar to step s702 in fig. 7, and overlapping description thereof is omitted.

After MV0 and MV1 are obtained, in step s1104, a DMVR search is performed. Step s1104 is similar to step s704 except that the first prediction block (P0 ') and the second prediction block (P1') are used instead of the first initial prediction block (P0) and the second initial prediction block (P1) when determining the sample value difference for a given MVoffset. Specifically, in step s1104, after obtaining P0 using MV0 ', P0' is obtained by modifying P0 based on the first prediction parameter (W0) and the third prediction parameter (O0). For example, P0 ═ W0 × P0+ O0. Similarly, after obtaining P1 using MV1 ', P1' is obtained by modifying P1 based on the second prediction parameters (W1) and the fourth prediction parameters (O1). For example, P1 ═ W1 × P1+ O1.

As explained for step s704, performing step s1104 results in finding the best offset value (MVoffsetBest) resulting in the smallest sample difference among the plurality of sample value differences obtained using different offset candidates.

In step s1106, after obtaining the MVoffsetBest, a pair of optimal motion vectors (MV0_ Best and MV1_ Best) are obtained. Step s1106 is similar to step s706 in fig. 7, and overlapping description thereof is omitted.

In step s1108, the first best prediction block (P0_ best) is determined using MV0_ best, and the second best prediction block (P1_ best) is determined using MV1_ best. The final prediction block (Pbi) is determined using P0_ best and P1_ best. Pbi can be determined based on (W0 × P0_ best + O0+ W1 × P1_ best + O1) > > 1. For example, Pbi ═ 1 (W0 × P0_ best + O0+ W1 × P1_ best + O1).

Fig. 12 shows a DMVR process 1200 according to an embodiment. The DMVR process 1200 is an alternative to the DMVR process shown in fig. 10. In the DMVR process 1000, both the first initial prediction block (P0) and the second initial prediction block (P1) are modified and used to calculate a sample value difference. However, in the DMVR process 1200, only one of P0 and P1 is modified. This allows the DMVR process 1200 to achieve reduced complexity compared to the DMVR process 1000.

Process 1200 may begin at step s 1202. In step s1202, initial motion vectors MV0 and MV1 are derived. Step s1202 is similar to step s702 in fig. 7, and overlapping description thereof is omitted.

After obtaining MV0 and MV1, in step s1204, a DMVR search is performed. Step s1204 is similar to step s704, except that the first prediction block (P0') is used instead of the first initial prediction block (P0) when determining the sample value difference for a given MVoffset. Specifically, in step s1204, after obtaining P0 using MV0 ', P0' is obtained by modifying P0 based on the first prediction parameters (W0) and the second prediction parameters (W1). For example, P0 ═ (W0/W1) × P0. In calculating the sample value difference, the second initial prediction block (P1) is used without modification.

As explained for step s704, performing step s1204 results in finding the best offset value (MVoffsetBest) resulting in the smallest sample difference among the plurality of sample value differences obtained using different offset values.

In step s1206, after obtaining the MVoffsetBest, a pair of optimal motion vectors (MV0_ best and MV1_ best) is obtained. Step s1206 is similar to step s706 in fig. 7, and overlapping description thereof is omitted.

In step s1208, the MV0_ best is used to determine the first best prediction block (P0_ best), and the MV1_ best is used to determine the second best prediction block (P1_ best). The final prediction block (Pbi) is determined using P0_ best and P1_ best. Specifically, Pbi may be determined based on (W0 × P0_ best + W1 × P1_ best) > > 3. For example, Pbi ═ (W0 × P0_ best + W1 × P1_ best) > > 3.

In some embodiments, the second initial prediction block (P1) may be modified during the DMVR search instead of the first initial prediction block (P0). For example, during a DMVR search, P1 may be modified to be P1' ═ (W1/W0) × P1.

Fig. 13 shows a DMVR process 1300 according to an embodiment. The DMVR process 1300 is an alternative to the DMVR process shown in fig. 11. In the DMVR process 1100, both the first initial prediction block (P0) and the second initial prediction block (P1) are modified and used to calculate a sample value difference. However, in the DMVR process 1300, only one of P0 and P1 is modified. This allows the DMVR process 1300 to achieve reduced complexity compared to the DMVR process 1100.

Process 1300 may begin at step s 1302. In step s1302, initial motion vectors MV0 and MV1 are derived. Step s1302 is similar to step s702 in fig. 7, and overlapping description thereof is omitted.

After obtaining MV0 and MV1, in step s1304, a DMVR search is performed. Step s1304 is similar to step s704, except that the first prediction block (P0') is used instead of the first initial prediction block (P0) when determining the sample value difference for a given MVoffset. Specifically, in step s1304, after obtaining P0 using MV0 ', P0' is obtained by modifying P0 based on the first prediction parameter (W0), the second prediction parameter (W1), the third prediction parameter (O0), and the fourth prediction parameter (O1). For example, P0 ═ (W0/W1) × P0+ ((O0-O1)/W1). In calculating the sample value difference, the second initial prediction block (P1) is used without modification.

As explained for step s704, performing step s1304 results in finding the best offset value (MVoffsetBest) resulting in the smallest sample difference among the plurality of sample value differences obtained using different offset values.

In step s1306, after obtaining the MVoffsetBest, a pair of optimal motion vectors (MV0_ best and MV1_ best) is obtained. Step s1306 is similar to step s706 in fig. 7, and overlapping description thereof is omitted.

In step s1308, the MV0_ best is used to determine the first best prediction block (P0_ best), and the MV1_ best is used to determine the second best prediction block (P1_ best). The final prediction block (Pbi) is determined using P0_ best and P1_ best. Pbi can be determined based on (W0 × P0_ best + O0+ W1 × P1_ best + O1) > > 1. For example, Pbi ═ 1 (W0 × P0_ best + O0+ W1 × P1_ best + O1).

In some embodiments, the second initial prediction block (P1) may be modified during the DMVR search instead of the first initial prediction block (P0). For example, during a DMVR search, P1 may be set to (W1/W0). times.P 1+ ((O1-O0)/W0).

Fig. 14 is a block diagram of an apparatus 1400 for implementing the encoder 402 or decoder 404. As shown in fig. 14, the apparatus 1400 may include: a Processing Circuit (PC)1402, which may include one or more processors (P)1455 (e.g., a general purpose microprocessor and/or one or more other processors, such as an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), etc.), which may be co-located in a single housing or data center, or geographically distributed; network interface 1445 includes a transmitter (Tx)1448 and a receiver (Rx)1447 that enable apparatus 1400 to transmit data to and receive data from other nodes connected to network 410 (e.g., an Internet Protocol (IP) network), network interface 1445 connected to network 410; and a local storage unit (also known as a "data storage system") 1408, which may include one or more non-volatile storage devices and/or one or more volatile storage devices. In embodiments where PC 1402 includes a programmable processor, a Computer Program Product (CPP)1441 may be provided. CPP 1441 includes a computer-readable medium (CRM)1442, which computer-readable medium (CRM)2342 stores a Computer Program (CP)1443 that includes computer-readable instructions (CRI) 1444. CRM 1442 may be a non-transitory computer-readable medium, such as a magnetic medium (e.g., hard disk), an optical medium, a memory device (e.g., random access memory, flash memory), or the like. In some embodiments, the CRI 1444 of the computer program 1443 is configured such that, when executed by the PC 1402, the CRI causes the apparatus 1400 to perform the steps described herein (e.g., the steps described herein with reference to the flow diagrams). In other embodiments, the apparatus 1400 may be configured to perform the steps described herein without the need for code. That is, for example, 1402 may consist of only one or more ASICs. Thus, the features of the embodiments described herein may be implemented in hardware and/or software.

Fig. 15 is a flow diagram illustrating a process 1500 for determining a prediction block. The process 1500 may begin in step s 1502.

Step s1502 includes obtaining a first pair of initial motion vectors.

Step s1504 comprises obtaining first prediction parameters.

Step s1506 includes obtaining second prediction parameters.

Step s1508 comprises generating a first pair of modified motion vectors using the first pair of initial motion vectors and the first motion vector offset, the first pair of modified motion vectors comprising the first modified motion vector and the second modified motion vector.

Step s1510 comprises obtaining a first prediction block using the first modified motion vector.

Step s1512 comprises obtaining a second prediction block using the second modified motion vector.

Step s1514 includes calculating a first difference using the first prediction block and the second prediction block.

Step s1516 comprises generating a second pair of modified motion vectors using the first pair of initial motion vectors and the second motion vector offset, the second pair of modified motion vectors comprising a third modified motion vector and a fourth modified motion vector.

Step s1518 includes obtaining a third prediction block using the third modified motion vector.

Step s1520 comprises obtaining a fourth prediction (P4) block using the fourth modified motion vector.

Step s1522 includes calculating a second difference using the third prediction block and the fourth prediction block.

Step s1524 includes determining the best motion vector offset using the first difference and the second difference.

Step s1526 includes determining a prediction block using the determined optimal motion vector offset.

In some embodiments, process 1500 further comprises: determining a first optimal motion vector using the first initial motion vector and the optimal motion vector offset; determining a second optimal motion vector using the second initial motion vector and the optimal motion vector offset; generating a first best prediction block using the first best motion vector; a second best prediction block is generated using the second best motion vector, and a prediction block is determined based on a product of the first best prediction block and the first prediction parameter and a product of the second best prediction block and the second prediction parameter.

In some embodiments, obtaining the second prediction block comprises deriving an initial second prediction block using the second modified motion vector, deriving the second prediction block using the initial second prediction block and at least the second prediction parameter, and obtaining the fourth prediction block comprises deriving an initial fourth prediction block using the fourth modified motion vector, deriving the fourth prediction block using the initial fourth prediction block and at least the second prediction parameter.

In some embodiments, the first prediction block is derived based on a product of the initial first prediction block and the first prediction parameter, and the second prediction block is derived based on a product of the initial second prediction block and the second prediction parameter.

In some embodiments, the first prediction block is derived based on (W1/W2) × Pi1, where W1 is the first prediction parameter, W2 is the second prediction parameter, and Pi1 is the initial first prediction block.

In some embodiments, process 1500 also includes obtaining a third prediction parameter and obtaining a fourth prediction parameter.

In some embodiments, the prediction block is determined based on (W1 × P1_ best) + O3+ (W2 × P2_ best) + O4, where W1 is a first prediction parameter, P1_ best is a first best prediction block, O3 is a third prediction parameter, W2 is a second prediction parameter, P2_ best is a second best prediction block, and O4 is a fourth prediction parameter.

In some embodiments, the first prediction block is also derived based at least on the third prediction parameter.

In some embodiments, the first prediction block is also derived based on a difference between the third prediction parameter and the fourth prediction parameter.

In some embodiments, the first prediction parameter is one of the parameters for weighted prediction or one of the parameters for generalized bi-directional prediction with weighted averaging.

Fig. 16 is a flow diagram illustrating a process 1600 for determining a prediction block. The process 1600 may begin in step s 1602.

Step s1602 includes obtaining a pair of initial motion vectors.

Step s1604 comprises determining whether to refine the initial motion vector, wherein determining whether to refine the initial motion vector comprises determining whether the first prediction scheme is enabled.

Step s1606 includes, as a result of determining to refine the initial motion vector, refining the initial motion vector, and generating the prediction block using the refined motion vector. Step s1608 comprises, as a result of the determination not to refine the initial motion vector, suppressing refinement of the initial motion vector, and generating the prediction block using the initial motion vector.

In some embodiments, determining whether to refine the initial motion vector further comprises determining whether a second prediction scheme is enabled. In some embodiments, the first prediction scheme is weighted prediction and the second prediction scheme is generalized bi-directional prediction with weighted averaging. In some embodiments, determining whether to refine the initial motion vector further comprises: determining to suppress refinement of the initial motion vector as a result of determining that the first prediction scheme or the second prediction scheme is enabled; alternatively, the refined initial motion vector is determined as a result of determining that neither the first prediction scheme nor the second prediction scheme is enabled.

Summary of various embodiments

A1. A method (1500) for determining a prediction block (Pbi) for decoding or encoding a current block in a current picture of a video stream, the method comprising: obtaining a first pair of initial motion vectors (s1502) comprising a first initial motion vector (MV1) and a second initial motion vector (MV 2); obtaining first prediction parameters (W1) (s 1504); obtaining a second prediction parameter (W2) (s 1506); generating a first pair of modified motion vectors (s1508) using the first pair of initial motion vectors and the first motion vector offset (MVoffset1), the first pair of modified motion vectors comprising a first modified motion vector (MV1 ') and a second modified motion vector (MV 2'); obtaining a first prediction block (P1) using the first modified motion vector (s 1510); obtaining a second prediction block (P2) using the second modified motion vector (s 1512); calculating a first difference using the first prediction block and the second prediction block (s 1514); generating a second pair of modified motion vectors (s1516) using the first pair of initial motion vector and second motion vector (MVoffset2) offsets, the second pair of modified motion vectors comprising a third modified motion vector (MV3 ') and a fourth modified motion vector (MV 4'); obtaining a third prediction block (P3) using the third modified motion vector (s 1518); obtaining a fourth prediction block (P4) using the fourth modified motion vector (s 1520); calculating a second difference using the third prediction block and the fourth prediction block (s 1522); determining a best motion vector offset using the first difference and the second difference (s 1524); and determining a prediction block (Pbi) using the determined optimal motion vector offset (s1526), wherein obtaining the first prediction block (P1) comprises deriving an initial first prediction block (Pi1) using the first modified motion vector and deriving a first prediction block P1 using Pi1 and at least the first prediction parameters (W1), and obtaining the third prediction block (P3) comprises deriving an initial third prediction block (Pi3) using the third modified motion vector and deriving a third prediction block P3 using Pi1 and at least the first prediction parameters (W1).

A2. The method of embodiment a1, further comprising: determining a first optimal motion vector (MV1_ best) using the first initial motion vector (MV1) and the optimal motion vector offset (MVoffsetBest); determining a second optimal motion vector (MV2_ best) using the second initial motion vector (MV2) and the optimal motion vector offset (MVoffsetBest); generating a first best prediction block (P1_ best) using the first best motion vector (MV1_ best); generating a second best prediction block (P2_ best) using the second best motion vector (MV2_ best); and determining the prediction block (Pbi) based on a product of the first best prediction block (P1_ best) and the first prediction parameter (W1) and a product of the second best prediction block (P2_ best) and the second prediction parameter (W2).

A3. The method according to embodiments a 1-a 2, wherein obtaining the second prediction block (P2) comprises deriving an initial second prediction block (Pi2) using the second modified motion vector, and deriving the second prediction block (P2) using the initial second prediction block (Pi2) and at least the second prediction parameters (W2); and obtaining the fourth prediction block (P4) comprises deriving an initial fourth prediction block (Pi4) using the fourth modified motion vector, and deriving the fourth prediction block using the initial fourth prediction block (Pi4) and at least the second prediction parameters (W2).

A4. The method according to embodiment a3, wherein the first prediction block (P1) is derived based on the product of an initial first prediction block (Pi1) and first prediction parameters (W1), and the second prediction block (P2) is derived based on the product of an initial second prediction block (Pi2) and second prediction parameters (W2).

A5. According to the method of embodiments a 1-a 2, a first prediction block (P1) is derived based on (W1/W2) × Pi1, wherein W1 is a first prediction parameter, W2 is a second prediction parameter, and Pi1 is an initial first prediction block (Pi 1).

A6. The method of embodiments a 1-a 5, further comprising: obtaining a third prediction parameter (O3); and obtaining a fourth prediction parameter (O4).

A7. The method of embodiment a6, wherein the prediction block (Pbi) is determined based on (W1 × P1_ best) + O3+ (W2 × P2_ best) + O4, wherein W1 is a first prediction parameter, P1_ best is a first best prediction block, O3 is a third prediction parameter, W2 is a second prediction parameter, P2_ best is a second best prediction block, and O4 is a fourth prediction parameter.

A8. The method as in embodiment a7, wherein the first prediction block (P1) is also derived based at least on a third prediction parameter (O3).

A9. The method of embodiment a7, wherein the first prediction block (P1) is derived also based on a difference between the third prediction parameter (O3) and the fourth prediction parameter (O4).

A10. The method according to embodiments a1 to a9, wherein the first prediction parameters (W1) are one of the parameters for weighted prediction or one of the parameters for generalized bi-prediction (BWA) with weighted average.

B1. A method (1600) for determining a prediction block (Pbi) for decoding or encoding a current block in a current picture of a video stream, the method comprising: obtaining a pair of initial motion vectors (s1602), the pair of initial motion vectors comprising a first initial motion vector (MV1) and a second initial motion vector (MV 2); determining whether to refine the initial motion vector (s 1604); and as a result of determining to refine the initial motion vector, refining the initial motion vector (s1606), wherein determining whether to refine the initial motion vector comprises: determining whether the first prediction scheme and/or the second prediction scheme is enabled; and determining to suppress the refined initial motion vector as a result of determining that the first prediction scheme or the second prediction scheme is enabled, or determining to refine the initial motion vector as a result of determining that neither the first prediction scheme nor the second prediction scheme is enabled.

B2. The method of embodiment B1 wherein the first prediction scheme is Weighted Prediction (WP) and the second prediction scheme is generalized bi-directional prediction (BWA) with weighted averaging.

C1. An encoder or decoder apparatus (1400), the apparatus (1400) being adapted to: determining a prediction block (Pbi) for encoding or decoding a current block in a current picture of a video stream, wherein the apparatus is adapted to cause the apparatus to determine the prediction block by performing a process comprising: obtaining a first pair of initial motion vectors (s1502) comprising a first initial motion vector (MV1) and a second initial motion vector (MV 2); obtaining first prediction parameters (W1) (s 1504); obtaining a second prediction parameter (W2) (s 1506); generating a first pair of modified motion vectors (s1508) using the first pair of initial motion vectors and the first motion vector offset (MVoffset1), the first pair of modified motion vectors comprising a first modified motion vector (MV1 ') and a second modified motion vector (MV 2'); obtaining a first prediction block (P1) using the first modified motion vector (s 1510); obtaining a second prediction block (P2) using the second modified motion vector (s 1512); calculating a first difference using the first prediction block and the second prediction block (s 1514); generating a second pair of modified motion vectors (s1516) using the first pair of initial motion vectors and the second motion vector offset (MVoffset2), the second pair of modified motion vectors comprising a third modified motion vector (MV3 ') and a fourth modified motion vector (MV 4'); obtaining a third prediction block (P3) using the third modified motion vector (s 1518); obtaining a fourth prediction block using the fourth modified motion vector) (P4) (s 1520); calculating a second difference using the third prediction block and the fourth prediction block (s 1522); determining a best motion vector offset using the first difference and the second difference (s 1524); and determining a prediction block (Pbi) using the determined optimal motion vector offset (s1526), wherein obtaining a first prediction block (P1) comprises deriving an initial first prediction block (Pi1) using the first modified motion vector and deriving P1 using Pi1 and at least the first prediction parameters (W1), and obtaining a third prediction block (P3) comprises deriving an initial third prediction block (Pi3) using the third modified motion vector and deriving P3 using Pi3 and at least the first prediction parameters (W1).

C2. The apparatus of embodiment C1, wherein the apparatus is further adapted to perform the steps of any of embodiments a2 to a10.

D1. An encoder or decoder apparatus (1400), the apparatus (1400) being adapted to: determining a prediction block (Pbi) for encoding or decoding a current block in a current picture of a video stream, wherein the apparatus is adapted to cause the apparatus to determine the prediction block by performing a process comprising: obtaining a pair of initial motion vectors (s1602), the pair of initial motion vectors comprising a first initial motion vector (MV1) and a second initial motion vector (MV 2); determining whether to refine the initial motion vector (s 1604); and refining the initial motion vector as a result of determining to refine the initial motion vector (s1606), wherein determining whether to refine the initial motion vector comprises: determining whether the first prediction scheme and/or the second prediction scheme is enabled; and determining to suppress the refined initial motion vector as a result of determining that the first prediction scheme or the second prediction scheme is enabled, or determining to refine the initial motion vector as a result of determining that neither the first prediction scheme nor the second prediction scheme is enabled.

D2. The apparatus of embodiment D1 wherein the first prediction scheme is Weighted Prediction (WP) and the second prediction scheme is generalized bi-prediction (BWA) with weighted averaging.

E1. A computer program comprising instructions which, when executed on at least one processor, cause the at least one processor to carry out the method according to any one of embodiments a1 to a10 or B1 to B2.

E2. A carrier containing the computer program according to embodiment E1, wherein the carrier is one of an electronic signal, an optical signal, a radio signal, or a computer readable storage medium

While various embodiments are described herein (including the accompanying appendices containing a proposal to modify a 3GPP standard), it should be understood that they have been presented by way of example only, and not limitation. Thus, the breadth and scope of the present disclosure should not be limited by any of the above-described exemplary embodiments. Moreover, any combination of the above-described elements in all possible variations thereof is encompassed by the disclosure unless otherwise indicated herein or otherwise clearly contradicted by context.

Additionally, while the processes described above and shown in the figures are shown as a series of steps, they are for illustration purposes only. Thus, it is contemplated that some steps may be added, some steps may be omitted, the order of steps may be rearranged, and some steps may be performed in parallel.

35页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于帧内预测模式与块差分脉冲编码调制模式之间交互的方法和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类