IP Library › Granted Patent US 12,615,377
Granted Patent B2
US 12,615,377 · App. 18/575,010 · Granted Apr 28, 2026

History-based rice parameter derivations for wavefront parallel processing in video coding

Inventors: Yue Yu (Palo Alto, CA); Haoping Yu (Palo Alto, CA)
Assignee: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP., LTD.
H04N19/152H04N19/119H04N19/174H04N19/18H04N19/182H04N19/186H04N19/1883H04N19/197H04N19/436H04N19/70H04N19/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,615,377
App. No.
18/575,010
Granted
Apr 28, 2026
Kind
B2
Abstract

In some embodiments, a video decoder decodes a video from a bitstream of the video using a history-based Rice parameter derivation along with the wavefront parallel processing (WPP). The video decoder accesses a binary string representing a partition of the video and processes each coding tree unit (CTU) in the partition to generate decoded coefficient values in the CTU. The process includes prior to decoding the CTU, determining whether WPP is enabled and the CTU is the first CTU of a current CTU row in the partition, and if so, setting a history counter to an initial value. The process further includes decoding the CTU by calculating the Rice parameters for transform units (TUs) in the CTU based on the value of the history counter and decoding the binary string corresponding to the TUs in the CTU into coefficient values of the TUs based on the calculated Rice parameters.

Claims (204)

1 . A method for decoding a video, the method comprising:

accessing a binary string representing a partition of the video, the partition comprising a plurality of coding tree units (CTUs) forming one or more CTU rows;

for each CTU of the plurality of CTUs in the partition,

prior to decoding the CTU, that the CTU is the first CTU of a current CTU row among the one or more CTU rows in the partition;

in response to determining that the CTU is the first CTU of the current CTU row in the partition,

setting a history counter for a color component for calculating Rice parameters to an initial value;

decoding the CTU, comprising:

calculating the Rice parameters for transform units (TUs) in the CTU based on the history counter;

decoding the binary string corresponding to the TUs in the CTU into coefficient values of the TUs based on the calculated Rice parameters; and

determining pixel values for the TUs in the CTU from the coefficient values; and

outputting a decoded partition of the video comprising the decoded plurality of CTUs in the partition,

wherein setting the history counter for a color component cIdx for calculating Rice parameters to an initial value comprises:

in response to determining that a history-based Rice parameter derivation is enabled, calculating the initial value by

StatCoeff[cIdx]=2*Floor(Log 2(BitDepth−10)),

wherein StatCoeff denotes the history counter, BitDepth specifies a bit depth of samples of luma and chroma arrays of the video, Floor(x) represents the largest integer less than or equal to x, and Log 2(x) is base-2 logarithm of x.

2 . The method of claim 1 , wherein the partition is a frame, or a slice, or a tile.

3 . The method of claim 1 , wherein calculating the Rice parameters for the TUs in the CTU based on the history counter comprises:

determining a replacement variable HistValue based on the history counter;

calculating a local sum variable locSumAbs for a coefficient in a TU of the CTU using values of neighboring coefficients in a pre-determined neighborhood of the coefficient and the replacement variable Hist Value; and

deriving the Rice parameter for the TU based on the local sum variable locSum Abs.

4 . The method of claim 3 , wherein determining a replacement variable Hist Value based on the history counter comprises determining the replacement variable Hist Value for a color component cIdx by calculating:

HistValue

[

cIdx

]

=

1

≪

StatCoeff

[

cIdx

]

,

wherein StatCoeff denotes the history counter.

5 . The method of claim 3 , wherein calculating a local sum variable locSumAbs for a coefficient in a TU of the CTU comprises:

determining that a neighboring coefficient of a plurality of neighboring coefficients in the pre-determined neighborhood of the coefficient is outside the TU; and

using the replacement variable HistValue as a value of the neighboring coefficient outside the TU to calculate the local sum variable locSumAbs.

6 . The method of claim 1 , wherein decoding the CTU further comprises updating the history counter by:

in response to determining that the first, non-zero, Golomb-Rice coded transform coefficient in a TU is coded as abs_remainder, updating the history counter for a color component cIdx as:

StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log 2(abs_remainder[cIdx]))+2)>>1; and

in response to determining that the first, non-zero, Golomb-Rice coded transform coefficient in the TU is coded as dec_abs_level, updating the history counter for a color component cIdx as:

StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log 2(dec_abs_level[cIdx])))>>1,

wherein StatCoeff denotes the history counter, Floor(x) represents the largest integer less than or equal to x, and Log 2(x) is a base-2 logarithm of x.

7 . A processing device, comprising:

a memory configured to store a computer program; and

a processor:

wherein the processor is configured to execute the computer program stored on the memory to:

access a binary string representing a partition of a video, the partition comprising a plurality of coding tree units (CTUs) forming one or more CTU rows;

for each CTU of the plurality of CTUs in the partition,

prior to decoding the CTU, determine that the CTU is the first CTU of a current CTU row among the one or more CTU rows in the partition;

in response to determining that the CTU is the first CTU of the current CTU row in the partition, set a history counter for a color component for calculating Rice parameters to an initial value;

decode the CTU, comprising:

calculating the Rice parameters for transform units (TUs) in the CTU based on the history counter;

decoding the binary string corresponding to the TUs in the CTU into coefficient values of the TUs based on the calculated Rice parameters; and

determining pixel values for the TUs in the CTU from the coefficient values; and

output a decoded partition of the video comprising the decoded plurality of CTUs in the partition,

wherein the processor is further configured to, when setting the history counter for a color component cIdx for calculating Rice parameters to an initial value, execute the computer program to perform one or more of following operations:

in response to determining that a history-based Rice parameter derivation is enabled, calculating the initial value by

StatCoeff[cIdx]=2*Floor(Log 2(BitDepth−10),

wherein StatCoeff denotes the history counter, BitDepth specifies a bit depth of samples of luma and chroma arrays of the video, Floor(x) represents the largest integer less than or equal to x, and Log 2(x) is base-2 logarithm of x.

8 . The processing device of claim 7 , wherein the partition is a frame, a slice, or a tile.

9 . The processing device of claim 7 , wherein the processor is further configured to:

determine a replacement variable HistValue based on the history counter;

calculate a local sum variable locSumAbs for a coefficient in a TU of the CTU using values of neighboring coefficients in a pre-determined neighborhood of the coefficient and the replacement variable HistValue; and

derive the Rice parameter for the TU based on the local sum variable locSumAbs.

10 . The processing device of claim 9 , wherein the processors is further configured to determine the replacement variable HistValue for a color component cIdx by calculating:

HistValue

[

cIdx

]

=

1

≪

StatCoeff

[

cIdx

]

,

wherein StatCoeff denotes the history counter.

11 . The processing device of claim 9 , wherein the processor is further configured to:

determine that a neighboring coefficient of a plurality of neighboring coefficients in the pre-determined neighborhood of the coefficient is outside the TU; and

use the replacement variable HistValue as a value of the neighboring coefficient outside the TU to calculate the local sum variable locSumAbs.

12 . The processing device of claim 7 , wherein the processor is further configured to update the history counter by:

in response to determining that the first, non-zero, Golomb-Rice coded transform coefficient in a TU is coded as abs remainder, updating the history counter for a color component cIdx as:

StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log 2(abs_remainder[cIdx]))+2)>>1; and

in response to determining that the first, non-zero, Golomb-Rice coded transform coefficient in the TU is coded as dec_abs_level, updating the history counter for a color component cIdx as:

StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log 2(dec_abs_level[cIdx])))>>1,

wherein StatCoeff denotes the history counter, Floor(x) represents the largest integer less than or equal to x, and Log 2(x) is a base-2 logarithm of x.

13 . A method for encoding a video, the method comprising:

accessing a partition of the video, the partition comprising a plurality of coding tree units (CTUs) forming one or more CTU rows;

processing the partition of the video to generate a binary representation of the partition, the processing comprising:

for each CTU of the plurality of CTUs in the partition,

prior to encoding the CTU, determining that parallel coding is enabled and that the CTU is the first CTU of a current CTU row among the one or more CTU rows in the partition;

in response to determining that the parallel coding is enabled and that the CTU is the first CTU of the current CTU row in the partition, setting a history counter for a color component for calculating Rice parameters to an initial value; and

encoding the CTU, comprising:

calculating the Rice parameters for transform units (TUs) in the CTU based on the history counter, and

encoding coefficient values of the TUs into a binary representation corresponding to the TUs in the CTU based on the calculated Rice parameters; and

encoding the binary representation of the partition into a bitstream of the video,

wherein setting the history counter for a color component cIdx for calculating Rice parameters to an initial value comprises:

in response to determining that a history-based Rice parameter derivation is enabled, calculating the initial value by

StatCoeff[cIdx]=2*Floor(Log 2(BitDepth−10),

wherein StatCoeff denotes the history counter, BitDepth specifies a bit depth of samples of luma and chroma arrays of the video, Floor(x) represents the largest integer less than or equal to x, and Log 2(x) is base-2 logarithm of x.

14 . The method of claim 13 , wherein the partition is a frame, or a slice, or a tile.

15 . The method of claim 13 , wherein calculating the Rice parameters for the TUs in the CTU based on the history counter comprises:

determining a replacement variable HistValue based on the history counter;

calculating a local sum variable locSumAbs for a coefficient in a TU of the CTU using values of neighboring coefficients in a pre-determined neighborhood of the coefficient and the replacement variable Hist Value; and

deriving the Rice parameter for the TU based on the local sum variable locSumAbs.

16 . The method of claim 15 , wherein determining a replacement variable Hist Value based on the history counter comprises determining the replacement variable Hist Value for a color component cIdx by calculating:

HistValue

[

cIdx

]

=

1

≪

StatCoeff

[

cIdx

]

,

wherein StatCoeff denotes the history counter.

17 . The method of claim 15 , wherein calculating a local sum variable locSumAbs for a coefficient in a TU of the CTU comprises:

determining that a neighboring coefficient of a plurality of neighboring coefficients in the pre-determined neighborhood of the coefficient is outside the TU; and

using the replacement variable Hist Value as a value of the neighboring coefficient outside the TU to calculate the local sum variable locSumAbs.

18 . The method of claim 13 , wherein encoding the CTU further comprises updating the history counter by:

in response to determining that the first, non-zero, Golomb-Rice coded transform coefficient in a TU is coded as abs_remainder, updating the history counter for a color component cIdx as:

StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log 2(abs_remainder[cIdx]))+2)>>1; and

in response to determining that the first, non-zero, Golomb-Rice coded transform coefficient in the TU is coded as dec_abs_level, updating the history counter for a color component cIdx as:

StatCoeff

[

cIdx

]

=

(

StatCoeff

[

cIdx

]

+

Floor

(

Log

⁢

2

⁢

(

dec_abs

⁢

_level

[

cIdx

]

)

)

)

≫

1

,

wherein StatCoeff denotes the history counter, Floor(x) represents the largest integer less than or equal to x, and Log 2(x) is a base-2 logarithm of x.

19 . A processing device, comprising:

a memory configured to store a computer program and a bitstream; and

a processor:

wherein the processor is configured to execute the computer program stored on the memory to perform the following steps for generating the bitstream:

accessing a partition of a video, the partition comprising a plurality of coding tree units (CTUs) forming one or more CTU rows;

processing the partition of the video to generate a binary representation of the partition, the processing comprising:

for each CTU of the plurality of CTUs in the partition,

prior to encoding the CTU, determining that parallel coding is enabled and that the CTU is the first CTU of a current CTU row among the one or more CTU rows in the partition;

in response to determining that the parallel coding is enabled and that the CTU is the first CTU of the current CTU row in the partition, setting a history counter for a color component for calculating Rice parameters to an initial value; and

encoding the CTU, comprising:

calculating the Rice parameters for transform units (TUs) in the CTU based on the history counter, and

encoding coefficient values of the TUs into a binary representation corresponding to the TUs in the CTU based on the calculated Rice parameters, and

encoding the binary representation of the partition into the bitstream,

wherein the processor is further configured to, when setting the history counter for a color component cIdx for calculating Rice parameters to an initial value, execute the computer program to perform the following steps for generating the bitstream;

in response to determining that a history-based Rice parameter derivation is enabled, calculating the initial value by

StatCoeff[cIdx]=2*Floor(Log 2)BitDepth−10)),

wherein StatCoeff denotes the history counter, BitDepth specifies a bit depth of samples of luma and chroma arrays of the video, Floor(x) represents the largest integer less than or equal to x, and Log 2(x) is base-2 logarithm of x.

20 . The processing devicenon transitory computer readable medium of claim 19 , wherein the partition is a frame, or a slice, or a tile.

21 . The processing device of claim 19 , wherein the processor is further configured to perform the following steps for generating the bitstream:

determining a replacement variable HistValue based on the history counter;

calculating a local sum variable locSumAbs for a coefficient in a TU of the CTU using values of neighboring coefficients in a pre-determined neighborhood of the coefficient and the replacement variable Hist Value; and

deriving the Rice parameter for the TU based on the local sum variable locSumAbs.

22 . The processing device of claim 21 , wherein the processor is further configured to determine the replacement variable Hist Value for a color component cIdx by calculating:

HistValue

[

cIdx

]

=

1

≪

StatCoeff

[

cIdx

]

,

wherein StatCoeff denotes the history counter.

23 . The processing device of claim 21 , wherein the processor is further configured to perform the following steps for generating the bitstream:

determining that a neighboring coefficient of a plurality of neighboring coefficients in the pre-determined neighborhood of the coefficient is outside the TU; and

using the replacement variable HistValue as a value of the neighboring coefficient outside the TU to calculate the local sum variable locSumAbs.

24 . The processing device of claim 19 , wherein the processor is further configured to update the history counter by:

in response to determining that the first, non-zero, Golomb-Rice coded transform coefficient in a TU is coded as abs_remainder, updating the history counter for a color component cIdx as:

StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log 2(abs_remainder[cIdx]))+2)>>1; and

in response to determining that the first, non-zero, Golomb-Rice coded transform coefficient in the TU is coded as dec_abs_level, updating the history counter for a color component cIdx as:

StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log 2(dec_abs_level[cIdx])))>>1.

wherein StatCoeff denotes the history counter, Floor(x) represents the largest integer less than or equal to x, and Log 2(x) is a base-2 logarithm of x.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 1, 2024
From: INNOPEAK TECHNOLOGY, INC.
To: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP., LTD.
Reel/Frame 066998/0938 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 28, 2023
From: YU, YUE; YU, HAOPING
To: INNOPEAK TECHNOLOGY, INC.
Reel/Frame 065972/0913 →
Continuity (4)
Provisional Application 63262078 · Oct 4, 2021
Provisional Application 63251385 · Oct 1, 2021
Provisional Application 63260600 · Aug 26, 2021
Related Publication 20240305797A1 · Sep 12, 2024
References Cited (59)
US 20170064336A1 · Zhang · 2017 [cited by applicant]
US 20200404301A1 · Li · 2020 [cited by applicant]
US 20220103865A1 · Wang · 2022 [cited by applicant]
US 20220201332A1 · Rusanovskyy et al. · 2022 [cited by applicant]
US 20220239934A1 · Wang · 2022 [cited by applicant]
US 20220239945A1 · Oh et al. · 2022 [cited by applicant]
US 20220337812A1 · Rusanovskyy et al. · 2022 [cited by applicant]
US 20230023356A1 · Wang · 2023 [cited by applicant]
US 20230269384A1 · Wang · 2023 [cited by applicant]
US 20230353767A1 · Li et al. · 2023 [cited by applicant]
US 20230353785A1 · Rusanovskyy et al. · 2023 [cited by applicant]
US 20240048768A1 · Hendry · 2024 [cited by applicant]
US 20240056618A1 · Hendry · 2024 [cited by applicant]
US 20240298011A1 · Naser et al. · 2024 [cited by applicant]
US 20250047866A1 · Yu et al. · 2025 [cited by applicant]
CN 104813671A · 2015 [cited by applicant]
CN 105874795A · 2016 [cited by applicant]
CN 107925764A · 2018 [cited by applicant]
JP 2017522839A · 2017 [cited by applicant]
JP 2023554264A · 2023 [cited by applicant]
WO 2021061489A1 · 2021 [cited by applicant]
WO 2021136533A1 · 2021 [cited by applicant]
WO 2021188542A1 · 2021 [cited by applicant]
Supplementary European Search Report in the European application No. 22862286.6, mailed on May 14, 2025. 10 pages. [cited by applicant]
Yu (Oppo) Y et al: “AHG8: On History-Based Rice Parameter Derivations for Wavefront Parallel Processing”, 136. MPEG Meeting; Oct. 11, 2021-Oct. 15, 2021; Online; (Motion Picture Expert Group or ISO/IBC JTC1/SC29/WG11), … [cited by applicant]
Rusanovskyy (Qualcomm) D Bt Al: “CE-related: On history-enhanced method of Rice parameter derivation for regular residual coding (RRC) at high bit depths”, 22. JVET Meeting; Apr. 20, 2021-Apr. 28, 2021; Teleconference; … [cited by applicant]
Joshi (Qualcomm) R et al: “HEVC Screen Content Coding Draft Text 2”, 19. JCT-VC Meeting; Oct. 17, 2014-Oct. 24, 2014; Strasbourg; (Joint Collaborative Team on Video Coding of ISO/IEC JTC1/SC29/WG11 and ITU-T SG.16), No.… [cited by applicant]
First Office Action of the Canadian application No. 3226431, issued on Mar. 26, 2025. 8 pages. [cited by applicant]
First Office Action of the Canadian application No. 3229953, issued on Mar. 6, 2025. 5 pages. [cited by applicant]
First Office Action of the Chinese application No. 202410497406.9, issued on May 20, 2025. 17 pages with English translation. [cited by applicant]
First Office Action of the U.S. Appl. No. 18/683,662, issued on May 16, 2025. 33 pages. [cited by applicant]
First Office Action of the U.S. Appl. No. 18/435,257, issued on Apr. 3, 2024. 39 pages. [cited by applicant]
“The High-Level Syntax of the Versatile Video Coding (VVC) Standard”—Ye-Kui Wang et al., IEEE Transactions on Circuits and Systems for Video Technology, vol. 31, No. 10, Oct. 2021 (Year: 2021). the whole document, 23 pa… [cited by applicant]
“Developments in International Video Coding Standardization After AVC, With an Overview of Versatile Video Coding (VVC)” Benjamin Bross et al., Proceedings of the IEEE (vol. 109, Issue: 9, Sep. 2021); Date of Publicatio… [cited by applicant]
Notice of Allowance of the U.S. Appl. No. 18/435,257, issued on Aug. 2, 2024. 75 pages. [cited by applicant]
International Search Report in the international application No. PCT/US2022/075502, mailed on Jan. 26, 2023. 4 pages. [cited by applicant]
Written Opinion of the International Search Authority in the international application No. PCT/US2022/075502, mailed on Jan. 26, 2023. 8 pages. [cited by applicant]
B. Bross et al, “Versatile Video Coding Editorial Refinements on Draft 10”, Document of Joint Video Experts Team of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29, JVET-T2001_v2, 20th Meeting: by teleconference, Oct. 7-16, 20… [cited by applicant]
Frank Bossen, B. Bross, Tomohiro Ikai, Dmytro Rusanovskyy, Gary Sullivan, Y.K. Wang, “VVC operation range extensions (Draft 4),” Document of Joint Video Experts Team of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29, JVET-W20… [cited by applicant]
Dmytro Rusanovskyy, Marta Karczewicz, Luong Pham Van, Muhammed Coban, “CE-related: On history-enhanced method of Rice parameter derivation for regular residual coding (RRC) at high bit depths”, Document of Joint Video E… [cited by applicant]
International Search Report in the international application No. PCT/US2022/075497, mailed on Jan. 27, 2023. 5 pages. [cited by applicant]
Written Opinion of the International Search Authority in the international application No. PCT/US2022/075497, mailed on Jan. 27, 2023. 8 pages. [cited by applicant]
International Search Report in the international application No. PCT/US2022/075507, mailed on Dec. 6, 2022. 2 pages. [cited by applicant]
Written Opinion of the International Search Authority in the international application No. PCT/US2022/075507, mailed on Dec. 6, 2022. 4 pages. [cited by applicant]
First Office Action of the Australian application No. 2022334740, issued on Sep. 3, 2025. [cited by applicant]
Second Office Action of the Chinese application No. 202410497406.9, issued on Aug. 2, 2025. [cited by applicant]
First Office Action of the Russian application No. 2024104584, issued on Dec. 3, 2025. [cited by applicant]
First Office Action of the Australian application No. 2022333140, issued on Dec. 4, 2025. [cited by applicant]
First Office Action of the Chinese application No. 202410449122.2, issued on Nov. 3, 2025. [cited by applicant]
First Office Action of the Russian application No. 2024107318, issued on Nov. 13, 2025. [cited by applicant]
First Office Action of the U.S. Appl. No. 18/927,576, issued on Nov. 25, 2025. [cited by applicant]
First Office Action of the Singaporean application No. 11202400386P, issued on Jan. 28, 2026. [cited by applicant]
First Office Action of the Singaporean application No. 11202401255V, issued on Jan. 16, 2026. [cited by applicant]
First Office Action of the Indian application No. 202417021013, issued on Feb. 4, 2026. [cited by applicant]
Joint Video Experts Team (JVET) of Itu-T Sg 16 WP 3 and Iso/Iec Jtc 1/SC 29/WG 11, 14th Meeting: Geneva, CH, Mar. 19-27, 2019, Document: JVET-N0345, Title: CE7: Template based Rice parameter derivation for coding of abs… [cited by applicant]
Joint Video Experts Team (JVET) of Itu-T Sg 16 WP 3 and Iso/Iec Jtc 1/SC 29/WG 11 18th Meeting: by teleconference, Apr. 15-24, 2020, Document: JVET-R_Notes_dD, Title: Meeting Report of the 18th Meeting of the Joint Vide… [cited by applicant]
First Office Action of the Japanese application No. 2024-506578, issued on Mar. 3, 2026. [cited by applicant]
First Office Action of the Japanese application No. 2024-510524, issued on Mar. 6, 2026. [cited by applicant]
ITU-T H.266 Telecommunication Standardization Sector of Itu (Aug. 2020), Series H: Audiovisual and Multimedia Systems, Infrastructure of audiovisual services - Coding of moving video, Versatile video coding, Recommendat… [cited by applicant]