Usage of coded subblock flags along with transform switching including a transform skip mode
AssigneeFraunhofer-Gesellschaft zur Förderung der angewandten Forschuhg e.V.
InventorsHoang Tung Nguyen, Benjamin Bross, Jonathan Pfaff, Heiko Schwarz, Detlev Marpe, Thomas Wiegand
Life of this patent
Estimating the term…
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.
Claims13
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.
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.
Dependencies are inferred from the claim text.