# US 9,001,882 B2 · System for entropy decoding of H.264 video for real time HDTV applications

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

- Number: US 9,001,882 B2
- Document ID: US9001882B2
- Status: Granted
- Kind: B2
- Application number: 13/165,015
- Filed: 2011-06-21
- Published: 2011-12-22
- Granted: 2015-04-07
- Earliest claimed: 2011-06-21
- Assignees: STMicroelectronics International N.V.; STMicroelectronics S.r.l.
- Applicants: Ravin Sachdeva; Sumit Johar; Daniele Alfonso
- Inventors: Ravin Sachdeva; Sumit Johar; Daniele Alfonso
- Web page: https://patentgrep.com/patent/US9001882B2

## CPC

- H04N 19/42: characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation (H04N19/635 takes precedence)
- H04N 19/91: Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

An embodiment relates to a decoder for decoding CABAC encoded video data in real time for HDTV applications. The decoder comprises a binary arithmetic decoder block for converting an input bit stream into a bin string, a context memory for storing a plurality of context values, and a plurality of finite state machines. Each of the finite state machines is adapted for decoding a particular one of the H.264 syntax elements by providing the binary arithmetic decoder block with an index of the relevant context value within the context memory and by converting the resulting bin stream into a value of the current syntax element. In this manner, a performance of one bin per cycle may be achieved.

## Claims

### Claim 1

A decoder, comprising:
a decoder stage operable to receive coded data, to receive a context according to which the received data is coded, and to decode the data according to the context;
a memory operable to store the context; and
a plurality of nine state machines, each of the nine state machines operable to further decode the decoded data from the decoder stage for one respective context from among a plurality of contexts, wherein the decoder stage is further operable
to receive a context index from one of the plurality of nine state machines; and
to receive the context from the memory in response to the context index.

### Claim 2 (depends on 1)

The decoder of claim 1 wherein the decoder stage comprises a binary arithmetic decoder.

### Claim 3 (depends on 1)

The decoder of claim 1 wherein the plurality of nine state machines are finite state machines.

### Claim 4 (depends on 1)

The decoder of claim 1 wherein the received coded data comprises coded video data.

### Claim 5 (depends on 1)

The decoder of claim 1 wherein the received coded data comprises coded image data.

### Claim 6 (depends on 1)

The decoder of claim 1 wherein the decoder stage is operable:
to receive decoding parameters; and
to decode the received coded data according to the decoding parameters.

### Claim 7 (depends on 1)

The decoder of claim 1, wherein the decoder stage is operable to update the context stored in the memory in response to decoding the received coded data.

### Claim 8 (depends on 1)

The decoder of claim 1, further comprising:
wherein the received coded data represents a first region of an image;
wherein the memory is operable to store data that represents a second region of the image;
wherein one of the plurality of nine state machines is operable to provide to the decoder stage a context index that is related to the stored data that represents the second region of the image; and
wherein the decoder stage is operable to receive the context from the memory in response to the context index.

### Claim 9 (depends on 1)

The decoder of claim 1, further comprising a buffer operable to store the further decoded data from one of the plurality of nine state machines.

### Claim 10 (depends on 1)

The decoder of claim 1, further comprising a first in first out buffer operable to store the further decoded data from one of the plurality of nine state machines.

### Claim 11

A decoder, comprising:
a decoder stage operable to receive coded data having data types, to receive contexts according to which the received data types are respectively coded, and to decode each data type according to a respective one of the contexts;
a memory operable to store the context; and
state machines each operable to further decode a respective one of the decoded data types from the decoder stage, wherein the state machines include at least nine state machines and wherein the decoder stage is further operable
to receive a context index from one of the plurality of at least nine state machines; and
to receive a respective one of the contexts from the memory in response to the context index.

### Claim 12 (depends on 11)

The decoder of claim 11 wherein the decoder stage comprises a binary arithmetic decoder.

### Claim 13 (depends on 11)

The decoder of claim 11 wherein each of the state machine comprises a respective finite state machine.

### Claim 14 (depends on 11)

The decoder of claim 11 wherein each of the data types comprises a respective syntax element.

### Claim 15 (depends on 11)

The decoder of claim 11 wherein the received coded data comprises coded video data.

### Claim 16 (depends on 11)

The decoder of claim 11 wherein the received coded data comprises coded image data.

### Claim 17 (depends on 11)

The decoder of claim 11 wherein the decoder stage is operable:
to receive decoding parameters; and
to decode the received data according to the decoding parameters.

### Claim 18 (depends on 11)

The decoder of claim 11, wherein the decoder stage is operable to update each of the contexts stored in the memory in response to decoding the respective received coded data types.

### Claim 19 (depends on 11)

The decoder of claim 11, further comprising:
wherein the received coded data represents a first region of an image;
wherein the memory is operable to store data that represents a second region of the image;
wherein each of the state machines is operable to provide to the decoder stage a respective context index that is related to the stored data that represents the second region of the image; and
wherein the decoder stage is operable to receive the contexts from the memory in response to the context indices.

### Claim 20 (depends on 11)

The decoder of claim 11, further comprising a buffer operable to store the further decoded data from at least one of the state machines.

### Claim 21 (depends on 11)

The decoder of claim 11, further comprising a first in first out buffer operable to store the further decoded data from at least one of the state machine.

### Claim 22 (depends on 11)

The decoder of claim 11 wherein the state machines are operable to further decode the respective decoded data types from the decoder stage sequentially and in an order in which the data types are received by the decoding stage.

### Claim 23 (depends on 11)

The decoder of claim 11 wherein:
the received coded data comprises a header; and
the state machines are operable to further decode the respective decoded data types from the decoder stage sequentially and in an order in which the data types appear in the header.

### Claim 24 (depends on 11)

The decoder of claim 11 wherein the state machines are operable to further decode the respective decoded data types from the decoder stage sequentially and in an order specified by the H.264 standard.

### Claim 25

A video accelerator, comprising:
a video decoder, comprising
a decoder stage operable to receive coded data, to receive a context according to which the received data is coded, and to decode the data according to the context; and
a memory operable to store the context; and
a plurality of nine or more state machines, each of the plurality nine or more state machines operable, for a respective context, to further decode the decoded data from the decoder stage, wherein the decoder stage is further operable
to receive a context index from one of the plurality of at least nine state machines; and
to receive a respective one of the contexts from the memory in response to the context index.

### Claim 26

A video accelerator, comprising:
a video decoder, comprising
a decoder stage operable to receive coded data having data types, to receive contexts according to which the received data types are respectively coded, and to decode each data type according to a respective one of the contexts;
a memory operable to store the context; and
state machines each operable to further decode a respective one of the decoded data types from the decoder stage, wherein the state machines include nine state machines and wherein the decoder stage is further operable
to receive a context index from one of the plurality of nine state machines; and
to receive a respective one of the contexts from the memory in response to the context index.

### Claim 27

A system, comprising:
a memory operable to store a context;
a first integrated circuit, comprising
a decoder stage operable to receive coded data, to receive the context according to which the received data is coded, and to decode the data according to the context; and
a plurality of state machines, each of the plurality of state machines operable for a corresponding context to further decode the decoded data from the decoder stage, wherein the plurality of state machines include nine state machines and wherein the decoder stage is further operable
to receive a context index from one of the plurality of nine state machines; and
to receive the context from the memory in response to the context index; and
a second integrated circuit coupled to the first integrated circuit.

### Claim 28 (depends on 27)

The system of claim 27 wherein the first and second integrated circuits are disposed on a same die.

### Claim 29 (depends on 27)

The system of claim 27 wherein the first and second integrated circuits are disposed on respective dies.

### Claim 30 (depends on 27)

The system of claim 27 wherein the first integrated circuit comprises a controller.

### Claim 31 (depends on 27)

The system of claim 27 wherein the first integrated circuit comprises a video accelerator.

### Claim 32 (depends on 27)

The system of claim 27 wherein the first integrated circuit comprises a video decoder.

### Claim 33 (depends on 27)

The system of claim 27 wherein the first integrated circuit comprises a video encoder-decoder.

### Claim 34 (depends on 27)

The system of claim 27 wherein the second integrated circuit comprises a controller.

### Claim 35 (depends on 27)

The system of claim 27 wherein the second integrated circuit comprises a memory.

### Claim 36 (depends on 27)

The system of claim 27, further comprising:
wherein the received coded data comprises video data; and
a display coupled to the first integrated circuit.

### Claim 37

A system, comprising:
a memory operable to store a context;
a first integrated circuit, comprising
a decoder stage operable to receive coded data having data types, to receive contexts according to which the received data types are respectively coded, and to decode each data type according to a respective one of the contexts; and
state machines each operable to further decode a respective one of the decoded data types from the decoder stage, wherein the state machines include at least nine state machines and wherein the decoder stage is further operable
to receive context indices from the plurality of nine state machines; and
to receive the respective context from the memory in response to the respective context index; and
a second integrated circuit coupled to the first integrated circuit.

### Claim 38 (depends on 37)

The system of claim 37 wherein the first and second integrated circuits are disposed on a same die.

### Claim 39 (depends on 37)

The system of claim 37 wherein the first and second integrated circuits are disposed on respective dies.

### Claim 40 (depends on 37)

The system of claim 37 wherein the first integrated circuit comprises a controller.

### Claim 41 (depends on 37)

The system of claim 37 wherein the first integrated circuit comprises a video accelerator.

### Claim 42 (depends on 37)

The system of claim 37 wherein the first integrated circuit comprises a video decoder.

### Claim 43 (depends on 37)

The system of claim 37 wherein the first integrated circuit comprises a video encoder-decoder.

### Claim 44 (depends on 37)

The system of claim 37 wherein the second integrated circuit comprises a controller.

### Claim 45 (depends on 37)

The system of claim 37 wherein the second integrated circuit comprises a memory.

### Claim 46 (depends on 37)

The system of claim 37, further comprising:
wherein the received coded data comprises video data; and
a display coupled to the first integrated circuit.

### Claim 47

A method, comprising:
receiving coded data;
receiving a context index from a state machine, the state machine being one of a plurality of at least nine state machines;
receiving, in response to the context index, a context according to which the received data is coded;
decoding the received coded data according to the context; and
further decoding the coded data with a respective state machine of the plurality of at least nine state machines associated with the corresponding context.

### Claim 48 (depends on 47)

The method of claim 47 wherein decoding the received coded data comprises decoding the received data according to a binary arithmetic decoding technique.

### Claim 49 (depends on 47)

The method of claim 47 wherein the state machine comprises a finite state machine.

### Claim 50 (depends on 47)

The method of claim 47 wherein receiving the coded data comprises receiving coded image data.

### Claim 51 (depends on 47)

The method of claim 47, further comprising:
receiving decoding parameters; and
wherein decoding the received coded data comprises decoding the received coded data according to the decoding parameters.

### Claim 52 (depends on 47)

The method of claim 47, further comprising updating the context in response to decoding the received coded data.

### Claim 53 (depends on 47)

The method of claim 47, further comprising:
wherein the received coded data represents a first region of an image;
generating with the state machine a second context index that is related to a second region of the image; and
wherein receiving the context comprises receiving the context in response to the second context index.

### Claim 54 (depends on 47)

The method of claim 47, further comprising storing the further decoded data from the state machine in a first in first out buffer.

### Claim 55 (depends on 47)

The method of claim 47 wherein:
the received coded data has data types;
receiving the context comprises receiving contexts according to which the received data types are respectively coded; and
decoding the received coded data comprises further decoding each data type according to a respective one of the contexts.

### Claim 56 (depends on 55)

The method of claim 55 wherein each of the plurality of at least nine state machines comprises a respective finite state machine.

### Claim 57 (depends on 55)

The method of claim 55 wherein each of the data types comprises a respective syntax element.

### Claim 58 (depends on 55)

The method of claim 55 wherein further decoding the coded data with a respective state machine comprises further decoding each of the decoded data types sequentially and in an order in which the data types are received.

### Claim 59 (depends on 55)

The method of claim 55 wherein:
receiving the coded data comprises receiving a header; and
further decoding the coded data with a respective state machine comprises further decoding each of the decoded data types sequentially and in an order in which the data types appear in the header.

### Claim 60 (depends on 55)

The method of claim 55 wherein further decoding the coded data with a respective state machine comprises further decoding each of the decoded data types sequentially and in an order specified by a video standard.

### Claim 61

A non-transitory computer readable medium storing instructions that when executed by a controller cause:
the controller to receive coded data;
the controller to receive a context index from a state machine, the state machine being one of a plurality of at least nine state machines;
the controller to receive, in response to the context index, a context according to which the received data is coded;
the controller to decode the received coded data according to the context; and
the plurality of at least nine state machines to decode the decoded data further, each state machine decoding the decoded data further for a respective context.
