IP Library Granted Patent US 9,584,812
Granted Patent B2
US 9,584,812 · App. 13/354,485 · Granted Feb 28, 2017

Methods and devices for context set selection

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 9,584,812
App. No.
13/354,485
Granted
Feb 28, 2017
Kind
B2
Abstract

Methods of encoding and decoding for video data are described for encoding or decoding multi-level significance maps. Distinct context sets may be used for encoding the significant-coefficient flags in different regions of the transform unit. In a fixed case, the regions are defined by coefficient group borders. In one example, the upper-left coefficient group is a first region and the other coefficient groups are a second region. In a dynamic case, the regions are defined by coefficient group borders, but the encoder and decoder dynamically determine in which region each coefficient group belongs. Coefficient groups may be assigned to one region or another based on, for example, whether their respective significant-coefficient-group flags were inferred or not.

Claims (56)

1. A method of decoding a bitstream of encoded video by reconstructing significant-coefficient flags for a transform unit, the transform unit comprising a sequence of blocks in a scan order, the bitstream encoding sets of significant-coefficient flags, each set corresponding to a respective block, each block having an associated significant-coefficient-group flag that indicates whether the significant-coefficient flags corresponding to that block are to be decoded from the bitstream or may be inferred to be zero, the method comprising:

(i) for a set of significant-coefficient flags corresponding to a first block with an associated non-zero significant-coefficient-group flag, selecting a context set from a plurality of context sets for use in decoding significant-coefficient flags of that set based on a significant-coefficient-group flag associated with a block to the right of the first block and a significant-coefficient-group flag associated with a block below the first block, wherein the context sets identify the contexts to be used in context-adaptively decoding the significant-coefficient flags of that set of significant-coefficient flags, and wherein selecting includes selecting a first context set if both of the significant-coefficient-group flags are non-zero, and, otherwise, selecting a different, mutually exclusive context set;

(ii) entropy decoding the significant-coefficient flags of that set using the selected context set by, for each significant-coefficient flag, selecting a context from within the selected context set for context-adaptively decoding that significant-coefficient flag; and

(iii) moving to the next block in the scan order and returning to operation (i),

wherein each significant-coefficient-group flag indicates whether its associated block is presumed to contain at least one non-zero significant-coefficient flag,

wherein for each block in the sequence of blocks that has an associated significant coefficient-group flag that is decoded to be zero, there are no non-zero significant-coefficient flags in that block, and for each block in the sequence of blocks that has an associated significant-coefficient-group flag that is decoded to be non-zero, there is at least one non-zero significant-coefficient flag in that block, and

wherein for each block in the sequence of blocks that has an associated significant-coefficient-group flag that is zero, all of the significant-coefficient flags in that block are set to zero instead of performing the selecting operation and the entropy decoding operation.

2. The method claimed in claim 1 , wherein selecting the context set further includes selecting a specific context for decoding the significant-coefficient flag in the DC position of the first block if it is the upper-left block in the transform unit.

3. The method claimed in claim 1 , wherein selecting the context set is further based on whether or not the first block is in the upper-left corner of the transform unit.

4. The method claimed in claim 1 , wherein selecting the context set is further based upon the size of the transform unit.

5. The method claimed in claim 1 , wherein selecting the context set is further based upon whether components of the transform unit are luma components or chroma components.

6. A decoder for decoding a bitstream of encoded data to reconstruct significant-coefficient flags for a transform unit, the transform unit comprising a sequence of blocks in a scan order, the bitstream encoding sets of significant-coefficient flags, each set corresponding to a respective block, each block having an associated significant-coefficient-group flag that indicates whether the significant-coefficient flags corresponding to that block are to be decoded from the bitstream or may be inferred to be zero, the decoder comprising:

a processor;

a memory; and

a decoding application stored in memory and containing processor-readable instructions which, when executed by the processor, cause the processor to

(i) for a set of significant-coefficient flags corresponding to a first block with an associated non-zero significant-coefficient-group flag, select a context set from a plurality of context sets for use in decoding significant-coefficient flags of that set based on a significant-coefficient-group flag associated with a block to the right of the first block and a significant-coefficient-group flag associated with a block below the first block, wherein the context sets identify the contexts to be used in context-adaptively decoding the significant-coefficient flags of that set of significant-coefficient flags, and wherein a first context set is selected if both of the significant-coefficient-group flags are non-zero, and, otherwise, a different, mutually exclusive context set is selected,

(ii) entropy decode the significant-coefficient flags of that set using the selected context set by, for each significant-coefficient flag, selecting a context from within the selected context set for context-adaptively decoding that significant-coefficient flag, and

(iii) move to the next block in the scan order and return to operation (i),

wherein each significant-coefficient-group flag indicates whether its associated block is presumed to contain at least one non-zero significant-coefficient flag,

wherein for each block in the sequence of blocks that has an associated significant-coefficient-group flag that is decoded to be zero, there are no non-zero significant-coefficient flags in that block, and for each block in the sequence of blocks that has an associated significant-coefficient-group flag that is decoded to be non-zero, there is at least one non-zero significant-coefficient flag in that block, and

wherein for each block in the sequence of blocks that has an associated significant-coefficient-group flag that is zero, all of the significant-coefficient flags in that block are set to zero instead of performing the selecting operation and the entropy decoding operation.

7. The decoder claimed in claim 6 , wherein the processor selects the context set by further selecting a specific context for decoding the significant-coefficient flag in the DC position of the first block if it is the upper-left block in the transform unit.

8. The decoder claimed in claim 6 , wherein the processor selects the context set by further selecting the context set based on whether or not the first block is in the upper-left corner of the transform unit.

9. The decoder claimed in claim 6 , wherein the processor selects the context set further based upon the size of the transform unit.

10. The decoder claimed in claim 6 , wherein the processor selects the context set further based upon whether components of the transform unit are luma components or chroma components.

11. A method of encoding a video by encoding significant-coefficient flags for a transform unit to create a bitstream of encoded sets of significant-coefficient flags, the transform unit comprising a sequence of blocks in a scan order, each set of significant-coefficient flags corresponding to a respective block, each block having an associated significant-coefficient-group flag that indicates whether the significant-coefficient flags corresponding to that block are to be encoded in the bitstream or may be inferred to be zero, the method comprising:

(i) for a set of significant-coefficient flags corresponding to a first block with an associated non-zero significant-coefficient-group flag, selecting a context set from a plurality of context sets for use in encoding significant-coefficient flags of that set based on a significant-coefficient-group flag associated with a block to the right of the first block and a significant-coefficient-group flag associated with a block below the first block, wherein the context sets identify the contexts to be used in context-adaptively encoding the significant-coefficient flags of that set of significant-coefficient flags, wherein selecting includes selecting a first context set if both of the significant-coefficient-group flags are non-zero, and, otherwise, selecting a different, mutually exclusive context set;

(ii) entropy encoding the significant-coefficient flags of that set using the selected context set by, for each significant-coefficient flag, selecting a context from within the selected context set for context-adaptively encoding that significant-coefficient flag; and

(iii) moving to the next block in the scan order and returning to operation (i),

wherein each significant-coefficient-group flag indicates whether its associated block is presumed to contain at least one non-zero significant-coefficient flag,

wherein for each block in the sequence of blocks that has an associated significant-coefficient-group flag that is zero and encoded in the bitstream, there are no non-zero significant-coefficient flags in that block, and for each block in the sequence of blocks that has an associated significant-coefficient-group flag that is non-zero and encoded in the bitstream, there is at least one non-zero significant-coefficient flag in that block, and

wherein for each block in the sequence of blocks that has an associated significant-coefficient-group flag that is zero, all of the significant-coefficient flags in that block are zero and the selecting operation and the entropy encoding operation are not performed.

12. An encoder for encoding significant-coefficient flags for a transform unit to produce a bitstream of encoded data, the transform unit comprising a sequence of blocks in a scan order, each set of significant-coefficient flags corresponding to a respective block, each block having an associated significant-coefficient-group flag that indicates whether the significant-coefficient flags corresponding to that block are to be encoded in the bitstream or may be inferred to be zero, the encoder comprising:

a processor;

a memory; and

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

(i) for a set of significant-coefficient flags corresponding to a first block with an associated non-zero significant-coefficient-group flag, select a context set from a plurality of context sets for use in encoding significant-coefficient flags of that set based on a significant-coefficient-group flag associated with a block to the right of the first block and a significant-coefficient-group flag associated with a block below the first block, wherein the context sets identify the contexts to be used in context-adaptively encoding the significant-coefficient flags of that set of significant-coefficient flags, and wherein a first context set is selected if both of the significant-coefficient-group flags are non-zero, and, otherwise, a different, mutually exclusive context set is selected,

(ii) entropy encode the significant-coefficient flags of that set using the selected context set by, for each significant-coefficient flag, selecting a context from within the selected context set for context-adaptively encoding that significant-coefficient flag, and

(iii) move to the next block in the scan order and return to operation (i),

wherein each significant-coefficient-group flag indicates whether its associated block is presumed to contain at least one non-zero significant-coefficient flag

wherein for each block in the sequence of blocks that has an associated significant-coefficient-group flag that is zero and encoded in the bitstream, there are no non-zero significant-coefficient flags in that block, and for each block in the sequence of blocks that has an associated significant-coefficient-group flag that is non-zero and encoded in the bitstream, there is at least one non-zero significant-coefficient flag in that block, and

wherein for each block in the sequence of blocks that has an associated significant-coefficient-group flag that is zero, all of the significant-coefficient flags in that block are zero and the selecting operation and the entropy encoding operation are not performed.

13. A non-transitory processor-readable medium storing processor-executable instructions which, when executed, configures one or more processors to decode a bitstream of encoded video by reconstructing significant-coefficient flags for a transform unit, the transform unit comprising a sequence of blocks in a scan order, the bitstream encoding sets of significant-coefficient flags, each set corresponding to a respective block, each block having an associated significant-coefficient-group flag that indicates whether the significant-coefficient flags corresponding to that block are to be decoded from the bitstream or may be inferred to be zero, the instructions, when executed, causing the one or more processors to:

(i) for a set of significant-coefficient flags corresponding to a first block with an associated non-zero significant-coefficient-group flag, select a context set from a plurality of context sets for use in decoding significant-coefficient flags of that set based on a significant-coefficient-group flag associated with a block to the right of the first block and a significant-coefficient-group flag associated with a block below the first block, wherein the context sets identify the contexts to be used in context-adaptively decoding the significant-coefficient flags of that set of significant-coefficient flags, and wherein selecting includes selecting a first context set if both of the significant-coefficient-group flags are non-zero, and, otherwise, selecting a different, mutually exclusive context set;

(ii) entropy decode the significant-coefficient flags of that set using the selected context set by, for each significant-coefficient flag, selecting a context from within the selected context set for context-adaptively decoding that significant-coefficient flag; and

(iii) move to the next block in the scan order and returning to operation (i),

wherein each significant-coefficient-group flag indicates whether its associated block is presumed to contain at least one non-zero significant-coefficient flag,

wherein for each block in the sequence of blocks that has an associated significant-coefficient-group flag that is decoded to be zero, there are no non-zero significant-coefficient flags in that block, and for each block in the sequence of blocks that has an associated significant-coefficient-group flag that is decoded to be non-zero, there is at least one non-zero significant-coefficient flag in that block, and

wherein for each block in the sequence of blocks that has an associated significant-coefficient-group flag that is zero, all of the significant-coefficient flags in that block are set to zero instead of performing the selecting operation and the entropy decoding operation.

14. A non-transitory processor-readable medium storing processor-executable instructions which, when executed, configures one or more processors to encode significant-coefficient flags for a transform unit to produce a bitstream of encoded data, the transform unit comprising a sequence of blocks in a scan order, each set of significant-coefficient flags corresponding to a respective block, each block having an associated significant-coefficient-group flag that indicates whether the significant-coefficient flags corresponding to that block are to be encoded in the bitstream or may be inferred to be zero, wherein the instructions, when executed are to cause the one or more processors to:

(i) for a set of significant-coefficient flags corresponding to a first block with an associated non-zero significant-coefficient-group flag, select a context set from a plurality of context sets for use in encoding significant-coefficient flags of that set based on a significant-coefficient-group flag associated with a block to the right of the first block and a significant-coefficient-group flag associated with a block below the first block, wherein the context sets identify the contexts to be used in context-adaptively encoding the significant-coefficient flags of that set of significant-coefficient flags, and wherein a first context set is selected if both of the significant-coefficient-group flags are non-zero, and, otherwise, a different, mutually exclusive context set is selected;

(ii) entropy encode the significant-coefficient flags of that set using the selected context set by, for each significant-coefficient flag, selecting a context from within the selected context set for context-adaptively encoding that significant-coefficient flag; and

(iii) move to the next block in the scan order and return to operation (i),

wherein each significant-coefficient-group flag indicates whether its associated block is presumed to contain at least one non-zero significant-coefficient flag,

wherein for each block in the sequence of blocks that has an associated significant-coefficient-group flag that is zero and encoded in the bitstream, there are no non-zero significant-coefficient flags in that block, and for each block in the sequence of blocks that has an associated significant-coefficient-group flag that is non-zero and encoded in the bitstream, there is at least one non-zero significant-coefficient flag in that block, and

wherein for each block in the sequence of blocks that has an associated significant-coefficient-group flag that is zero, all of the significant-coefficient flags in that block are zero and the selecting operation and the entropy encoding operation are not performed.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 16, 2018
From: BLACKBERRY LIMITED
To: VELOS MEDIA, LLC
Reel/Frame 047525/0606 →
CHANGE OF NAME Recorded Mar 15, 2016
From: RESEARCH IN MOTION LIMITED
To: BLACKBERRY LIMITED
Reel/Frame 038087/0963 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2012
From: SLIPSTREAM DATA INC.
To: RESEARCH IN MOTION LIMITED
Reel/Frame 028277/0259 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 25, 2012
From: NGUYEN, NGUYEN; HE, DAKE
To: SLIPSTREAM DATA INC.
Reel/Frame 028102/0363 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 25, 2012
From: JI, TIANYING
To: RESEARCH IN MOTION LIMITED
Reel/Frame 028102/0500 →