US7825835B2 - Method and system for encoded video compression - Google Patents
Method and system for encoded video compression Download PDFInfo
- Publication number
- US7825835B2 US7825835B2 US12/334,930 US33493008A US7825835B2 US 7825835 B2 US7825835 B2 US 7825835B2 US 33493008 A US33493008 A US 33493008A US 7825835 B2 US7825835 B2 US 7825835B2
- Authority
- US
- United States
- Prior art keywords
- value
- input
- suffix
- prefix
- deriving
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active, expires
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
Definitions
- Data compression is a well known art for reducing the amount of data (e.g., the number of bits) comprising a file or object.
- the use of data compression is popular for the purposes of both transmission and storage.
- data compression is achieved via the use of algorithms which reduce or eliminate unnecessary repetition of data by encoding the information used to represent the data to a smaller, more efficient amount of data.
- VLC Variable length Coding
- CAVLC Context-Adaptive Variable Length Coding
- a prefix code is used for integers that maps positive integers to binary code words.
- most prefix codes for integers assign longer code words to larger integers.
- Such a code can be used to efficiently communicate a message drawn from a set of possible messages, by simply ordering the set of messages according to decreasing probability and then sending the index of the intended message.
- Exp-Golomb Coding is one example of Context Adaptive Variable Length Coding.
- Exp-Golomb codes are variable length codes and are widely used in the Advanced Video Coding (AVC) (e.g., H.264).
- AVC Advanced Video Coding
- decoding Exp-Golomb codes may be somewhat difficult, because the input data length is varied and unpredictable.
- a Exp-Golomb code word consists of a number of “leading bits” followed by another number of value bits used to help specify the value of the particular code word.
- the number of value bits (typically) being one less than that of the leading bits.
- the leading bits of a code word contain a number of leading 0 bits followed by one 1 bit. The number of leading 0 bits is the same as that of the number of value bits for the code word. For shorter code words (e.g., single digit code words), if the leading bit length is 1, there are no leading 0 and value bit for that code word.
- the number of entries in the decoding look-up table may equal 2 ⁇ (longest possible code length). For example, if the maximum code length is 8, then the table may have 2 8 (256) entries, with longer code lengths typically requiring an exponentially larger memory size for the table. Since code lengths are variable and lengths of up to 16 and even 32 bits are typical, the size of the memory required for the look-up table can be substantial, requiring large silicon areas to implement in hardware. In addition, the time required to serially traverse large look-up tables may also be significant, and result in unnecessary conversion delays.
- Embodiments of the present invention are directed to a method and system for performing data compression by encoding an input into Exp-Golomb code without the use of large look-up tables.
- a method is provided which allows for the encoding of unsigned data input into unsigned Exp-Golomb.
- One novel method achieves data compression of unsigned data input via encoding as unsigned Exp-Golomb code.
- the method is achieved by the combination of a relatively small look-up table and a series of arithmetic operations described herein.
- Another novel method provides the ability to compress signed data. This method is achieved without an initial conversion to unsigned syntax values and is likewise achieved through the combination of a relatively small look-up table and a series of arithmetic operations described herein.
- the embodiments described herein advantageously allow fast data conversion using relatively small silicon area.
- the circuit designs also use components that can readily be synthesized, e.g., incrementer, adder/substractor, barrel shifter, etc. . . . Conversions for unsigned and signed input values are described.
- FIG. 1 depicts a flowchart of an exemplary Exp-Golomb encoding process for unsigned input, in accordance with embodiments of the present invention.
- FIG. 2 depicts a block diagram of an exemplary configuration of the logical components comprising a hardware implementation for encoding unsigned Exp-Golomb code, in accordance with embodiments of the present invention.
- FIG. 3 depicts a flowchart of an exemplary Exp-Golomb encoding process for signed input, in accordance with embodiments of the present invention.
- FIG. 4 depicts a block diagram of an exemplary configuration of the logical components comprising a hardware implementation for encoding signed Exp-Golomb code, in accordance with embodiments of the present invention.
- Process 100 may be performed by, for example, a processor in a processing system, such as a video processing device.
- the steps 101 - 109 may also be performed by dedicated logic as described herein, see FIG. 2 .
- unsigned input data is received.
- the input may comprise, for example, an unsigned integer to be encoded as Exp-Golomb code.
- the input is received in binary and corresponds to a syntax element from various blocks of data.
- the input may be a binary value having a length between (and including) 1 and 16 bits, as received using a 16-bit bus, for instance.
- the input received in step 101 is converted into a shifted input.
- Converting the input received comprises, for example, adding a value to the input and logically shifting the sum by a vector.
- the value added to the input is equal to 1 (arithmetically). Adding the value to an input may be performed by, for example, an incrementer.
- the magnitude of the shift vector is 1 in the right direction.
- converting the input may comprise adding 1 to the input and right shifting the resultant sum (in binary) by one order, such that the least significant bit (e.g., the rightmost bit of the input and value sum) is removed. Discarding the least significant bit requires no logical gates.
- the location of the most significant bit of the shifted input having a non-zero (e.g., 1) value is determined. Determining the location of the most significant non-zero bit (“MSB location”) may comprise, for example, serially sweeping through the bits of the shifted data, starting from the most significant bit and progressing to the least significant bit, and detecting the first (most significant) “1” value.
- information is derived from the position of the most significant non-zero bit of the shifted input, as determined in step 105 .
- the information is derived by referencing a look-up table for the value of the location of the most significant non-zero bit.
- the look-up table comprises no more than 32 entries (for 16-bit input).
- the information derived in step 107 includes a prefix, comprising a value having a pre-defined number of bits corresponding to the location of the most significant non-zero bit.
- the prefix is a 33-bit value in which all bits in the value are 0, except the nth bit, which is set to a value of 1, wherein n is the value of 33—the MSB location (for an input having a maximum possible size of 16 bits).
- the MSB location has a value of 3
- n has a value of 30
- the prefix is a 33-bit value in which every bit of the value is 0 except for the 30 th bit, which is set to 1.
- the information derived in step 107 also includes a prefix value, which is a binary value having a variable number of bits.
- the prefix value comprises a 1, left shifted by a magnitude equivalent to the value of the most significant non-zero bit.
- the prefix value for a MSB location having a value of 3 would be equal to 1000 (1 left-shifted by an order of 3).
- the information derived in step 107 also includes a code length, comprising the length of the Exp-Golomb encoded bit string generated by the process 100 .
- the code length is derived by multiplying the MSB location value by 2, and adding 1 to the resultant product.
- information derived in step 107 may also include a suffix-shift value.
- the suffix-shift value may be derived by subtracting the code length from the number 33 .
- the information derived in step 107 is arithmetically encoded to generate the unsigned output.
- the information is arithmetically encoded by deriving a suffix (comprising a value having a pre-defined number of bits), and performing a bitwise OR on the value of the suffix with the value of the prefix derived in step 107 .
- the suffix is derived by subtracting the prefix value derived in step 107 from the sum of the input received in step 101 and the value (e.g., 1) added in step 103 .
- the suffix is first converted into a final suffix value by barrel left-shifting the suffix by a suffix-shift value derived in step 107 prior to executing the bitwise OR with the value of the prefix derived in step 107 .
- the resulting string of data (e.g., a 33-bit string) is output and, combined with the code length derived in step 107 , corresponds to an unsigned Exp-Golomb encoding for the input received in step 101 .
- the first m bits of the bit string output may be combined (e.g., appended) with a bit stream of Exp-Golomb encoding comprising the compressed file or object, wherein m is equal to the code length.
- data compression using Exp-Golomb encoding may be achieved with a look-up table used for reference having a greatly reduced size, resulting in savings in material cost and delay required to serially traverse the look-up table for reference, and allowing a smaller hardware platform in which the encoding may be performed.
- Configuration 200 may, for example, comprise an exemplary hardware implementation for the process 100 of FIG. 2 .
- configuration 200 of FIG. 2 includes an incrementer circuit 201 , a look-up table memory 205 , a subtractor circuit 207 , a barrel shifter circuit 209 and a logic gate 211 .
- the bit sizes of the input and output buses should be understood as for exemplary purposes only.
- the process for encoding input as Exp-Golomb code includes modifying the input, as described with reference to step 101 of FIG. 1 .
- the input is a 16-bit value. Modifying the input may include, for example, adding a pre-defined value to the input and performing a right shift of the sum of the input and the value.
- the pre-defined value is 1, and a adding the value (1) to the input is performed by incrementer 201 .
- Incrementer 201 may be implemented as, for example, a digital circuit (e.g., an adder).
- the incremented value of the input is right shifted by an order of 1, thus removing the least significant bit of the incremented value.
- the removal of the least significant bit may be performed arithmetically (e.g., by an arithmetic logic unit) and require no dedicated logic circuit to perform.
- information corresponding to the MSB location of a shifted input may be derived by referencing the MSB location in a look-up table memory 205 .
- the look-up table 205 corresponds to the maximum length of the input.
- a look-up table 205 for an input with a maximum length of 16 bits may comprise no more than 32 entries, with each entry comprising information sufficient to derive a prefix, prefix_value, etc. . . . as described with reference to step 107 .
- the information derived from look-up table 205 may be used to arithmetically encode the input into unsigned Exp-Golomb code by performing a series of arithmetic and logic operations.
- arithmetically encoding the input into unsigned Exp-Golomb code includes deriving a suffix, barrel shifting the suffix, and performing a bitwise OR on the barrel shifted suffix with a prefix derived from look-up table 205 .
- a suffix is derived by subtracting the input incremented in incrementer 201 with a prefix-value derived from look-up table 205 .
- Subtracting the input may be performed by, for example, subtractor 207 .
- subtractor 207 is a digital circuit.
- the suffix is barrel shifted by the number of bits equivalent to the suffix-shift value (obtained from look-up table 205 ). Barrel-shifting the suffix by the suffix-shift value may be performed in, for example, barrel shifter 209 .
- barrel shifter 209 may be implemented as a digital circuit comprising a plurality of multiplexers.
- a bitwise OR is then performed on the resulting final suffix obtained from the barrel shifter 209 and a prefix derived from look-up table 205 .
- the bitwise OR may be performed in, for example, a logic gate in a digital circuit.
- the resultant output comprises an unsigned Exp-Golomb code up to 33 bits in length having a length corresponding to the input.
- a code length value on the 5-bit output bus generated from look-up table 205 distinguishes the relevant bits in the unsigned Exp-Golomb code.
- Process 300 may be performed by, for example, a processor in a processing system, such as a video processing device, or by dedicated hardware, such as FIG. 4 .
- signed input value is received.
- the input may comprise, for example, a signed integer to be encoded as Exp-Golomb code.
- the input received a signed integer and corresponds to a syntax element from various blocks of data.
- the input may have a length between (and including) 1 and 16 bits.
- the input received in step 301 is converted into the absolute value of the input.
- Converting the input received into an absolute value may comprise, for example, converting the input into the two's complement of the binary value of the input. Converting the input into the two's complement of the binary value of the input is performed by inverting the binary value (via a bitwise NOT operation), and adding the value of 1 to the resultant value. Adding the value of 1 may be performed in, for example, an incrementer.
- the location of the most significant bit of the absolute value (e.g., two's complement) of the input having a non-zero (e.g., 1) value is determined. Determining the location of the most significant non-zero bit (“MSB location”) may comprise, for example, serially sweeping through the bits of the shifted data, starting from the most significant bit and progressing to the least significant bit, and detecting the first (most significant) “1” value.
- step 307 information is derived from the position of the most significant non-zero bit of the absolute value of the input, as determined in step 305 .
- the information is derived by referencing a look-up table for the value of the location of the most significant non-zero bit.
- the look-up table comprises no more than 32 entries (for 16-bit input). By requiring a look-up table with no more than 32 entries the size of the one or more silicon areas required to implement the look-up table in hardware is greatly reduced, relative to conventional techniques which include look-up tables having 2 16 (65,536) or 2 32 (4,294,967,296) entries.
- the information derived in step 307 includes a prefix, comprising a value having a pre-defined number of bits corresponding to the location of the most significant non-zero bit.
- the prefix is a 33-bit value in which all bits in the value are 0, except the nth bit, which is set to a value of 1, wherein n is the value of 33—the MSB location (for input having a maximum possible size of 16 bits).
- the MSB location has a value of 3
- n has a value of 30
- the prefix is a 33-bit value in which every bit of the value is 0 except for the 30 th bit, which is set to 1.
- the information derived in step 307 also includes a prefix value, which is a binary value having a variable number of bits.
- the prefix value comprises a 1, left shifted by a magnitude equivalent to the value of the most significant non-zero bit.
- the prefix value for a MSB location having a value of 3 would be equal to 1000 (1 left-shifted by an order of 3).
- the prefix value may be further modified to derive a corrected prefix value.
- deriving the corrected prefix value comprises adding the prefix value to the value of the 16 th bit of the input, and logically ORing the resultant sum to the inverse (e.g., the resultant value after performing a NOT operation) of the input received in step 301 .
- the 15 th bit is equal to 1, or all the bits in data_in are 0, then 1 is added to the prefix value. Otherwise, the corrected prefix value has the same value as the prefix value.
- the information derived in step 307 also includes a code length, comprising the length of the Exp-Golomb encoded bit string generated by the process 300 .
- the code length is derived by multiplying the MSB location value by 2, and adding 1 to the resultant product.
- information derived in step 307 may also include a suffix-shift value.
- the suffix-shift value may be derived by subtracting the code length from the number 33 .
- the information derived in step 307 is arithmetically encoded to generate the signed output.
- the information is arithmetically encoded by deriving a suffix (comprising a value having a pre-defined number of bits), and performing a bitwise OR on the value of the suffix with the value of the prefix derived in step 307 .
- the suffix is derived by subtracting the corrected prefix value derived in step 307 from the sum of the absolute value of the input received in step 301 and the value (e.g., 1) added in step 303 .
- the suffix is first converted into a final suffix value by barrel left-shifting the suffix by a suffix-shift value derived in step 307 prior to executing the bitwise OR with the value of the prefix derived in step 307 .
- the resulting string of data (e.g., a 33-bit string) is output and, combined with the code length derived in step 307 , corresponds to a signed Exp-Golomb encoding for the input received in step 301 .
- the first m bits of the bit string output may be combined (e.g., appended) with a bit stream of Exp-Golomb encoding comprising the compressed file or object, wherein m is equal to the code length.
- data compressions achieved via Exp-Golomb Code may performed for signed input directly, without an intervening conversion to unsigned syntax values that may require additional components or consume additional processing time to perform.
- Configuration 400 may, for example, comprise an exemplary hardware implementation for the process 300 .
- configuration 400 includes an incrementer circuit 401 , a look-up table memory 405 , a subtractor circuit 407 , a barrel shifter circuit 409 and a logic gate 211 .
- the process for encoding input as Exp-Golomb code includes obtaining the absolute value of the input as a two's complement, as described with reference to step 301 of FIG. 3 .
- the bit size of the input and output buses are exemplary.
- Obtaining the absolute value of a 16-bit input value may include, for example, logically inverting the value of the input and adding a pre-defined value to the input.
- the pre-defined value is 1, and adding the value (1) to the input is performed by incrementer 401 .
- Incrementer 401 may be implemented as, for example, a digital circuit (e.g., an adder).
- the absolute value of the input is left shifted by an order of 1, thus removing the least significant bit of the incremented value.
- left shifting the absolute value of the input may be performed in, for example, a digital circuit.
- information corresponding to the MSB location of a shifted input may be derived by referencing the MSB location in a look-up table 405 .
- the look-up table 405 corresponds to the look-up table memory 205 , as described with reference to FIG. 2 .
- the information derived from look-up table 405 may be used to arithmetically encode the input into signed Exp-Golomb code by performing a series of arithmetic and logic operations.
- arithmetically encoding the input into signed Exp-Golomb code includes deriving a suffix, barrel shifting the suffix, and performing a bitwise OR on the barrel shifted suffix with a prefix derived from look-up table 405 .
- a suffix is derived by subtracting the input incremented in incrementer 401 with a corrected prefix-value derived from look-up table 405 .
- the corrected prefix-value is derived from a prefix value from the look-up table 405 and the input data (data_in) by the equation: prefix_value+(data_in[15] ⁇ (!(
- the suffix is barrel shifted by the number of bits equivalent to the suffix-shift value (obtained from look-up table 405 ). Barrel-shifting the suffix by the suffix-shift value may be performed in, for example, barrel shifter 409 .
- barrel shifter 409 may be implemented as a digital circuit comprising a plurality of multiplexers.
- a bitwise OR is then performed on the resulting final suffix obtained from the barrel shifter 409 and a prefix derived from look-up table 405 .
- the bitwise OR may be performed in, for example, a logic gate in a digital circuit.
- the resultant output comprises a signed Exp-Golomb code of up to 33 bits having a length corresponding to the input.
- a 5-bit code length generated from look-up table 405 distinguishes the relevant bits in the signed Exp-Golomb code.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Description
TABLE I | ||
assign data_in_plus1 = data_in +1; | ||
assign data_in_plus1_div2 = data_in_plus1 >> 1; | ||
always @ (data_in_plus1_div2) begin | ||
if (data_in_plus1_div2[15]) begin | ||
size_lz = 16; | ||
prefix = 000000000000000010000000000000000; | ||
prefix_value = (1 << 16); | ||
end | ||
else if (data_in_plus1_div2[14]) begin | ||
size_lz = 15; | ||
prefix =000000000000000100000000000000000; | ||
prefix_value = (1 << 15); | ||
end | ||
else if (data_in_plus1_div2[13]) begin | ||
size_lz = 14; | ||
prefix =000000000000001000000000000000000; | ||
prefix_value = (1 << 14); | ||
end | ||
else if (data_in_plus1_div2[12]) begin | ||
size_lz = 13; | ||
prefix =000000000000010000000000000000000; | ||
prefix_value = (1 << 13); | ||
end | ||
else if (data_in_plus1_div2[11]) begin | ||
size_lz = 12; | ||
prefix =000000000000100000000000000000000; | ||
prefix_value = (1 << 12); | ||
end | ||
else if (data_in_plus1_div2[10]) begin | ||
size_lz = 11; | ||
prefix =000000000001000000000000000000000; | ||
prefix_value = (1 << 11); | ||
end | ||
else if (data_in_plus1_div2[9]) begin | ||
size_lz = 10; | ||
prefix =000000000010000000000000000000000; | ||
prefix_value = (1 << 10); | ||
end | ||
else if (data_in_plus1_div2[8]) begin | ||
size_lz = 9; | ||
prefix =000000000100000000000000000000000; | ||
prefix_value = (1 << 9); | ||
end | ||
else if (data_in_plus1_div2[7]) begin | ||
size_lz = 8; | ||
prefix =000000001000000000000000000000000; | ||
prefix_value = (1 << 8); | ||
end | ||
else if (data_in_plus1_div2[6]) begin | ||
size_lz = 7; | ||
prefix =000000010000000000000000000000000; | ||
prefix_value = (1 << 7); | ||
end | ||
else if (data_in_plus1_div2[5]) begin | ||
size_lz = 6; | ||
prefix =000000100000000000000000000000000; | ||
prefix_value = (1 << 6); | ||
end | ||
else if (data_in_plus1_div2[4]) begin | ||
size_lz = 5; | ||
prefix =000001000000000000000000000000000; | ||
prefix_value = (1 << 5); | ||
end | ||
else if (data_in_plus1_div2[3]) begin | ||
size_lz = 4; | ||
prefix =000010000000000000000000000000000; | ||
prefix_value = (1 << 4); | ||
end | ||
else if (data_in_plus1_div2[2]) begin | ||
size_lz = 3; | ||
prefix =000100000000000000000000000000000; | ||
prefix_value = (1 << 3); | ||
end | ||
else if (data_in_plus1_div2[1]) begin | ||
size_lz = 2; | ||
prefix =001000000000000000000000000000000; | ||
prefix_value = (1 << 2); | ||
end | ||
else if (data_in_plus1_div2[0]) begin | ||
size_lz = 1; | ||
prefix =010000000000000000000000000000000; | ||
prefix_value = (1 << 1); | ||
end | ||
else begin | ||
size_lz = 0; | ||
prefix = 100000000000000000000000000000000; | ||
prefix_value = 1 << 0); | ||
end | ||
end | ||
assign suffix = data_in_plus1 − prefix_value; | ||
assign size_lz_m2 = (size_lz << 1); | ||
assign codelength = (size_lz_m2 + 1); | ||
assign suffix_shift = (6 − codelength); | ||
assign suffix_shifted = suffix << suffix_shift; | ||
assign code_n_rev = prefix | suffix_shifted; | ||
assign code = code_n_rev; | ||
Exemplary Unsigned Exp-Golomb Encoding Hardware Configuration
TABLE II | ||
assign data_abs = data_in[15] ? ((~data_in) + 1) : data_in; | ||
always @ (data_abs) begin | ||
if (data_abs[15]) begin | ||
size_lz = 16; | ||
prefix = 000000000000000030000000000000000; | ||
prefix_value = (1 << 16); | ||
end | ||
else if (data_abs[14]) begin | ||
size_lz = 15; | ||
prefix =000000000000000300000000000000000; | ||
prefix_value = (1 << 15); | ||
end | ||
else if (data_abs[13]) begin | ||
size_lz = 14; | ||
prefix =000000000000003000000000000000000; | ||
prefix_value = (1 << 14); | ||
end | ||
else if (data_abs[12]) begin | ||
size_lz = 13; | ||
prefix =000000000000030000000000000000000; | ||
prefix_value = (1 << 13); | ||
end | ||
else if (data_abs[11]) begin | ||
size_lz = 12; | ||
prefix =000000000000300000000000000000000; | ||
prefix_value = (1 << 12); | ||
end | ||
else if (data_abs[30]) begin | ||
size_lz = 11; | ||
prefix =000000000003000000000000000000000; | ||
prefix_value = (1 << 11); | ||
end | ||
else if (data_abs[9]) begin | ||
size_lz = 30; | ||
prefix =000000000030000000000000000000000; | ||
prefix_value = (1 << 30); | ||
end | ||
else if (data_abs[8]) begin | ||
size_lz = 9; | ||
prefix =000000000300000000000000000000000; | ||
prefix_value = (1 << 9); | ||
end | ||
else if (data_abs[7]) begin | ||
size_lz = 8; | ||
prefix =000000003000000000000000000000000; | ||
prefix_value = (1 << 8); | ||
end | ||
else if (data_abs[6]) begin | ||
size_lz = 7; | ||
prefix =000000030000000000000000000000000; | ||
prefix_value = (1 << 7); | ||
end | ||
else if (data_abs[5]) begin | ||
size_lz = 6; | ||
prefix =000000300000000000000000000000000; | ||
prefix_value = (1 << 6); | ||
end | ||
else if (data_abs[4]) begin | ||
size_lz = 5; | ||
prefix =000003000000000000000000000000000; | ||
prefix_value = (1 << 5); | ||
end | ||
else if (data_abs[3]) begin | ||
size_lz = 4; | ||
prefix =000030000000000000000000000000000; | ||
prefix_value = (1 << 4); | ||
end | ||
else if (data_abs[2]) begin | ||
size_lz = 3; | ||
prefix =000300000000000000000000000000000; | ||
prefix_value = (1 << 3); | ||
end | ||
else if (data_abs[1]) begin | ||
size_lz = 2; | ||
prefix =003000000000000000000000000000000; | ||
prefix_value = (1 << 2); | ||
end | ||
else if (data_abs[0]) begin | ||
size_lz = 1; | ||
prefix =030000000000000000000000000000000; | ||
prefix_value = (1 << 1); | ||
end | ||
else begin | ||
size_lz = 0; | ||
prefix = 300000000000000000000000000000000; | ||
prefix_value = 1 << 0); | ||
end | ||
end | ||
assign suffix = (data_abs << 1) − prefix_value + (data_in[15] ∥ | ||
(!(|data_in))); | ||
assign codelength = (size_lz * 2 + 1); | ||
assign suffix_shift = (6 − codelength); | ||
assign suffix_shifted = suffix << suffix_shift; | ||
assign code_n_rev = prefix | suffix_shifted; | ||
assign code = code_n_rev; | ||
Exemplary Signed Exp-Golomb Encoding Hardware Configuration
prefix_value+(data_in[15]∥(!(|data_in))).
.Subtracting the input may be performed by, for example,
Claims (19)
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/334,930 US7825835B2 (en) | 2008-12-15 | 2008-12-15 | Method and system for encoded video compression |
JP2009266428A JP4829336B2 (en) | 2008-12-15 | 2009-11-24 | Encoded video compression method and system |
TW098139887A TWI416959B (en) | 2008-12-15 | 2009-11-24 | Method and system for encoded video compression |
KR1020090123918A KR101099950B1 (en) | 2008-12-15 | 2009-12-14 | Method and system for encoded video compression |
CN2009102603182A CN101754020B (en) | 2008-12-15 | 2009-12-15 | Method and system for encoded video compression |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/334,930 US7825835B2 (en) | 2008-12-15 | 2008-12-15 | Method and system for encoded video compression |
Publications (2)
Publication Number | Publication Date |
---|---|
US20100149004A1 US20100149004A1 (en) | 2010-06-17 |
US7825835B2 true US7825835B2 (en) | 2010-11-02 |
Family
ID=42239840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/334,930 Active 2029-01-06 US7825835B2 (en) | 2008-12-15 | 2008-12-15 | Method and system for encoded video compression |
Country Status (5)
Country | Link |
---|---|
US (1) | US7825835B2 (en) |
JP (1) | JP4829336B2 (en) |
KR (1) | KR101099950B1 (en) |
CN (1) | CN101754020B (en) |
TW (1) | TWI416959B (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100318507A1 (en) * | 2009-03-20 | 2010-12-16 | Ad-Vantage Networks, Llc | Methods and systems for searching, selecting, and displaying content |
US20180316938A1 (en) * | 2017-04-26 | 2018-11-01 | Canon Kabushiki Kaisha | Method and apparatus for k-th order exp-golomb binarization |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102075467B (en) * | 2010-12-17 | 2014-10-22 | 中兴通讯股份有限公司 | Inphase quadrature signal intelligence quotient (IQ) data compression method and device |
CN103905054B (en) * | 2012-12-25 | 2017-05-24 | 展讯通信(上海)有限公司 | Code table establishing method and device, and encoding and decoding method and device |
US9215464B2 (en) * | 2013-09-19 | 2015-12-15 | Blackberry Limited | Coding position data for the last non-zero transform coefficient in a coefficient group |
CN104244003B (en) * | 2014-08-18 | 2017-08-15 | 北京君正集成电路股份有限公司 | A kind of method and device for determining Motion Vector Cost |
US9344114B1 (en) | 2015-05-11 | 2016-05-17 | Qualcomm Incorporated | Compressed caching in a virtual memory system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060098731A1 (en) * | 2004-11-05 | 2006-05-11 | Samsung Electronics Co., Ltd. | Digital video data transmission system and method |
US20080137738A1 (en) * | 2006-12-07 | 2008-06-12 | Wiquest Communications, Inc. | Line-based video compression |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7170924B2 (en) * | 2001-05-17 | 2007-01-30 | Qualcomm, Inc. | System and method for adjusting combiner weights using an adaptive algorithm in wireless communications system |
CN100542262C (en) * | 2004-01-30 | 2009-09-16 | 松下电器产业株式会社 | Inverse quantization method picture decoding method and equipment and processor |
JP2007295157A (en) * | 2006-04-24 | 2007-11-08 | Matsushita Electric Ind Co Ltd | Unit, method and program for data coding, and information recording medium having recorded data coding program |
KR100809301B1 (en) * | 2006-07-20 | 2008-03-04 | 삼성전자주식회사 | Method and apparatus for entropy encoding/decoding |
CN101175210B (en) * | 2006-10-30 | 2010-08-11 | 中国科学院计算技术研究所 | Entropy decoding method and device used for decoding video estimation residual error coefficient |
-
2008
- 2008-12-15 US US12/334,930 patent/US7825835B2/en active Active
-
2009
- 2009-11-24 JP JP2009266428A patent/JP4829336B2/en active Active
- 2009-11-24 TW TW098139887A patent/TWI416959B/en active
- 2009-12-14 KR KR1020090123918A patent/KR101099950B1/en active IP Right Grant
- 2009-12-15 CN CN2009102603182A patent/CN101754020B/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060098731A1 (en) * | 2004-11-05 | 2006-05-11 | Samsung Electronics Co., Ltd. | Digital video data transmission system and method |
US20080137738A1 (en) * | 2006-12-07 | 2008-06-12 | Wiquest Communications, Inc. | Line-based video compression |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100318507A1 (en) * | 2009-03-20 | 2010-12-16 | Ad-Vantage Networks, Llc | Methods and systems for searching, selecting, and displaying content |
US20100318426A1 (en) * | 2009-03-20 | 2010-12-16 | Ad-Vantage Networks, Llc | Methods and systems for processing and displaying content |
US8234275B2 (en) | 2009-03-20 | 2012-07-31 | Ad-Vantage Networks, Llc | Methods and systems for searching, selecting, and displaying content |
US8386321B2 (en) | 2009-03-20 | 2013-02-26 | Ad-Vantage Networks, Llc | Methods and systems for searching, selecting, and displaying content |
US8554630B2 (en) | 2009-03-20 | 2013-10-08 | Ad-Vantage Networks, Llc | Methods and systems for processing and displaying content |
US8898161B2 (en) | 2009-03-20 | 2014-11-25 | Ad-Vantage Networks, Inc. | Methods and systems for searching, selecting, and displaying content |
US9996616B2 (en) | 2009-03-20 | 2018-06-12 | Mediashift Acquisition, Inc. | Methods and systems for searching, selecting, and displaying content |
US20180316938A1 (en) * | 2017-04-26 | 2018-11-01 | Canon Kabushiki Kaisha | Method and apparatus for k-th order exp-golomb binarization |
Also Published As
Publication number | Publication date |
---|---|
CN101754020A (en) | 2010-06-23 |
KR101099950B1 (en) | 2011-12-28 |
TW201028013A (en) | 2010-07-16 |
KR20100069597A (en) | 2010-06-24 |
US20100149004A1 (en) | 2010-06-17 |
JP4829336B2 (en) | 2011-12-07 |
TWI416959B (en) | 2013-11-21 |
CN101754020B (en) | 2013-03-27 |
JP2010141884A (en) | 2010-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7825835B2 (en) | Method and system for encoded video compression | |
US7119723B1 (en) | Decoding variable length codes while using optimal resources | |
US7132963B2 (en) | Methods and apparatus for processing variable length coded data | |
US6587057B2 (en) | High performance memory efficient variable-length coding decoder | |
US6798833B2 (en) | Video frame compression/decompression hardware system | |
US20090096643A1 (en) | System and Method for Context-Based Adaptive Binary Arithematic Encoding and Decoding | |
GB2530312A (en) | Data compression | |
JP2006054865A (en) | Binary arithmetic decoding apparatus and methods using pipelined structure | |
GB2530311A (en) | Data compression | |
US20100127904A1 (en) | Implementation of a rapid arithmetic binary decoding system of a suffix length | |
US7528749B2 (en) | Decoding apparatus and decoding method | |
US6313767B1 (en) | Decoding apparatus and method | |
CN111818335B (en) | Entropy coding method and device and electronic equipment | |
CN110545437B (en) | Coefficient encoding method, coefficient decoding method, electronic device, and medium | |
US7728744B2 (en) | Variable length decoder system and method | |
CN112449191A (en) | Method for compressing a plurality of images, method and apparatus for decompressing an image | |
KR101151352B1 (en) | Context-based adaptive variable length coding decoder for h.264/avc | |
EP3149947B1 (en) | Dedicated arithmetic encoding instruction | |
Zhao et al. | A 610 Mbin/s CABAC decoder for H. 265/HEVC level 6.1 applications | |
US20080137974A1 (en) | JBIG coding and decoding system | |
US8854233B2 (en) | Method and system for de-binarization | |
GB2463157A (en) | Method and apparatus for vlc encoding in a video encoding system | |
US20180054626A1 (en) | Decoding method and decoding apparatus for avs system | |
JP2013176157A (en) | Image compression apparatus | |
Czyszczon et al. | Real-time implementation of JPEG encoder/decoder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: NVIDIA CORPORATION,CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:RADHAKRISHNAN, JAIJITH K.;REEL/FRAME:021979/0827 Effective date: 20081215 Owner name: NVIDIA CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:RADHAKRISHNAN, JAIJITH K.;REEL/FRAME:021979/0827 Effective date: 20081215 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552) Year of fee payment: 8 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 12 |