# US 10,313,670 B2 · Use of chroma quantization parameter offsets in deblocking

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

- Number: US 10,313,670 B2
- Document ID: US10313670B2
- Status: Granted
- Kind: B2
- Application number: 16/126,176
- Filed: 2018-09-10
- Published: 2019-03-28
- Granted: 2019-06-04
- Earliest claimed: 2012-07-02
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Gary J. Sullivan
- Web page: https://patentgrep.com/patent/US10313670B2

## CPC

- H04N 19/124: Quantisation
- H04N 19/117: Filters, e.g. for pre-processing or post-processing (sub-band filter banks H04N19/635)
- H04N 19/126: Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
- H04N 19/15: by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
- H04N 19/172: the region being a picture, frame or field
- H04N 19/174: the region being a slice, e.g. a line of blocks or a group of blocks
- H04N 19/186: the unit being a colour or a chrominance component
- H04N 19/70: characterised by syntax aspects related to video coding, e.g. related to compression standards
- H04N 19/86: involving reduction of coding artifacts, e.g. of blockiness
- H04N 19/176: the region being a block, e.g. a macroblock
- H04N 19/184: the unit being bits, e.g. of the compressed video stream
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

Innovations in use of chroma quantization parameter (“QP”) offsets when determining a control parameter for deblock filtering. For example, as part of encoding, an encoder sets a picture-level chroma QP offset and slice-level chroma QP offset for encoding of a slice of a picture. The encoder also performs deblock filtering of at least part of the slice, where derivation of a control parameter considers only the picture-level chroma QP offset. The encoder outputs at least part of a bitstream including the encoded content. As part of decoding, a corresponding decoder sets a picture-level chroma QP offset and a slice-level chroma QP offset for decoding of a slice of a picture, but derivation of a control parameter for deblock filtering considers only the picture-level chroma QP offset.

## Claims

### Claim 1

In a computing device that implements a video decoder, a method comprising:
receiving encoded data in a bitstream; and
decoding at least some of the encoded data to reconstruct at least part of a slice of a picture, including, for each of two different chroma components of the at least part of the slice:
setting a picture-level chroma quantization parameter (QP) offset and a slice-level chroma QP offset for the chroma component; and
performing deblock filtering on the chroma component, including deriving a control parameter tC considering the picture-level chroma QP offset but not the slice-level chroma QP offset for the chroma component, wherein the deriving the control parameter tC includes:
deriving a variable qPI=(((QPQ+QPP+1)>>1)+cqp_offset), wherein variables QPQ and QPP represent luma QP values for blocks on either side of an edge in the at least part of the slice on which the deblock filtering is performed, and wherein variable cqp_offset represents the picture-level chroma QP offset but not the slice-level chroma QP offset for the chroma component;
determining a variable QPC according to a relationship between the variable QPC and the variable qPI, wherein the relationship between the variable QPC and the variable qPI is specified in a table for every value of the variable qPI, and wherein the determining the variable QPC uses a look-up operation of the variable qPI in the table;
deriving a variable Q using the variable QPC;
mapping the variable Q to a variable tC′; and
determining the control parameter tC using the variable tC′.

### Claim 2 (depends on 1)

The method of claim 1, wherein the deriving the control parameter tC further includes, before the determining the variable QPC:
clipping the variable qPI to a range whose upper limit is set to the variable QPmax, wherein the variable QPmax is 57.

### Claim 3 (depends on 1)

The method of claim 1, wherein the deriving the variable Q includes:
calculating the variable Q as QPC+2*(bS−1)+(slice_tc_offset_div2<<1), wherein variable bS is a boundary filtering strength, and wherein the variable slice_tc_offset_div2 represents a value of a syntax element in the encoded data that indicates an offset for a slice that contains a first sample on a first side of the edge; and
clipping the variable Q to a range whose lower limit is 0 and whose upper limit is 53.

### Claim 4 (depends on 1)

The method of claim 1, wherein a relationship between the variable Q and the variable tC′ is specified in a second table for every value of the variable Q, and wherein the mapping the variable Q to the variable tC′ uses a look-up operation of the variable Q in the second table.

### Claim 5 (depends on 1)

The method of claim 1, wherein the determining the control parameter tC using the variable tC′ includes scaling the variable tC′ according to a value that depends on bit depth of the chroma component.

### Claim 6 (depends on 1)

The method of claim 1, wherein:
in the encoded data, the picture-level chroma QP offset is separately signaled for the two different chroma components;
in the encoded data, the slice-level chroma QP offset is separately signaled for the two different chroma components; and
for the two different chroma components, bitstream syntax permits signaling of different slice-level chroma QP offsets for different slices of the picture.

### Claim 7 (depends on 1)

The method of claim 1, wherein the bitstream includes one or more syntax elements that indicate the picture-level chroma QP offset and one or more syntax elements that indicate the slice-level chroma QP offset.

### Claim 8 (depends on 1)

The method of claim 1, wherein the decoding the at least some of the encoded data to reconstruct the at least part of the slice further includes, for each of the two different chroma components of the at least part of the slice:
determining a chroma QP for the chroma component using the picture-level chroma QP offset and the slice-level chroma QP offset for the chroma component; and
inverse quantizing transform coefficients using the chroma QP.

### Claim 9 (depends on 8)

The method of claim 8, wherein the decoding the at least some of the encoded data to reconstruct the at least part of the slice further includes, for each of the two different chroma components of the at least part of the slice, after the inverse quantizing:
storing the picture-level chroma QP offset for use in the deriving the control parameter tC; and
discarding the slice-level chroma QP offset.

### Claim 10

A non-volatile memory or storage device having stored thereon computer-executable instructions for causing one or more processing units, when programmed thereby, to perform operations comprising:
receiving encoded data in a bitstream; and
decoding at least some of the encoded data to reconstruct at least part of a slice of a picture, including, for each of two different chroma components of the at least part of the slice:
setting a picture-level chroma quantization parameter (QP) offset and a slice-level chroma QP offset for the chroma component; and
performing deblock filtering on the chroma component, including deriving a control parameter tC considering the picture-level chroma QP offset but not the slice-level chroma QP offset for the chroma component, wherein the deriving the control parameter tC includes:
deriving a variable qPI=(((QPQ+QPP+1)>>1)+cqp_offset), wherein variables QPQ and QPP represent luma QP values for blocks on either side of an edge in the at least part of the slice on which the deblock filtering is performed, and wherein variable cqp_offset represents the picture-level chroma QP offset but not the slice-level chroma QP offset for the chroma component;
determining a variable QPC according to a relationship between the variable QPC and the variable qPI, wherein the relationship between the variable QPC and the variable qPI is specified in a table for every value of the variable qPI, and wherein the determining the variable QPC uses a look-up operation of the variable qPI in the table;
deriving a variable Q using the variable QPC;
mapping the variable Q to a variable tC′; and
determining the control parameter tC using the variable tC′.

### Claim 11 (depends on 10)

The non-volatile memory or storage device of claim 10, wherein the deriving the control parameter tC further includes, before the determining the variable QPC:
clipping the variable qPI to a range whose upper limit is set to the variable QPmax, wherein the variable QPmax is 57.

### Claim 12 (depends on 10)

The non-volatile memory or storage device of claim 10, wherein the deriving the variable Q includes:
calculating the variable Q as QPC+2*(bS−1)+(slice_tc_offset_div2<<1), wherein variable bS is a boundary filtering strength, and wherein the variable slice_tc_offset_div2 represents a value of a syntax element in the encoded data that indicates an offset for a slice that contains a first sample on a first side of the edge; and
clipping the variable Q to a range whose lower limit is 0 and whose upper limit is 53.

### Claim 13 (depends on 10)

The non-volatile memory or storage device of claim 10, wherein a relationship between the variable Q and the variable tC′ is specified in a second table for every value of the variable Q, and wherein the mapping the variable Q to the variable tC′ uses a look-up operation of the variable Q in the second table.

### Claim 14 (depends on 10)

The non-volatile memory or storage device of claim 10, wherein the determining the control parameter tC using the variable tC′ includes scaling the variable tC′ according to a value that depends on bit depth of the chroma component.

### Claim 15 (depends on 10)

The non-volatile memory or storage device of claim 10, wherein:
in the encoded data, the picture-level chroma QP offset is separately signaled for the two different chroma components;
in the encoded data, the slice-level chroma QP offset is separately signaled for the two different chroma components; and
for the two different chroma components, bitstream syntax permits signaling of different slice-level chroma QP offsets for different slices of the picture.

### Claim 16 (depends on 10)

The non-volatile memory or storage device of claim 10, wherein the bitstream includes one or more syntax elements that indicate the picture-level chroma QP offset and one or more syntax elements that indicate the slice-level chroma QP offset.

### Claim 17 (depends on 10)

The non-volatile memory or storage device of claim 10, wherein the decoding the at least some of the encoded data to reconstruct the at least part of the slice further includes, for each of the two different chroma components of the at least part of the slice:
determining a chroma QP for the chroma component using the picture-level chroma QP offset and the slice-level chroma QP offset for the chroma component; and
inverse quantizing transform coefficients using the chroma QP.

### Claim 18 (depends on 7)

The non-volatile memory or storage device of claim 7, wherein the decoding the at least some of the encoded data to reconstruct the at least part of the slice further includes, for each of the two different chroma components of the at least part of the slice, after the inverse quantizing:
storing the picture-level chroma QP offset for use in the deriving the control parameter tC; and
discarding the slice-level chroma QP offset.

### Claim 19

A computing device that implements a video decoder, wherein the computing device comprises a processing unit and memory, and wherein the computing device is configured to perform operations comprising:
receiving encoded data in a bitstream; and
decoding at least some of the encoded data to reconstruct at least part of a slice of a picture, including, for each of two different chroma components of the at least part of the slice:
setting a picture-level chroma quantization parameter (QP) offset and a slice-level chroma QP offset for the chroma component; and
performing deblock filtering on the chroma component, including deriving a control parameter tC considering the picture-level chroma QP offset but not the slice-level chroma QP offset for the chroma component, wherein the deriving the control parameter tC includes:
deriving a variable qPI=(((QPQ+QPP+1)>>1)+cqp_offset), wherein variables QPQ and QPP represent luma QP values for blocks on either side of an edge in the at least part of the slice on which the deblock filtering is performed, and wherein variable cqp_offset represents the picture-level chroma QP offset but not the slice-level chroma QP offset for the chroma component;
determining a variable QPC according to a relationship between the variable QPC and the variable qPI, wherein the relationship between the variable QPC and the variable qPI is specified in a table for every value of the variable qPI, and wherein the determining the variable QPC uses a look-up operation of the variable qPI in the table;
deriving a variable Q using the variable QPC;
mapping the variable Q to a variable tC′; and
determining the control parameter tC using the variable tC′.

### Claim 20 (depends on 19)

The computing device of claim 19, wherein the decoding the at least some of the encoded data to reconstruct the at least part of the slice further includes, for each of the two different chroma components of the at least part of the slice:
determining a chroma QP for the chroma component using the picture-level chroma QP offset and the slice-level chroma QP offset for the chroma component;
inverse quantizing transform coefficients using the chroma QP;
after the inverse quantizing, storing the picture-level chroma QP offset for use in the deriving the control parameter tC, and discarding the slice-level chroma QP offset.
