IP Library Granted Patent US 12,267,491
Granted Patent B2
US 12,267,491 · App. 17/871,753 · Granted Apr 1, 2025

Encoder, decoder and corresponding methods for adaptive loop filtering

Inventors: Anand Meher Kotra (Munich, DE); Semih Esenlik (Munich, DE); Han Gao (Munich, DE); Biao Wang (Munich, DE); Elena Alexandrovna Alshina (Munich, DE)
Assignee: HUAWEI TECHNOLOGIES CO., LTD.
H04N19/117H04N19/167H04N19/176H04N19/96
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 12,267,491
App. No.
17/871,753
Granted
Apr 1, 2025
Kind
B2
Abstract

A method of filtering a sample value of a picture and a video decoding apparatus are disclosed, the method comprises: obtaining a reconstructed sample value for a block of the picture; obtaining filter coefficients for adaptive loop filtering according to a bitstream; obtaining a sum value according to the filter coefficients and the reconstructed sample value for the block; rounding the sum value according to a vertical position of a sample in the block, to obtain a rounded sum value; obtaining a filter reconstructed sample value for the block according to the rounded sum value.

Claims (202)

1. A method of filtering a sample value of a picture, wherein the method comprises:

obtaining a reconstructed sample value for a block of the picture;

obtaining filter coefficients for adaptive loop filtering according to a bitstream;

obtaining a sum value according to the filter coefficients, and the reconstructed sample value for the block;

rounding the sum value according to a vertical position of a sample in the block to obtain a rounded sum value, wherein the vertical position of the sample in the block is a luma sample position, and wherein the rounded sum value equals curr+((sum+roundY)>>alfShiftY) and satisfies the following table:

Condition

roundY

alfShiftY

y1

y2

y3

(y = = CtbSizeY − 5 | | y = =

512

10

0

0

0

CtbSizeY − 4) &&

(applyAlfLineBufBoundary = = 1)

(y = = CtbSizeY − 6 | | y = =

 64

 7

1

1

1

CtbSizeY − 3) &&

(applyAlfLineBufBoundary = = 1)

(y = = CtbSizeY − 7 | | y = =

 64

 7

1

2

2

CtbSizeY − 2) &&

(applyAlfLineBufBoundary = = 1)

Otherwise

 64

 7

1

2

3

wherein

y represents the vertical position of the sample;

curr represents the reconstructed sample value for the block;

sum represents the sum value;

CtbSizeY represents a size of a coding tree block (CTB) corresponding to the block;

v 1 , y 2 and y 3 represent vertical sample position offsets indicating other reconstructed sample values involved in the obtaining the sum value;

roundY and alfShiftY are variables that are determined based on the vertical position of the sample;

apply AlfLineBufBoundary is an index and derived as follows:

if a bottom boundary of the coding tree block is a bottom boundary of the picture and pic_height_in_luma_samples−yCtb≤CtbSizeY−4,

apply AlfLineBufBoundary is set equal to 0, otherwise,

apply AlfLineBufBoundary is set equal to 1,

wherein the pic_height_in_luma_samples represents a height of the picture in luma samples, and (xCtb, yCtb) represents a location of the CTB; and

obtaining a filter reconstructed sample value for the block according to the rounded sum value.

2. The method of claim 1 , wherein roundY is equal to 512 and alfShiftY is equal to 10 when the vertical position of the sample satisfies any one of the below conditions:

y==CtbSizeY−t-1, or

y==CtbSizeY−t, or

y==ctbHeightC−t, or

y==ctbHeightC−t-1,

wherein y is the vertical position of the sample, CtbSizeY is a coding tree block (CTB) size, ctbHeightC is a height of the CTB, and t is an integer value, wherein t is 2, 3, 4, 5 or 6.

3. The method of claim 1 , wherein roundY is equal to 64 and alfShiftY is equal to 7 when the vertical position of the sample does not satisfy any one of the below conditions:

y==CtbSizeY−t-1, or

y==CtbSizeY−t, or

y==ctbHeightC−t, or

y==ctbHeightC−t-1,

wherein y is the vertical position of the sample, CtbSizeY is a coding tree block (CTB) size, ctbHeightC is a height of the CTB, and t is an integer value, wherein t is 2, 3, 4, 5 or 6.

4. The method of claim 1 , wherein when the vertical position of the sample in the block is equal to 0, alfShiftY is equal to 10.

5. The method of claim 1 , wherein when the vertical position of the sample in the block is not equal to 0, alfShiftY is equal to 7.

6. The method of claim 1 , wherein the rounding the sum value comprises:

adding the value roundY which is determined based on the vertical position of the sample to the sum value in order to obtain an added sum value, and

shifting the added sum value based on the vertical position of the sample.

7. A decoder, comprising:

one or more processors; and

a non-transitory computer-readable storage medium coupled to the one or more processors and storing programming for execution by the one or more processors, wherein the programming, when executed by the processors, causes the decoder to perform operations comprising:

obtaining a reconstructed sample value for a block of a picture;

obtaining filter coefficients for adaptive loop filtering according to a bitstream;

obtaining a sum value according to the filter coefficients and the reconstructed sample value for the block;

rounding the sum value according to a vertical position of a sample in the block, to obtain a rounded sum value, wherein the vertical position of the sample in the block is a luma sample position, and wherein the rounded sum value equals curr+((sum+roundY)>>alfShiftY) and satisfies the following table:

Condition

roundY

alfShiftY

y1

y2

y3

(y = = CtbSizeY − 5 | | y = =

512

10

0

0

0

CtbSizeY − 4) &&

(applyAlfLineBufBoundary = = 1)

(y = = CtbSizeY − 6 | | y = =

 64

 7

1

1

1

CtbSizeY − 3) &&

(applyAlfLineBufBoundary = = 1)

(y = = CtbSizeY − 7 y = =

 64

 7

1

2

2

CtbSizeY − 2) &&

(applyAlfLineBufBoundary = = 1)

Otherwise

 64

 7

1

2

3

wherein

y represents the vertical position of the sample;

curr represents the reconstructed sample value for the block;

sum represents the sum value;

CtbSizeY represents a size of a coding tree block (CTB) corresponding to the block;

v 1 , y 2 and y 3 represent vertical sample position offsets indicating other reconstructed sample values involved in the obtaining the sum value;

roundY and alfShiftY are variables that are determined based on the vertical position of the sample;

apply AlfLineBufBoundary an index and is derived as follows:

if a bottom boundary of the coding tree block is a bottom boundary of the picture and pic_height_in_luma_samples−yCtb<=CtbSizeY−4,

apply AlfLineBufBoundary is set equal to 0, otherwise, apply AlfLineBufBoundary is set equal to 1,

wherein the pic_height_in_luma_samples represents a height of the picture in luma samples, and (xCtb, yCtb) represents a location of the CTB; and

obtaining a filter reconstructed sample value for the block according to the rounded sum value.

8. The decoder of claim 7 , wherein roundY is equal to 512 and alfShiftY is equal to 10 when the vertical position of the sample satisfies any one of the below conditions:

y==CtbSizeY−t-1, or

y==CtbSizeY−t, or

y==ctbHeightC−t, or

y==ctbHeightC−t-1,

wherein y is the vertical position of the sample, CtbSizeY is a coding tree block (CTB) size, ctbHeightC is a height of the CTB, and t is an integer value, wherein tis 2, 3, 4, 5 or 6.

9. The decoder of claim 7 , wherein roundY is equal to 64 and alfShiftY is equal to 7 when the vertical position of the sample does not satisfy any one of the below conditions:

y==CtbSizeY−t-1, or

y==CtbSizeY−t, or

y==ctbHeightC−t, or

y==ctbHeightC−t-1,

wherein y is the vertical position of the sample, CtbSizeY is a coding tree block (CTB) size, ctbHeightC is a height of the CTB, and t is an integer value, wherein t is 2, 3, 4, 5 or 6.

10. The decoder of claim 7 , wherein when the vertical position of the sample in the block is equal to 0, alfShiftY is equal to 10.

11. The decoder of claim 7 , wherein when the vertical position of the sample in the block is not equal to 0, alfShiftY is equal to 7.

12. The decoder of claim 7 , wherein the rounding the sum value comprises:

adding the value roundY which is determined based on the vertical position of the sample to the sum value in order to obtain an added sum value, and

shifting the added sum value based on the vertical position of the sample.

13. A non-transitory computer-readable medium storing instructions that, when executed by a processing device, cause the processing device to perform operations comprising:

obtaining a reconstructed sample value for a block of a picture;

obtaining filter coefficients for adaptive loop filtering according to an encoded bitstream for a video signal;

obtaining a sum value according to the filter coefficients and the reconstructed sample value for the block;

rounding the sum value according to a vertical position of a sample in the block, to obtain a rounded sum value, wherein the vertical position of the sample in the block is a luma sample position, and wherein the rounded sum value equals curr+((sum+roundY)>>alfShiftY) and satisfies the following table:

Condition

roundY

alfShiftY

y1

y2

y3

(y = = CtbSizeY − 5 | | y = =

512

10

0

0

0

CtbSizeY − 4) &&

(applyAlfLineBufBoundary = = 1)

(y = = CtbSizeY − 6 | | y = =

 64

 7

1

1

1

CtbSizeY − 3) &&

(applyAlfLineBufBoundary = = 1)

(y == CtbSizeY − 7 | | y ==

 64

 7

1

2

2

CtbSizeY − 2) &&

(applyAlfLineBufBoundary = = 1)

Otherwise

 64

 7

1

2

3

wherein

y represents the vertical position of the sample;

curr represents the reconstructed sample value for the block;

sum represents the sum value;

CtbSizeY represents a size of a coding tree block (CTB) corresponding to the block;

y 1 , y 2 and y 3 represent vertical sample position offsets indicating other reconstructed sample values involved in the obtaining the sum value;

roundY and alfShiftY are variables that are determined based on the vertical position of the sample;

apply AlfLineBufBoundary is an index and is derived as follows:

if a bottom boundary of the coding tree block is a bottom boundary of the picture and pic_height_in_luma_samples−yCtb≤CtbSizeY−4,

apply AlfLineBufBoundary is set equal to 0, otherwise, apply AlfLineBufBoundary is set equal to 1,

wherein the pic_height_in_luma_samples represents a height of the picture in luma samples, and (xCtb, yCtb) represents a location of the CTB; and

obtaining a filter reconstructed sample value for the block according to the rounded sum value.

14. The non-transitory computer-readable medium of claim 13 , wherein roundY is equal to 512 and alfShiftY is equal to 10 when the vertical position of the sample satisfies any one of the below conditions:

y==CtbSizeY−t-1, or

y==CtbSizeY−t, or

y==ctbHeightC−t, or

y==ctbHeightC−t-1,

wherein y is the vertical position of the sample, CtbSizeY is a coding tree block (CTB) size, ctbHeightC is a height of the CTB, and t is an integer value, wherein t is 2, 3, 4, 5 or 6.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 4, 2024
From: KOTRA, ANAND MEHER; ESENLIK, SEMIH; GAO, HAN; WANG, BIAO; ALSHINA, ELENA ALEXANDROVNA
To: HUAWEI TECHNOLOGIES CO., LTD.
Reel/Frame 069480/0649 →
Priority Claims (1)
WO PCT/EP2020/051788 · Jan 24, 2020 · international
Continuity (2)
Continuation PCTCN2021073233 · Jan 22, 2021
Related Publication 20220377326A1 · Nov 24, 2022
References Cited (20)
US 20140177704A1 · Pu et al. · 2014 [cited by applicant]
US 20180213227A1 · Lim et al. · 2018 [cited by applicant]
US 20190364275A1 · Li et al. · 2019 [cited by applicant]
US 20190373258A1 · Karczewicz et al. · 2019 [cited by applicant]
US 20210235078A1 · Hu · 2021 [cited by examiner]
US 20210274186A1 · Andersson · 2021 [cited by examiner]
CN 109565593A · 2019 [cited by applicant]
GB 2582029A · 2020 [cited by applicant]
RU 2599935C2 · 2016 [cited by applicant]
WO 2015007946A1 · 2015 [cited by applicant]
WO 2018026887A1 · 2018 [cited by applicant]
WO 2019170258A1 · 2019 [cited by applicant]
WO 2019170259A1 · 2019 [cited by applicant]
WO 2020007489A1 · 2020 [cited by applicant]
WO 2021133236A1 · 2021 [cited by applicant]
Document: JVET-Q0150, K. Andersson et al, Fix for ALF virtual boundary processing, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 17th Meeting: Brussels, BE, Jan. 7-17, 2020, 8 pages. [cited by applicant]
ITU-T H.264(Jun. 2019), Series H: Audiovisual and Multimedia Systems, Infrastructure of audiovisual services—Coding of moving video, Advanced video coding for generic audiovisual services, total 836 pages. [cited by applicant]
Document: JVET-P2001-vE, Benjamin Bross et al, Versatile Video Coding (Draft 7), Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 16th Meeting: Geneva, CH, Oct. 1-11, 2019, 489 pages. [cited by applicant]
ITU-T H.265(Jun. 2019), Series H: Audiovisual and Multimedia Systems, Infrastructure of audiovisual services—Coding of moving video,High efficiency video coding, total 696 pages. [cited by applicant]
Jason Sachs, Round Round Get Around: Why Fixed Point Right-Shifts Are Just Fine, Jason Sachs, Nov. 22, 2016, XP093022369, Retrieved from the Internet:URL:https://www.embeddedrelated.com/showar ticle/1015.php, 9 pages. [cited by applicant]