Multi-function USB video capture chip using bufferless data compression
AssigneeSigma Designs, Inc.
InventorXiaoping Hu
Life of this patent
Estimating the term…
Abstract
A method and system for capturing live video signal data using bufferless data compression is disclosed. Live video signal data is vertically scaled. A 4:2:2 to 4:2:0 color format conversion is performed simultaneous with the vertical scaling step. A one-dimensional bufferless discrete cosine transform is performed on the scaled live video signal data to create a plurality of scaled DCT coefficients. Each of the plurality of scaled DCT coefficients are then Huffman coded. Each of the Huffman encoded DCT coefficients may then be sent via a USB interface to a USB bus.
Claims31
A method for simultaneously performing vertical scaling and 4:2:2 to 4:2:0 color format conversion on incoming color space component data of a video frame, the incoming color space component data having first color space component data, second color space component data, and third color space component data, the method comprising the following steps:
- separating each byte of the first, second, and third color space component data;
- determining a scaling factor, the scaling factor indicating a number of bytes to average;
- first performing an f:1 scale down for each byte of the first color space component data when the scaling factor is equal to f;
- and
- second performing a 2f:1 scale down for each byte of the second and third color space component data when the scaling factor is equal to f.
A method for simultaneously performing vertical scaling and 4:2:2 to 4:2:0 color format conversion on incoming Y, U, and V data of a video frame, the method comprising the following steps:
- separating each byte of the Y, U, and V data;
- determining a scaling factor, the scaling factor indicating a number of bytes to average;
- first performing an f:1 scale down for each Y byte when the scaling factor is equal to f;
- and
- second performing a 2f:1 scale down for each U and V byte when the scaling factor is equal to f.
A method for simultaneously performing vertical scaling and 4:2:2 to 4:2:0 color format conversion on incoming 4:2:2 color space component data of a video frame, the incoming color space component data having first color space component data, second color space component data, and third color space component data, the method comprising the following steps:
- separating the incoming 4:2:2 color space component data into the first color space component data, the second color space component data, and the third color space component data;
- first performing vertical scaling on the first color space component data, the second color space component data, and the third color space component data;
- and
- second performing a 4:2:2 to a 4:2:0 color format conversion on the first color space component data, the second color space component data, and the third color space component data, the second performing step being executed simultaneously with the first performing step.
A method for simultaneously performing vertical scaling and 4:2:2 to 4:2:0 color format conversion on incoming 4:2:2 color space component data of a video frame, the incoming color space component data having first color space component data, second color space component data, and third color space component data, the method comprising the following steps:
- separating the incoming 4:2:2 color space component data into the first color space component data, the second color space component data, and the third color space component data;
- multiplexing the first, second, and third color space component data to allow one of the first, second, and third color space component data to be scaled;
- horizontally scaling the multiplexed color space component data;
- first performing vertical scaling on the multiplexed color space component data;
- and
- second performing a 4:2:2 to a 4:2:0 color format conversion on the multiplexed color space component data, the second performing step being executed simultaneously with the first performing step.
A method for performing a DCT on a line of pixels to create a DCT coefficient y(u), the method comprising the following steps:
- accepting a sequence of pixels;
- performing a cosine operation on adjacent sets of the sequence of pixels without storing the sequence in a buffer more than 16 bits in size;
- and
- generating a sequence of one dimensional DCT coefficients in response to the step of performing.
A method for performing a DCT on a line of pixels to create a DCT coefficient y(u), the method comprising the following steps:
- accepting a sequence of pixels;
- and
- performing a one dimensional DCT on the sequence of pixels without a buffer through use of a register.
A method for performing a one dimensional DCT on a line of pixels to create a DCT coefficient y(u), the method comprising the following steps:
- accepting a plurality of pixels, each of the plurality of pixels xi designated by an integer i, where i is an integer selected from the group consisting of 0, 1, 2, 3, 4, 5, 6, and 7;
- performing a cosine operation on ((2i+1) * uπ/16) to create a result, where u is an integer selected from the group consisting of 0, 1, 2, 3, 4, 5, 6, and 7, and where u designates a DCT coefficient;
- multiplying the pixel xi and the result of the cosine operation to create a value for summation;
- repeating the steps of performing and multiplying for each of the plurality of pixels, the step of repeating further including the step of successively adding the value for summation to create a summed value;
- determining a constant, the constant being 1sqrt(2) when u is 0, the constant otherwise being 1;
- multiplying the summed value by the constant to create a product;
- and
- dividing the product by 2.
A method for compressing a DCT coefficient, the method comprising the following steps:
- accepting a plurality of DCT coefficients;
- generating a pattern code for the plurality of DCT coefficients, the pattern code having a plurality of bits, each one of the plurality of bits corresponding to one of the plurality of DCT coefficients, the each one of the plurality of bits being 0 when the DCT coefficient is 0, and otherwise being 1;
- identifying nonzero DCT coefficients using the pattern code;
- encoding each zero DCT coefficient with zero bits;
- preparing a coefficient table, the coefficient table having a plurality of code pairs, each of the plurality of pairs having a length code and a Huffman code;
- preparing a pattern table, the pattern table having a plurality of code pairs, each of the plurality of pairs having a length code and a Huffman code;
- performing a table lookup for each non-zero DCT coefficient within the coefficient table;
- and
- performing a table lookup for the pattern code within the pattern table.
A method for Huffman encoding a DCT coefficient, the method comprising the following steps:
- accepting a plurality of DCT coefficients;
- selecting one of the plurality of DCT coefficients;
- generating a pattern code for the selected DCT coefficient;
- and
- performing a table lookup for the pattern code and the selected DCT coefficient.
A method for Huffman encoding a plurality of DCT coefficients, the method comprising the following steps:
- accepting a plurality of DCT coefficients;
- generating a pattern code having a plurality of bits corresponding to the plurality of DCT coefficients;
- and
- performing a table lookup for the pattern code and the plurality of DCT coefficients.
A method for compressing a DCT coefficient, comprising:
- performing a one-dimensional bufferless discrete cosine transform on live video signal data to create a plurality of DCT coefficients;
- and
- Huffman encoding each of the plurality of DCT coefficients.
A method for compressing a DCT coefficient, comprising:
- performing a one-dimensional bufferless discrete cosine transform on live video signal data to create a plurality of DCT coefficients;
- selecting one of the plurality of DCT coefficients;
- generating a pattern code for the selected DCT coefficient;
- and
- performing a table lookup for the pattern code and the selected DCT coefficient.
A method for compressing a plurality of DCT coefficients, comprising:
- first performing a one-dimensional bufferless discrete cosine transform on live video signal data to create a plurality of DCT coefficients;
- generating a pattern code for the plurality of DCT coefficients;
- and
- second performing a table lookup for the pattern code and each one of the plurality of DCT coefficients.
A method for capturing live video signal data using bufferless data compression, the method comprising the following steps:
- vertically scaling the live video signal data;
- performing a 4:2:2 to 4:2:0 color format conversion simultaneous with the vertical scaling step;
- performing a one-dimensional bufferless discrete cosine transform on the scaled live video signal data to create a plurality of scaled DCT coefficients;
- and
- Huffman encoding each of the plurality of scaled DCT coefficients.
An apparatus for simultaneously performing vertical scaling and 4:2:2 to 4:2:0 color format conversion on incoming 4:2:2 color space component data of a video frame, the incoming color space component data having first color space component data, second color space component data, and third color space component data, the apparatus comprising:
- an accumulator having a first input operatively coupled to the incoming color space component data, a second input operatively coupled to an initializer value for rounding accumulated data, a third input operatively coupled to a component signal adapted for selecting the first, second, or third color space component to be scaled, a fourth input operatively coupled to a set_initial signal used to reset the accumulator, a fifth input for receiving intermediate accumulation results, and an output producing a sum of the incoming color space component data;
- a shifter having a first input operatively coupled to the accumulator output, a second input indicating a number of bits to shift the sum right, and an output;
- a multiplexer having a first input operatively coupled to the accumulator output, a second input operatively coupled to the shifter output, a select line operatively coupled to a final_shift signal indicating when a final shift is to be performed, and an output, the select line selecting the second input when the final shift is to be performed, and otherwise selecting the first input;
- and
- a buffer control module for storing the multiplexer output, the buffer control module adapted for providing the multiplexer output to a DCT module when the final_shift signal indicates the final shift is to be performed, and otherwise providing the multiplexer output to the fifth accumulator input.
An apparatus for simultaneously performing vertical scaling and 4:2:2 to 4:2:0 color format conversion on incoming 4:2:2 color space component data of a video frame, the incoming color space component data having first color space component data, second color space component data, and third color space component data, the apparatus comprising:
- means for adding vertically aligned component data values to produce a sum;
- shifting means for shifting the sum right to average the sum over a number of lines for a given scaling factor;
- and
- multiplexing means for providing the averaged sum to a DCT module.
An apparatus for capturing live video signal data using bufferless data compression, the apparatus comprising:
- means for vertically scaling the live video signal data simultaneous with a 4:2:2 to 4:2:0 color format conversion;
- means for performing a one-dimensional bufferless discrete cosine transform on the scaled live video signal data to create a plurality of scaled DCT coefficients;
- and
- means for Huffman encoding each of the plurality of scaled DCT coefficients.
An apparatus for Huffman encoding a DCT coefficient, comprising:
- means for selecting a DCT coefficient;
- means for generating a pattern for the DCT coefficient;
- and
- means performing a table lookup for the pattern and the DCT coefficient.
An apparatus for compressing a DCT coefficient, comprising:
- means for performing a one-dimensional bufferless discrete cosine transform on live video signal data to create a plurality of scaled DCT coefficients;
- and
- means for Huffman encoding each of the plurality of scaled DCT coefficients.
An apparatus for compressing a DCT coefficient, comprising:
- means for performing a one-dimensional bufferless discrete cosine transform on live video signal data to create a plurality of scaled DCT coefficients;
- means for selecting one of the plurality of scaled DCT coefficients;
- means for generating a pattern code for the selected one of the plurality of scaled DCT coefficients;
- and
- means performing a table lookup for the pattern code and the scaled DCT coefficients.
An apparatus for compressing a plurality of DCT coefficients, comprising:
- means for performing a one-dimensional bufferless discrete cosine transform on live video signal data to create a plurality of scaled DCT coefficients;
- means for generating a pattern code for the plurality of scaled DCT coefficients;
- and
- means performing a table lookup for the pattern code and the scaled DCT coefficients.
Dependencies are inferred from the claim text.