# US 12,003,731 B2 · Adaptive determination of multiple transform candidates for video coding

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,003,731 B2
- Document ID: US12003731B2
- Status: Granted
- Kind: B2
- Application number: 17/933,318
- Filed: 2022-09-19
- Published: 2023-03-30
- Granted: 2024-06-04
- Earliest claimed: 2021-09-29
- Assignees: QUALCOMM Incorporated
- Applicants: QUALCOMM Incorporated
- Inventors: Bappaditya Ray; Vadim Seregin; Marta Karczewicz
- Web page: https://patentgrep.com/patent/US12003731B2

## CPC

- H04N 19/136: Incoming video signal characteristics or properties
- H04N 19/12: Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
- H04N 19/13: Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
- H04N 19/157: Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N 19/176: the region being a block, e.g. a macroblock
- H04N 19/18: the unit being a set of transform coefficients
- H04N 19/60: using transform coding
- H04N 19/61: in combination with predictive coding
- H04N 19/625: using discrete cosine transform [DCT]
- H04N 19/70: characterised by syntax aspects related to video coding, e.g. related to compression standards
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

An example device for decoding video data includes a memory configured to store video data; and one or more processors implemented in circuitry and configured to: determine a number of multiple transform selection (MTS) candidates for a current block of video data, the number being greater than zero and different than four, the MTS candidates being MTS candidates other than a DCT2 candidate; determine one of the MTS candidates of the number of MTS candidates for the current block; inverse transform a transform block for the current block using the determined one of the MTS candidates to produce a residual block; and decode the current block using the residual block.

## Claims

### Claim 1

A method of decoding video data, the method comprising:
determining a set of multiple transform selection (MTS) candidates for a current block of video data,
wherein determining the set comprises selecting the set, based on a number of non-zero coefficients of a transform block, between
a first set consisting of a single MTS candidate,
a second set of MTS candidates having at least four MTS candidates, and
a third set of MTS candidates having more MTS candidates than the second set, the MTS candidates of the second and third set being MTS candidates other than a DCT2 candidate;
determining one of the MTS candidates of the determined set of MTS candidates for the current block;
inverse transforming the transform block for the current block using the determined one of the MTS candidates to produce a residual block; and
decoding the current block using the residual block.

### Claim 2 (depends on 1)

The method of claim 1, wherein determining the number of MTS candidates comprises selecting the set of MTS candidates according to a comparison of the number of non-zero coefficients to one or more threshold values.

### Claim 3 (depends on 1)

The method of claim 1, wherein selecting the set of MTS candidates comprises:
calculating an absolute sum of the non-zero coefficients of the transform block; and
determining the number of MTS candidates according to the absolute sum of the non-zero coefficients of the transform block.

### Claim 4 (depends on 1)

The method of claim 1, wherein selecting the set of MTS candidates comprises determining the set of MTS candidates according to a last scan position value for the transform block, the last scan position value representing a position of a last non-zero transform coefficient in scan order in the transform block.

### Claim 5 (depends on 4)

The method of claim 4, wherein selecting the set of MTS candidates according to the last scan position value comprises:
determining mappings from ranges of possible last scan position values to corresponding numbers of MTS candidates;
determining one of the ranges including the last scan position value; and
selecting the set of MTS candidates to which the one of the ranges including the last scan position value is mapped according to the mappings.

### Claim 6 (depends on 5)

The method of claim 5, wherein a first one of the ranges is mapped to the third set of MTS candidates having a first size, and wherein a second one of the ranges is mapped to a second set of MTS candidates having a second size, the second set of MTS candidates being a subset of the third set of MTS candidates, and the second size being smaller than the first size.

### Claim 7 (depends on 1)

The method of claim 1, further comprising coding an MTS index value corresponding to the one of the MTS candidates.

### Claim 8 (depends on 7)

The method of claim 7, wherein coding the MTS index value comprises:
coding a value for a first bin of the MTS index value indicating that the DCT2 candidate is not used; and
coding values for one or more bins of the MTS index value beyond the first bin corresponding to the one of the MTS candidates of the determined set of MTS candidates.

### Claim 9 (depends on 7)

The method of claim 7, wherein coding the MTS index value comprises coding one of a truncated binary codeword representing the MTS index value, a truncated unary codeword representing the MTS index value, an exponential Golomb codeword representing the MTS index value, or a variable length codeword representing the MTS index value.

### Claim 10 (depends on 7)

The method of claim 7, wherein coding the MTS index value comprises:
determining a context for context coding the MTS index value according to the set of MTS candidates; and
context coding the MTS index value using the determined context.

### Claim 11 (depends on 7)

The method of claim 7, wherein coding the MTS index value comprises:
determining a predicted MTS index value according to a discontinuity measure across a block boundary for the current block; and
determining the MTS index based on the predicted MTS index.

### Claim 12 (depends on 11)

The method of claim 11, further comprising:
determining a predicted sign for transform coefficients of the transform block according to the discontinuity measure; and
decoding the transform coefficients using the predicted sign.

### Claim 13 (depends on 11)

The method of claim 11, further comprising coding actual sign values for transform coefficients of the transform block using the predicted sign.

### Claim 14 (depends on 7)

The method of claim 7, wherein coding the MTS index comprises:
determining an order for MTS index codewords for the MTS candidates according to various discontinuity measures across one or more block boundaries for the current block; and
coding one of the MTS index codewords corresponding to the MTS index.

### Claim 15 (depends on 1)

The method of claim 1, further comprising encoding the current block prior to decoding the current block.

### Claim 16

A device for decoding video data, the device comprising:
a memory configured to store video data; and
one or more processors implemented in circuitry and configured to:
determine a set of multiple transform selection (MTS) candidates for a current block of video data,
wherein to determine the set, the one or more processors is configured to select the set, based on a number of non-zero coefficients of a transform block, between a first set consisting of a single MTS candidate, a second set of MTS candidates having at least four MTS candidates, and a third set of MTS candidates having more MTS candidates than the second set, the MTS candidates of the second and third set being MTS candidates other than a DCT2 candidate;
determine one of the MTS candidates of the determined set of MTS candidates for the current block;
inverse transform the transform block for the current block using the determined one of the MTS candidates to produce a residual block; and
decode the current block using the residual block.

### Claim 17 (depends on 16)

The device of claim 16, wherein the one or more processors are configured to select the set of MTS candidates according to a comparison of the number of non-zero coefficients to one or more threshold values.

### Claim 18 (depends on 16)

The device of claim 16, wherein to determine select the set of MTS candidates, the one or more processors are configured to:
calculate an absolute sum of the non-zero coefficients of the transform block; and
select the set of MTS candidates according to the absolute sum of the non-zero coefficients of the transform block.

### Claim 19 (depends on 16)

The device of claim 16, wherein the one or more processors are configured to select the set of MTS candidates according to a last scan position value for the transform block, the last scan position value representing a position of a last non-zero transform coefficient in scan order in the transform block.

### Claim 20 (depends on 16)

The device of claim 16, wherein the one or more processors are further configured to code an MTS index value corresponding to the one of the MTS candidates.

### Claim 21 (depends on 20)

The device of claim 20, wherein to code the MTS index value, the one or more processors are configured to:
code a value for a first bin of the MTS index value indicating that the DCT2 candidate is not used; and
code values for one or more bins of the MTS index value beyond the first bin corresponding to the one of the MTS candidates of the determined set of MTS candidates.

### Claim 22 (depends on 20)

The device of claim 20, wherein to code the MTS index value, the one or more processors are configured to code one of a truncated binary codeword representing the MTS index value, a truncated unary codeword representing the MTS index value, an exponential Golomb codeword representing the MTS index value, or a variable length codeword representing the MTS index value.

### Claim 23 (depends on 20)

The device of claim 20, wherein to code the MTS index value, the one or more processors are configured to:
determine a context for context coding the MTS index value according to the set of MTS candidates; and
context code the MTS index value using the determined context.

### Claim 24 (depends on 20)

The device of claim 20, wherein to code the MTS index value, the one or more processors are configured to:
determine a predicted MTS index value according to a discontinuity measure across a block boundary for the current block; and
determine the MTS index based on the predicted MTS index.

### Claim 25 (depends on 20)

The device of claim 20, wherein to code the MTS index value, the one or more processors are configured to:
determine an order for MTS index codewords for the MTS candidates according to various discontinuity measures across one or more block boundaries for the current block; and
code one of the MTS index codewords corresponding to the MTS index.

### Claim 26 (depends on 16)

The device of claim 16, wherein the one or more processors are further configured to encode the current block prior to decoding the current block.

### Claim 27

A device for decoding video data, the device comprising:
means for determining a set of multiple transform selection (MTS) candidates for a current block of video data,
wherein the means for determining the set comprises means for selecting the set, based on a number of non-zero coefficients of a transform block, between a first set consisting of a single MTS candidate, a second set of MTS candidates having at least four MTS candidates, and
a third set of MTS candidates having more MTS candidates than the second set, the MTS candidates of the second and third set being MTS candidates other than a DCT2 candidate;
means for determining one of the MTS candidates of the determined set number of MTS candidates for the current block;
means for inverse transforming the transform block for the current block using the determined one of the MTS candidates to produce a residual block; and
means for decoding the current block using the residual block.

### Claim 28 (depends on 1)

The method of claim 1, wherein the third set of MTS candidates has at least six candidates.

### Claim 29 (depends on 16)

The device of claim 16, wherein the third set of MTS candidates has at least six candidates.
