IP Library › Granted Patent US 10,659,782
Granted Patent B2
US 10,659,782 · App. 16/226,870 · Granted May 19, 2020

Multi-level significance maps for encoding and decoding

Inventors: Nguyen Nguyen (Seattle, WA); Tianying Ji (Albany, CA); Dake He (Waterloo, CA)
Assignee: Velos Media, LLC
H04N19/122H04N19/132H04N19/136H04N19/157H04N19/18H04N19/196H04N19/61H04N19/70H04N19/91H04N19/13H04N19/159H04N19/172
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,659,782
App. No.
16/226,870
Granted
May 19, 2020
Kind
B2
Abstract

Methods of encoding and decoding for video data are described in which multi-level significance maps are used in the encoding and decoding processes. The significant-coefficient flags that form the significance map are grouped into contiguous groups, and a significant-coefficient-group flag signifies for each group whether that group contains no non-zero significant-coefficient flags. If there are no non-zero significant-coefficient flags in the group, then the significant-coefficient-group flag is set to zero. The set of significant-coefficient-group flags is encoded in the bitstream. Any significant-coefficient flags that fall within a group that has a significant-coefficient-group flag that is non-zero are encoded in the bitstream, whereas significant-coefficient flags that fall within a group that has a significant-coefficient-group flag that is zero are not encoded in the bitstream.

Claims (43)

1. A method of encoding significant-coefficient flags for a transform unit, the method comprising:

encoding significant-coefficient-group flags, wherein the transform unit is partitioned into non-overlapping blocks, each block containing a respective group of significant-coefficient flags, and wherein each significant-coefficient-group flag corresponds to a respective block and its respective group of significant-coefficient flags; and

encoding each significant-coefficient flag by

if the significant-coefficient-flag is at position (0,0) in its group, a corresponding significant-coefficient-group flag is non-zero, the group is not the DC block, and all the previous significant-coefficient flags in the group are zero, then setting the significant-coefficient-flag at position (0,0) in the group to be 1 without encoding the significant-coefficient-flag at position (0,0) into a bitstream, and

otherwise

encoding the significant-coefficient flag into the bitstream if the significant-coefficient flag is in a group that has a corresponding significant-coefficient-group flag that is non-zero, and

if the significant-coefficient flag is in a group that has a corresponding significant-coefficient-group flag that is zero, setting the significant-coefficient flag to zero without encoding the significant-coefficient flag into the bitstream.

2. The method claimed in claim 1 , wherein encoding the significant-coefficient-group flags includes encoding at least some of the significant-coefficient-group flags into the bitstream.

3. The method claimed in claim 2 , wherein encoding the significant-coefficient-group flags further includes setting a significant-coefficient-group flag to be 1 without encoding the significant-coefficient-group flag on the basis that the significant-coefficient-group flag corresponds to the block containing the significant-coefficient flag for a last-significant coefficient.

4. The method claimed in claim 2 , wherein encoding the significant-coefficient-group flags further includes setting a significant-coefficient-group flag to be 1 without encoding the significant-coefficient-group flag on the basis that the significant-coefficient-group flag corresponds to the block containing the significant-coefficient flag for a DC coefficient.

5. The method claimed in claim 2 , wherein encoding the significant-coefficient-group flags includes setting a significant-coefficient-group flag to be 1 without encoding the significant-coefficient-group flag if the significant-coefficient-group flag corresponds to a group that has two neighbor groups both of which have corresponding significant-coefficient-group flags that have encoded values of 1.

6. The method claimed in claim 5 , wherein the groups are contiguous blocks, and wherein the two neighbor groups include a right neighbor block and a below neighbor block.

7. The method claimed in claim 1 , wherein the transform unit is 16×16 and wherein each group is a 4×4 block.

8. The method claimed in claim 1 , wherein the transform unit is 32×32 and wherein each group is an 8×8 block.

9. The method claimed in claim 1 , wherein encoding one of the significant-coefficient-group flags includes determining a context for that significant-coefficient-group flag based on the significant-coefficient-group flags encoded for two neighbor groups.

10. The method claimed in claim 9 , wherein the two neighbor groups include a right neighbor and a below neighbor, and wherein the context is 0 if both of the significant-coefficient-flags for the two neighbor groups are 0, and wherein otherwise the context is 1.

11. The method claimed in claim 1 , wherein the transform unit is 32×32 and wherein each group is a 4×4 block.

12. An encoder for encoding significant-coefficient flags for a transform unit, the decoder comprising:

a processor;

a memory; and

an encoding application stored in memory and containing instructions for configuring the processor to

encode significant-coefficient-group flags, wherein the transform unit is partitioned into non-overlapping blocks, each block containing a respective group of significant-coefficient flags, and wherein each significant-coefficient-group flag corresponds to a respective block and its respective group of significant-coefficient flags; and

encode each significant-coefficient flag by

if the significant-coefficient-flag is at position (0,0) in its group, a corresponding significant-coefficient-group flag is non-zero, the group is not the DC block, and all the previous significant-coefficient flags in that group are zero, then setting the significant-coefficient-flag at position (0,0) in that group to be 1 without encoding the significant-coefficient-flag at position (0,0) into a bitstream, and

otherwise

encoding the significant-coefficient flag into the bitstream if the significant-coefficient flag is in a group that has corresponding significant-coefficient-group flag that is non-zero, and if the significant-coefficient flag is in a group that has a corresponding significant-coefficient-group flag that is zero, setting the significant-coefficient flag to zero without encoding the significant-coefficient-flag into the bitstream.

13. The encoder claimed in claim 12 , wherein the processor is configured to encode the significant-coefficient-group flags by encoding at least some of the significant-coefficient-group flags from the encoded data of the bitstream.

14. The encoder claimed in claim 13 , wherein the processor is further configured to encode significant-coefficient-group flags by setting a significant-coefficient-group flag to be 1 without encoding the significant-coefficient-group flag on the basis that the significant-coefficient-group flag corresponds to the block containing the significant-coefficient flag for a last-significant coefficient.

15. The encoder claimed in claim 13 , wherein the processor is further configured to encode the significant-coefficient-group flags by setting a significant-coefficient-group flag to be 1 without encoding the significant-coefficient-group flag on the basis that the significant-coefficient-group flag corresponds to the block containing the significant-coefficient flag for a DC coefficient.

16. The encoder claimed in claim 13 , wherein the processor is further configured to encode the significant-coefficient-group flags by setting a significant-coefficient-group flag to be 1 without encoding the significant-coefficient-group flag if the significant-coefficient-group flag corresponds to a group that has two neighbor groups both of which have corresponding significant-coefficient-group flags that have encoded values of 1.

17. The encoder claimed in claim 16 , wherein the groups are contiguous blocks, and wherein the two neighbor groups include a right neighbor block and a below neighbor block.

18. The encoder claimed in claim 12 , wherein the transform unit is 16×16 and wherein each group is a 4×4 block.

19. The encoder claimed in claim 12 , wherein the transform unit is 32×32 and wherein each group is an 8×8 block.

20. The encoder claimed in claim 12 , wherein the processor is further configured to encode one of the significant-coefficient-group flags by determining a context for that significant-coefficient-group flag based on the significant-coefficient-group flags encoded for two neighbor groups.

21. The encoder claimed in claim 20 , wherein the two neighbor groups include a right neighbor and a below neighbor, and wherein the context is 0 if both of the significant-coefficient-flags for the two neighbor groups are 0, and wherein otherwise the context is 1.

22. The encoder claimed in claim 12 , wherein the transform unit is 32×32 and wherein each group is a 4×4 block.

23. A non-transitory processor-readable medium storing processor-executable instructions which, when executed, causes one or more processors to:

encode significant-coefficient-group flags, wherein the transform unit is partitioned into non-overlapping blocks, each block containing a respective group of significant-coefficient flags, and wherein each significant-coefficient-group flag corresponds to a respective block and its respective group of significant-coefficient flags; and

encode each significant-coefficient flag by

if the significant-coefficient-flag is at position (0,0) in its group, a corresponding significant-coefficient-group flag is non-zero, the group is not the DC block, and all the previous significant-coefficient flags in the group are zero, then setting the significant-coefficient-flag at position (0,0) in the group to be 1 without encoding the significant-coefficient-flag at position (0,0) into a bitstream, and

otherwise

encode the significant-coefficient flag into the bitstream if the significant-coefficient flag is in a group that has a corresponding significant-coefficient-group flag that is non-zero, and

if the significant-coefficient flag is in a group that has a corresponding significant-coefficient-group flag that is zero, set the significant-coefficient flag to zero without encoding the significant-coefficient flag into the bitstream.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2019
From: BLACKBERRY LIMITED
To: VELOS MEDIA, LLC
Reel/Frame 048931/0592 →
Continuity (4)
Continuation 15884535 · Jan 31, 2018
Continuation 14621552 · Feb 13, 2015
Continuation 13286336 · Nov 1, 2011
Related Publication 20190124329A1 · Apr 25, 2019
Cited By (2)
US 12,341,962 US 12,707,053