IP Library Granted Patent US 10,645,408
Granted Patent B2
US 10,645,408 · App. 15/706,735 · Granted May 5, 2020

Dual deblocking filter thresholds

Inventors: Jingning Han (Santa Clara, CA); Yaowu Xu (Saratoga, CA)
Assignee: GOOGLE LLC
H04N19/436H04N19/117H04N19/14H04N19/176H04N19/82H04N19/86H04N19/122H04N19/157
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 10,645,408
App. No.
15/706,735
Granted
May 5, 2020
Kind
B2
Abstract

Video coding using dual deblocking filter thresholds may include generating a reconstructed frame by decoding an encoded bitstream and outputting the reconstructed frame. Decoding may include generating a decoded block by decoding a portion of the encoded bitstream, identifying a first deblocking threshold index from the encoded bitstream, identifying a second deblocking threshold index from the encoded bitstream, generating a reconstructed block based on the decoded block, and including the reconstructed block in the reconstructed frame. Generating the reconstructed block may include deblocking based on the first deblocking threshold index and the second deblocking threshold index.

Claims (106)

1. A method comprising:

generating, by a processor executing instructions stored on a non-transitory computer-readable medium, a reconstructed frame by decoding an encoded bitstream, wherein decoding includes:

generating a decoded block by decoding a portion of the encoded bitstream;

reading a first deblocking threshold index from the encoded bitstream, wherein the first deblocking threshold index identifies a first defined set of deblocking thresholds;

identifying a second deblocking threshold index from the encoded bitstream, wherein the second deblocking threshold index identifies a second defined set of deblocking thresholds;

generating a reconstructed block based on the decoded block, wherein generating the reconstructed block includes deblocking based on the first defined set of deblocking thresholds and the second defined set of deblocking thresholds, wherein generating the reconstructed frame includes:

on a condition that the first deblocking threshold index is a vertical deblocking threshold index, deblocking includes vertical deblocking based on the first deblocking threshold index and horizontal deblocking based on the second deblocking threshold index; and

on a condition that the first deblocking threshold index is a horizontal deblocking threshold index, deblocking includes horizontal deblocking based on the first deblocking threshold index and vertical deblocking based on the second deblocking threshold index; and

including the reconstructed block in the reconstructed frame; and outputting the reconstructed frame.

2. The method of claim 1 , wherein reading the first deblocking threshold index includes reading the first deblocking threshold index from a frame header corresponding to the reconstructed frame.

3. The method of claim 1 , wherein identifying the second deblocking threshold index includes:

reading a differential deblocking threshold index value from the encoded bitstream; and

identifying a sum of the differential deblocking threshold index value and the first deblocking threshold index as the second deblocking threshold index.

4. The method of claim 1 , wherein deblocking includes:

identifying a current deblocking threshold based on a current deblocking threshold index, wherein:

on a condition that the current deblocking threshold index is the first deblocking threshold index, the current deblocking threshold is a first deblocking threshold from the first defined set of deblocking thresholds; and

on a condition that the current deblocking threshold index is the second deblocking threshold index, the current deblocking threshold is a second deblocking threshold from the second defined set of deblocking thresholds.

5. The method of claim 4 , wherein identifying the current deblocking threshold includes:

identifying a current set of deblocking thresholds from a plurality of deblocking thresholds based on the current deblocking threshold index, wherein:

on a condition that the current deblocking threshold index is the first deblocking threshold index, the current set of deblocking thresholds is the first defined set of deblocking thresholds; and

on a condition that the current deblocking threshold index is the second deblocking threshold index, the current set of deblocking thresholds is the second defined set of deblocking thresholds;

identifying a current minimum transform block size corresponding to a current block boundary of the decoded block in a current direction; and

identifying a subset of deblocking thresholds from the current set of deblocking thresholds based on the current minimum transform block size as the current deblocking threshold.

6. The method of claim 5 , wherein identifying the current deblocking threshold includes:

in response to a determination that the current minimum transform block size differs from a second minimum transform block size for a second block boundary of the decoded block opposite the current block boundary, identifying the current deblocking threshold such that the current deblocking threshold differs from a deblocking threshold for the second block boundary; and

in response to a determination that the current minimum transform block size is equivalent to the second minimum transform block size, identifying the deblocking threshold for the second block boundary as the current deblocking threshold.

7. The method of claim 5 , wherein deblocking includes:

in response to a current deblocking determination indicating deblocking for the current block boundary; deblocking the current block boundary.

8. The method of claim 7 , wherein deblocking includes generating the current deblocking determination by:

identifying a current flatness factor based on pixel values from the decoded block along the current direction;

in response to a determination that the current flatness factor exceeds a deblocking determination threshold value from the current deblocking threshold, identifying the current deblocking determination as indicating an omission of deblocking;

identifying an adjacent flatness factor based on pixel values from an adjacent decoded block along the current direction;

in response to a determination that the adjacent flatness factor exceeds the deblocking determination threshold value, identifying a current blocking determination as indicating the omission of deblocking; and

in response to a determination that the current flatness factor is within the deblocking determination threshold value and the adjacent flatness factor is within the deblocking determination threshold value, identifying the current blocking determination as indicating deblocking.

9. The method of claim 7 , wherein deblocking the current block boundary includes:

identifying a deblocking filter threshold from the subset of deblocking thresholds;

identifying a deblocking filter parameter based on the deblocking filter threshold; and

deblocking the current block boundary using the deblocking filter parameter.

10. A method comprising:

generating, by a processor executing instructions stored on a non-transitory computer-readable medium, an encoded frame by encoding an input frame, wherein encoding includes:

generating a decoded frame by decoding the encoded frame;

generating a reconstructed frame by reconstructing the decoded frame, wherein reconstructing the decoded frame includes:

identifying a joint deblocking threshold index from a plurality of deblocking threshold indexes for deblocking the decoded frame wherein the joint deblocking threshold index identities a first defined set of deblocking thresholds;

identifying a first deblocking threshold index from the plurality of deblocking threshold indexes, wherein identifying the first deblocking threshold index includes using the joint deblocking threshold index as a second deblocking threshold index for deblocking the decoded frame, wherein the first deblocking threshold index identifies a second defined set of deblocking thresholds; and

identifying the second deblocking threshold index from the plurality of deblocking threshold indexes, wherein identifying the second deblocking threshold index includes using the first deblocking threshold index for deblocking the decoded frame, wherein the second deblocking threshold index identifies a third defined set of deblocking thresholds, wherein:

generating the reconstructed frame includes:

generating a decoded block by decoding an encoded block from the encoded frame;

generating a reconstructed block based on the decoded block, wherein generating the reconstructed block includes deblocking based on the first deblocking threshold index and the second deblocking threshold index; and

including the reconstructed block in the reconstructed frame; and wherein encoding includes:

on a condition that the first deblocking threshold index is a vertical deblocking threshold index, deblocking includes vertical deblocking based on the first deblocking threshold index and horizontal deblocking based on the second deblocking threshold index; and

on a condition that the first deblocking threshold index is a horizontal deblocking threshold index, deblocking includes horizontal deblocking based on the first deblocking threshold index and vertical deblocking based on the second deblocking threshold index; and

generating an output bitstream including the encoded frame, an indication of the first deblocking threshold index, and an indication of the second deblocking threshold index; and

outputting the output bitstream.

11. The method of claim 10 , wherein generating the output bitstream includes:

including the first deblocking threshold index in a frame header corresponding to the encoded frame.

12. The method of claim 10 , wherein generating the output bitstream includes:

identifying a difference between the first deblocking threshold index and the second deblocking threshold index as a differential deblocking threshold index value, wherein identifying the difference includes subtracting the second deblocking threshold index from the first deblocking threshold index; and

including the differential deblocking threshold index value in the output bitstream.

13. The method of claim 10 , wherein identifying the joint deblocking threshold index includes:

determining joint error metrics, wherein each joint error metric from the joint error metrics corresponds with deblocking the decoded frame using a respective deblocking threshold index from the plurality of deblocking threshold indexes as the first deblocking threshold index and the second deblocking threshold index; and

identifying the deblocking threshold index corresponding to a minimal joint error metric from the joint error metrics as the joint deblocking threshold index.

14. The method of claim 13 , wherein identifying the first deblocking threshold index includes;

identifying first error metrics, wherein each first error metric from the first error metrics corresponds with deblocking the decoded frame using the joint deblocking threshold index as the second deblocking threshold index and using a respective deblocking threshold index from the plurality of deblocking threshold indexes, other than the joint deblocking threshold index, as the first deblocking threshold index;

including the minimal joint error metric in the first error metrics as a first error metric corresponding to the joint deblocking threshold index; and

identifying the deblocking threshold index corresponding to a minimal first error metric from the first error metrics as the first deblocking threshold index.

15. The method of claim 14 , wherein identifying the second deblocking threshold index includes:

identifying second error metrics, wherein each second error metric from the second error metrics corresponds with deblocking the decoded frame using the first deblocking threshold index and using a respective deblocking threshold index from the plurality of deblocking threshold indexes, other than the first deblocking threshold index, as the second deblocking threshold index;

including the minimal first error metric in the second error metrics as a second error metric corresponding to the first deblocking threshold index; and

identifying the deblocking threshold index corresponding to a minimal second error metric from the second error metrics as the second deblocking threshold index.

16. The method of claim 14 wherein deblocking includes:

identifying a current deblocking threshold based on a current deblocking threshold index, wherein:

on a condition that the current deblocking threshold index is the first deblocking threshold index, the current deblocking threshold is a first deblocking threshold from the second defined set of deblocking thresholds; and

on a condition that the current deblocking threshold index is the second deblocking threshold index, the current deblocking threshold is a second deblocking threshold from the third defined set of deblocking thresholds.

17. The method of claim 16 , wherein identifying the current deblocking threshold includes:

identifying a current set of deblocking thresholds from a plurality of deblocking thresholds based on the current deblocking threshold index, wherein:

on a condition that the current deblocking threshold index is the first deblocking threshold index, the current set of deblocking thresholds is the second defined set of deblocking thresholds; and

on a condition that the current deblocking threshold index is the second deblocking threshold index, the current set of deblocking thresholds is the third defined set of deblocking thresholds;

identifying a current minimum transform block size corresponding to a current block boundary of the decoded block in a current direction; and

identifying a subset of deblocking thresholds from the current set of deblocking thresholds based on the current minimum transform block size as the current deblocking threshold.

18. The method of claim 17 , wherein identifying the current deblocking threshold includes:

in response to a determination that the current minimum transform block size differs from a second minimum transform block size for a second block boundary of the decoded block opposite the current block boundary, identifying the current deblocking threshold such that the current deblocking threshold differs from a deblocking threshold for the second block boundary; and

in response to a determination that the current minimum transform block size is equivalent to the second minimum transform block size, identifying the deblocking threshold for the second block boundary as the current deblocking threshold.

19. The method of claim 17 , wherein deblocking includes:

in response to a current deblocking determination indicating deblocking for the current block boundary, deblocking the current block boundary.

20. The method of claim 19 , wherein deblocking includes generating the current deblocking determination by:

identifying a current flatness factor based on pixel values from the decoded block along the current direction;

in response to a determination that the current flatness factor exceeds a deblocking determination threshold value from the current deblocking threshold,

identifying the current deblocking determination as indicating an omission of deblocking;

identifying an adjacent flatness factor based on pixel values from an adjacent decoded block along the current direction;

in response to a determination that the adjacent flatness factor exceeds the deblocking determination threshold value, identifying a current blocking determination as indicating the omission of deblocking; and

in response to a determination that the current flatness factor is within the deblocking determination threshold value and the adjacent flatness factor is within the deblocking determination threshold value, identifying the current blocking determination as indicating deblocking.

21. The method of claim 19 wherein deblocking the current block boundary includes:

identifying a deblocking filter threshold from the subset of deblocking thresholds;

identifying a deblocking filter parameter based on the deblocking filter threshold; and

deblocking the current block boundary using the deblocking filter parameter.

22. A method comprising:

generating, by a processor in response to instructions stored on a non-transitory computer-readable medium, a reconstructed frame by:

generating a decoded frame including decoded blocks by decoding a portion of an encoded bitstream;

reading a first deblocking threshold index from the encoded bitstream, wherein the first deblocking threshold index identifies a first defined set of deblocking thresholds, wherein reading the first deblocking threshold index includes extracting the first deblocking threshold index from a frame header corresponding to the reconstructed frame;

identifying a second deblocking threshold index from the encoded bitstream, the second deblocking threshold index differing from the first deblocking threshold index, wherein identifying the second deblocking threshold index includes:

extracting information indicating the second deblocking threshold index from the frame header corresponding to the reconstructed frame;

in response to a determination that the information indicating the second deblocking threshold index includes a differential deblocking threshold index value, identifying a sum of the differential deblocking threshold index value and the first deblocking threshold index as the second deblocking threshold index; and

in response to a determination that the information indicating the second deblocking threshold index includes a deblocking threshold index, identifying the deblocking threshold index as the second deblocking threshold index;

generating a partially deblocked frame by deblocking the decoded frame in a first direction based on the first deblocking threshold index; and

generating the reconstructed frame by deblocking the partially deblocked frame in a second direction based on the second deblocking threshold index; and

outputting the reconstructed frame.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Mar 20, 2018
From: GOOGLE INC.; GOOGLE LLC
To: GOOGLE LLC
Reel/Frame 045643/0055 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 19, 2017
From: HAN, JINGNING; XU, YAOWU
To: GOOGLE INC.
Reel/Frame 043619/0981 →
Continuity (1)
Related Publication 20190089969A1 · Mar 21, 2019