IP Library Granted Patent US 12713021
Granted Patent B2
US 12713021 · App. 18/863,268 · Granted Aug 18, 2026

Usage of coded subblock flags along with transform switching including a transform skip mode

Inventors: Hoang Tung Nguyen (Berlin, DE); Benjamin Bross (Berlin, DE); Jonathan Pfaff (Berlin, DE); Heiko Schwarz (Berlin, DE); Detlev Marpe (Berlin, DE); Thomas Wiegand (Berlin, DE)
Assignee: Fraunhofer-Gesellschaft zur Förderung der angewandten Forschuhg e.V.
H04N19/12H04N19/167H04N19/176H04N19/198H04N19/61
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 12713021
App. No.
18/863,268
Granted
Aug 18, 2026
Kind
B2
Abstract

The application of coded subblock flags is performed differently between the case of applying an identity transform to a currently coded transform block on the one hand and applying a non-identity transform to the currently coded transform block on the other hand, in a manner yielding improved coding efficiency.

Claims (45)

1 . A decoder configured to decode a picture from a data stream on a block by block basis, the data stream comprising a plurality of transform blocks to be decoded, each transform block being subdivided into a plurality of subblocks, wherein a subblock flag indicates whether transform coefficients in a respective subblock are all zero or not, and a significance flag indicates whether a respective transform coefficient is zero or not, the decoder comprising circuitry configured to:

determine a transform of a plurality of transforms to apply to a current transform block of the plurality of transform blocks to be decoded;

when the transform is an identity transform,

if a current subblock of the plurality of subblocks is the last subblock scanned in the current transform block, according to a first scan order associated with the identity transform, and each subblock flag for each previously scanned subblock in the current transform block is zero, infer the subblock flag for the last scanned subblock is one,

otherwise, decode the subblock flag for the current subblock from the data stream; and

if the subblock flag for the current subblock is zero, infer that each transform coefficient of the current subblock is zero, and

if the subblock flag for the current subblock is one, whether the subblock flag for the current subblock was decoded from the data stream or inferred,

decode the significance flags for the current subblock from the bitstream except for a last scanned position of the current subblock, according to the first scan order, and if each significance flag preceding the last scanned position in the current subblock is zero, infer that the significance flag for the last scanned position of the current subblock is one; and

when the transform is a non-identity transform,

decode a position of a predetermined non-zero transform coefficient of the current transform block, according to a second scan order corresponding to the non-identity transform, different from the first scan order, and infer that each transform coefficient in the current subblock preceding the position of the predetermined non-zero transform coefficient, according to the second scan order, is zero, and

if the current subblock is the last subblock scanned, according to the second scan order, or is the subblock containing the predetermined non-zero transform coefficient, infer the subblock flag for the current subblock is one, and decode any significance flags corresponding to transform coefficients of the current subblock following the position of the predetermined non-zero transform coefficient, according to the second scan order,

otherwise, decode the subblock flag for the current subblock, and

if the subblock flag for the current block is zero, infer that each transform coefficient of the current subblock is zero, and

if the subblock flag for the current subblock is one,

decode the significance flags for the current subblock from the bitstream except for the last scanned position of the current subblock, according to the second scan order, and if each significance flag preceding the last scanned position in the current subblock is zero, infer that the significance flag for the last scanned position of the current subblock is one.

2 . The decoder of claim 1 , wherein the first scan order traverses the plurality of subblocks of the current transform block and the transform coefficients of each subblock in the current transform block in an opposite direction to the second scan order.

3 . The decoder of claim 1 , wherein the first scan order and the second scan order traverse the plurality of subblocks of the transform block and the transform coefficients of each subblock diagonally.

4 . The decoder of claim 1 , configured to

when the transform is the non-identity transform,

decode the position of the predetermined non-zero transform coefficient of the transform block from the data stream comprising two coordinates indicative of a column and a row of the transform block.

5 . The decoder of claim 1 , wherein the number of significance flags corresponding to transform coefficients of the current subblock following the position of the predetermined non-zero transform coefficient is zero, one or higher.

6 . A method for decoding a picture from a data stream on a block by block basis, the data stream comprising a plurality of transform blocks to be decoded, each transform block being subdivided into a plurality of subblocks, wherein a subblock flag indicates whether transform coefficients in a respective subblock are all zero or not, and a significance flag indicates whether a respective transform coefficient is zero or not, the method comprising:

determining a transform of a plurality of transforms to apply to a current transform block of the plurality of transform blocks to be decoded;

when the transform is an identity transform,

if a current subblock of the plurality of subblocks is the last subblock scanned in the current transform block, according to a first scan order associated with the identity transform, and each subblock flag for each previously scanned subblock in the current transform block is zero, inferring the subblock flag for the last scanned subblock is one,

otherwise, decoding the subblock flag for the current subblock from the data stream; and

if the subblock flag for the current subblock is zero, inferring that each transform coefficient of the current subblock is zero, and

if the subblock flag for the current subblock is one, whether the subblock flag for the current subblock was decoded from the data stream or inferred,

decoding the significance flags for the current subblock from the bitstream except for a last scanned position of the current subblock, according to the first scan order, and if each significance flag preceding the last scanned position in the current subblock is zero, inferring that the significance flag for the last scanned position of the current subblock is one; and

when the transform is a non-identity transform,

decoding a position of a predetermined non-zero transform coefficient of the current transform block, according to a second scan order corresponding to the non-identity transform, different from the first scan order, and inferring that each transform coefficient in the current subblock preceding the position of the predetermined non-zero transform coefficient, according to the second scan order, is zero, and

if the current subblock is the last subblock scanned, according to the second scan order, or is the subblock containing the predetermined non-zero transform coefficient, inferring the subblock flag for the current subblock is one, and decoding any significance flags corresponding to transform coefficients of the current subblock following the position of the predetermined non-zero transform coefficient, according to the second scan order,

otherwise, decoding the subblock flag for the current subblock, and

if the subblock flag for the current block is zero, inferring that each transform coefficient of the current subblock is zero, and

if the subblock flag for the current subblock is one,

decoding the significance flags for the current subblock from the bitstream except for the last scanned position of the current subblock, according to the second scan order, and if each significance flag preceding the last scanned position in the current subblock is zero, inferring that the significance flag for the last scanned position of the current subblock is one.

7 . The method of claim 6 , wherein the first scan order traverses the plurality of subblocks of the current transform block and the transform coefficients of each subblock in the current transform block in an opposite direction to the second scan order.

8 . The method of claim 6 , wherein the first scan order and the second scan order traverse the plurality of subblocks of the transform block and the transform coefficients of each subblock diagonally.

9 . The method of claim 6 , comprising

when the transform is the non-identity transform,

decoding the position of the predetermined non-zero transform coefficient of the transform block from the data stream comprising two coordinates indicative of a column and a row of the transform block.

10 . The method of claim 6 , wherein the number of significance flags corresponding to transform coefficients of the current subblock following the position of the predetermined non-zero transform coefficient is zero, one or higher.

11 . A non-transitory computer-readable medium for implementing the method of claim 6 when being executed on a computer or signal processor.

12 . A computer program product comprising program code portions for implementing the method of claim 6 when being executed on a computer or signal processor.

13 . A datastream having a picture encoded therein for being decoded using a method according to claim 6 .