IP Library Granted Patent US 10,595,029
Granted Patent B2
US 10,595,029 · App. 15/250,048 · Granted Mar 17, 2020

Methods and devices for coding binary symbols as N-tuples

Inventors: Nguyen Nguyen (Seattle, WA); Dake He (Waterloo, CA)
Assignee: BLACKBERRY LIMITED
H04N19/44H04N19/124H04N19/18H04N19/46
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 10,595,029
App. No.
15/250,048
Granted
Mar 17, 2020
Kind
B2
Abstract

Methods and devices for reconstructing coefficient levels from a bitstream of encoded video data for a coefficient group in a transform unit. Greater-than-one flags are encoded by grouping them into tuples and by encoding a tuple-based value that is a function of the greater-than-one flags within that tuple. The tuple-based value may permit the decoder to infer the greater-than-one flags in some cases, in which case they are not encoded in the bitstream.

Claims (70)

1. A method of encoding video in a video encoder to output a bitstream of encoded data for a coefficient group containing a plurality of transform domain coefficients, the method comprising:

encoding a significant-coefficient flag for each of the transform domain coefficients in a scan order within the coefficient group, each significant-coefficient flag having a corresponding greater-than-one flag;

partitioning the greater-than-one flags into a plurality of non-overlapping n-tuples of greater-than-one flags, each n-tuple corresponding to n consecutive significant-coefficient flags in the scan order, wherein n is greater than one; and

for each n-tuple, determining a tuple value based on the greater-than-one flags in the n-tuple and on the significant-coefficient flags corresponding to the greater-than-one flags in the n-tuple, and

if the significant-coefficient flags corresponding to the greater-than-one flags in the n-tuple are all zero, foregoing encoding the tuple value, and

otherwise, encoding the tuple value in the bitstream.

2. The method claimed in claim 1 , wherein the coefficient group includes sixteen coefficients, wherein the coefficient group has sixteen significant-coefficient flags, and wherein the coefficient group has 8 n-tuples.

3. The method claimed in claim 1 , wherein the tuple value is a logic function of the greater-than-one flags in the n-tuple and the significant-coefficient flags corresponding to the greater-than-one flags in the n-tuple.

4. The method claimed in claim 1 , wherein the tuple value is a logic function of the greater-than-one flags in the n-tuple.

5. The method claimed in claim 4 , wherein n is two and the logic function is a logical OR or a logical AND.

6. The method claimed in claim 1 , wherein n is two and wherein at least one of the n-tuples has significant-coefficient flags corresponding to the greater-than-one flags in said at least one of the n-tuples that include a non-zero flag and a zero flag, and wherein the tuple value for said at least one of the n-tuples is the value of the greater-than-one flag corresponding to the non-zero flag.

7. The method claimed in claim 6 , wherein another of the n-tuples includes greater-than-one flags corresponding to two non-zero significant-coefficient flags, and wherein the tuple value for said another of the n-tuples is a logic function of the greater-than-one flags of said another of the n-tuples.

8. The method claimed in claim 7 , wherein encoding the tuple value of the another of the n-tuples further includes

encoding a first of the greater-than-one flags for said another of the n-tuples using equiprobable coding;

determining whether the value of a second of the greater-than-one flags for said another of the n-tuples may be inferred from the first of the greater-than-one flags and,

if so, foregoing encoding the second of the greater-than-one flags and,

otherwise, encoding the second of the greater-than-one flags using equiprobable coding.

9. The method claimed in claim 1 , wherein n is greater than two.

10. A method of decoding a bitstream of encoded video in a video decoder to reconstruct a plurality of transform domain coefficients for a coefficient group, the method comprising:

decoding a significant-coefficient flag for each of the transform domain coefficients in a scan order within the coefficient group, each significant-coefficient flag having a corresponding greater-than-one flag;

based on a partitioning of the greater-than-one flags into a plurality of non-overlapping n-tuples of greater-than-one flags, each n-tuple corresponding to n consecutive significant-coefficient flags in the scan order, reconstructing a tuple value for each n-tuple, based on the greater-than-one flags in the n-tuple and on the significant-coefficient flags corresponding to the greater-than-one flags in the n-tuple, wherein,

if the significant-coefficient flags corresponding to the greater-than-one flags in the n-tuple are all zero, the tuple value is inferred, without decoding, to be zero, and

otherwise, decoding the tuple value from the bitstream,

and wherein n is greater than one; and

reconstructing the greater-than-one flags based on the reconstructed tuple values.

11. The method claimed in claim 10 , wherein the coefficient group includes sixteen coefficients, wherein the coefficient group has sixteen significant-coefficient flags, and wherein the coefficient group has 8 n-tuples.

12. The method claimed in claim 10 , wherein the tuple value is a logic function of the greater-than-one flags in the n-tuple and the significant-coefficient flags corresponding to the greater-than-one flags in the n-tuple.

13. The method claimed in claim 10 , wherein the tuple value is a logic function of the greater-than-one flags in the n-tuple.

14. The method claimed in claim 13 , wherein n is two and the logic function is a logical OR or a logical AND.

15. The method claimed in claim 10 , wherein n is two and wherein at least one of the n-tuples has significant-coefficient flags corresponding to the greater-than-one flags in said at least one of the n-tuples that include a non-zero flag and a zero flag, and wherein the tuple value for said at least one of the n-tuples is the value of the greater-than-one flag corresponding to the non-zero flag.

16. The method claimed in claim 15 , wherein another of the n-tuples includes greater-than-one flags corresponding to two non-zero significant-coefficient flags, and wherein the tuple value for said another of the n-tuples is a logic function of the greater-than-one flags of said another of the n-tuples.

17. The method claimed in claim 16 , wherein decoding the tuple value of said another of the n-tuples further includes

decoding a first of the greater-than-one flags for said another of the n-tuples using equiprobable coding;

determining whether the value of a second of the greater-than-one flags for said another of the n-tuples may be inferred from the first of the greater-than-one flags and,

if so, foregoing decoding the second of the greater-than-one flags and,

otherwise, decoding the second of the greater-than-one flags using equiprobable coding.

18. The method claimed in claim 10 , wherein n is greater than two.

19. An encoder for encoding video in a video encoder to output a bitstream of encoded data for a coefficient group containing a plurality of transform domain coefficients, the encoder comprising:

a processor;

a memory; and

an encoding application stored in memory and containing instructions that, when executed by the processor, are to cause the processor to

encode a significant-coefficient flag for each of the transform domain coefficients in a scan order within the coefficient group, each significant-coefficient flag having a corresponding greater-than-one flag,

partition the greater-than-one flags into a plurality of non-overlapping n-tuples of greater-than-one flags, each n-tuple corresponding to n consecutive significant-coefficient flags in the scan order, wherein n is greater than one, and

for each n-tuple, determine a tuple value based on the greater-than-one flags in the n-tuple and on the significant-coefficient flags corresponding to the greater-than-one flags in the n-tuple, and

if the significant-coefficient flags corresponding to the greater-than-one flags in the n-tuple are all zero, forego encoding the tuple value, and

otherwise, encode the tuple value in the bitstream.

20. A decoder for decoding a bitstream of encoded video in a video decoder to reconstruct a plurality of transform domain coefficients for a coefficient group, the decoder comprising:

a processor;

a memory; and

a decoding application stored in memory and containing instructions that, when executed by the processor, are to cause the processor to

decode a significant-coefficient flag for each of the transform domain coefficients in a scan order within the coefficient group, each significant-coefficient flag having a corresponding greater-than-one flag,

based on a partitioning of the greater-than-one flags into a plurality of non-overlapping n-tuples of greater-than-one flags, each n-tuple corresponding to n consecutive significant-coefficient flags in the scan order, reconstruct a tuple value for each n-tuple, based on the greater-than-one flags in the n-tuple and on the significant-coefficient flags corresponding to the greater-than-one flags in the n-tuple, wherein,

if the significant-coefficient flags corresponding to the greater-than-one flags in the n-tuple are all zero, the tuple value is inferred, without decoding, to be zero, and

otherwise, decoding the tuple value from the bitstream,

and wherein n is greater than one, and

reconstructing the greater-than-one flags based on the reconstructed tuple values.

21. A non-transitory processor-readable medium storing processor-executable instructions for encoding video in a video encoder to output a bitstream of encoded data for a coefficient group containing a plurality of transform domain coefficients, wherein the instructions, when executed, are to cause one or more processors to:

encode a significant-coefficient flag for each of the transform domain coefficients in a scan order within the coefficient group, each significant-coefficient flag having a corresponding greater-than-one flag;

partition the greater-than-one flags into a plurality of non-overlapping n-tuples of greater-than-one flags, each n-tuple corresponding to n consecutive significant-coefficient flags in the scan order, wherein n is greater than one; and

for each n-tuple, determine a tuple value based on the greater-than-one flags in the n-tuple and on the significant-coefficient flags corresponding to the greater-than-one flags in the n-tuple, and

if the significant-coefficient flags corresponding to the greater-than-one flags in the n-tuple are all zero, forego encoding the tuple value, and

otherwise, encode the tuple value in the bitstream.

22. A non-transitory processor-readable medium storing processor-executable instructions for decoding a bitstream of encoded video in a video decoder to reconstruct a plurality of transform domain coefficients for a coefficient group, wherein the instructions, when executed, are to cause one or more processors to:

decode a significant-coefficient flag for each of the transform domain coefficients in a scan order within the coefficient group, each significant-coefficient flag having a corresponding greater-than-one flag,

based on a partitioning of the greater-than-one flags into a plurality of non-overlapping n-tuples of greater-than-one flags, each n-tuple corresponding to n consecutive significant-coefficient flags in the scan order, reconstruct a tuple value for each n-tuple, based on the greater-than-one flags in the n-tuple and on the significant-coefficient flags corresponding to the greater-than-one flags in the n-tuple, wherein,

if the significant-coefficient flags corresponding to the greater-than-one flags in the n-tuple are all zero, the tuple value is inferred, without decoding, to be zero, and

otherwise, decoding the tuple value from the bitstream,

and wherein n is greater than one, and

reconstructing the greater-than-one flags based on the reconstructed tuple values.

23. The method of claim 1 , wherein each significant-coefficient flag has a corresponding greater-than-one flag irrespective of whether that significant-coefficient flag is non-zero.

Assignments (7)
CORRECTIVE ASSIGNMENT TO CORRECT THE COVER SHEET AT PAGE 50 TO REMOVE 12817157 PREVIOUSLY RECORDED ON REEL 063471 FRAME 0474. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 5, 2023
From: BLACKBERRY LIMITED
To: OT PATENT ESCROW, LLC
Reel/Frame 064806/0669 →
CORRECTIVE ASSIGNMENT TO CORRECT 12817157 APPLICATION NUMBER PREVIOUSLY RECORDED AT REEL: 064015 FRAME: 0001. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 5, 2023
From: OT PATENT ESCROW, LLC
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064807/0001 →
NUNC PRO TUNC ASSIGNMENT Recorded Jun 16, 2023
From: OT PATENT ESCROW, LLC
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064015/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 27, 2023
From: BLACKBERRY LIMITED
To: OT PATENT ESCROW, LLC
Reel/Frame 063471/0474 →
CHANGE OF NAME Recorded Dec 4, 2019
From: RESEARCH IN MOTION LIMITED
To: BLACKBERRY LIMITED
Reel/Frame 051184/0212 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2016
From: SLIPSTREAM DATA INC.
To: RESEARCH IN MOTION LIMITED
Reel/Frame 039566/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2016
From: NGUYEN, NGUYEN; HE, DAKE
To: SLIPSTREAM DATA INC.
Reel/Frame 039565/0992 →
Continuity (2)
Continuation 13524583 · Jun 15, 2012
Related Publication 20160366432A1 · Dec 15, 2016