IP Library › Granted Patent US 11,652,984
Granted Patent B2
US 11,652,984 · App. 16/684,440 · Granted May 16, 2023

Position-dependent intra-inter prediction combination in video coding

Inventors: Geert Van der Auwera (Del Mar, CA); Luong Pham Van (San Diego, CA); Adarsh Krishnan Ramasubramonian (Irvine, CA); Marta Karczewicz (San Diego, CA)
Assignee: QUALCOMM INCORPORATED
H04N19/105H04N19/132H04N19/136H04N19/159H04N19/176H04N19/423
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,652,984
App. No.
16/684,440
Granted
May 16, 2023
Kind
B2
Abstract

An example device for coding (encoding or decoding) video data includes a memory configured to store video data; and one or more processors implemented in circuitry and configured to: determine a first number of neighboring blocks to a current block of the video data that are intra-predicted; determine a second number of the neighboring blocks that are inter-predicted; determine a first weight value to be applied to intra-prediction samples of an intra-prediction block for the current block; determine a second weight value to be applied to inter-prediction samples of an inter-prediction block for the current block; generate a prediction block for the current block as a weighted combination of the intra-prediction block to which the first weight value is applied and the inter-prediction block to which the second weight value is applied; and code the current block using the prediction block.

Claims (108)

1. A method of coding video data, the method comprising:

determining that neighboring blocks to a current block comprise an above-neighboring block above the current block and a left-neighboring block to the left of the current block;

determining a first weight value to be applied to intra-prediction samples of an intra-prediction block for the current block;

determining a second weight value to be applied to inter-prediction samples of an inter-prediction block for the current block;

wherein determining the first weight value and the second weight value comprises:

when the above-neighboring block and the left-neighboring block are each intra-predicted, determining the first weight value and the second weight value comprises determining the first weight value to be equal to 3 and determining the second weight value to be equal to 1;

when one of the above-neighboring block or the left-neighboring block is intra-predicted and the other of the above-neighboring block or the left-neighboring block is inter-predicted, determining the first weight value and the second weight value comprises determining the first weight value to be equal to 2 and determining the second weight value to be equal to 2; and

when the above-neighboring block and the left-neighboring block are each inter-predicted, determining the first weight value and the second weight value comprises determining the first weight value to be equal to 1 and determining the second weight value to be equal to 3,

generating a prediction block for the current block as a weighted combination of the intra-prediction block to which the first weight value is applied and the inter-prediction block to which the second weight value is applied; and

coding the current block using the prediction block.

2. The method of claim 1 , wherein the above-neighboring block comprises a block above the current block that touches an upper-left corner of the current block, and wherein the left-neighboring block comprises a block to the left of the current block that touches the upper-left corner of the current block.

3. The method of claim 1 , wherein the above-neighboring block comprises a block above the current block that touches an upper-right corner of the current block, and wherein the left-neighboring block comprises a block to the left of the current block that touches a lower-left corner of the current block.

4. A method of coding video data, the method comprising:

determining a first number of neighboring blocks to a current block that are intra-predicted;

determining a second number of the neighboring blocks that are inter-predicted;

determining a first weight value to be applied to intra-prediction samples of an intra-prediction block for the current block according to the first number and the second number;

determining a second weight value to be applied to inter-prediction samples of an inter-prediction block for the current block according to the first number and the second number;

generating a prediction block for the current block as a weighted combination of the intra-prediction block to which the first weight value is applied and the inter-prediction block to which the second weight value is applied, wherein generating the prediction block comprises generating a prediction sample at position (x,y) of the prediction block using the formula pred(x,y)=(wIntra * intraPred(x,y)+wInter * interPred(x,y)+offset)/(wIntra+wInter), wherein pred(x,y) comprises the prediction sample at position (x,y) of the prediction block, wIntra comprises the first weight value, wInter comprises the second weight value, intraPred(x,y) comprises a value of a sample at position (x,y) of the intra-prediction block, interPred(x,y) comprises a value of a sample at position (x,y) of the inter-prediction block, and offset comprises an offset value; and

coding the current block using the prediction block.

5. The method of claim 4 , wherein performing the division operation of the formula comprises performing a bitwise right shift of the numerator of the formula by (wIntra+wInter).

6. The method of claim 1 , wherein coding the current block comprises decoding the current block, comprising:

decoding a residual block for the current block; and

combining the prediction block with the residual block to produce a decoded block.

7. The method of claim 1 , wherein coding the current block comprises encoding the current block, comprising:

generating a residual block representing differences between the current block and the prediction block; and

encoding the residual block.

8. A device for coding video data, the device comprising:

a memory configured to store video data; and

one or more processors implemented in circuitry and configured to:

determine that neighboring blocks to a current block of the video data comprise an above-neighboring block above the current block and a left-neighboring block to the left of the current block;

determine a first weight value to be applied to intra-prediction samples of an intra-prediction block for the current block;

determine a second weight value to be applied to inter-prediction samples of an inter-prediction block for the current block;

wherein to determine the first weight value and the second weight value, the one or more processors are configured to:

when the above-neighboring block and the left-neighboring block are each intra-predicted, determine the first weight value to be equal to 3 and the second weight value to be equal to 1;

when one of the above-neighboring block or the left-neighboring block is intra-predicted and the other of the above-neighboring block or the left-neighboring block is inter-predicted, determine the first weight value to be equal to 2 and the second weight value to be equal to 2; and

when the above-neighboring block and the left-neighboring block are each inter-predicted, determine the first weight value to be equal to 1 and the second weight value to be equal to 3,

generate a prediction block for the current block as a weighted combination of the intra-prediction block to which the first weight value is applied and the inter-prediction block to which the second weight value is applied; and

code the current block using the prediction block.

9. The device of claim 8 , wherein the above-neighboring block comprises a block above the current block that touches an upper-left corner of the current block, and wherein the left-neighboring block comprises a block to the left of the current block that touches the upper-left corner of the current block.

10. The device of claim 8 , wherein the above-neighboring block comprises a block above the current block that touches an upper-right corner of the current block, and wherein the left-neighboring block comprises a block to the left of the current block that touches a lower-left corner of the current block.

11. A device for coding video data, the device comprising:

a memory configured to store video data; and

one or more processors implemented in circuitry and configured to:

determine a first number of neighboring blocks to a current block of the video data that are intra-predicted;

determine a second number of the neighboring blocks that are inter-predicted;

determine a first weight value to be applied to intra-prediction samples of an intra-prediction block for the current block according to the first number and the second number;

determine a second weight value to be applied to inter-prediction samples of an inter-prediction block for the current block according to the first number and the second number;

generate a prediction block for the current block as a weighted combination of the intra-prediction block to which the first weight value is applied and the inter-prediction block to which the second weight value is applied, wherein to generate the prediction block, the one or more processors are configured to generate a prediction sample at position (x,y) of the prediction block using the formula pred(x,y)=(wIntra * intraPred(x,y)+wInter * interPred(x,y)+offset)/(wIntra+wInter), wherein pred(x,y) comprises the prediction sample at position (x,y) of the prediction block, wIntra comprises the first weight value, wInter comprises the second weight value, intraPred(x,y) comprises a value of a sample at position (x,y) of the intra-prediction block, interPred(x,y) comprises a value of a sample at position (x,y) of the inter-prediction block, and offset comprises an offset value; and

code the current block using the prediction block.

12. The device of claim 11 , wherein to perform the division operation of the formula, the one or more processors are configured to perform a bitwise right shift of the numerator of the formula by (wIntra+wInter).

13. The device of claim 8 , wherein to code the current block, the one or more processors are configured to decode the current block, wherein the one or more processors are configured to:

decode a residual block for the current block; and

combine the prediction block with the residual block to produce a decoded block.

14. The device of claim 8 , wherein to code the current block, the one or more processors are configured to encode the current block, wherein the one or more processors are configured to:

generate a residual block representing differences between the current block and the prediction block; and

encode the residual block.

15. A non-transitory computer-readable storage medium having stored thereon instructions that, when executed, cause a processor to:

determine that neighboring blocks to a current block comprise an above-neighboring block above the current block and a left-neighboring block to the left of the current block;

determine a first weight value to be applied to intra-prediction samples of an intra-prediction block for the current block;

determine a second weight value to be applied to inter-prediction samples of an inter-prediction block for the current block according to the first number and the second number;

wherein the instructions that cause the processor to determine the first weight value and the second weight value comprise instructions that cause the processor to:

when the above-neighboring block and the left-neighboring block are each intra-predicted, determine the first weight value to be equal to 3 and the second weight value to be equal to 1;

when one of the above-neighboring block or the left-neighboring block is intra-predicted and the other of the above-neighboring block or the left-neighboring block is inter-predicted, determine the first weight value to be equal to 2 and the second weight value to be equal to 2; and

when the above-neighboring block and the left-neighboring block are each inter-predicted, determine the first weight value to be equal to 1 and the second weight value to be equal to 3,

generate a prediction block for the current block as a weighted combination of the intra-prediction block to which the first weight value is applied and the inter-prediction block to which the second weight value is applied; and

code the current block using the prediction block.

16. The non-transitory computer-readable storage medium of claim 14 , wherein the above-neighboring block comprises a block above the current block that touches an upper-left corner of the current block, and wherein the left-neighboring block comprises a block to the left of the current block that touches the upper-left corner of the current block.

17. The non-transitory computer-readable storage medium of claim 14 , wherein the above-neighboring block comprises a block above the current block that touches an upper-right corner of the current block, and wherein the left-neighboring block comprises a block to the left of the current block that touches a lower-left corner of the current block.

18. A non-transitory computer-readable storage medium having stored thereon instructions that, when executed, cause a processor to:

determine a first number of neighboring blocks to a current block that are intra-predicted;

determine a second number of the neighboring blocks that are inter-predicted;

determine a first weight value to be applied to intra-prediction samples of an intra-prediction block for the current block according to the first number and the second number;

determine a second weight value to be applied to inter-prediction samples of an inter-prediction block for the current block according to the first number and the second number;

generate a prediction block for the current block as a weighted combination of the intra-prediction block to which the first weight value is applied and the inter-prediction block to which the second weight value is applied, wherein the instructions that cause the processor to generate the prediction block comprise instructions that cause the processor to generate a prediction sample at position (x,y) of the prediction block using the formula pred(x,y)=(wIntra * intraPred(x,y)+wInter * interPred(x,y)+offset)/(wIntra+wInter), wherein pred(x,y) comprises the prediction sample at position (x,y) of the prediction block, wIntra comprises the first weight value, wInter comprises the second weight value, intraPred(x,y) comprises a value of a sample at position (x,y) of the intra-prediction block, interPred(x,y) comprises a value of a sample at position (x,y) of the inter-prediction block, and offset comprises an offset value; and

code the current block using the prediction block.

19. The non-transitory computer-readable storage medium of claim 18 , wherein the instructions that cause the processor to perform the division operation of the formula comprise instructions that cause the processor to perform a bitwise right shift of the numerator of the formula by (wIntra+wInter).

20. The non-transitory computer-readable storage medium of claim 15 , wherein the instructions that cause the processor to code the current block comprise instructions that cause the processor to decode the current block, comprising instructions that cause the processor to:

decode a residual block for the current block; and

combine the prediction block with the residual block to produce a decoded block.

21. The non-transitory computer-readable storage medium of claim 15 , wherein the instructions that cause the processor to code the current block comprise instructions that cause the processor to decode the current block, comprising instructions that cause the processor to:

generate a residual block representing differences between the current block and the prediction block; and

encode the residual block.

22. A device for coding video data, the device comprising:

means for determining that neighboring blocks to a current block comprise an above-neighboring block above the current block and a left-neighboring block to the left of the current block;

means for determining a first weight value to be applied to intra-prediction samples of an intra-prediction block for the current block;

means for determining a second weight value to be applied to inter-prediction samples of an inter-prediction block for the current block;

wherein the means for determining the first weight value and the means for determining the second weight value comprise:

means for determining the first weight value to be equal to 3 and means for determining the second weight value to be equal to 1 when the above-neighboring block and the left-neighboring block are each intra-predicted;

means for determining the first weight value to be equal to 2 and determining the second weight value to be equal to 2 when one of the above-neighboring block or the left-neighboring block is intra-predicted and the other of the above-neighboring block or the left-neighboring block is inter-predicted; and

means for determining the first weight value to be equal to 1 and means for determining the second weight value to be equal to 3 when the above-neighboring block and the left-neighboring block are each inter-predicted,

means for generating a prediction block for the current block as a weighted combination of the intra-prediction block to which the first weight value is applied and the inter-prediction block to which the second weight value is applied; and

means for coding the current block using the prediction block.

23. The device of claim 21 , wherein the above-neighboring block comprises a block above the current block that touches an upper-left corner of the current block, and wherein the left-neighboring block comprises a block to the left of the current block that touches the upper-left corner of the current block.

24. The device of claim 21 , wherein the above-neighboring block comprises a block above the current block that touches an upper-right corner of the current block, and wherein the left-neighboring block comprises a block to the left of the current block that touches a lower-left corner of the current block.

25. A device for coding video data, the device comprising:

means for determining a first number of neighboring blocks to a current block that are intra-predicted;

means for determining a second number of the neighboring blocks that are inter-predicted;

means for determining a first weight value to be applied to intra-prediction samples of an intra-prediction block for the current block according to the first number and the second number;

means for determining a second weight value to be applied to inter-prediction samples of an inter-prediction block for the current block according to the first number and the second number;

means for generating a prediction block for the current block as a weighted combination of the intra-prediction block to which the first weight value is applied and the inter-prediction block to which the second weight value is applied, wherein the means for generating the prediction block comprises means for generating a prediction sample at position (x,y) of the prediction block using the formula pred(x,y)=(wIntra * intraPred(x,y)+wInter * interPred(x,y)+offset)/(wIntra+wInter), wherein pred(x,y) comprises the prediction sample at position (x,y) of the prediction block, wIntra comprises the first weight value, wInter comprises the second weight value, intraPred(x,y) comprises a value of a sample at position (x,y) of the intra-prediction block, interPred(x,y) comprises a value of a sample at position (x,y) of the inter-prediction block, and offset comprises an offset value; and

means for coding the current block using the prediction block.

26. The device of claim 25 , wherein the means for generating the prediction sample comprises means for performing a bitwise right shift of the numerator of the formula by (wIntra+wInter) to perform the division operation of the formula.

27. The device of claim 22 , wherein the means for coding the current block comprises means for decoding the current block, comprising:

means for decoding a residual block for the current block; and

means for combining the prediction block with the residual block to produce a decoded block.

28. The device of claim 22 , wherein the means for coding the current block comprises means for encoding the current block, comprising:

means for generating a residual block representing differences between the current block and the prediction block; and

means for encoding the residual block.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 6, 2020
From: VAN DER AUWERA, GEERT; PHAM VAN, LUONG; RAMASUBRAMONIAN, ADARSH KRISHNAN; KARCZEWICZ, MARTA
To: QUALCOMM INCORPORATED
Reel/Frame 051746/0556 →
Continuity (3)
Provisional Application 62768655 · Nov 16, 2018
Provisional Application 62784140 · Dec 21, 2018
Related Publication 20200162728A1 · May 21, 2020
Cited By (1)
US 12,375,689