IP Library Granted Patent US 8,964,849
Granted Patent B2
US 8,964,849 · App. 13/286,336 · Granted Feb 24, 2015

Multi-level significance maps for encoding and decoding

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 8,964,849
App. No.
13/286,336
Granted
Feb 24, 2015
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 (51)

1. A method of reconstructing significant-coefficient flags for a transform unit from a bitstream of encoded data, the method comprising:

reconstructing 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

reconstructing 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 inferring the significant-coefficient-flag at position (0,0) in that group to be 1, and

otherwise

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

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

2. The method claimed in claim 1 , wherein reconstructing the significant-coefficient-group flags includes decoding at least some of the significant-coefficient-group flags from the encoded data of the bitstream.

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

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

5. The method claimed in claim 2 , wherein reconstructing the significant-coefficient-group flags includes inferring a significant-coefficient-group flag to be 1 if that significant-coefficient-group flag corresponds to a group that has two neighbor groups both of which have corresponding significant-coefficient-group flags that have reconstructed 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 reconstructing one of the significant-coefficient-group flags includes determining a context for that significant-coefficient-group flag based on the significant-coefficient-group flags reconstructed 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. A decoder for decoding a bitstream of encoded data to reconstruct significant-coefficient flags for a transform unit, the decoder comprising:

a processor;

a memory; and

a decoding application stored in memory and containing instructions for configuring the processor to

reconstructing 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

reconstruct 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 inferring the significant-coefficient-flag at position (0,0) in that group to be 1, and

otherwise

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

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

12. The decoder claimed in claim 11 , wherein the processor is configured to reconstruct the significant-coefficient-group flags by decoding at least some of the significant-coefficient-group flags from the encoded data of the bitstream.

13. The decoder claimed in claim 12 , wherein the processor is further configured to reconstruct significant-coefficient-group flags by inferring a significant-coefficient-group flag to be 1 on the basis that it corresponds to the block containing the significant-coefficient flag for a last-significant coefficient.

14. The decoder claimed in claim 12 , wherein the processor is further configured to reconstruct the significant-coefficient-group flags by inferring a significant-coefficient-group flag to be 1 on the basis that it corresponds to the block containing the significant-coefficient flag for a DC coefficient.

15. The decoder claimed in claim 12 , wherein the processor is further configured to reconstruct the significant-coefficient-group flags by inferring a significant-coefficient-group flag to be 1 if that significant-coefficient-group flag corresponds to a group that has two neighbor groups both of which have corresponding significant-coefficient-group flags that have reconstructed values of 1.

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

17. The decoder claimed in claim 11 , wherein the transform unit is 16×16 and wherein each group is a 4×4 block.

18. The decoder claimed in claim 11 , wherein the transform unit is 32×32 and wherein each group is an 8×8 block.

19. The decoder claimed in claim 11 , wherein the processor is further configured to reconstruct one of the significant-coefficient-group flags by determining a context for that significant-coefficient-group flag based on the significant-coefficient-group flags reconstructed for two neighbor groups.

20. The decoder claimed in claim 19 , 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.

21. A non-transitory processor-readable medium storing processor-executable instructions which, when executed, configures one or more processors to perform the method claimed in claim 1 .

22. A method for 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 containing its respective group of significant-coefficient flags, and wherein the significant-coefficient-group flag is set to zero to indicate that that corresponding group contains no non-zero significant-coefficient flags; and

for each of the significant-coefficient flags,

encoding the significant-coefficient flag if that significant-coefficient flag is in one of the groups for which its corresponding significant-coefficient-group flag is non-zero, and

not encoding the significant-coefficient flag if

that significant-coefficient flag is in one of the groups for which the corresponding significant-coefficient-group flag is zero, or

that significant-coefficient-flag is at position (0,0) in its group, the 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.

23. The encoder claimed in claim 22 , further including a two-stage rate-distortion optimized quantization process, wherein a second stage of the two-stage rate-distortion optimized quantization process includes determining whether to set any of the significant-coefficient-group flags and their corresponding significant-coefficient flags and coefficients to zero based on a rate-distortion analysis.

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

a processor;

a memory storing the significance map; and

an encoding application stored in memory and containing instructions for configuring the processor to perform the method claimed in claim 22 .

25. A non-transitory processor-readable medium storing processor-executable instructions which, when executed, configures one or more processors to perform the method claimed in claim 22 .

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

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

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 16, 2018
From: BLACKBERRY LIMITED
To: VELOS MEDIA, LLC
Reel/Frame 047525/0606 →
CHANGE OF NAME Recorded Dec 22, 2014
From: RESEARCH IN MOTION LIMITED
To: BLACKBERRY LIMITED
Reel/Frame 034688/0899 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE OF THE DOCUMENT FROM 01/20/2011 TO 01/20/2012 PREVIOUSLY RECORDED ON REEL 027605, FRAME 0225. Recorded Feb 2, 2012
From: SLIPSTREAM DATA INC.
To: RESEARCH IN MOTION LIMITED
Reel/Frame 027661/0648 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2012
From: SLIPSTREAM DATA INC.
To: RESEARCH IN MOTION LIMITED
Reel/Frame 027605/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 20, 2011
From: NGUYEN, NGUYEN; HE, DAKE
To: SLIPSTREAM DATA INC.
Reel/Frame 027416/0344 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 20, 2011
From: JI, TIANYING
To: RESEARCH IN MOTION LIMITED
Reel/Frame 027416/0373 →