IP Library › Patent Application 19300099
Patent Application
App. No. 19/300,099

Block Vector Predictor Candidate Selection

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 None
App. No.
19/300,099
Abstract

Encoding and/or decoding a block of a video frame may be based on a previously decoded reference block in the same frame or in a different frame. The reference block may be indicated by a block vector (BV). The BV may be encoded as difference between a block vector predictor (BVP) and the BV. The BVP may be selected based on a distance between the BVP and another BVP which may improve diversity of selected BVPs and improve prediction accuracy of the BVP.

Claims (100)

1 . A computing device comprising:

one or more processors; and

memory storing instructions that, when executed by the one or more processors, cause the computing device to:

determine a first block vector predictor (BVP) candidate group comprising at least one BVP candidate, of a plurality of BVP candidates, within a threshold distance from a first BVP candidate of the plurality of BVP candidates;

determine a second BVP candidate group comprising one or more BVP candidates, of the plurality of BVP candidates, not within the threshold distance from the first BVP candidate;

determine, for a BVP candidate of the first BVP candidate group, a first cost;

determine, for a BVP candidate of the second BVP candidate group, a second cost; and

generate a list of BVP candidates comprising:

a first BVP candidate selected from the first BVP candidate group based on the first cost; and

a second BVP candidate selected from the second BVP candidate group based on the second cost; and

coding, based on the list of BVP candidates, a current block of content.

2 . The computing device of claim 1 , wherein a BVP candidate of the plurality of BVP candidates indicates a displacement from the current block to a location in a reconstructed region of the content.

3 . The computing device of claim 1 , wherein the one or more BVP candidates of the second BVP candidate group are within a second threshold distance from a second BVP candidate of the plurality of BVP candidates.

4 . The computing device of claim 1 , wherein the instructions, when executed by the one or more processors, further cause the computing device to determine a third BVP candidate group comprising one or more BVP candidates of the plurality of BVP candidates not included in the first BVP candidate group and not included in the second BVP candidate group.

5 . The computing device of claim 1 , wherein:

the first cost comprises a first template matching cost that indicates a first difference between a template of the current block and a template of a first prediction block prediction block displaced from the current block by a BVP candidate of the first BVP candidate group; and

the second cost comprises a second template matching cost that indicates a second difference between the template of the current block and a template of a second prediction block displaced from the current block by a BVP candidate of the second BVP candidate group.

6 . The computing device of claim 5 , wherein at least one of the first difference or the second difference is a Sum of Absolute Differences.

7 . The computing device of claim 1 , wherein the instructions, when executed by the one or more processors, further cause the computing device to:

select the first BVP candidate from the first BVP candidate group based on the first cost being a lowest cost of at least one cost determined respectively for the at least one BVP candidate of the first BVP candidate group; and

select the second BVP candidate from the second BVP candidate group based on the second cost being a lowest cost of at least one cost determined respectively for the at least one BVP candidate of the second BVP candidate group.

8 . The computing device of claim 1 , wherein the instructions, when executed by the one or more processors, further cause the computing device to reorder the list of BVP candidates based on a cost determined respectively for at least one BVP candidate of the list of BVP candidates.

9 . The computing device of claim 1 , wherein the instructions, when executed by the one or more processors, further cause the computing device to:

determine, for the first BVP candidate group and based on a first weighted average of one or more BVP candidates of the first BVP candidate group, a first averaged BVP candidate, wherein the first weighted average is based on at least one first template matching cost determined respectively for the at least one BVP candidate of the first BVP candidate group;

determine, for the second BVP candidate group and based on a second weighted average of one or more BVP candidates of the second BVP candidate group, a second averaged BVP candidate, wherein the second weighted average is based on at least one second template matching cost determined respectively for the at least one BVP candidate of the second BVP candidate group; and

include, in the list of BVP candidates, the first averaged BVP candidate and the second averaged BVP candidate.

10 . The computing device of claim 9 , wherein:

the first weighted average is based on an inverse of a first template matching cost determined for a BVP candidate of the first BVP candidate group; and

the second weighted average is based on an inverse of a second template matching cost determined for a BVP candidate of the second BVP candidate group.

11 . The computing device of claim 1 , wherein the list of BVP candidates is one of:

a merge list for merge mode; or

an advanced motion vector prediction (AMVP) list for AMVP mode.

12 . A system comprising:

a first computing device comprising:

one or more first processors; and

first memory storing first instructions that, when executed by the one or more first processors, cause the first computing device to:

determine a first block vector predictor (BVP) candidate group comprising at least one BVP candidate, of a plurality of BVP candidates, within a threshold distance from a first BVP candidate of the plurality of BVP candidates;

determine a second BVP candidate group comprising one or more BVP candidates, of the plurality of BVP candidates, not within the threshold distance from the first BVP candidate;

determine, for a BVP candidate of the first BVP candidate group, a first cost;

determine, for a BVP candidate of the second BVP candidate group, a second cost; and

generate a list of BVP candidates comprising:

a first BVP candidate selected from the first BVP candidate group based on the first cost; and

a second BVP candidate selected from the second BVP candidate group based on the second cost; and

decode, based on the list of BVP candidates, a current block of content; and

a second computing device comprising:

one or more second processors; and

second memory storing second instructions that, when executed by the one or more second processors, cause the second computing device to:

encode the content; and

send the encoded content to the first computing device.

13 . The system of claim 12 , wherein a BVP candidate of the plurality of BVP candidates indicates a displacement from the current block to a location in a reconstructed region of the content.

14 . The system of claim 12 , wherein the one or more BVP candidates of the second BVP candidate group are within a second threshold distance from a second BVP candidate of the plurality of BVP candidates.

15 . The system of claim 12 , wherein the first instructions, when executed by the one or more first processors, further cause the first computing device to determine a third BVP candidate group comprising one or more BVP candidates of the plurality of BVP candidates not included in the first BVP candidate group and not included in the second BVP candidate group.

16 . The system of claim 12 , wherein:

the first cost comprises a first template matching cost that indicates a first difference between a template of the current block and a template of a first prediction block prediction block displaced from the current block by a BVP candidate of the first BVP candidate group; and

the second cost comprises a second template matching cost that indicates a second difference between the template of the current block and a template of a second prediction block displaced from the current block by a BVP candidate of the second BVP candidate group.

17 . The system of claim 16 , wherein at least one of the first difference or the second difference is a Sum of Absolute Differences.

18 . The system of claim 12 , wherein the first instructions, when executed by the one or more first processors, further cause the first computing device to:

select the first BVP candidate from the first BVP candidate group based on the first cost being a lowest cost of at least one cost determined respectively for the at least one BVP candidate of the first BVP candidate group; and

select the second BVP candidate from the second BVP candidate group based on the second cost being a lowest cost of at least one cost determined respectively for the at least one BVP candidate of the second BVP candidate group.

19 . The system of claim 12 , wherein the first instructions, when executed by the one or more first processors, further cause the first computing device to reorder the list of BVP candidates based on a cost determined respectively for at least one BVP candidate of the list of BVP candidates.

20 . The system of claim 12 , wherein the first instructions, when executed by the one or more first processors, further cause the first computing device to:

determine, for the first BVP candidate group and based on a first weighted average of one or more BVP candidates of the first BVP candidate group, a first averaged BVP candidate, wherein the first weighted average is based on at least one first template matching cost determined respectively for the at least one BVP candidate of the first BVP candidate group;

determine, for the second BVP candidate group and based on a second weighted average of one or more BVP candidates of the second BVP candidate group, a second averaged BVP candidate, wherein the second weighted average is based on at least one second template matching cost determined respectively for the at least one BVP candidate of the second BVP candidate group; and

include, in the list of BVP candidates, the first averaged BVP candidate and the second averaged BVP candidate.

21 . The system of claim 20 , wherein;

the first weighted average is based on an inverse of a first template matching cost determined for a BVP candidate of the first BVP candidate group; and

the second weighted average is based on an inverse of a second template matching cost determined for a BVP candidate of the second BVP candidate group.

22 . The system of claim 12 , wherein the list of BVP candidates is one of:

a merge list for merge mode; or

an advanced motion vector prediction (AMVP) list for AMVP mode.

23 . A non-transitory computer-readable medium storing instructions that, when executed, configure a computing device to:

determine a first block vector predictor (BVP) candidate group comprising at least one BVP candidate, of a plurality of BVP candidates, within a threshold distance from a first BVP candidate of the plurality of BVP candidates;

determine a second BVP candidate group comprising one or more BVP candidates, of the plurality of BVP candidates, not within the threshold distance from the first BVP candidate;

determine, for a BVP candidate of the first BVP candidate group, a first cost;

determine, for a BVP candidate of the second BVP candidate group, a second cost; and

generate a list of BVP candidates comprising:

a first BVP candidate selected from the first BVP candidate group based on the first cost; and

a second BVP candidate selected from the second BVP candidate group based on the second cost; and

code, based on the list of BVP candidates, a current block of content.

24 . The non-transitory computer-readable medium of claim 23 , wherein a BVP candidate of the plurality of BVP candidates indicates a displacement from the current block to a location in a reconstructed region of the content.

25 . The non-transitory computer-readable medium of claim 23 , wherein the one or more BVP candidates of the second BVP candidate group are within a second threshold distance from a second BVP candidate of the plurality of BVP candidates.

26 . The non-transitory computer-readable medium of claim 23 , wherein the instructions, when executed, further configure the computing device to determine a third BVP candidate group comprising one or more BVP candidates of the plurality of BVP candidates not included in the first BVP candidate group and not included in the second BVP candidate group.

27 . The non-transitory computer-readable medium of claim 23 , wherein:

the first cost comprises a first template matching cost that indicates a first difference between a template of the current block and a template of a first prediction block prediction block displaced from the current block by a BVP candidate of the first BVP candidate group; and

the second cost comprises a second template matching cost that indicates a second difference between the template of the current block and a template of a second prediction block displaced from the current block by a BVP candidate of the second BVP candidate group.

28 . The non-transitory computer-readable medium of claim 27 , wherein at least one of the first difference or the second difference is a Sum of Absolute Differences.

29 . The non-transitory computer-readable medium of claim 23 , wherein the instructions, when executed, further configure the computing device to:

select the first BVP candidate from the first BVP candidate group based on the first cost being a lowest cost of at least one cost determined respectively for the at least one BVP candidate of the first BVP candidate group; and

select the second BVP candidate from the second BVP candidate group based on the second cost being a lowest cost of at least one cost determined respectively for the at least one BVP candidate of the second BVP candidate group.

30 . The non-transitory computer-readable medium of claim 23 , wherein the instructions, when executed, further configure the computing device to reorder the list of BVP candidates based on a cost determined respectively for at least one BVP candidate of the list of BVP candidates.

31 . The non-transitory computer-readable medium of claim 23 , wherein the instructions, when executed, further configure the computing device to:

determine, for the first BVP candidate group and based on a first weighted average of one or more BVP candidates of the first BVP candidate group, a first averaged BVP candidate, wherein the first weighted average is based on at least one first template matching cost determined respectively for the at least one BVP candidate of the first BVP candidate group;

determine, for the second BVP candidate group and based on a second weighted average of one or more BVP candidates of the second BVP candidate group, a second averaged BVP candidate, wherein the second weighted average is based on at least one second template matching cost determined respectively for the at least one BVP candidate of the second BVP candidate group; and

include, in the list of BVP candidates, the first averaged BVP candidate and the second averaged BVP candidate.

32 . The non-transitory computer-readable medium of claim 31 , wherein:

the first weighted average is based on an inverse of a first template matching cost determined for a BVP candidate of the first BVP candidate group; and

the second weighted average is based on an inverse of a second template matching cost determined for a BVP candidate of the second BVP candidate group.

33 . The non-transitory computer-readable medium of claim 23 , wherein the list of BVP candidates is one of:

a merge list for merge mode; or

an advanced motion vector prediction (AMVP) list for AMVP mode.