IP Library › Granted Patent US 11,418,785
Granted Patent B2
US 11,418,785 · App. 17/164,766 · Granted Aug 16, 2022

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 11,418,785
App. No.
17/164,766
Granted
Aug 16, 2022
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 (50)

1. A method of determining whether to encode a value of a significant-coefficient flag corresponding to a transform coefficient of a block among one or more non-overlapping blocks within a transform unit, the significant-coefficient flag being a member of a group of significant-coefficient flags corresponding to the block, and wherein a significant-coefficient-group flag corresponds to the group of significant-coefficient flags, the value of the significant-coefficient-group flag indicating whether or not there is a non-zero significant-coefficient flag in the group of significant-coefficient flags, the method comprising:

determining the value of each significant-coefficient flag in the group of significant-coefficient flags;

when the group contains the significant-coefficient flag corresponding to the DC coefficient in the transform unit or the group contains the significant-coefficient flag corresponding to the last non-zero coefficient in the transform unit, skipping determining and encoding of a value of the significant-coefficient-group flag corresponding to the group, into a bitstream;

otherwise:

determining the value of the significant-coefficient group flag corresponding to the group based on whether or not there is a non-zero significant-coefficient flag in the group, and

encoding, into the bitstream, the determined value of the significant-coefficient-group flag corresponding to the group;

for each significant-coefficient flag in the group:

when the encoded value of the significant-coefficient-group flag for the group is one:

when all other significant-coefficient flags of the group have been previously determined to have a value of zero,

skipping encoding of the value of the significant-coefficient flag at position (0,0) in the group, into the bitstream,

otherwise:

encoding the value of the significant-coefficient flag into the bitstream; and

when the encoded value of the significant-coefficient-group flag for the group is zero,

skipping encoding of the value of the significant-coefficient flag, into the bitstream; and

otherwise,

encoding the value of the significant-coefficient flag into the bitstream.

2. The method of claim 1 , wherein encoding the determined value of the significant-coefficient-group flag into the bitstream comprises:

determining a context for the significant-coefficient-group flag based on values of significant-coefficient-group flags corresponding to two blocks which are, respectively, adjacent to the right and below the block, wherein the context is determined to be a first context when the values of significant-coefficient-group flags of the two blocks are both zero and the context is determined to be a second context otherwise; and

encoding the determined value of the significant-coefficient-group flag into the bitstream based on the context.

3. The method of claim 1 , wherein encoding the value of the significant-coefficient flag is performed in a reverse scan order.

4. The method of claim 3 , wherein when the group contains the significant-coefficient flag corresponding to the last non-zero coefficient in the transform unit, the encoding the value of the significant-coefficient flag is performed in the reverse scan order starting from a position in the group corresponding to a position following the position of the last non-zero coefficient in the transform unit, through position (0,0) in the group.

5. The method of claim 3 , wherein the reverse scan order is one of a horizontal, vertical, or diagonal order.

6. The method of claim 1 , wherein the block is a contiguous square block or a non-square rectangular block.

7. The method of claim 1 , wherein the transform unit size is one of 8×8, 16×16, 32×32, or 64×64.

8. A device configured to determine whether to encode a value of a significant-coefficient flag corresponding to a transform coefficient of a block among one or more non-overlapping blocks within a transform unit, the significant-coefficient flag being a member of a group of significant-coefficient flags corresponding to the block, and wherein a significant-coefficient-group flag corresponds to the group of significant-coefficient flags, the value of the significant-coefficient-group flag indicating whether or not there is a non-zero significant-coefficient flag in the group of significant-coefficient flags, the method comprising:

a processor; and

a memory having instructions which, when executed by the processor, cause the device to:

determine the value of each significant-coefficient flag in the group of significant-coefficient flags;

when the group contains the significant-coefficient flag corresponding to the DC coefficient in the transform unit or the group contains the significant-coefficient flag corresponding to the last non-zero coefficient in the transform unit,

skip determining and encoding of a value of the significant-coefficient-group flag corresponding to the group, into a bitstream;

otherwise:

determine the value of the significant-coefficient group flag corresponding to the group based on whether or not there is a non-zero significant-coefficient flag in the group, and

encode, into the bitstream, the determined value of the significant-coefficient-group flag corresponding to the group;

for the each significant-coefficient flag in the group:

when the encoded value of the significant-coefficient-group flag for the group is one:

when all other significant-coefficient flags of the group have been previously determined to have a value of zero, skipping encoding of the value of the significant-coefficient flag at position (0,0) in the group, into the bitstream,

otherwise:

encoding the value of the significant-coefficient flag into the bitstream;

when the encoded value of the significant-coefficient-group flag for the group is zero,

skipping encoding of the value of the significant-coefficient flag, into the bitstream; and

otherwise,

encoding the value of the significant-coefficient flag into the bitstream.

9. The device of claim 8 , wherein encoding the determined value of the significant-coefficient-group flag into the bitstream comprises:

determine a context for the significant-coefficient-group flag based on values of significant-coefficient-group flags corresponding to two blocks which are, respectively, adjacent to the right and below the block, wherein the context is determined to be a first context when the values of significant-coefficient-group flags of the two blocks are both zero and the context is determined to be a second context otherwise; and

encode the determined value of the significant-coefficient-group flag into the bitstream based on the context.

10. The device of claim 8 , wherein encoding the value of the significant-coefficient flag is performed in a reverse scan order.

11. The device of claim 10 , wherein when the group contains the significant-coefficient flag corresponding to the last non-zero coefficient in the transform unit, the encoding the value of the significant-coefficient flag is performed in the reverse scan order starting from a position in the group corresponding to a position following the position of the last non-zero coefficient in the transform unit, through position (0,0) in the group.

12. The device of claim 10 , wherein the reverse scan order is one of a horizontal, vertical, or diagonal order.

13. The device of claim 8 , wherein the block is a contiguous square block or a non-square rectangular block.

14. The device of claim 8 , wherein the transform unit size is one of 8×8, 16×16, 32×32, or 64×64.

Continuity (6)
Continuation 16865272 · May 1, 2020
Continuation 16226870 · Dec 20, 2018
Continuation 15884535 · Jan 31, 2018
Continuation 14621552 · Feb 13, 2015
Continuation 13286336 · Nov 1, 2011
Related Publication 20210152829A1 · May 20, 2021
Cited By (1)
US 12,532,014