IP Library Granted Patent US 8,798,139
Granted Patent B1
US 8,798,139 · App. 13/172,773 · Granted Aug 5, 2014

Dual-pipeline CABAC encoder architecture

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 8,798,139
App. No.
13/172,773
Granted
Aug 5, 2014
Kind
B1
Abstract

A method and system are disclosed for the lossless compression of video data in a synchronous pipelined environment. One or more syntax elements of video data are binarized into one or more ordered bins. A first context model associated with a first bin and a second context model associated with a second bin are received. The first bin is encoded based on the first context model and the second bin is encoded based on the second context model, both bins being encoded within the same clock cycle. One or more encoded bits are outputted based on encoding the first and second bin. In one embodiment, the first bin is encoded in a first pipeline and the second bin is encoded in a second pipeline. In this embodiment, two bins may be encoded every clock cycle, one per pipeline. Further, in one embodiment, multiple context models are received and one context model is selected by each pipeline for encoding. After encoding, one or more context models may be updated and stored.

Claims (76)

1. A method for lossless compression of video data in a synchronous pipelined environment, the method comprising:

converting, through binarization, one or more syntax elements into ordered bins, the ordered bins comprising at least a first bin followed by a second bin;

requesting, by a first context model lookup module, a first context model based on the first bin;

requesting, by a second context model lookup module, a second context model based on the second bin;

receiving, at a first encoder coupled to the first context model lookup module, the first bin and the first context model;

receiving, at a second encoder coupled to the second context model lookup module the second bin and the second context model;

encoding, by the first encoder, the first bin based at least in part on the first context model within a clock cycle to produce a first encoded bit;

encoding, by the second encoder, the second bin based at least in part on the second context model within the same clock cycle to produce a second encoded bit;

combining the first encoded bit and a second encoded bit to form an encoded bitstream; and

outputting the one encoded bitstream.

2. The method of claim 1 , further comprising:

requesting the first context model and the second context model from a context model table;

updating, by the first encoder, the first context model based at least in part on the first bin;

updating, by the second encoder, the second context model based at least in part on the second bin; and

transmitting the updated first context model and updated second context model to the context model table for storage.

3. The method of claim 2 , wherein the context model table comprises one or more context models stored at one or more context model table addresses, and wherein at least two context models are stored at one context model table address.

4. The method of claim 1 , wherein the first context model and the second context model comprise the same context model.

5. The method of claim 1 , wherein the first encoder and the second encoder are further configured to:

receive multiple context models associated with a bin; and

select one of the multiple context models for use in encoding.

6. The method of claim 5 , wherein a context model in the multiple context models most recently used in encoding is selected.

7. The method of claim 1 , wherein encoding a bin further comprises:

maintaining a numerical interval comprising an upper interval limit and a lower interval limit, the upper interval limit greater than the lower interval limit, the numerical difference between the upper interval limit and the lower interval limit comprising the range of the numerical interval; and

restricting the range of the numerical interval based on the bin and an associated context model, wherein restricting the range of the numerical interval comprises increasing the lower interval limit or decreasing the upper interval limit.

8. The method of claim 7 , wherein producing at least one encoded bit further comprises:

outputting an encoded bit if the upper interval limit falls below a first pre-designated threshold or if the lower interval limit rises above a second pre-designated threshold; and

expanding the range of the numerical interval based on the outputted bit, wherein expanding the range of the numerical interval comprises decreasing the lower interval limit or increasing the upper interval limit.

9. The method of claim 7 , wherein encoding the second bin is further based at least in part on the numerical interval maintained in encoding the first bin.

10. The method of claim 1 , wherein the method is implemented in an H.264 video encoder.

11. An encoding system for lossless compression of video data in a synchronous pipelined environment, the encoder comprising:

a non-transitory computer-readable storage medium storing executable modules comprising:

a binarization module configured to convert, through binarization, one or more syntax elements into ordered bins, the ordered bins comprising at least a first bin followed by a second bin;

a first context model lookup module configured to request a first context model based on the first bin;

a second context model lookup module configured to request a second context model based on the second bin;

a first encoder coupled to the first context model lookup module and configured to:

receive the first bin and the first context model associated with the first bin; and

encode the first bin based at least in part on the first context model within a clock cycle to produce a first encoded bit;

a second encoder coupled to the second context model lookup module and configured to:

receive the second bin and the second context model associated with the second bin; and

encoding the second bin based at least in part on the second context model within the same clock cycle to produce a second encoded bit; and

an output configured to:

combine the first encoded bit and the second encoded bit to form an encoded bitstream; and

output the encoded bitstream; and

a processor configured to execute the executable modules.

12. The encoding system of claim 11 , wherein the first context model lookup module is further configured to request the first context model from a context model table, wherein the first encoder is further configured to update the first context model based at least in part on the first bin, wherein the second context model lookup module is further configured to request the second context model from the context model table, and wherein the second encoder is further configured to update the second context model based at least in part on the second bin.

13. The encoding system of claim 12 , wherein the context model table comprises one or more context models stored at one or more context model table addresses, and wherein at least two context models are stored at one context model table address.

14. The encoding system of claim 11 , wherein the first context model and the second context model comprise the same context model.

15. The encoding system of claim 11 , wherein the first encoder and the second encoder are further configured to:

receive multiple context models associated with a bin; and

select one of the multiple context models for use in encoding.

16. The encoding system of claim 15 , wherein the first encoder and the second encoder are further configured to select a context model in the multiple context models most recently used in encoding.

17. The encoding system of claim 11 , wherein the first encoder and the second encoder are further configured to:

maintain a numerical interval comprising an upper interval limit and a lower interval limit, the upper interval limit greater than the lower interval limit, the numerical difference between the upper interval limit and the lower interval limit comprising the range of the numerical interval; and

restrict the range of the numerical interval based on a received bin and an associated context model, wherein restricting the range of the numerical interval comprises increasing the lower interval limit or decreasing the upper interval limit.

18. The encoding system of claim 17 , wherein the first encoder and the second encoder are further configured to:

output an encoded bit if the upper interval limit falls below a first pre-designated threshold or if the lower interval limit rises above a second pre-designated threshold; and

expand the range of the numerical interval based on the outputted bit, wherein expanding the range of the numerical interval comprises decreasing the lower interval limit or increasing the upper interval limit.

19. The encoding system of claim 17 , wherein encoding the second bin is further based at least in part on the numerical interval maintained in encoding the first bin.

20. The encoding system of claim 11 , wherein the encoding system is implemented in an H.264 video encoder.

21. An encoding system for lossless compression of video data in a synchronous pipelined environment, the encoder comprising:

a binarization module configured to convert, through binarization, one or more syntax elements into ordered bins, the ordered bins comprising at least a first bin followed by a second bin;

a first context model lookup module configured to request a first context model based on the first bin;

a second context model lookup module configured to request a second context model based on the second bin;

a first hardware encoder coupled to the first context model lookup module and configured to:

receive the first bin and the first context model associated with the first bin; and

encode the first bin based at least in part on the first context model within a clock cycle to produce a first encoded bit;

a second hardware encoder coupled to the second context model lookup module and configured to:

receive the second bin and the second context model associated with the second bin; and

encode the second bin based at least in part on the second context model within the clock cycle to produce a second encoded bit; and

an output module configured to combine the first encoded bit and the second encoded bit to form an encoded bitstream, and to output the encoded bitstream.

22. The encoding system of claim 21 , wherein the first context model lookup module is further configured to request the first context model from a context model table, and wherein the first hardware encoder is further configured to:

update the first context model based at least in part on the first bin; and

transmit the updated first context model to the context model table for storage.

23. The encoding system of claim 21 , wherein the second context model lookup module is further configured to request the second context model from a context model table, and wherein the second hardware encoder is further configured to:

update the second context model based at least in part on the second bin; and

transmit the updated second context model to the context model table for storage.

Assignments (7)
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE LISTED CHANGE OF NAME SHOULD BE MERGER AND CHANGE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0180. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jan 12, 2017
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 041354/0148 →
CHANGE OF NAME Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 040652/0180 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
CHANGE OF NAME Recorded Jan 27, 2015
From: ZENVERGE, INC.
To: ZENVERGE, LLC
Reel/Frame 034817/0375 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2015
From: ZENVERGE LLC
To: FREESCALE SEMICONDUCTOR INC.
Reel/Frame 034766/0476 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2011
From: JACOB, ROJIT
To: ZENVERGE, INC.
Reel/Frame 026533/0355 →