# US 10,455,238 B2 · Method and apparatus of HEVC de-blocking filter

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

- Number: US 10,455,238 B2
- Document ID: US10455238B2
- Status: Granted
- Kind: B2
- Application number: 15/853,474
- Filed: 2017-12-22
- Published: 2018-07-05
- Granted: 2019-10-22
- Earliest claimed: 2013-05-20
- Assignees: Texas Instruments Incorporated
- Applicants: Texas Instruments Incorporated
- Inventors: Mihir Narendra Mody; Niraj Nandan; Hideo Tamama
- Web page: https://patentgrep.com/patent/US10455238B2

## CPC

- H04N 19/176: the region being a block, e.g. a macroblock
- H04N 19/117: Filters, e.g. for pre-processing or post-processing (sub-band filter banks H04N19/635)
- H04N 19/14: Coding unit complexity, e.g. amount of activity or edge presence estimation (H04N19/146 takes precedence)
- H04N 19/82: involving filtering within a prediction loop
- H04N 19/86: involving reduction of coding artifacts, e.g. of blockiness
- H04N 19/186: the unit being a colour or a chrominance component
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

A method of de-blocking filtering a processed video is provided. The processed video includes a plurality of blocks and each block includes a plurality of sub-blocks. A current block of the plurality of blocks includes vertical edges and horizontal edges. The processed video further includes a set of control parameters and reconstructed pixels corresponding to the current block. A boundary strength index is estimated at the vertical edges and at the horizontal edges of the current block. The set of control parameters, the reconstructed pixels corresponding to the current block and partially filtered pixels corresponding to a set of adjacent sub-blocks are loaded. The vertical edges and the horizontal edges of the current block are filtered based on the boundary strength index and the set of control parameters such that a vertical edge of the current block is filtered before filtering at least one horizontal edge of the current block.

## Claims

### Claim 1

A de-blocking filter comprising:
a boundary strength block configured to estimate a boundary strength index at vertical edges and at horizontal edges of a current block of a plurality of blocks;
a reconstructed memory coupled to the boundary strength block and configured to receive a processed video and configured to store reconstructed pixels corresponding to the current block received in the processed video, the processed video comprises the plurality of blocks and each block comprises a plurality of sub-blocks;
a de-block controller coupled to the boundary strength block and the reconstructed memory;
a work memory coupled to the de-block controller and configured to store partially filtered pixels corresponding to a set of adjacent sub-blocks, the de-block controller configured to load the boundary strength index at the vertical edges and the horizontal edges of the current block and the reconstructed pixels corresponding to the current block in the work memory; and
a de-blocking filter engine comprising a plurality of core engines, the de-blocking filter engine configured to filter the vertical edges and the horizontal edges of the current block based on the boundary strength index.

### Claim 2 (depends on 1)

The de-blocking filter of claim 1, wherein the de-block controller is configured to load from the work memory, the boundary strength index at the vertical edges and the horizontal edges of the current block, the reconstructed pixels corresponding to the current block and the partially filtered pixels corresponding to the set of adjacent sub-blocks, in the de-blocking filter engine.

### Claim 3 (depends on 1)

The de-blocking filter of claim 1, wherein filtering by the de-blocking filter engine further comprises the de-blocking filter engine configured to perform at least one of strong filtering, weak filtering and bypass filtering.

### Claim 4 (depends on 1)

The de-blocking filter of claim 1, wherein the de-blocking filter engine is configured to filter the vertical edge of the current block before filtering at least one horizontal edge of the current block followed by filtering a vertical edge of a subsequent block before filtering at least one horizontal edge of the subsequent block.

### Claim 5 (depends on 1)

The de-blocking filter of claim 1, wherein:
the processed video comprises a plurality of LCUs (largest coding units) and each LCU comprises the plurality of blocks arranged in a plurality of columns; and
each block comprises N×N pixels and each edge of the block comprises at least one of N/2 pixels and N/4 pixels.

### Claim 6 (depends on 1)

The de-blocking filter of claim 1, wherein the de-blocking filter engine is configured to filter all blocks in a column of the plurality of columns before filtering all blocks in a subsequent column in each LCU.

### Claim 7 (depends on 1)

The de-blocking filter of claim 1, wherein the set of adjacent sub-blocks comprises a set of left sub-blocks, a set of top sub-blocks and a set of top-left sub-blocks, wherein the set of left sub-blocks, the set of top sub-blocks and the set of top-left sub-blocks are sub-blocks of blocks adjacent to the current block.

### Claim 8 (depends on 1)

The de-blocking filter of claim 1, wherein the de-block controller is configured to provide a processing block to the de-blocking filter engine, and the de-block controller is configured to form the processing block by collating the set of adjacent sub-blocks and the current block.

### Claim 9 (depends on 8)

The de-blocking filter of claim 8, wherein the de-blocking filter engine is configured to filter a set of sub-blocks in the processing block and the de-blocking filter engine configured not to filter remaining sub-blocks in the processing block, the de-block controller is configured to store remaining sub-blocks in the work memory.

### Claim 10 (depends on 9)

The de-blocking filter of claim 9, wherein the remaining sub-blocks comprises sub-blocks in a last column and a last row of the processing block.

### Claim 11 (depends on 1)

The de-blocking filter of claim 1, wherein:
the current block comprises a top-left vertical edge, a bottom-left vertical edge, a top-right vertical edge, a bottom-right vertical edge, a top-first horizontal edge, a top-second horizontal edge, a bottom-first horizontal edge, a bottom-second horizontal edge;
the boundary strength block is configured to estimate the boundary strength index at the top-left vertical edge, the bottom-left vertical edge, the top-right vertical edge, the bottom-right vertical edge, the top-first horizontal edge, the top-second horizontal edge, the bottom-first horizontal edge, the bottom-second horizontal edge; and
the de-blocking filter engine is configured to filter the top-left vertical edge and the bottom-left vertical edge followed by filtering an edge between a left sub-block and a left top sub-block and the top-first horizontal edge, wherein the left sub-block is a sub-block in the set of left sub-blocks and the left top sub-block is a sub-block in the set of left top sub-blocks.

### Claim 12 (depends on 1)

The de-blocking filter of claim 1 further comprising a DMA (direct memory access) interface and the de-blocking controller is configured to use the DMA interface for storing a data in at least one of an on-chip memory and an external DDR (double data rate) memory when the data stored in the work memory is above a threshold, wherein the data comprises partially filtered pixels corresponding to the set of adjacent sub-blocks, and the reconstructed pixels corresponding to the current block in the work memory.

### Claim 13 (depends on 1)

The de-blocking filter of claim 1 configured to perform a logic operation in a logic unit external to the de-blocking filter to determine if the boundary strength index is equal to 1 and configured to perform a logic operation in the boundary strength block if the boundary strength index is not equal to 1.

### Claim 14

A method of filtering a processed video comprising:
receiving the processed video, the processed video comprising a plurality of blocks and each block comprising a plurality of sub-blocks, a current block of the plurality of blocks comprising vertical edges and horizontal edges, the processed video further comprising a set of control parameters and reconstructed pixels corresponding to the current block;
estimating a boundary strength index at the vertical edges and at the horizontal edges of the current block based on one or more motion vectors;
loading the set of control parameters, the boundary strength index at the vertical edges and at the horizontal edges of the current block, the reconstructed pixels corresponding to the current block and partially filtered pixels corresponding to a set of adjacent sub-blocks; and
filtering the vertical edges and the horizontal edges of the current block based on the boundary strength index, the reconstructed pixels corresponding to the current block, the partially filtered pixels corresponding to a set of adjacent sub-blocks and the set of control parameters.

### Claim 15 (depends on 14)

The method of claim 14, wherein filtering the vertical edges and the horizontal edges further comprises performing at least one of strong filtering, weak filtering and bypass filtering.

### Claim 16 (depends on 14)

The method of claim 14 further comprising filtering the vertical edge of the current block before filtering at least one horizontal edge of the current block followed by filtering a vertical edges of a subsequent block before filtering at least one horizontal edge of the subsequent block.

### Claim 17 (depends on 14)

The method of claim 14, wherein:
the vertical edges comprises a top-left vertical edge, a bottom-left vertical edge, a top-right vertical edge and a bottom-right vertical edge and the horizontal edges comprises a top-first horizontal edge, a top-second horizontal edge, a bottom-first horizontal edge and a bottom-second horizontal edge; and
the set of adjacent sub-blocks comprises a set of left sub-blocks, a set of top sub-blocks, a set of top-left sub-blocks and the current block, wherein the set of top-left sub-blocks, the set of left sub-blocks and the set of top sub-blocks are sub-blocks of blocks adjacent to the current block.

### Claim 18 (depends on 14)

The method of claim 14 further comprising filtering the top-left vertical edge of the current block and the bottom-left vertical edge of the current block followed by filtering an edge between a left sub-block and a left top sub-block and the top-first horizontal edge of the current block, wherein the left sub-block is a sub-block in the set of left sub-blocks and the left top sub-block is a sub-block in the set of left top sub-blocks.

### Claim 19 (depends on 14)

The method of claim 14, wherein:
the processed video comprises a plurality of LCUs (largest coding units) and each LCU comprises the plurality of blocks arranged in a plurality of columns; and
each block comprises N×N pixels and each edge of the block comprises at least one of N/2 pixels and N/4 pixels.

### Claim 20 (depends on 14)

The method of claim 14 further comprising filtering all blocks in a column of the plurality of columns before filtering all blocks in a subsequent column in each LCU.

### Claim 21 (depends on 14)

The method of claim 14 further comprising forming a processing block by collating the set of adjacent sub-blocks and the current block.

### Claim 22 (depends on 21)

The method of claim 21 further comprising filtering a set of sub-blocks in the processing block and storing remaining sub-blocks in the processing block in a work memory, the remaining sub-blocks are the sub-blocks in a last column and a last row of the processing block.

### Claim 23

A computing device comprising:
a processing unit;
a memory module coupled to the processing unit;
a video processing unit coupled to the processing unit and the memory module, the video processing unit comprising a de-blocking filter, the de-blocking filter comprising:
a boundary strength block configured to estimate a boundary strength index at vertical edges and at horizontal edges of a current block of a plurality of blocks;
a reconstructed memory coupled to the boundary strength block and configured to receive a processed video and configured to store reconstructed pixels corresponding to the current block received in the processed video, the processed video comprises the plurality of blocks and each block comprises a plurality of sub-blocks;
a de-block controller coupled to the boundary strength block and the reconstructed memory;
a work memory coupled to the de-block controller and configured to store partially filtered pixels corresponding to a set of adjacent sub-blocks, the de-block controller configured to load the boundary strength index at the vertical edges and the horizontal edges of the current block and the reconstructed pixels corresponding to the current block in the work memory; and
a de-blocking filter engine comprising a plurality of core engines, the de-blocking filter engine configured to filter the vertical edges and the horizontal edges of the current block based on the boundary strength index.

### Claim 24

A video decoder comprising:
an entropy decoder configured to receive a coded video and configured to decode the coded video;
an inverse quantization and inverse transform unit coupled to the entropy decoder and configured to quantize and transform the decoded video received from the entropy decoder;
an adder coupled to the inverse quantization and inverse transform unit and configured to generate a processed video;
an intra prediction unit coupled to the adder and configured to generate a predicted block from the processed video;
an in-loop filter coupled to the adder and configured to generate a video output in response to the processed video received from the adder, the in-loop filter comprising a de-blocking filter and a sample adaptive offset (SAO) filter, the de-blocking filter being configured to filter vertical edges and horizontal edges of a current block based on a boundary strength index, reconstructed pixels corresponding to the current block, partially filtered pixels corresponding to a set of adjacent sub-blocks and a set of control parameters;
a picture buffer coupled to the in-loop filter and configured to store the video output generated by the in-loop filter;
a motion compensation unit coupled to the picture buffer and configured to perform motion compensation on the video output;
an intra/inter mode selection unit coupled to the intra prediction unit and the motion compensation unit, the intra/inter mode selection unit configured to select an output of at least one of the intra prediction unit and the motion compensation unit, wherein an output of the intra/inter mode selection unit is provided to the adder.

### Claim 25 (depends on 24)

The video decoder of claim 24, wherein the de-blocking filter comprises:
a boundary strength block configured to receive the set of control parameters associated with the processed video and configured to estimate the boundary strength index at vertical edges and at horizontal edges of the current block of a plurality of blocks, the processed video comprises the plurality of blocks and each block comprises a plurality of sub-blocks;
a reconstructed memory coupled to the boundary strength block and configured to receive the processed video and configured to store reconstructed pixels corresponding to the current block received in the processed video;
a de-block controller coupled to the boundary strength block and the reconstructed memory;
a work memory coupled to the de-block controller and configured to store partially filtered pixels corresponding to the set of adjacent sub-blocks, the de-block controller configured to load the set of control parameters, the boundary strength index at the vertical edges and the horizontal edges of the current block and the reconstructed pixels corresponding to the current block in the work memory; and
a de-blocking filter engine comprising a plurality of core engines, the de-blocking filter engine configured to filter the vertical edges and the horizontal edges of the current block based on the boundary strength index and the set of control parameters, wherein a vertical edge of the current block is filtered before filtering at least one horizontal edge of the current block.
