# US 6,909,744 B2 · Processor architecture for compression and decompression of video and images

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

- Number: US 6,909,744 B2
- Document ID: US6909744B2
- Status: Granted
- Kind: B2
- Application number: 09/733,612
- Filed: 2000-12-08
- Published: 2001-11-29
- Granted: 2005-06-21
- Earliest claimed: 1999-12-09
- Assignees: RedRock Semiconductor, Ltd.
- Inventors: Stephen A. Molloy
- Web page: https://patentgrep.com/patent/US6909744B2

## CPC

- G06T 9/008: {Vector quantisation}
- 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/61: in combination with predictive coding
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

A video encoder/decoder includes a vector pipeline unit and is configured only once by a processor to encode/decode data in accordance with any one of the JPEG, MPEG1, MPEG2 or MPEG4, H.261 or H.263 compression standards. The configuration data is stored in a configuration register of the video encoder/decoder. An optional ROM stores the configuration data for subsequent reading and loading—by the processor—into the configuration register. The vector pipeline unit includes: a run-length decoder, a binary arithmetic logic unit, a binary multiplier/divider, an accumulator, a barrel shifter, a round/modify unit, a saturate logic unit, a status register and a run-length encoder. Each component of the vector pipeline unit is optionally enabled or disabled. By disabling one or more components of the vector pipeline unit the power consumed by the encoder/decoder is reduced. The vector pipeline, after being configured continuously encodes/decodes vectors of data according to the configured standard, without requiring any additional configuration or software programming. The status register gathers statistical data on the saturated data and supplies the statistical data to the processor, thereby, further improving the performance of the video encode/decoder. The video encoder/decoder encodes/decodes data based on any other compression standard with additional configuration or software programming.

## Claims

### Claim 1

A video encoder/decoder coupled to a processor, wherein the video encoder/decoder is configured by the processor a first time to encode/decode data in accordance with a first one of a plurality of data compression/decompression standards, and further including a vector pipeline unit comprising a run-length decoder which receives data elements of a data vector at its input terminals and decodes and supplies to its output terminals one of the data elements received thereby if the run-length decoder is disabled and a run-length of the data elements received thereby if the run-length decoder is enabled, wherein each data element comprises a plurality of bits.

### Claim 2 (depends on 1)

The video encoder/decoder of claim 1, wherein the video encoder/decoder is configured by the processor a second time only if a second one of the plurality of data compression/decompression standards different from the first one of the plurality of data compression/decompression standards is selected for encoding/decoding.

### Claim 3 (depends on 2)

The video encoder/decoder of claim 2 wherein the video encoder/decoder is configured by configuring a configuration register disposed within the video encoder/decoder.

### Claim 4 (depends on 3)

The video encoder/decoder of claim 3 further comprising a memory which stores configuration data for each of the plurality of data compression/decompression standards, wherein the processor reads the configuration data from the memory and loads the same into the configuration register.

### Claim 5 (depends on 1)

The video encoder/decoder of claim 1 wherein the run-length decoder is disabled if a bit associated therewith in the configuration register is reset.

### Claim 6 (depends on 5)

The video encoder/decoder of claim 5 wherein the vector pipeline unit further comprises:
an ALU having a plurality of first input terminals which receive the data element supplied thereto by the run-length decoder, a plurality of second input terminals which receive a second data element of the vector and a plurality of output terminals, the ALU to deliver to its output terminals one of a result of a plurality of arithmetic or logic operations performed thereby if the ALU is enabled and the first data element received at its first input terminals if the ALU is disabled.

### Claim 7 (depends on 6)

The video encoder/decoder of claim 6 wherein the ALU is disabled if a bit associated therewith in the configuration register is reset.

### Claim 8 (depends on 6)

The video encoder/decoder of claim 6, wherein the vector pipeline unit further comprises:
a multiplier/divider having a plurality of first input terminals which receive the data supplied to the output terminals of the ALU, a plurality of second input terminals which receive a third data element of the vector, the multiplier/divider to supply to its output terminals a result of one of a plurality multiplication/division operations performed thereby if the multiplier/divider is enabled and the data received at its plurality of first input terminals if the multiplier/divider is disabled.

### Claim 9 (depends on 8)

The video encoder/decoder of claim 8 wherein the multiplier/divider is disabled if a bit associated therewith in the configuration register is reset.

### Claim 10 (depends on 8)

The video encoder/decoder of claim 8, wherein the vector pipeline unit further comprises:
a multiplexer having a plurality of first input terminals which receive a fourth data element, a plurality of second input terminals which receive the data supplied to the output terminals of the multiplier/divider, a third input terminal and a plurality of output terminals, wherein the third input terminal selects and transfers to the multiplexer's output terminals one of the data supplied to the multiplexer by the multiplier/divider and the fourth data.

### Claim 11 (depends on 10)

The video encoder/decoder of claim 10 wherein the multiplexer transfers to its output terminals the data supplied thereto by the multiplier/divider if a bit associated with the multiplexer in the configuration register is reset.

### Claim 12 (depends on 10)

The video encoder/decoder of claim 10, wherein the vector pipeline unit further comprises:
an accumulator having a plurality of first input terminals which receive the data supplied to the multiplexer's output terminals, and a plurality of second input terminals which receive the second data element of the vector, the accumulator to supply to its output terminals a result of one of a plurality of arithmetic operations performed thereby if the accumulator is enabled and the data received at its plurality of first input terminals if the accumulator is disabled.

### Claim 13 (depends on 12)

The video encoder/decoder of claim 12 wherein the accumulator is disabled if a bit associated therewith in the configuration register is reset.

### Claim 14 (depends on 12)

The video encoder/decoder of claim 12, wherein the vector pipeline unit further comprises:
a barrel shifter having a plurality of first input terminals which receive the data supplied to the output terminals of the accumulator, wherein the barrel shifter right shifts the data it receives at its plurality of first input terminals if the barrel shifter is enabled.

### Claim 15 (depends on 14)

The video encoder/decoder of claim 14 wherein the barrel shifter supplies to its output terminals the data it receives at its plurality of first input terminals if the barrel shifter is disabled.

### Claim 16 (depends on 15)

The video encoder/decoder of claim 15 wherein the barrel shifter is disabled if a bit associated therewith in the configuration register is reset.

### Claim 17 (depends on 14)

The video encoder/decoder of claim 14, wherein the vector pipeline unit further comprises a round logic unit which receives the data supplied thereto by the barrel shifter and rounds the received data to a nearest integer number, wherein the
round logic unit receives the data supplied thereto by the barrel shifter and rounds the received data to a nearest integer number if the round logic is enabled, wherein the round logic unit supplies the rounded data to its output terminals.

### Claim 18 (depends on 17)

The video encoder/decoder of claim 17, wherein the round logic unit delivers to its output terminals the data supplied thereto by the barrel shifter if the round logic unit is disabled.

### Claim 19 (depends on 18)

The video encoder/decoder of claim 18 wherein the round logic unit is disabled if a bit associated therewith in the configuration register is reset.

### Claim 20 (depends on 17)

The video encoder/decoder of claim 17, wherein the vector pipeline unit further comprises:
a modify logic unit which receives the data supplied thereto by the round logic unit and modifies the received data to one of odd and even number if the modify logic unit is enabled, wherein the modify logic unit supplies the modified data to its output terminals.

### Claim 21 (depends on 20)

The video encoder/decoder of claim 20, wherein the modify logic unit delivers to its output terminals the data supplied thereto by the round logic unit if the modify logic unit is disabled.

### Claim 22 (depends on 21)

The video encoder/decoder of claim 21 wherein the modify logic unit is enabled or disabled by varying a bit associated therewith in the configuration register.

### Claim 23 (depends on 20)

The video encoder/decoder of claim 20, wherein the vector pipeline unit further comprises:
a saturate logic unit which receives the data supplied thereto by the modify logic unit, the saturate logic unit to saturate the received data to a saturation high value if the received data is greater than the saturation high value and if the saturate logic unit is enabled, the saturate logic unit to saturate the received data to a saturation low value if the received data is smaller than the saturation low value and if the saturate logic unit is enabled, wherein the saturate logic unit supplies to its output terminals the saturate data.

### Claim 24 (depends on 23)

The video encoder/decoder of claim 23 wherein the saturate logic unit supplies to its output terminals data it receives from the output terminals of the modify logic unit if the saturate logic unit is disabled.

### Claim 25 (depends on 24)

The video encoder/decoder of claim 24 wherein the saturate logic unit is enabled or disabled by varying a bit associated therewith in the configuration register.

### Claim 26 (depends on 23)

The video encoder/decoder of claim 23, wherein the vector pipeline unit further comprises a status register which collects data supplied thereto by the saturate logic unit and supplies the collected data to the processor, if the status register is enabled.

### Claim 27 (depends on 26)

The video encoder/decoder of claim 26 wherein the status register is enabled or disabled by varying a bit associated therewith in the configuration register.

### Claim 28 (depends on 23)

The video encoder/decoder of claim 23, wherein the vector pipeline unit further comprises a run-length encoder which receives and encodes the run-length of the data that is supplied thereto by the saturate logic unit if the run-length encoder is enabled.

### Claim 29 (depends on 28)

The video encoder/decoder of claim 28, wherein the run-length encoder is enabled or disabled by varying a bit associated therewith in the configuration register.
