IP Library Granted Patent US 10,412,396
Granted Patent B2
US 10,412,396 · App. 14/759,239 · Granted Sep 10, 2019

Transform coefficient coding for context-adaptive binary entropy coding of video

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,412,396
App. No.
14/759,239
Granted
Sep 10, 2019
Kind
B2
Abstract

Methods and devices for encoding and decoding video are described that partition transform blocks into coefficient groups. The coefficients within non-zero coefficients are run-length coded in a reverse scan order within the group. Prior to coefficient coding, data is encoded indicating which coefficient group in group scan order is the last to contain a non-zero coefficient. Then data is encoded indicating the position within that last non-zero coefficient group of the last non-zero coefficient in scan order inside the coefficient group. Thus the decoder is able to decode run-length data knowing the positions of the coefficients and eliminating the need for end-of-block flags.

Claims (66)

1. A method of decoding video from a bitstream of encoded video using a video decoder, the video including a picture partitioned into blocks, residual data for the blocks being spectrally transformed into transform blocks, each transform block being further partitioned into coefficient groups, the method comprising:

decoding last-coefficient-group data indicating a last coefficient group in a group scan order that contains a non-zero transform coefficient;

decoding last-coefficient data indicating a position, in said last coefficient group, of a last non-zero transform coefficient in a scan order within the last coefficient group;

decoding level, run, and sign data for said last coefficient group to reconstruct transform coefficients of the last coefficient group;

decoding significant-coefficient group flags indicating which of the coefficient groups contain non-zero coefficients;

for each coefficient group that contains a non-zero coefficient, between said last coefficient group and an upper-left-most coefficient group in a reverse of the group scan order, decoding level, run and sign data for reconstructing transform coefficients of the respective coefficient group; and

reconstructing and outputting the picture based on the transform coefficients,

wherein decoding run data comprises decoding truncated runs that stop at respective boundaries of the coefficient groups.

2. The method claimed in claim 1 , wherein said group scan order comprises an ordering of the coefficient groups in a block starting from the upper-left-most coefficient group, and wherein the coefficient groups of the block are decoded by the decoder in the reverse of the group scan order.

3. The method claimed in claim 1 , wherein said scan order comprises an ordering of transform coefficients within a coefficient group starting from an upper-left-most transform coefficient in the group, and wherein level, run and sign data for transform coefficients in a coefficient group are decoded in the reverse of the scan order.

4. The method claimed in claim 1 , wherein said last-coefficient data comprises an x-position and a y-position of the last non-zero transform coefficient within said last coefficient group.

5. The method claimed in claim 4 , further including first decoding a first-CG flag indicating whether said last coefficient group is the upper-left-most coefficient group, and, if such is not the case, decoding the x-position of said last coefficient group, and wherein if the x-position is 0, then decoding a y-value indicating the y-position of the last coefficient group and adding 1 to the decoded y-value.

6. The method claimed in claim 1 , wherein decoding level, run and sign data for transform coefficients of the respective coefficient group further includes decoding, for each coefficient group that contains a non-zero coefficient, between said last coefficient group and said upper-left-most coefficient group in the reverse of the group scan order, a position of a respective last non-zero coefficient in the scan order within the respective coefficient group.

7. The method claimed in claim 6 , wherein decoding the position of the respective last non-zero coefficient in the scan order within the respective coefficient group includes decoding a last run value indicating the number of zeros in the scan order between said respective last non-zero coefficient in the respective coefficient group and a bottom-right-most coefficient.

8. A decoder for decoding a bitstream of encoded video, the video including a picture partitioned into blocks, residual data for the blocks being spectrally transformed into transform blocks, each transform block being further partitioned into coefficient groups, the decoder comprising:

a processor;

a memory; and

a decoding application stored in memory and containing instructions that, when executed, cause the processor to:

decode last-coefficient-group data indicating a last coefficient group in a group scan order that contains a non-zero transform coefficient;

decode last-coefficient data indicating a position, in said last coefficient group, of a last non-zero transform coefficient in a scan order within the last coefficient group;

decode level, run, and sign data for said last coefficient group to reconstruct transform coefficients of the last coefficient group;

decode significant-coefficient group flags indicating which of the coefficient groups contain non-zero coefficients;

for each coefficient group that contains a non-zero coefficient, between said last coefficient group and an upper-left-most coefficient group in a reverse of the group scan order, decode level, run and sign data for reconstructing transform coefficients of the respective coefficient group; and

reconstruct and output the picture based on the transform coefficients,

wherein decoding run data comprises decoding truncated runs that stop at respective boundaries of the coefficient groups.

9. A non-transitory processor-readable medium storing processor-executable instructions for decoding a bitstream of encoded video, the video including a picture partitioned into blocks, residual data for the blocks being spectrally transformed into transform blocks, each transform block being further partitioned into coefficient groups, wherein the instructions, when executed, cause one or more processors to:

decode last-coefficient-group data indicating a last coefficient group in a group scan order that contains a non-zero transform coefficient;

decode last-coefficient data indicating a position, in said last coefficient group, of a last non-zero transform coefficient in a scan order within the last coefficient group;

decode level, run, and sign data for said last coefficient group to reconstruct transform coefficients of the last coefficient group;

decode significant-coefficient group flags indicating which of the coefficient groups contain non-zero coefficients;

for each coefficient group that contains a non-zero coefficient, between said last coefficient group and an upper-left-most coefficient group in a reverse of the group scan order, decode level, run and sign data for reconstructing transform coefficients of the respective coefficient group; and

reconstruct and output the picture based on the transform coefficients,

wherein decoding run data comprises decoding truncated runs that stop at respective boundaries of the coefficient groups.

10. A method of encoding video using a video encoder, the video including a picture partitioned into blocks, residual data for the blocks being spectrally transformed into transform blocks, each transform block being further partitioned into coefficient groups, the method comprising:

encoding last-coefficient-group data indicating a last coefficient group in a group scan order that contains a non-zero transform coefficient;

encoding last-coefficient data indicating a position, in said last coefficient group, of a last non-zero transform coefficient in a scan order within the last coefficient group;

encoding level, run, and sign data for said last coefficient group to reconstruct transform coefficients of the last coefficient group;

encoding significant-coefficient group flags indicating which of the coefficient groups contain non-zero coefficients;

for each coefficient group that contains a non-zero coefficient, between said last coefficient group and an upper-left-most coefficient group in a reverse of the group scan order, encoding level, run and sign data for reconstructing transform coefficients of the respective coefficient group; and

outputting a bitstream of encoded data for the picture,

wherein encoding run data comprises encoding truncated runs that stop at respective boundaries of the coefficient groups.

11. The method claimed in claim 10 , wherein said group scan order comprises an ordering of the coefficient groups in a block starting from the upper-left-most coefficient group, and wherein the coefficient groups of the block are encoded by the encoder in the reverse of the group scan order.

12. The method claimed in claim 10 , wherein said scan order comprises an ordering of transform coefficients within a coefficient group starting from an upper-left-most transform coefficient in the group, and wherein level, run and sign data for transform coefficients in a coefficient group are encoded in the reverse of the scan order.

13. The method claimed in claim 10 , wherein said last-coefficient data comprises an x-position and a y-position of the last non-zero transform coefficient within said last coefficient group.

14. The method claimed in claim 13 , further including first encoding a first-significant-coefficient group flag indicating whether said last coefficient group is the upper-left-most coefficient group, and, if such is not the case, encoding the x-position of said last coefficient group, and wherein if the x-position is 0, then subtracting 1 from the y-position of said last coefficient group to create a y-value and encoding the y-value.

15. The method claimed in claim 10 , wherein encoding level, run and sign data for transform coefficients of the respective coefficient group further includes encoding, for each coefficient group that contains a non-zero coefficient, between said last coefficient group and said upper-left-most coefficient group in the reverse of the group scan order, a position of a respective last non-zero coefficient in the scan order within the respective coefficient group.

16. The method claimed in claim 15 , wherein encoding the position of the respective last non-zero coefficient in the scan order within the respective coefficient group includes encoding a last run value indicating the number of zeros in the scan order between said respective last non-zero coefficient in the respective coefficient group and a bottom-right-most coefficient.

17. An encoder for encoding video, the video including a picture partitioned into blocks, residual data for the blocks being spectrally transformed into transform blocks, each transform block being further partitioned into coefficient groups, the encoder comprising:

a processor;

a memory; and

an encoding application stored in memory and containing instructions that, when executed, cause the processor to:

encode last-coefficient-group data indicating a last coefficient group in a group scan order that contains a non-zero transform coefficient;

encode last-coefficient data indicating a position, in said last coefficient group, of a last non-zero transform coefficient in a scan order within the last coefficient group;

encode level, run, and sign data for said last coefficient group to reconstruct transform coefficients of the last coefficient group;

encode significant-coefficient group flags indicating which of the coefficient groups contain non-zero coefficients;

for each coefficient group that contains a non-zero coefficient, between said last coefficient group and an upper-left-most coefficient group in a reverse of the group scan order, encode level, run and sign data for reconstructing transform coefficients of the respective coefficient group; and

output a bitstream of encoded data for the picture,

wherein encoding run data comprises encoding truncated runs that stop at respective boundaries of the coefficient groups.

18. A non-transitory processor-readable medium storing processor-executable instructions for encoding video, the video including a picture partitioned into blocks, residual data for the blocks being spectrally transformed into transform blocks, each transform block being further partitioned into coefficient groups, wherein the instructions, when executed, configure one or more processors to:

encode last-coefficient-group data indicating a last coefficient group in a group scan order that contains a non-zero transform coefficient;

encode last-coefficient data indicating a position, in said last coefficient group, of a last non-zero transform coefficient in a scan order within the last coefficient group;

encode level, run, and sign data for said last coefficient group to reconstruct transform coefficients of the last coefficient group;

encode significant-coefficient group flags indicating which of the coefficient groups contain non-zero coefficients;

for each coefficient group that contains a non-zero coefficient, between said last coefficient group and an upper-left-most coefficient group in a reverse of the group scan order, encode level, run and sign data for reconstructing transform coefficients of the respective coefficient group; and

output a bitstream of encoded data for the picture,

wherein encoding run data comprises encoding truncated runs that stop at respective boundaries of the coefficient groups.

Assignments (8)
CORRECTIVE ASSIGNMENT TO CORRECT THE ADDED PATENT NUMBER TO REMOVE PATENT NO. 8,873,407 AT PREVIOUSLY RECORDED ON REEL 64066 FRAME 1. ASSIGNOR(S) HEREBY CONFIRMS THE NUNC PRO TUNC ASSIGNMENT EFFECTIVE DATE MARCH 20, 2023. Recorded Feb 2, 2026
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 074921/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE COVER SHEET AT PAGE 50 TO REMOVE 12817157 PREVIOUSLY RECORDED ON REEL 063471 FRAME 0474. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 5, 2023
From: BLACKBERRY LIMITED
To: OT PATENT ESCROW, LLC
Reel/Frame 064806/0669 →
CORRECTIVE ASSIGNMENT TO CORRECT 12817157 APPLICATION NUMBER PREVIOUSLY RECORDED AT REEL: 064015 FRAME: 0001. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 5, 2023
From: OT PATENT ESCROW, LLC
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064807/0001 →
NUNC PRO TUNC ASSIGNMENT Recorded Jun 19, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064066/0001 →
NUNC PRO TUNC ASSIGNMENT Recorded Jun 16, 2023
From: OT PATENT ESCROW, LLC
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064015/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 27, 2023
From: BLACKBERRY LIMITED
To: OT PATENT ESCROW, LLC
Reel/Frame 063471/0474 →
CHANGE OF NAME Recorded Jul 17, 2015
From: RESEARCH IN MOTION LIMITED
To: BLACKBERRY LIMITED
Reel/Frame 036129/0453 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 13, 2015
From: HE, DAKE; JI, TIANYING; WANG, JING; WANG, XIAOFENG
To: RESEARCH IN MOTION LIMITED
Reel/Frame 036068/0265 →