IP Library › Granted Patent US 12,627,812
Granted Patent B2
US 12,627,812 · App. 18/683,662 · Granted May 12, 2026

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

Inventors: Yue Yu (Palo Alto, CA); Haoping Yu (Palo Alto, CA); Vladyslav Zakharchenko (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,627,812
App. No.
18/683,662
Granted
May 12, 2026
Kind
B2
Abstract

In some embodiments, a video decoder decodes a video from a bitstream. 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 values in the CTU. The process includes for the first CTU of a current CTU row, determining whether the current CTU row is the first CTU row in the partition. If so, a history counter is set to an initial value. If not, the history counter is set to a value stored in a history counter storage variable. The video decoder decodes the CTU by calculating the Rice parameters for the CTU based on the history counter and decoding the binary string corresponding to the CTU based on the calculated Rice parameters. After decoding the CTU, the current value of the history counter is stored in the history counter storage variable.

Claims (93)

1 . A method for decoding a video from a video bitstream, 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 and in response to determining that parallel coding is enabled and that the CTU is the first CTU of a current CTU row, determining whether the current CTU row is the first CTU row in the partition;

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

in response to determining that the current CTU row is not the first CTU row in the partition, setting the history counter for a color component to a value stored in a history counter storage variable;

decoding the CTU, comprising:

calculating the Rice parameters for transform units (TUs) in the CTU based on the value of 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

after decoding the CTU, in response to determining that parallel coding is enabled and that the CTU is the first CTU of the current CTU row, storing a current value of the history counter in the history counter storage variable.

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

3 . The method of claim 1 , wherein setting the history counter for a color component cIdx to an initial value comprises:

StatCoeff[ c Idx]=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.

4 . The method of claim 1 , wherein calculating the Rice parameters for the TUs in the CTU based on the value of 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 HistValue; and

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

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

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

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

6 . The method of claim 1 , further comprising:

prior to decoding the CTU, in response to determining that the current CTU row is not the first CTU row in the partition, setting a replacement variable to a stored replacement variable value, wherein calculating the Rice parameters for TUs in the CTU based on the value of the history counter comprises calculating the Rice parameters for TUs in the CTU based on the replacement variable; and

after decoding the CTU, in response to determining that parallel coding is enabled and that the CTU is the first CTU of the current CTU row, storing a current value of the replacement variable.

7 . 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[ c Idx]=(StatCoeff[ c Idx]+Floor(Log 2(abs_remainder[ c Idx]))+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[ c Idx]=(StatCoeff[ c Idx]+Floor(Log 2(dec_abs_level[ c Idx])))>>1,

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

8 . A system comprising:

a processing device; and

a non-transitory computer-readable medium communicatively coupled to the processing device, wherein the processing device is configured to execute program code stored in the non-transitory computer-readable medium and thereby perform operations comprising:

accessing 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 and in response to determining that parallel coding is enabled and that the CTU is the first CTU of a current CTU row, determining whether the current CTU row is the first CTU row in the partition;

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

in response to determining that the current CTU row is not the first CTU row in the partition, setting the history counter for a color component to a value stored in a history counter storage variable;

decoding the CTU, comprising:

calculating the Rice parameters for transform units (TUs) in the CTU based on the value of 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

after decoding the CTU, in response to determining that parallel coding is enabled and that the CTU is the first CTU of the current CTU row, storing a current value of the history counter in the history counter storage variable.

9 . The system of claim 8 , wherein setting the history counter for a color component cIdx to an initial value comprises:

StatCoeff[ c Idx]=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.

10 . The system of claim 8 , wherein calculating the Rice parameters for the TUs in the CTU based on the value of 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 HistValue; and

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

11 . The system of claim 8 , further comprising:

prior to decoding the CTU, in response to determining that the current CTU row is not the first CTU row in the partition, setting a replacement variable to a stored replacement variable value, wherein calculating the Rice parameters for TUs in the CTU based on the value of the history counter comprises calculating the Rice parameters for TUs in the CTU based on the replacement variable; and

after decoding the CTU, in response to determining that parallel coding is enabled and that the CTU is the first CTU of the current CTU row, storing a current value of the replacement variable.

12 . The system of claim 8 , 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[ c Idx]+Floor(Log 2(abs_remainder[ c Idx]))+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[ c Idx]=(StatCoeff[ c Idx]+Floor(Log 2(dec_abs_level[ c Idx])))>>1,

wherein StatCoeff denotes the history counter, Floor(x) represents the largest integer less than or equal to x, and Log 2(x) is 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 and in response to determining that parallel coding is enabled and that the CTU is the first CTU of a current CTU row, determining whether the current CTU row is the first CTU row in the partition;

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

in response to determining that the current CTU row is not the first CTU row in the partition, setting the history counter for a color component to a value stored in a history counter storage variable; and

encoding the CTU, comprising:

calculating the Rice parameters for transform units (TUs) in the CTU based on the value of 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

after encoding the CTU, in response to determining that parallel coding is enabled and that the CTU is the first CTU of the current CTU row, storing a current value of the history counter in the history counter storage variable; and

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

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

15 . The method of claim 13 , wherein setting the history counter for a color component cIdx to an initial value comprises:

StatCoeff[ c Idx]=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.

16 . The method of claim 13 , wherein calculating the Rice parameters for the TUs in the CTU based on the value of 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 HistValue; and

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

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

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

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

18 . The method of claim 13 , further comprising:

prior to encoding the CTU, in response to determining that the current CTU row is not the first CTU row in the partition, setting a replacement variable to a stored replacement variable value, wherein calculating the Rice parameters for TUs in the CTU based on the value of the history counter comprises calculating the Rice parameters for TUs in the CTU based on the replacement variable; and

after encoding the CTU, in response to determining that parallel coding is enabled and that the CTU is the first CTU of the current CTU row, storing a current value of the replacement variable.

19 . 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[ c Idx]=(StatCoeff[ c Idx]+Floor(Log 2(abs_remainder[ c Idx]))+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[ c Idx]=(StatCoeff[ c Idx]+Floor(Log 2(dec_abs_level[ c Idx])))>>1,

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

20 . A non-transitory computer-readable storage medium, having a computer program and a bitstream stored thereon, wherein the computer program, when executed by a processor, enables the processor to perform the method of claim 13 to generate the bitstream.

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 Feb 14, 2024
From: YU, YUE; YU, HAOPING; ZAKHARCHENKO, VLADYSLAV
To: INNOPEAK TECHNOLOGY, INC.
Reel/Frame 066465/0330 →
Continuity (4)
Provisional Application 63260600 · Aug 26, 2021
Provisional Application 63251385 · Oct 1, 2021
Provisional Application 63262078 · Oct 4, 2021
Related Publication 20240422363A1 · Dec 19, 2024
References Cited (63)
US 12166999B2 · Yu · 2024 [cited by examiner]
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 · 2022 [cited by examiner]
US 20220394244A1 · Deng et al. · 2022 [cited by applicant]
US 20230023356A1 · Wang · 2023 [cited by applicant]
US 20230046629A1 · Deng et al. · 2023 [cited by applicant]
US 20230269384A1 · Wang · 2023 [cited by applicant]
US 20230353767A1 · Li · 2023 [cited by examiner]
US 20230353785A1 · Rusanovskyy · 2023 [cited by examiner]
US 20240048768A1 · Hendry · 2024 [cited by applicant]
US 20240056618A1 · Hendry · 2024 [cited by applicant]
US 20240298011A1 · Naser · 2024 [cited by examiner]
US 20250047866A1 · Yu · 2025 [cited by examiner]
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]
“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]
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]
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 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 U.S. Appl. No. 18/575,010, issued on Jul. 29, 2025. [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 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 fo 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]
Join 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 Video … [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 Telecommunications Standardization Sector of ITU (Aug. 2020), Series H: Audiovisual and Multomedia Systema, Infrastructure of audiovisual services—Coding of moving video, Versatile video coding, Recommendati… [cited by applicant]
Notice of Allowance of the U.S. Appl. No. 18/927,576, issued on Mar. 10, 2026. [cited by applicant]