# US 8,542,727 B2 · Systems and apparatuses for performing CABAC parallel encoding and decoding

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,542,727 B2
- Document ID: US8542727B2
- Status: Granted
- Kind: B2
- Application number: 12/006,129
- Filed: 2007-12-31
- Published: 2009-07-02
- Granted: 2013-09-24
- Earliest claimed: 2007-12-31
- Assignees: Intel Corporation
- Applicants: Musa Jahanghir
- Inventors: Musa Jahanghir
- Web page: https://patentgrep.com/patent/US8542727B2

## CPC

- H03M 7/4006: {Conversion to or from arithmetic code}
- H04N 19/436: using parallelised computational arrangements
- H04N 19/61: in combination with predictive coding
- H04N 19/93: Run-length coding
- H04N 19/91: Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
- H03M: CODING; DECODING; CODE CONVERSION IN GENERAL (using fluidic means F15C4/00; optical analogue/digital converters G02F7/00; coding, decoding or code conversion, specially adapted for particular applications, see the relevant subclasses, e.g. G01D, G01R, G06F, G06T, G09G, G10L, G11B, G11C, H04B, H04L, H04M, H04N; ciphering or deciphering for cryptography or other purposes involving the need for secrecy G09C)
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

Apparatuses, systems, and computer program products that encode and/or decode information of a video stream, such as an MPEG-4 video stream, are disclosed. Some embodiments comprise an apparatus having a binarizer module to create a plurality of bins for a syntax element for information of the video stream, a context selection module to generate an index value and a most probable symbol (MPS) value for encoding the plurality of bins, and an arithmetic coding module to encode a first and a second bin of the plurality of bins based on a first probability value and a second probability value, respectively, wherein the first and second probability values are determined via the generated index value and MPS value. Examples of some embodiments are high definition personal video recorders, transcoders, computers, personal digital assistants, cellular telephones, portable video players, high definition digital versatile disc (HD-DVD) devices, and Blu-ray disc-read only memory (BD-ROM) devices.

## Claims

### Claim 1

A binary arithmetic encoding apparatus, comprising:
a binarizer to create a plurality of bins for a syntax element for information of a video stream;
a context selector to receive the plurality of bins from the binarizer and to generate, in parallel, an index value and a most probable symbol (MPS) value for encoding each of the plurality of bins; and
an arithmetic coder to receive and encode the plurality of bins from the binarizer in parallel, the arithmetic coder to encode the plurality of bins from the binarizer in parallel with the context selector processing the plurality of bins from the binarizer, the arithmetic coder to receive the index value and the MPS value from the context selector to encode a first and a second bin of the plurality of bins in parallel based on a first probability value and a second probability value, respectively, wherein the first and second probability values are determined via the generated index value and MPS value.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein the binarizer is arranged to create a plurality of variable-length coded (VLC) bins for the syntax element, and to split a VLC bin into segments for parallel processing.

### Claim 3 (depends on 1)

The apparatus of claim 1, wherein the arithmetic coder comprises a plurality of arithmetic coding engines, one of the plurality of arithmetic coding engines to process one bin of the plurality of bins while a second arithmetic coding engine processes a second bin of the plurality of bins.

### Claim 4 (depends on 1)

The apparatus of claim 1, wherein the arithmetic coder comprises fifteen look-up tables to generate most probable symbol values and least probable symbol values to encode the plurality of bins, wherein further:
the plurality of bins comprises four bins;
a first bin of the four bins is coupled to one of the fifteen look-up tables;
a second bin of the four bins is coupled to two of the fifteen look-up tables;
a third bin of the four bins is coupled to four of the fifteen look-up tables; and
the fourth bin of the four bins is coupled to seven of the fifteen look-up tables.

### Claim 5

A system, comprising:
a source of uncompressed video information; and
a processor to encode the uncompressed video information via a parallel encoder, wherein the parallel encoder comprises:
a binarizer module to create a plurality of bins for a syntax element for information of a video stream;
a context selection module to receive the plurality of bins from the binarizer module and to generate, in parallel, an index value and a most probable symbol (MPS) value for encoding each of the plurality of bins; and
an arithmetic coding module to receive the plurality of bins from the binarizer module and to encode, in parallel, the plurality of bins from the binarizer module, the arithmetic coding module to encode the plurality of bins from the binarizer module in parallel with the context selector processing the plurality of bins from the binarizer module, the arithmetic coding module to receive the index value and the MPS value from the context selection module to encode a first and a second bin of the plurality of bins in parallel based on a first probability value and a second probability value, respectively, wherein the first and second probability values are determined via the generated index value and MPS value.

### Claim 6

A computer program product comprising a tangible computer readable storage medium having computer usable program code for encoding video information, wherein the storage medium does not comprise a transitory signal, the computer program product including:
computer readable program code for selecting a plurality of bins for a syntax element of the video information;
computer readable program code for selecting a probability symbol value and a probability index value based upon processing, in parallel, the plurality of bins; and
computer readable program code for encoding the plurality of bins in parallel and encoding the plurality of bins in parallel with the processing, in parallel, the plurality of bins, wherein the encoding of the plurality of bins is via selection of a plurality of probability values corresponding to the plurality of bins, wherein further selection of each probability value is via the probability symbol value and the probability index value.

### Claim 7 (depends on 6)

The computer program product of claim 6, wherein the computer readable program code for selecting the plurality of probability values which correspond to the plurality of bins comprises computer usable program code for selecting probability values from sixty-three (63) look-up tables, wherein further the 63 tables correspond to six stages of encoding to process six bins in a single encoding iteration.

### Claim 8 (depends on 6)

The computer program product of claim 6, wherein the computer readable program code for encoding the plurality of bins in parallel comprises computer readable program code for detecting underflow and overflow conditions to determine a propagate condition and increment an outstanding bit count.

### Claim 9 (depends on 1)

The apparatus of claim 1, wherein:
the binarizer is to create a plurality of bins for a second syntax element of the video stream; and
the arithmetic coder is to process in parallel at least one of the plurality of bins of the syntax element and at least one of the plurality of bins of the second syntax element.

### Claim 10 (depends on 1)

The apparatus of claim 1, wherein the arithmetic coder further comprises a look-up table, the look-up table to generate multiple values with a single output.

### Claim 11 (depends on 10)

The apparatus of claim 10, wherein the arithmetic coder further comprises a four-input multiplexer coupled to the look-up table and coupled to a range register, and wherein the four-input multiplexer is to select one of four multiple values generated by the look-up table based upon the two lower-order bits of the range register.

### Claim 12 (depends on 1)

The apparatus of claim 1, wherein the arithmetic coder further comprises:
a first lookup-table to output a probability value as a function of a state index;
a second lookup-table to output a state index update value in case the most probable symbol (MPS) value is selected in a decoding cycle x; and
a third lookup-table to output a state index update value in case the least probable symbol (LPS) value is selected in the decoding cycle x.

### Claim 13 (depends on 5)

The system of claim 5, wherein the binarizer module is arranged to create a plurality of variable-length coded (VLC) bins for the syntax element, and to split a VLC bin into segments for parallel processing.

### Claim 14 (depends on 5)

The system of claim 5, wherein the arithmetic coding module comprises a plurality of arithmetic coding engines, one of the plurality of arithmetic coding engines to process one bin of the plurality of bins while a second arithmetic coding engine processes a second bin of the plurality of bins.

### Claim 15 (depends on 5)

The system of claim 5, wherein the arithmetic coding module comprises fifteen look-up tables to generate most probable symbol values and least probable symbol values to encode the plurality of bins, wherein further:
the plurality of bins comprises four bins;
a first bin of the four bins is coupled to one of the fifteen look-up tables;
a second bin of the four bins is coupled to two of the fifteen look-up tables;
a third bin of the four bins is coupled to four of the fifteen look-up tables; and
the fourth bin of the four bins is coupled to seven of the fifteen look-up tables.

### Claim 16 (depends on 5)

The system of claim 5, wherein:
the binarizer module to create a plurality of bins for a second syntax element of the video stream; and
the arithmetic coding module is to process in parallel at least one of the plurality of bins of the syntax element and at least one of the plurality of bins of the second syntax element.

### Claim 17 (depends on 6)

The computer program product of claim 6, wherein the computer readable program code for selecting a plurality of bins splits at least one of the bins into segments for parallel processing.

### Claim 18 (depends on 6)

The computer program product of claim 6, wherein the computer readable program code for encoding the plurality of bins in parallel:
creates fifteen look-up tables to generate most probable symbol values and least probable symbol values to encode the plurality of bins, wherein further:
the plurality of bins comprises four bins;
a first bin of the four bins is coupled to one of the fifteen look-up tables;
a second bin of the four bins is coupled to two of the fifteen look-up tables;
a third bin of the four bins is coupled to four of the fifteen look-up tables; and
the fourth bin of the four bins is coupled to seven of the fifteen look-up tables.

### Claim 19 (depends on 6)

The computer program product of claim 6, wherein:
the computer readable program code for selecting a plurality of bins for a syntax element is to create a plurality of bins for a second syntax element of the video stream; and
the computer readable program code for encoding the plurality of bins in parallel is to process in parallel at least one of the plurality of bins of the syntax element and at least one of the plurality of bins of the second syntax element.

### Claim 20 (depends on 6)

The computer program product of claim 6, wherein the computer readable program code for encoding the plurality of bins in parallel further comprises computer usable program code to:
create a look-up table, the look-up table to generate multiple values with a single output; and
create a four-input multiplexer coupled to the look-up table and coupled to a range register, wherein the four-input multiplexer is to select one of four multiple values generated by the look-up table based upon the two lower-order bits of the range register.
