IP Library › Patent Application 19440118
Patent Application
App. No. 19/440,118

Magnitude Coding and Decoding Using Prediction

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/440,118
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 a different frame. The reference block may be indicated by a block vector (BV). A block vector (BV) may be based on a block vector predictor (BVP) and a block vector difference (BVD). The BVD may be indicated based on a prediction about the magnitude of the BVD, which may improve the compression efficiency of one or more magnitude symbols of a BVD and reduce signaling overhead required for indicating the BVD. The disclosures described herein and used to indicate a BVD also may be used to indicate a motion vector difference (MVD).

Claims (104)

1 . A method comprising:

determining, by a computing device, a plurality of costs associated with a plurality of block vector difference (BVD) candidates associated with a current block of content;

selecting one of the plurality of BVD candidates as a BVD predictor based on the plurality of costs;

entropy decoding an indication of whether a value of a magnitude symbol of a BVD matches a value of a magnitude symbol of the BVD predictor;

determining, based on the value of the magnitude symbol of the BVD predictor and the decoded indication, the value of the magnitude symbol of the BVD; and

decoding, based on the BVD, the current block of content.

2 . The method of claim 1 , wherein the determining the plurality of costs comprises determining a cost based on a difference between:

a template of a current block; and

a template of a candidate reference block that is displaced relative to the current block by a sum of the BVD candidate and a block vector predictor (BVP).

3 . The method of claim 1 , wherein the BVD is one of the plurality of BVD candidates.

4 . The method of claim 1 , wherein a difference between a value of a magnitude symbol of a first BVD candidate of the plurality of BVD candidates and a value of a magnitude symbol of a second BVD candidate of the plurality of BVD candidates is the only difference between the first BVD candidate and the second BVD candidate.

5 . The method of claim 1 , wherein a horizontal component of the BVD predictor comprises the magnitude symbol.

6 . The method of claim 1 , wherein the selecting the BVD candidate as the BVD predictor comprises selecting the BVD candidate as the BVD predictor based on a cost associated with the BVD candidate being a lowest cost of the plurality of costs.

7 . The method of claim 1 , wherein the BVD predictor is one of the plurality of BVD candidates.

8 . The method of claim 1 , further comprising:

selecting, based on a position of the magnitude symbol of the BVD and from a plurality of probability models, a probability model indicating a probability of a least probable symbol for the indication and a value indicating the most probable symbol for the indication;

wherein the entropy decoding comprises arithmetically decoding the indication based on the selected probability model.

9 . The method of claim 1 , further comprising:

selecting, based on a change in value of the BVD satisfying one or more thresholds and from a plurality of probability models, a probability model indicating a probability of a least probable symbol for the indication and a value indicating the most probable symbol for the indication;

wherein the entropy decoding comprises arithmetically decoding the indication based on the selected probability model.

10 . The method of claim 1 , further comprising:

determining, based on the indication indicating that the value of the magnitude symbol of the BVD matches the value of the magnitude symbol of the BVD predictor, that the value of the magnitude symbol of the BVD is equal to the value of the magnitude symbol of the BVD predictor; or

determining, based on the indication indicating that the value of the magnitude symbol of the BVD does not match the value of the magnitude symbol of the BVD predictor, that the value of the magnitude symbol of the BVD is not equal to the value of the magnitude symbol of the BVD predictor.

11 . The method of claim 1 , further comprising representing a BVD candidate of the plurality of BVD candidates in binary form using an exponential-Golomb code word that comprises an indication of the value of the magnitude symbol of the BVD candidate in a suffix of the exponential-Golomb code word.

12 . 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 plurality of costs associated with a plurality of block vector difference (BVD) candidates associated with a current block of content;

select one of the plurality of BVD candidates as a BVD predictor based on the plurality of costs;

entropy decode an indication of whether a value of a magnitude symbol of a BVD matches a value of a magnitude symbol of the BVD predictor;

determine, based on the value of the magnitude symbol of the BVD predictor and the decoded indication, the value of the magnitude symbol of the BVD; and

decode, based on the BVD, the current block of content.

13 . The computing device of claim 12 , wherein the instructions, when executed by the one or more processors, cause the computing device to determine the plurality of costs by determining a cost based on a difference between:

a template of a current block; and

a template of a candidate reference block that is displaced relative to the current block by a sum of the BVD candidate and a block vector predictor (BVP).

14 . The computing device of claim 12 , wherein the BVD is one of the plurality of BVD candidates.

15 . The computing device of claim 12 , wherein a difference between a value of a magnitude symbol of a first BVD candidate of the plurality of BVD candidates and a value of a magnitude symbol of a second BVD candidate of the plurality of BVD candidates is the only difference between the first BVD candidate and the second BVD candidate.

16 . The computing device of claim 12 , wherein a horizontal component of the BVD predictor comprises the magnitude symbol.

17 . The computing device of claim 12 , wherein the instructions, when executed by the one or more processors, cause the computing device to select the BVD candidate as the BVD predictor based on a cost associated with the BVD candidate being a lowest cost of the plurality of costs.

18 . The computing device of claim 12 , wherein the BVD predictor is one of the plurality of BVD candidates.

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

select, based on a position of the magnitude symbol of the BVD and from a plurality of probability models, a probability model indicating a probability of a least probable symbol for the indication and a value indicating the most probable symbol for the indication; and

entropy decode the indication by arithmetically decoding the indication based on the selected probability model.

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

select, based on a change in value of the BVD satisfying one or more thresholds and from a plurality of probability models, a probability model indicating a probability of a least probable symbol for the indication and a value indicating the most probable symbol for the indication; and

entropy decode the indication by arithmetically decoding the indication based on the selected probability model.

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

determine, based on the indication indicating that the value of the magnitude symbol of the BVD matches the value of the magnitude symbol of the BVD predictor, that the value of the magnitude symbol of the BVD is equal to the value of the magnitude symbol of the BVD predictor; or

determine, based on the indication indicating that the value of the magnitude symbol of the BVD does not match the value of the magnitude symbol of the BVD predictor, that the value of the magnitude symbol of the BVD is not equal to the value of the magnitude symbol of the BVD predictor.

22 . The computing device of claim 12 , wherein the instructions, when executed by the one or more processors, further cause the computing device to represent a BVD candidate of the plurality of BVD candidates in binary form using an exponential-Golomb code word that comprises an indication of the value of the magnitude symbol of the BVD candidate in a suffix of the exponential-Golomb code word.

23 . A system comprising:

a first computing device comprising:

one or more first processors; and

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

determine a plurality of costs associated with a plurality of block vector difference (BVD) candidates associated with a current block of content;

select one of the plurality of BVD candidates as a BVD predictor based on the plurality of costs;

entropy decode an indication of whether a value of a magnitude symbol of a BVD matches a value of a magnitude symbol of the BVD predictor;

determine, based on the value of the magnitude symbol of the BVD predictor and the decoded indication, the value of the magnitude symbol of the BVD; and

decode, based on the BVD, the current block of content; and

a second computing device comprising:

one or more second processors; and

memory storing second instructions that, when executed by the one or more second processors, cause the second computing device to send the indication to the first computing device.

24 . The system of claim 23 , wherein the first instructions, when executed by the one or more first processors, cause the first computing device to determine the plurality of costs by determining a cost based on a difference between:

a template of a current block; and

a template of a candidate reference block that is displaced relative to the current block by a sum of the BVD candidate and a block vector predictor (BVP).

25 . The system of claim 23 , wherein the BVD is one of the plurality of BVD candidates.

26 . The system of claim 23 , wherein a difference between a value of a magnitude symbol of a first BVD candidate of the plurality of BVD candidates and a value of a magnitude symbol of a second BVD candidate of the plurality of BVD candidates is the only difference between the first BVD candidate and the second BVD candidate.

27 . The system of claim 23 , wherein a horizontal component of the BVD predictor comprises the magnitude symbol.

28 . The system of claim 23 , wherein the first instructions, when executed by the one or more first processors, cause the first computing device to select the BVD candidate as the BVD predictor based on a cost associated with the BVD candidate being a lowest cost of the plurality of costs.

29 . The system of claim 23 , wherein the BVD predictor is one of the plurality of BVD candidates.

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

select, based on a position of the magnitude symbol of the BVD and from a plurality of probability models, a probability model indicating a probability of a least probable symbol for the indication and a value indicating the most probable symbol for the indication; and

entropy decode the indication by arithmetically decoding the indication based on the selected probability model.

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

select, based on a change in value of the BVD satisfying one or more thresholds and from a plurality of probability models, a probability model indicating a probability of a least probable symbol for the indication and a value indicating the most probable symbol for the indication; and

entropy decode the indication by arithmetically decoding the indication based on the selected probability model.

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

determine, based on the indication indicating that the value of the magnitude symbol of the BVD matches the value of the magnitude symbol of the BVD predictor, that the value of the magnitude symbol of the BVD is equal to the value of the magnitude symbol of the BVD predictor; or

determine, based on the indication indicating that the value of the magnitude symbol of the BVD does not match the value of the magnitude symbol of the BVD predictor, that the value of the magnitude symbol of the BVD is not equal to the value of the magnitude symbol of the BVD predictor.

33 . The system of claim 23 , wherein the first instructions, when executed by the one or more first processors, further cause the first computing device to represent a BVD candidate of the plurality of BVD candidates in binary form using an exponential-Golomb code word that comprises an indication of the value of the magnitude symbol of the BVD candidate in a suffix of the exponential-Golomb code word.

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

determine a plurality of costs associated with a plurality of block vector difference (BVD) candidates associated with a current block of content;

select one of the plurality of BVD candidates as a BVD predictor based on the plurality of costs;

entropy decode an indication of whether a value of a magnitude symbol of a BVD matches a value of a magnitude symbol of the BVD predictor;

determine, based on the value of the magnitude symbol of the BVD predictor and the decoded indication, the value of the magnitude symbol of the BVD; and

decode, based on the BVD, the current block of content.

35 . The non-transitory computer-readable medium of claim 34 , wherein the instructions, when executed, configure the computing device to determine the plurality of costs by determining a cost based on a difference between:

a template of a current block; and

a template of a candidate reference block that is displaced relative to the current block by a sum of the BVD candidate and a block vector predictor (BVP).

36 . The non-transitory computer-readable medium of claim 34 , wherein the BVD is one of the plurality of BVD candidates.

37 . The non-transitory computer-readable medium of claim 34 , wherein a difference between a value of a magnitude symbol of a first BVD candidate of the plurality of BVD candidates and a value of a magnitude symbol of a second BVD candidate of the plurality of BVD candidates is the only difference between the first BVD candidate and the second BVD candidate.

38 . The non-transitory computer-readable medium of claim 34 , wherein a horizontal component of the BVD predictor comprises the magnitude symbol.

39 . The non-transitory computer-readable medium of claim 34 , wherein the instructions, when executed, configure the computing device to select the BVD candidate as the BVD predictor based on a cost associated with the BVD candidate being a lowest cost of the plurality of costs.

40 . The non-transitory computer-readable medium of claim 34 , wherein the BVD predictor is one of the plurality of BVD candidates.

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

select, based on a position of the magnitude symbol of the BVD and from a plurality of probability models, a probability model indicating a probability of a least probable symbol for the indication and a value indicating the most probable symbol for the indication; and

entropy decode the indication by arithmetically decoding the indication based on the selected probability model.

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

select, based on a change in value of the BVD satisfying one or more thresholds and from a plurality of probability models, a probability model indicating a probability of a least probable symbol for the indication and a value indicating the most probable symbol for the indication; and

entropy decode the indication by arithmetically decoding the indication based on the selected probability model.

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

determine, based on the indication indicating that the value of the magnitude symbol of the BVD matches the value of the magnitude symbol of the BVD predictor, that the value of the magnitude symbol of the BVD is equal to the value of the magnitude symbol of the BVD predictor; or

determine, based on the indication indicating that the value of the magnitude symbol of the BVD does not match the value of the magnitude symbol of the BVD predictor, that the value of the magnitude symbol of the BVD is not equal to the value of the magnitude symbol of the BVD predictor.

44 . The non-transitory computer-readable medium of claim 34 , wherein the instructions, when executed, further configure the computing device to represent a BVD candidate of the plurality of BVD candidates in binary form using an exponential-Golomb code word that comprises an indication of the value of the magnitude symbol of the BVD candidate in a suffix of the exponential-Golomb code word.