IP Library › Granted Patent US 12,615,397
Granted Patent B2
US 12,615,397 · App. 18/685,141 · Granted Apr 28, 2026

Independent history-based Rice parameter derivations for video coding

Inventors: Yue Yu (Palo Alto, CA); Haoping Yu (Palo Alto, CA)
Assignee: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP., LTD.
H04N19/96H04N19/124H04N19/18H04N19/46
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,397
App. No.
18/685,141
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. 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 updating a replacement variable for a transform unit (TU) in the CTU for calculating rice parameters independently of the previous TU or CTU. The process further includes calculating the rice parameters for TU in the CTU based on the value of the replacement variable and decoding the binary string corresponding to the TU into coefficient values based on the calculated rice parameters. Pixel values of the TU can be determined from the decoded coefficient values for output.

Claims (145)

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);

decoding each CTU of the plurality of CTUs in the partition, decoding the CTU comprising decoding a transform unit (TU) of the CTU by:

updating a replacement variable HistValue for calculating Rice parameters for the TU, wherein updating the replacement variable Hist Value is performed independently of another TU of the CTU that precedes the TU and another CTU of the plurality of CTUs that precedes the CTU;

calculating the Rice parameters for the TU in the CTU based on the updated replacement variable HistValue; and

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

determining pixel values for the TU 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 updating the replacement variable Hist Value comprises:

updating a history counter StatCoeff for a color component; and

prior to calculating a next Rice parameter, updating the replacement variable Hist Value based on the updated history counter StatCoeff for the color component by:

HistValue[cIdx]=1<<StatCoeff[cIdx],

wherein updating the history counter StatCoeff comprises:

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

StatCoeff[cIdx]=(StatCoeff_init[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 StatCoeff for a color component cIdx as:

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

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

wherein the StatCoeff_init for a color component cIdx is determined for the partition based on at least one of:

statCoeff_init[idx]=2*Floor(Log 2(BitDepth−10)) or

statCoeff_init[idx]=Clip(MIN_Stat,MAX_Stat,(int)((19− QP )/6))−1,

wherein BitDepth specifies the bit depth of the samples of the luma or chroma arrays, and Floor(x) represents the largest integer less than or equal to x, and wherein MIN_Stat, MAX_Stat are two predefined integers, respectively, OP is the initial quantization parameter for each partition and Clip( ) is defined as follows:

Clip

(

x

,

y

,

z

)

=

{

x

;

z

<

x

y

;

z

>

y

z

;

otherwise

.

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

3 . The method of claim 1 , further comprising setting the history counter StatCoeff to an initial value based on a bit depth of samples of luma and chroma arrays of the video or a quantization parameter of the current partition.

4 . 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);

decoding each CTU of the plurality of CTUs in the partition, decoding the CTU comprising decoding a transform unit (TU) of the CTU by:

updating a replacement variable HistValue for calculating Rice parameters for the TU, wherein updating the replacement variable Hist Value is performed independently of another TU of the CTU that precedes the TU and another CTU of the plurality of CTUs that precedes the CTU;

calculating the Rice parameters for the TU in the CTU based on the updated replacement variable Hist Value; and

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

determining pixel values for the TU 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 updating the replacement variable Hist Value comprises:

updating a history counter StatCoeff for a color component; and

prior to calculating a next Rice parameter, updating the replacement variable Hist Value based on the updated history counter StatCoeff for the color component by:

HistValue[cIdx]=1<<StatCoeff[cIdx],

wherein updating the history counter StatCoeff comprises:

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

StatCoeff[cIdx]=(StatCoeff_init[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 StatCoeff for a color component cIdx as:

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

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

wherein the StatCoeff_init for a color component cIdx is determined for the partition based on at least one of:

statCoeff_init[idx]=2*Floor(Log 2(BitDepth−10)) or

statCoeff_init[idx]=Clip(MIN_Stat,MAX_Stat,(int)((19− QP )/6))−1,

wherein BitDepth specifies the bit depth of the samples of the luma or chroma arrays, and Floor(x) represents the largest integer less than or equal to x, and wherein MIN_Stat, MAX_Stat are two predefined integers, respectively, QP is the initial quantization parameter for each partition and Clip( ) is defined as follows:

Clip

(

x

,

y

,

z

)

=

{

x

;

z

<

x

y

;

z

>

y

z

;

otherwise

.

5 . 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);

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

encoding each CTU of the plurality of CTUs in the partition, encoding the CTU comprising encoding a transform unit (TU) of the CTU by:

updating a replacement variable HistValue for calculating Rice parameters for the TU, wherein updating the replacement variable Hist Value is performed independently of (a) another TU of the CTU that precedes the TU and (b) another CTU of the plurality of CTUs that precedes the CTU;

calculating the Rice parameters for the TU in the CTU based on the updated replacement variable Hist Value; and

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

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

wherein updating the replacement variable Hist Value comprises:

updating a history counter StatCoeff for a color component; and

prior to calculating a next Rice parameter, updating the replacement variable Hist Value based on the updated history counter StatCoeff for the color component by:

HistValue[cIdx]=1<<StatCoeff[cIdx],

wherein updating the history counter StatCoeff comprises:

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

StatCoeff[cIdx]=(StatCoeff_init[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 StatCoeff for a color component cIdx as:

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

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

wherein the StatCoeff_init for a color component cIdx is determined for the partition based on at least one of:

statCoeff_init[idx]=2*Floor(Log 2(BitDepth−10)) or

statCoeff_init[idx]=Clip(MIN_Stat,MAX_Stat,(int)((19− QP )/6))−1,

wherein BitDepth specifies the bit depth of the samples of the luma or chroma arrays, and Floor(x) represents the largest integer less than or equal to x, and wherein MIN_Stat, MAX_Stat are two predefined integers, respectively, QP is the initial quantization parameter for each partition and Clip( ) is defined as follows:

Clip

(

x

,

y

,

z

)

=

{

x

;

z

<

x

y

;

z

>

y

z

;

otherwise

.

6 . The method of claim 5 , wherein the partition is a frame, a slice, or a tile.

7 . The method of claim 5 , further comprising setting the history counter StatCoeff to an initial value based on a bit depth of samples of luma and chroma arrays of the video or a quantization parameter of the current partition.

8 . 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 steps of the method for encoding a video of claim 5 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 20, 2024
From: YU, YUE; YU, HAOPING
To: INNOPEAK TECHNOLOGY, INC.
Reel/Frame 066504/0858 →
Continuity (5)
Provisional Application 63250964 · Sep 30, 2021
Provisional Application 63248819 · Sep 27, 2021
Provisional Application 63248289 · Sep 24, 2021
Provisional Application 63260604 · Aug 26, 2021
Related Publication 20240364939A1 · Oct 31, 2024
References Cited (11)
US 20170064336A1 · Zhang · 2017 [cited by examiner]
US 20220337812A1 · Rusanovskyy · 2022 [cited by examiner]
Rusanovskyy et al. (“CE-related: On history-enhanced method of Rice parameter derivation for regular residual coding (RRC) at high bit depths”, JVET-V0106, Apr. 20-28, 2021), copy provided by Applicant. (Year: 2021). [cited by examiner]
Bossen et al. (“VVC operation range extensions (Draft 4)”, JVET-W2005-v1, Jul. 7-16, 2021), (Year: 2021). [cited by examiner]
International Search Report in the international application No. PCT/US2022/075453, mailed on Jan. 10, 2023. 4 pages. [cited by applicant]
Written Opinion of the International Search Authority in the international application No. PCT/US2022/075453, mailed on Jan. 10, 2023. 7 pages. [cited by applicant]
Benjamin Bross et al, “Versatile Video Coding Editorial Refinements on Draft 10”, Joint Video Experts Team (JVET) 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 et al, “VVC operation range extensions (Draft 4)”, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29, JVET-W2005-v3, 23rd Meeting, by teleconference, Jul. 7-16, 2021, the whole doc… [cited by applicant]
Dmytro Rusanovskyy et al, “CE-related: On history-enhanced method of Rice parameter derivation for regular residual coding (RRC) at high bit depths”, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1… [cited by applicant]
Yu (Oppo) Y et al: “AHG8: Independent Rice Parameter Derivation for high bit depth and high bit rate extensions”, 136. MPEG Meeting; Oct. 11, 2021-Oct. 15, 2021; Online; (Motion Picture Expert Group or ISO/IEC JTC1/SC29… [cited by applicant]
Supplementary European Search Report in the European application No. 22862273.4, mailed on Jun. 2, 2025. 11 pages. [cited by applicant]