IP Library Granted Patent US 9,106,932
Granted Patent B2
US 9,106,932 · App. 13/408,404 · Granted Aug 11, 2015

Parallel pyramid entropy coding for video and image compression

Inventor: Lei Zhang (Palo Alto, CA)
Assignee: Broadcom Corporation
H04N19/91H04N19/13H04N19/00121H04N19/00951
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 9,106,932
App. No.
13/408,404
Granted
Aug 11, 2015
Kind
B2
Abstract

Methods, systems, and computer program products are provided to divide code blocks, such as blocks of quantized coefficient of image or video data, into smaller blocks and sub-blocks that can be processed in parallel using layered entropy coding and decoding scheme. This division is accomplished while still encoding the entire code block using the same layered entropy coding scheme.

Claims (71)

1. A method, comprising:

dividing a code block into a plurality of pixel groups;

for a pixel group from the plurality of pixel groups, analyzing a first cluster pattern from a plurality of cluster patterns in a layered encoding scheme for the code block, wherein the first cluster pattern arranges the pixel group into sub-blocks, and wherein the analyzing comprises:

calculating maximum code sizes for encoding the sub-blocks according to the layered encoding scheme,

determining a largest code size of the maximum code sizes, and

calculating a prefix size of a prefix that encodes the maximum code sizes, wherein the maximum code sizes are encoded as differences from the largest code size;

determining that the first cluster pattern is associated with a first pixel group code size that is smaller than a second pixel group code size associated with a second cluster pattern from the plurality of cluster patterns, wherein the first pixel group code size is calculated based on the maximum code sizes and the prefix size;

selecting the first cluster pattern based on the determination;

dividing the pixel group into the sub-blocks according to the first cluster pattern; and

encoding the prefix and pixels assigned to the sub-blocks using the layered encoding scheme.

2. The method of claim 1 , wherein the first cluster pattern divides the code block into four equal-sized pixel groups.

3. The method of claim 1 , wherein the determination used in selecting the cluster pattern comprises:

determining a smallest code size of the maximum code sizes for the sub-block by using pixels assigned to the sub-block.

4. The method of claim 1 , further comprising:

storing the maximum code sizes for the sub-blocks and pixel-group code sizes for the pixel groups into an encoded stream using the layered entropy coding scheme, wherein each of the maximum code sizes is stored as an encoded difference.

5. The method of claim 4 , further comprising:

receiving a data stream comprising the code block;

separating the code block into pixel groups using the stored pixel-group code sizes and a layered decoding scheme;

separating the pixel group into the sub-blocks using the stored maximum code sizes; and

decoding the sub-blocks of the pixel group in parallel.

6. A computer-readable storage device having instructions stored thereon, execution of which, by a computing device, causes the computing device to perform operations comprising:

dividing a code block into a plurality of pixel groups;

for a pixel group from the plurality of pixel groups, analyzing a first cluster pattern from a plurality of cluster patterns in a layered encoding scheme for the code block, wherein the first cluster pattern arranges the pixel group into sub-blocks, and wherein the analyzing comprises:

calculating maximum code sizes for encoding the sub-blocks according to the layered encoding scheme,

determining a largest code size of the maximum code sizes, and

calculating a prefix size of a prefix that encodes the maximum code sizes, wherein the maximum code sizes are encoded as differences from the largest code size;

determining that the first cluster pattern is associated with a first pixel group code size that is smaller than a second pixel group code size associated with a second cluster pattern from the plurality of cluster patterns, wherein the first pixel group code size is calculated based on the maximum code sizes and the prefix size;

selecting the first cluster pattern based on the determination;

dividing the pixel group into the sub-blocks according to the first cluster pattern; and

encoding the prefix and pixels assigned to the sub-blocks using the layered encoding scheme.

7. The computer-readable storage device of claim 6 , wherein the first cluster pattern divides the code block into four equal-sized pixel groups.

8. The computer-readable storage device of claim 6 , wherein the determination used in selecting the cluster pattern comprises:

determining a smallest maximum code size from the maximum code sizes for the sub-block by using pixels assigned to the sub-block.

9. The computer-readable storage device of claim 6 , the operations further comprising:

storing the maximum code sizes for the sub-blocks and pixel-group code sizes for the pixel groups into an encoded stream using the layered entropy coding scheme, wherein each of the maximum code sizes is stored as an encoded difference.

10. The computer-readable storage device of claim 9 , the operations further comprising:

receiving a data stream comprising the code block;

separating the code block into pixel groups using the stored pixel-group code sizes and a layered decoding scheme;

separating the pixel group into the sub-blocks using the stored maximum code sizes; and

decoding the sub-blocks of the pixel group in parallel.

11. A system, comprising:

an encoder stored in memory and configured to perform operations comprising:

dividing a code block into a plurality of pixel groups;

for a pixel group from the plurality of pixel groups, analyzing a first cluster pattern from a plurality of cluster patterns in a layered encoding scheme for the code block, wherein the first cluster pattern arranges the pixel group into sub-blocks, and wherein the analyzing comprises:

calculating maximum code sizes for encoding the sub-blocks according to the layered encoding scheme,

determining a largest code size of the maximum code sizes, and

calculating a prefix size of a prefix for encoding the maximum code sizes, wherein the maximum code sizes are encoded as differences from the largest code size;

determining that the first cluster pattern is associated with a first pixel group code size that is smaller than a second pixel group code size associated with a second cluster pattern from the plurality of cluster patterns, wherein the first pixel group code size is calculated based on the maximum code sizes and the prefix size;

selecting the first cluster pattern based on the determination;

dividing the pixel group into the sub blocks according to the first cluster pattern; and

encoding the prefix and pixels assigned to the sub-blocks using the layered encoding scheme; and

one or more processors configured to process the encoder.

12. The system of claim 11 , wherein the first cluster pattern divides the code block into four equal-sized pixel groups.

13. The system of claim 11 , wherein the determination used in selecting the cluster pattern comprises:

determining a smallest maximum code size from the maximum code sizes for the sub-block by using pixels assigned to the sub-block.

14. The system of claim 11 , wherein the encoder is further configured to perform operations comprising:

storing the maximum code sizes for the sub-blocks and pixel-group code sizes for the pixel groups into an encoded stream using the layered entropy coding scheme, wherein each of the maximum code sizes is stored as an encoded difference.

15. The system of claim 14 , further comprising:

a decoder configured to perform operations comprising:

receiving a data stream comprising the code block,

separating the code block into pixel groups using the stored pixel-group code sizes and a layered decoding scheme,

separating the pixel group into the sub-blocks using the stored maximum code sizes, and

decoding the sub-blocks of the pixel group in parallel.

16. The method of claim 1 , further comprising:

encoding the difference between the maximum code size of a sub-block from the sub-blocks and another maximum code size of another sub-block from the sub-blocks.

17. The computer-readable storage device of claim 6 , wherein the operations to be performed further comprise:

encoding the difference between the maximum code size of a sub-block from the sub-blocks and another maximum code size of another sub-block from the sub-blocks.

18. The system of claim 11 , wherein the operations to be performed further comprise:

encoding the difference between the maximum code size of a sub-block from the sub blocks and another maximum code size of another sub-block from the sub-blocks.

19. The method of claim 1 , wherein calculating maximum code sizes for the sub-blocks is based on finding a two's complement size of each pixel of the pixels assigned to the sub-blocks.

20. The computer-readable storage device of claim 6 , wherein calculating maximum code sizes for the sub-blocks is based on finding a two's complement size of each pixel of the pixels assigned to the sub-blocks.

Assignments (7)
CORRECTIVE ASSIGNMENT TO CORRECT THE PATENT NUMBER 9,385,856 TO 9,385,756 PREVIOUSLY RECORDED AT REEL: 47349 FRAME: 001. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 22, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 051144/0648 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE PREVIOUSLY RECORDED ON REEL 047229 FRAME 0408. ASSIGNOR(S) HEREBY CONFIRMS THE THE EFFECTIVE DATE IS 09/05/2018. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047349/0001 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047229/0408 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: BROADCOM CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037806/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 29, 2012
From: ZHANG, LEI
To: BROADCOM CORPORATION
Reel/Frame 027783/0997 →
Continuity (1)
Related Publication 20130223536A1 · Aug 29, 2013