WO2010077148A1 - Method, apparatus and computer readable medium for calculating run and level representations of quantized transform coefficients representing pixel values included in a block of a video picture - Google Patents

Method, apparatus and computer readable medium for calculating run and level representations of quantized transform coefficients representing pixel values included in a block of a video picture Download PDF

Info

Publication number
WO2010077148A1
WO2010077148A1 PCT/NO2009/000447 NO2009000447W WO2010077148A1 WO 2010077148 A1 WO2010077148 A1 WO 2010077148A1 NO 2009000447 W NO2009000447 W NO 2009000447W WO 2010077148 A1 WO2010077148 A1 WO 2010077148A1
Authority
WO
WIPO (PCT)
Prior art keywords
positions
transform coefficients
quantized transform
run
array
Prior art date
Application number
PCT/NO2009/000447
Other languages
French (fr)
Inventor
Lars Petter Endresen
Original Assignee
Tandberg Telecom As
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tandberg Telecom As filed Critical Tandberg Telecom As
Priority to CN200980153613.6A priority Critical patent/CN102273204B/en
Priority to EP09836441A priority patent/EP2384581A4/en
Publication of WO2010077148A1 publication Critical patent/WO2010077148A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods 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
    • H04N19/93Run-length coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding

Definitions

  • the present disclosure relates to an implementation of entropy coding/decoding of transform coefficient data of video compression systems in computer devices or systems.
  • the prediction process reduces the amount of bits required for each picture in a video sequence to be transferred.
  • the process takes advantage of the similarity of parts of the sequence with other parts of the sequence. Since the predictor part is known to both encoder and decoder, only the difference has to be transferred. This difference typically requires much less capacity for its representation.
  • the prediction is mainlyo based on vectors representing movements.
  • the prediction process is conventionally performed on square block sizes (e.g., 16x16 pixels). Note that in some cases, predictions of pixels based on adjacent pixels in the same picture, rather than pixels of preceding pictures, are used. This is referred to as intra prediction (not to be confused with inter prediction). s
  • the residual represented as a block of data e.g., 4x4 pixels
  • Entropy coding is a special form of lossless data compression. Entropy coding involves arranging the image components in a "zigzag" order employing a run-length encoding (RLE) algorithm that groups similar frequencies together, inserting length coding zeros, and then using Huffman coding on what is left.
  • RLE run-length encoding
  • the DCT coefficients for a block are reordered in order to group together non-zero coefficients in an array, enabling efficient representation of the remaining zero-valued coefficients.
  • Figure 1 shows the zigzag reordering path 100 (i.e., scan order).
  • the pattern of the order of the zigzag scan 100 is configured according to the probability of non-zero coefficients in each positions. Due to the characteristics of the preceding DCT, the probability of non-zero coefficients in a block decreases in the downward right diagonal direction of a DCT block.
  • the non-zero coefficients generally tend to concentrate in the first positions of the array.
  • the output of the reordering process includes a one-dimensional array that contains one or more clusters of non-zero coefficients near the start, followed by strings of zero coefficients. Due to the large number of zero values, the array is further represented as a series of (run, level) pairs, where "run” indicates the number of zeros preceding a non-zero coefficient, and "level” indicates the magnitude of the non-zero coefficient.
  • the input array 16, 0, 0, -3, 5, 6, 0, 0, 0, 0, -7 will have the following corresponding run-level values: (0,16), (2,-3), (0,5), (0,6), (4,-7).
  • the present disclosure describes a method, system, and computer readable medium.
  • a method for calculating run and level representations of quantized transform coefficients representing pixel values included in a block of a video picture including packing, at a video processing apparatus, each quantized transform coefficients in a value interval [Max, MinJ by setting all quantized transform coefficients greater than Max equal to Max, and all quantized transform coefficients less than Min equal to Min; reordering, at the video processing apparatus, the quantized transform coefficients according to a predefined order depending on respective positions in the block resulting in an array C of reordered quantized transform coefficients; masking, at the video processing apparatus, C by generating an array M containing ones in positions corresponding to positions of C having non-zero values, and zeros in positions corresponding to positions of C having zero values; generating, at the video processing apparatus, for each position containing a one in M, a run and a level representation by setting the level value equal to an occurring value in a corresponding position of
  • Figure 1 illustrates a conventional zigzag pattern used to order the transform coefficients before entropy coding
  • Figure 2 is a flow chart illustrating a conventional implementation of run-level coding
  • Figure 3 is a flow chart illustrating an embodiment of run-level coding of the present disclosure
  • Figure 4 is an example of a bit mask of transform coefficients during different steps of the present disclosure.
  • Figure 5 illustrates a computer system upon which an embodiment of the present disclosure may be implemented.
  • Figure 2 is a flow chart illustrating how the run-level code, according to Moving Picture Experts Group (MPEG-4) and H.264, is calculated in a conventional implementation.
  • the Run variable and the position index (I) are set to zero 203.
  • the quantized coefficients are reordered 205 to a one-dimensional array according to the aforementioned zigzag pattern 100 shown in Figure 1.
  • the process then enters into a loop for parsing the array to determine the run-level values. First, it is checked whether - the number of positions in the array is exceeded (i.e., I>16) 207. If not, it is then checked whether current position in the array contains a zero 209.
  • both the Run variable and the position index (I) are incremented, at steps 217 and 219, and the process proceeds to the start of the loop. If the current position contains a non-zero value, the current Run variable and the value of the current position are stored as the Run-Level value, at steps 211 and 213. The Run variable is then reset 215, before both the Run variable and the position index (I) are incremented, at steps 217 and 219, and the process proceeds to the start of the loop. The process ends whenever the position index (I) exceeds the maximum size of the array, which, in the example illustrated in Figure 2, is 16.
  • Figure 3 is a flow chart illustrating an embodiment according to the present disclosure. According to this embodiment, bit-masks and bit-scan instructions, which make it possible to efficiently jump over all the zero valued coefficients, are used.
  • bit-masks and bit-scan instructions which make it possible to efficiently jump over all the zero valued coefficients.
  • the transform coefficients in the block are quantized at step 301. In the example of Figure 3, there are sixteen (16) coefficients that are stored in the vector C, as shown in 401 of Figure 4.
  • step 303 all the quantized coefficients are packed.
  • the packing 303 is done by the C++ instruction PACKUSWB, which transforms sixteen (16) signed words to unsigned integers and saturates, as shown in 403 of Figure 4.
  • PACKUSWB transforms sixteen (16) signed words to unsigned integers and saturates, as shown in 403 of Figure 4.
  • the coefficient is set to respectively Max or Min values of the range, which are 255 and 0 in this example.
  • the size of the memory used to store each coefficient is reduced from two (2) bytes, which is usually the amount of memory needed to store each, coefficient, to one (1) byte.
  • the packing step 303 enables the reordering 305 of the coefficients to be carried out in one function, without having to parse a loop sixteen (16) times. This may be achieved by using the C++ function PSHUFB. This function efficiently shuffles precisely sixteen (16) bytes in any order.
  • An example of the reordering of C using the PSHUFB instruction is shown in 405 of Figure 4. hi the example of Figure 3, the input is the sixteen (16) coefficients and the zigzag order 100 illustrated in Figure 1.
  • the next step is to mask 307 the quantized, packed, and reordered coefficients.
  • Masking is accomplished by applying the C++ functions PCMPGTB and PMOVMSKB.
  • the PCMPGTB function fills a whole byte of ones (1 ' s) in the position of non-zero values, and leaves the zeros (O's) unchanged in the position of zeros, shown in 409 of Figure 4.
  • a byte is equal to 8 bits, thus eight (8) ones (1 's), in binary, is the maximum capacity of one byte.
  • the hexadecimal "ff ' represents eight (8) ones (1 's) in binary (i.e., an entire byte, as noted above).
  • the PMOVMSKB function creates a 16-bit mask (i.e., Mask of C) from the most significant bits of sixteen (16) bytes, as shown in 411 of Figure 4.
  • Mask of C a 16-bit mask
  • M 16-bit array
  • the C++ function BSF can be used to calculate the index of the first non-zero value of C, at step 311.
  • BSF Bit Scan Forward, scans for the first bit that equals one (1) and stores the index of the first set bit into a register.
  • BSF returns the bit index of the least significant bit of an integer (i.e., in the case of M, the first position of a one (1) starting from the right-hand side).
  • the index returned by BSF at step 311, when applied on M, is equal to the "run” and is used directly as look-up in the C array to determine the "level.” This is possible since C is already shuffled using the PSHUFB instruction.
  • the Run-value as indicated by the BSF function, is then stored, at step 315, and after looking up the value localized at that position in the C array, is stored as the level value, at step 313.
  • M is finally shifted to the right "Run+1" times to clear the index bit from M and prepare M for the next iteration in the loop. Accordingly, the content of M corresponding to run-level values already calculated is removed from M 5 and the loop can be applied in the same way to calculate the remaining run-level values (i.e., by scanning M again, at step 311, using the BSF function, which looks for the next nonzero value of M). Since all the zeros (O's) are being jumped over by effectively using the BSF instruction, only non-zero coefficient runs are required to calculate all "level" and "run” values.
  • the number of loops to be parsed in implementing the entropy coding may therefore be reduced, since the probability of occurrence of many zeros (O's) in a block of quantized coefficients is high.
  • the present disclosure avoids an indirect table look-up (i.e., pointer chasing) to determine the "level,” and uses a single efficient BSF instruction to calculate the "run.”
  • the present disclosure provides run-level encoding with non-zero coefficient runs. For example, if five (5) values in C are non-zero only five (5) runs through the run-level encoding loop is needed. Thus, the checking of zero values of C is avoided, which otherwise may have lead to computationally costly branch mispredictions.
  • FIG. 5 illustrates a video processing apparatus 1201 upon which the method for calculating run and level representations, according to the present disclosure, may be implemented.
  • the computer system 1201 also includes a disk controller 1206 coupled to the bus 1202 to control one or more storage devices for storing information and instructions, such as a magnetic hard disk 1207, and a removable media drive 1208 (e.g., floppy disk drive, read-only compact disc drive, read/write compact disc drive, compact disc jukebox, tape drive, and removable magneto-optical drive).
  • the storage devices maybe added to the computer system 1201 using an appropriate device interface (e.g., small computer system interface (SCSI), integrated device electronics (IDE), enhanced-IDE (E-IDE), direct memory access (DMA), or ultra-DMA).
  • SCSI small computer system interface
  • IDE integrated device electronics
  • E-IDE enhanced-IDE
  • DMA direct memory access
  • ultra-DMA ultra-DMA
  • the computer system 1201 may also include special purpose logic devices (e.g., application* specific integrated circuits (ASICs)) or configurable logic devices (e.g., simple programmable logic devices (SPLDs), complex programmable logic devices (CPLDs), and field programmable gate arrays (FPGAs)).
  • ASICs application* specific integrated circuits
  • SPLDs simple programmable logic devices
  • CPLDs complex programmable logic devices
  • FPGAs field programmable gate arrays
  • the computer system 1201 may also include a display controller 1209 coupled to the bus 1202 to control a display 1210, such as a touch panel ' display or a liquido crystal display (LCD), for displaying information to a computer user.
  • a display 1210 such as a touch panel ' display or a liquido crystal display (LCD)
  • the GUI 308, for example, may be displayed on the display 1210.
  • the computer system includes input devices, such as a keyboard 1211 and a pointing device 1212, for interacting with a computer user and providing information to the processor 1203.
  • the pointing device 1212 for example, may be a mouse, a trackball, a finger for a touch screen sensor, or as pointing stick for communicating direction information and command selections to the processor 1203 and for controlling cursor movement on the display 1210.
  • a printer may provide printed listings of data stored and/or generated by the computer system 1201.
  • the computer system 1201 performs a portion or all of the processing steps ofo the present disclosure in response to the processor 1203 executing one or more sequences of one or more instructions contained in a memory, such as the main memory 1204. Such instructions may be read into the main memory 1204 from another computer readable medium, such as a hard disk 1207 or a removable media drive 1208.
  • processors in a multi-processing arrangement may also bes employed to execute the sequences of instructions contained in main memory 1204.
  • hard-wired circuitry may be used in place of or in combination with software instructions. Thus, embodiments are not limited to any specific combination of hardware circuitry and software.
  • the computer system 1201 includes at least one computero readable medium or memory for holding instructions programmed according to the teachings of the present disclosure and for containing data structures, tables, records, or . other data described herein.
  • Examples of computer readable media are compact discs, hard disks, floppy disks, tape, magneto-optical disks, PROMs (EPROM, EEPROM, flash EPROM), DRAM, SRAM, SDRAM, or any other magnetic medium, compact discs (e.g., CD-ROM), or any other optical medium, punch cards, paper tape, or other physical medium with patterns of holes.
  • Other embodiments may include the use of a carrier wave (described below), or any other medium from which a computer can read.
  • Other embodiments may include instructions according to the teachings, of the present disclosure in a signal or carrier wave.
  • the present disclosure includes software for controlling the computer system 1201, for driving a device or devices for implementing the invention, and for enabling the computer system 1201 to interact with a human user (e.g., print production personnel).
  • software may include, but is not limited to, device drivers, operating systems, development tools, and applications software.
  • Such computer readable media further includes the computer program product of the present disclosure for performing all or a portion (if processing is distributed) of the processing performed in implementing the invention.
  • the computer code devices of the present embodiments may be any interpretable or executable code mechanism, including but not limited to scripts, interpretable programs, dynamic link libraries (DLLs), Java classes, and complete executable programs.
  • Non-volatile media includes, for example, optical, magnetic disks, and magneto-optical disks, such as the hard disk 1207 or the removable media drive 1208.
  • Volatile media includes dynamic memory, such as the main memory 1204,
  • Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that make up the bus 1202. Transmission media also may also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications.
  • Various forms of computer readable media may be involved in carrying out one or more sequences of one or more instructions to processor 1203 for execution.
  • the instructions may initially be carried on a magnetic disk of a remote computer.
  • the remote computer can load the instructions for implementing all or a portion of the present disclosure remotely into a dynamic memory and send the instructions over a telephone line using a modem.
  • a modem local to the computer system 1201 may receive the data on the telephone line and use an infrared transmitter to convert the data to an infrared signal.
  • An infrared detector coupled to the bus 1202 s- - can receive the data carried in the infrared signal and place the data on the bus 1202. •
  • the bus 1202 carries the data to the main memory 1204, from which the processor 1203 retrieves and executes the instructions.
  • the instructions received by the main memory 1204 may optionally be stored on storage device 1207 or 1208 either before or after execution by processor 1203.
  • the computer system 1201 also includes a communication interface 1213 coupled to the bus 1202.
  • the communication interface 1213 provides a two-way data communication coupling to a network link 1214 that is connected to, for example, a local area network (LAN) 1215, or to another communications network 1216 such as the Internet.
  • LAN local area network
  • the communication interface 1213 may be a networks interface card to attach to any packet switched LAN.
  • the communication interface 1213 may be an asymmetrical digital subscriber line (ADSL) card, an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of communications line.
  • Wireless links may also be implemented.
  • the communicationo interface 1213 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
  • the network link 1214 typically provides data communication through one or more networks to other data devices.
  • the network link 1214 may provide a connection to another computer through a local network 1215 (e.g., a LAN) or5 through equipment operated by a service provider, which provides communication services through a communications network 1216.
  • the local network 1214 and the communications network 1216 use, for example, electrical, electromagnetic, or optical signals that carry digital data streams, and the associated physical layer (e.g., CAT 5 cable, coaxial cable, optical fiber, etc.).
  • the signals through the various networks and 0 the signals on the network link 1214 and through the communication interface 1213, which carry the digital data to and from the computer system 1201 may be implemented in baseband signals, or carrier wave based signals.
  • the baseband signals convey the digital data as unmodulated electrical pulses that are descriptive of a stream of digital data bits, where the term "bits" is to be construed broadly to mean symbol, where each symbol conveys at least one or more information bits.
  • the digital data may also be used to modulate a carrier wave, such as with amplitude, phase and/or frequency shift keyed signals that are propagated over a conductive media, or transmitted as electromagnetic waves through a propagation medium.
  • the digital data may be sent as unmodulated baseband data through a "wired" communication channel and/or sent within a predetermined frequency band, different than baseband, by modulating a carrier wave.
  • the computer system 1201 can transmit and receive data, including program code, through the network(s) 1215 and 1216, the network link 1214 and the communication interface 1213.
  • the network link 1214 may provide a connection through a LAN 1215 to a mobile device 1217 such as a personal digital assistant (PDA) laptop computer, or cellular telephone.
  • PDA personal digital assistant

Abstract

A process for calculating run-and-level representations of quantized transform coefficients includes packing each quantized transform coefficients in a value interval (Max, Min) by setting all quantized transform coefficients greater than Max equal to Max, and all quantized transform coefficients less than Min equal to Min; reordering the quantized transform coefficients resulting in an array C of reordered quantized transform coefficients; masking C by generating an array M containing ones in positions corresponding to positions of C having non-zero values, and zeros in positions corresponding to positions of C having zero values; and for each position containing a one in M, generating a run and a level representation by setting the level value equal to an occurring value in a corresponding position C, and setting the run value equal to the number of proceeding positions relative to a current position in M since a previous occurrence of one in M.

Description

METHOD3 APPARATUS, AND COMPUTER READABLE MEDIUM FOR CALCULATING RUN AND LEVEL REPRESENTATIONS OF QUANTIZED
TRANSFORM COEFFICIENTS REPRESENTING PIXEL VALUES INCLUDED IN A BLOCK OF A VIDEO PICTURE
CROSS-REFERENCE TO RELATED APPLICATIONS The present application claims the benefit under 35 U.S. C. § 119 of United States Provisional Application No. 61/142,648, filed January 6, 2009, and priority from Norwegian Patent Application No. 20085407, filed December 30, 2008, the entire subject matter of both of which are incorporated herein by reference.
BACKGROUND FIELD OF THE INVENTION The present disclosure relates to an implementation of entropy coding/decoding of transform coefficient data of video compression systems in computer devices or systems.
DESCRIPTION OF THE RELATED ART Transmission of moving pictures in real time is employed in several applications such as, but not limited to, video conferencing, net meetings, television (TV) broadcasting, and video telephony. Representing moving pictures requires bulk information as digital video typically is described by representing each pixel in a picture with 8 bits, which is equal to 1 byte. Such uncompressed video data results in large bit volumes, and cannot be transferred over conventional communication networks and transmission lines in real time due to limited bandwidth.
Thus, enabling real time video transmission requires a large extent of data compression. Data compression may, however, compromise the picture quality. Therefore, great efforts have been made to develop compression techniques allowing real time transmission of high quality video over bandwidth limited data connections. In video compression systems, the main goal is to represent the video information with as little capacity as possible. Capacity is defined with bits, either as a constant value or as bits/time unit. In both cases, the goal is to reduce the number of bits. A conventional video coding method is described in the Moving Picture Experts Group (MPEG) and H.26 standards. The video data undergoes four main processes before transmission (i.e., the prediction process, the transformation process, the quantization process, and the entropy coding).
Ξ The prediction process reduces the amount of bits required for each picture in a video sequence to be transferred. The process takes advantage of the similarity of parts of the sequence with other parts of the sequence. Since the predictor part is known to both encoder and decoder, only the difference has to be transferred. This difference typically requires much less capacity for its representation. The prediction is mainlyo based on vectors representing movements. The prediction process is conventionally performed on square block sizes (e.g., 16x16 pixels). Note that in some cases, predictions of pixels based on adjacent pixels in the same picture, rather than pixels of preceding pictures, are used. This is referred to as intra prediction (not to be confused with inter prediction). s The residual represented as a block of data (e.g., 4x4 pixels) still contains internal correlation. A conventional method which takes advantage of this and performs a two-dimensional block transform. In H.263, an 8x8 Discrete Cosine Transform (DCT) is used, whereas in H.264, a 4x4 integer-type transform is used. This transforms 4x4 pixels into 4x4 transform coefficients which can usually be represented by fewer0 bits than the pixel representation. Transform of a 4x4 array of pixels with internal correlation may result in a 4x4 block of transform coefficients with much fewer nonzero values than the original 4x4 pixel block.
Direct representation of the transform coefficients is too costly for many applications. A quantization process is carried out for a further reduction of the data5 representation. Hence, the transform coefficients undergo quantization. One way of quantization is to divide parameter values by a number, which results in a smaller number that may be represented by fewer bits. This quantization process results in the reconstructed video sequence being somewhat different from the uncompressed sequence. This phenomenon is referred to as "lossy coding." The outcome from theo quantization part is referred to as quantized transform coefficients.
Entropy coding is a special form of lossless data compression. Entropy coding involves arranging the image components in a "zigzag" order employing a run-length encoding (RLE) algorithm that groups similar frequencies together, inserting length coding zeros, and then using Huffman coding on what is left.
In H.264 encoding, the DCT coefficients for a block are reordered in order to group together non-zero coefficients in an array, enabling efficient representation of the remaining zero-valued coefficients. Figure 1 shows the zigzag reordering path 100 (i.e., scan order). The pattern of the order of the zigzag scan 100 is configured according to the probability of non-zero coefficients in each positions. Due to the characteristics of the preceding DCT, the probability of non-zero coefficients in a block decreases in the downward right diagonal direction of a DCT block. When reordering the coefficients in a zigzag pattern 100, as illustrated in Figure 1 , the non-zero coefficients generally tend to concentrate in the first positions of the array.
The output of the reordering process includes a one-dimensional array that contains one or more clusters of non-zero coefficients near the start, followed by strings of zero coefficients. Due to the large number of zero values, the array is further represented as a series of (run, level) pairs, where "run" indicates the number of zeros preceding a non-zero coefficient, and "level" indicates the magnitude of the non-zero coefficient. As an example, the input array 16, 0, 0, -3, 5, 6, 0, 0, 0, 0, -7, will have the following corresponding run-level values: (0,16), (2,-3), (0,5), (0,6), (4,-7). When transforming the zigzag array to run-level values, it is computationally expensive to loop over all coefficients and check whether they are non-zero.
SUMMARY
The present disclosure describes a method, system, and computer readable medium. By way of example, there is a method for calculating run and level representations of quantized transform coefficients representing pixel values included in a block of a video picture, the method including packing, at a video processing apparatus, each quantized transform coefficients in a value interval [Max, MinJ by setting all quantized transform coefficients greater than Max equal to Max, and all quantized transform coefficients less than Min equal to Min; reordering, at the video processing apparatus, the quantized transform coefficients according to a predefined order depending on respective positions in the block resulting in an array C of reordered quantized transform coefficients; masking, at the video processing apparatus, C by generating an array M containing ones in positions corresponding to positions of C having non-zero values, and zeros in positions corresponding to positions of C having zero values; generating, at the video processing apparatus, for each position containing a one in M, a run and a level representation by setting the level value equal to an occurring value in a corresponding position of C; and setting, at the video processing apparatus, for each position containing a one in M, the run value equal to the number of proceeding positions relative to a current position in M since a previous occurrence of one in M.
As should be apparent, a number of advantageous features and benefits are available by way of the disclosed embodiments and extensions thereof. It is to be understood that any embodiment can be constructed to include one or more features or benefits of embodiments disclosed herein, but not others. Accordingly, it is to be understood that the embodiments discussed herein are provided as examples and are not to be construed as limiting, particularly since embodiments can be formed to practice the invention that do not include each of the features of the disclosed examples.
BRIEF DESCRIPTION OF THE DRAWINGS
The disclosure will be better understood from reading the description which follows and from examining the accompanying figures. These are provided solely as non-limiting examples of embodiments. In the drawings: Figure 1 illustrates a conventional zigzag pattern used to order the transform coefficients before entropy coding;
Figure 2 is a flow chart illustrating a conventional implementation of run-level coding;
Figure 3 is a flow chart illustrating an embodiment of run-level coding of the present disclosure;
Figure 4 is an example of a bit mask of transform coefficients during different steps of the present disclosure; and
Figure 5 illustrates a computer system upon which an embodiment of the present disclosure may be implemented.
DETAILED DESCRIPTION
Figure 2 is a flow chart illustrating how the run-level code, according to Moving Picture Experts Group (MPEG-4) and H.264, is calculated in a conventional implementation. After quantizing the transform coefficients (Quant C) 201 in a block, the Run variable and the position index (I) are set to zero 203. Then, the quantized coefficients are reordered 205 to a one-dimensional array according to the aforementioned zigzag pattern 100 shown in Figure 1. The process then enters into a loop for parsing the array to determine the run-level values. First, it is checked whether - the number of positions in the array is exceeded (i.e., I>16) 207. If not, it is then checked whether current position in the array contains a zero 209. If so, both the Run variable and the position index (I) are incremented, at steps 217 and 219, and the process proceeds to the start of the loop. If the current position contains a non-zero value, the current Run variable and the value of the current position are stored as the Run-Level value, at steps 211 and 213. The Run variable is then reset 215, before both the Run variable and the position index (I) are incremented, at steps 217 and 219, and the process proceeds to the start of the loop. The process ends whenever the position index (I) exceeds the maximum size of the array, which, in the example illustrated in Figure 2, is 16.
As can be seen from the conventional implementation illustrated in Figure 2, the process always has to run through the run-level encoding loop as many times as there are positions in the array (i.e., 16 times in the example of Figure 2). This becomes very inefficient as most coefficients in C are zero, and it is computationally expensive to loop over all coefficients and check whether they are non-zero.
Figure 3 is a flow chart illustrating an embodiment according to the present disclosure. According to this embodiment, bit-masks and bit-scan instructions, which make it possible to efficiently jump over all the zero valued coefficients, are used. First, the transform coefficients in the block are quantized at step 301. In the example of Figure 3, there are sixteen (16) coefficients that are stored in the vector C, as shown in 401 of Figure 4.
The process then proceeds to step 303 where all the quantized coefficients are packed. In this example, the packing 303 is done by the C++ instruction PACKUSWB, which transforms sixteen (16) signed words to unsigned integers and saturates, as shown in 403 of Figure 4. hi other words, if a coefficient is larger or smaller than the range of an unsigned byte, the coefficient is set to respectively Max or Min values of the range, which are 255 and 0 in this example. Accordingly, the size of the memory used to store each coefficient is reduced from two (2) bytes, which is usually the amount of memory needed to store each, coefficient, to one (1) byte.
This is an approximation and may lead to different results when very low Quantization Parameters are used. However, extensive monitoring of this approximation for a wide variety of video-conferencing scenarios has shown that this approximation does not degrade video quality in any sense visible to the human eye.
The packing step 303 enables the reordering 305 of the coefficients to be carried out in one function, without having to parse a loop sixteen (16) times. This may be achieved by using the C++ function PSHUFB. This function efficiently shuffles precisely sixteen (16) bytes in any order. An example of the reordering of C using the PSHUFB instruction is shown in 405 of Figure 4. hi the example of Figure 3, the input is the sixteen (16) coefficients and the zigzag order 100 illustrated in Figure 1.
The next step is to mask 307 the quantized, packed, and reordered coefficients. Masking is accomplished by applying the C++ functions PCMPGTB and PMOVMSKB. The PCMPGTB function fills a whole byte of ones (1 ' s) in the position of non-zero values, and leaves the zeros (O's) unchanged in the position of zeros, shown in 409 of Figure 4. Note that a byte is equal to 8 bits, thus eight (8) ones (1 's), in binary, is the maximum capacity of one byte. In 409 of Figure 4, the hexadecimal "ff ' represents eight (8) ones (1 's) in binary (i.e., an entire byte, as noted above). The PMOVMSKB function creates a 16-bit mask (i.e., Mask of C) from the most significant bits of sixteen (16) bytes, as shown in 411 of Figure 4. The result of these two functions, when applied on the array of quantized, packed, and reordered coefficients (C), is a 16-bit array (M) where the ones (1 's) indicate the corresponding positions of the non-zero values of C. Having derived M from C, the step of calculating the run-level values becomes less computationally demanding and requires no loops for zero-values. As noted above, in the mask M, one bit is set for each non-zero value of C. Thus, when the 16-bit array (M) is zero, at step 309, all coefficients are zero and the run-level encoding is completed for that array. If array M is nonzero, the C++ function BSF can be used to calculate the index of the first non-zero value of C, at step 311.- BSF, or Bit Scan Forward, scans for the first bit that equals one (1) and stores the index of the first set bit into a register. BSF returns the bit index of the least significant bit of an integer (i.e., in the case of M, the first position of a one (1) starting from the right-hand side).
Hence, the index returned by BSF at step 311, when applied on M, is equal to the "run" and is used directly as look-up in the C array to determine the "level." This is possible since C is already shuffled using the PSHUFB instruction.
The Run-value, as indicated by the BSF function, is then stored, at step 315, and after looking up the value localized at that position in the C array, is stored as the level value, at step 313.
At step 317, M is finally shifted to the right "Run+1" times to clear the index bit from M and prepare M for the next iteration in the loop. Accordingly, the content of M corresponding to run-level values already calculated is removed from M5 and the loop can be applied in the same way to calculate the remaining run-level values (i.e., by scanning M again, at step 311, using the BSF function, which looks for the next nonzero value of M). Since all the zeros (O's) are being jumped over by effectively using the BSF instruction, only non-zero coefficient runs are required to calculate all "level" and "run" values. The number of loops to be parsed in implementing the entropy coding may therefore be reduced, since the probability of occurrence of many zeros (O's) in a block of quantized coefficients is high. The present disclosure avoids an indirect table look-up (i.e., pointer chasing) to determine the "level," and uses a single efficient BSF instruction to calculate the "run."
Further, the present disclosure provides run-level encoding with non-zero coefficient runs. For example, if five (5) values in C are non-zero only five (5) runs through the run-level encoding loop is needed. Thus, the checking of zero values of C is avoided, which otherwise may have lead to computationally costly branch mispredictions.
Figure 5 illustrates a video processing apparatus 1201 upon which the method for calculating run and level representations, according to the present disclosure, may be implemented. The computer system 1201 also includes a disk controller 1206 coupled to the bus 1202 to control one or more storage devices for storing information and instructions, such as a magnetic hard disk 1207, and a removable media drive 1208 (e.g., floppy disk drive, read-only compact disc drive, read/write compact disc drive, compact disc jukebox, tape drive, and removable magneto-optical drive). The storage devices maybe added to the computer system 1201 using an appropriate device interface (e.g., small computer system interface (SCSI), integrated device electronics (IDE), enhanced-IDE (E-IDE), direct memory access (DMA), or ultra-DMA).
The computer system 1201 may also include special purpose logic devices (e.g., application* specific integrated circuits (ASICs)) or configurable logic devices (e.g., simple programmable logic devices (SPLDs), complex programmable logic devices (CPLDs), and field programmable gate arrays (FPGAs)).
The computer system 1201 may also include a display controller 1209 coupled to the bus 1202 to control a display 1210, such as a touch panel' display or a liquido crystal display (LCD), for displaying information to a computer user. The GUI 308, for example, may be displayed on the display 1210. The computer system includes input devices, such as a keyboard 1211 and a pointing device 1212, for interacting with a computer user and providing information to the processor 1203. The pointing device 1212, for example, may be a mouse, a trackball, a finger for a touch screen sensor, or as pointing stick for communicating direction information and command selections to the processor 1203 and for controlling cursor movement on the display 1210. In addition, a printer may provide printed listings of data stored and/or generated by the computer system 1201.
The computer system 1201 performs a portion or all of the processing steps ofo the present disclosure in response to the processor 1203 executing one or more sequences of one or more instructions contained in a memory, such as the main memory 1204. Such instructions may be read into the main memory 1204 from another computer readable medium, such as a hard disk 1207 or a removable media drive 1208. One or more processors in a multi-processing arrangement may also bes employed to execute the sequences of instructions contained in main memory 1204. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions. Thus, embodiments are not limited to any specific combination of hardware circuitry and software.
As stated above, the computer system 1201 includes at least one computero readable medium or memory for holding instructions programmed according to the teachings of the present disclosure and for containing data structures, tables, records, or . other data described herein. Examples of computer readable media are compact discs, hard disks, floppy disks, tape, magneto-optical disks, PROMs (EPROM, EEPROM, flash EPROM), DRAM, SRAM, SDRAM, or any other magnetic medium, compact discs (e.g., CD-ROM), or any other optical medium, punch cards, paper tape, or other physical medium with patterns of holes. Other embodiments may include the use of a carrier wave (described below), or any other medium from which a computer can read. Other embodiments may include instructions according to the teachings, of the present disclosure in a signal or carrier wave.
Stored on any one or on a combination of computer readable media, the present disclosure includes software for controlling the computer system 1201, for driving a device or devices for implementing the invention, and for enabling the computer system 1201 to interact with a human user (e.g., print production personnel). Such software may include, but is not limited to, device drivers, operating systems, development tools, and applications software. Such computer readable media further includes the computer program product of the present disclosure for performing all or a portion (if processing is distributed) of the processing performed in implementing the invention. The computer code devices of the present embodiments may be any interpretable or executable code mechanism, including but not limited to scripts, interpretable programs, dynamic link libraries (DLLs), Java classes, and complete executable programs. Moreover, parts of the processing of the present embodiments may be distributed for better performance, reliability, and/or cost. The term "computer readable medium" as used herein refers to any medium that participates in providing instructions to the processor 1203 for execution. A computer readable medium may take many forms, including but not limited to, non- volatile media or volatile media. Non-volatile media includes, for example, optical, magnetic disks, and magneto-optical disks, such as the hard disk 1207 or the removable media drive 1208. Volatile media includes dynamic memory, such as the main memory 1204,
Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that make up the bus 1202. Transmission media also may also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications. Various forms of computer readable media may be involved in carrying out one or more sequences of one or more instructions to processor 1203 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions for implementing all or a portion of the present disclosure remotely into a dynamic memory and send the instructions over a telephone line using a modem. A modem local to the computer system 1201 may receive the data on the telephone line and use an infrared transmitter to convert the data to an infrared signal. An infrared detector coupled to the bus 1202 s- - can receive the data carried in the infrared signal and place the data on the bus 1202. • The bus 1202 carries the data to the main memory 1204, from which the processor 1203 retrieves and executes the instructions. The instructions received by the main memory 1204 may optionally be stored on storage device 1207 or 1208 either before or after execution by processor 1203. o The computer system 1201 also includes a communication interface 1213 coupled to the bus 1202. The communication interface 1213 provides a two-way data communication coupling to a network link 1214 that is connected to, for example, a local area network (LAN) 1215, or to another communications network 1216 such as the Internet. For example, the communication interface 1213 may be a networks interface card to attach to any packet switched LAN. As another example, the communication interface 1213 may be an asymmetrical digital subscriber line (ADSL) card, an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of communications line. Wireless links may also be implemented. In any such implementation, the communicationo interface 1213 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
The network link 1214 typically provides data communication through one or more networks to other data devices. For example, the network link 1214 may provide a connection to another computer through a local network 1215 (e.g., a LAN) or5 through equipment operated by a service provider, which provides communication services through a communications network 1216. The local network 1214 and the communications network 1216 use, for example, electrical, electromagnetic, or optical signals that carry digital data streams, and the associated physical layer (e.g., CAT 5 cable, coaxial cable, optical fiber, etc.). The signals through the various networks and 0 the signals on the network link 1214 and through the communication interface 1213, which carry the digital data to and from the computer system 1201 may be implemented in baseband signals, or carrier wave based signals. The baseband signals convey the digital data as unmodulated electrical pulses that are descriptive of a stream of digital data bits, where the term "bits" is to be construed broadly to mean symbol, where each symbol conveys at least one or more information bits. The digital data may also be used to modulate a carrier wave, such as with amplitude, phase and/or frequency shift keyed signals that are propagated over a conductive media, or transmitted as electromagnetic waves through a propagation medium. Thus, the digital data may be sent as unmodulated baseband data through a "wired" communication channel and/or sent within a predetermined frequency band, different than baseband, by modulating a carrier wave. The computer system 1201 can transmit and receive data, including program code, through the network(s) 1215 and 1216, the network link 1214 and the communication interface 1213. Moreover, the network link 1214 may provide a connection through a LAN 1215 to a mobile device 1217 such as a personal digital assistant (PDA) laptop computer, or cellular telephone.
Further, it should be appreciated that the exemplary embodiments of the present disclosure are not limited to the exemplary embodiments shown and described above. While this invention has been described in conjunction with exemplary embodiments outlined above, various alternatives, modifications, variations and/or improvements, whether known or that are, or may be, presently unforeseen, may become apparent. Accordingly, the exemplary embodiments of the present disclosure, as set forth above are intended to be illustrative, not limiting. The various changes may be made without departing from the spirit and scope of the invention. Therefore, the disclosure is intended to embrace all now known or later-developed alternatives, modifications, variations and/or improvements.

Claims

1. A method for calculating run and level representations of quantized transform coefficients representing pixel values included in a block of a video picture, the method comprising:
5 packing, at a video processing apparatus, each quantized transform coefficients in a value interval [Max, Min] by setting all quantized transform coefficients greater than Max equal to Max, and all quantized transform coefficients less than Min equal to Min; reordering, at the video processing apparatus, the quantized transform ID coefficients according to a predefined order depending on respective positions in the block resulting in an array C of reordered quantized transform coefficients; masking, at the video processing apparatus, C by generating an array M containing ones in positions corresponding to positions of C having non-zero values, and zeros in positions corresponding to positions of C having zero values; is generating, at the video processing apparatus, for each position containing a one in M, a run and a level representation by setting the level value equal to an occurring value in a corresponding position of C; and setting, at the video processing apparatus, for each position containing a one in M5 the run value equal to the number of proceeding positions relative to a current 20 position in M since a previous occurrence of one in M.
2. The method according to Claim 1, wherein the masking further includes, creating an array C from C where positions corresponding to positions of nonzero values in C are filled with ones, and positions corresponding to positions of zero
25 values in C are filled with zeros, and creating M from C by extracting the most significant bit from values in respective position of C and inserting the bits in corresponding positions in M.
3. The method according to Claim 2, wherein the creating of the array C is
30 executed by a C++ function PCMPGTB, and the creating of M from C is executed by a C++ function PMOVMSKB.
4. The method according to Claim 1 , wherein the generating of the run and level representation further includes determining positions containing non-zero values in C by corresponding positions containing ones in M.
5. The method according to Claim 4, wherein the determining of positions containing non-zero values in C is executed by a C++ function BSF.
6. The method according to Claim 1 , wherein Max is 256 and Min is 0. o
7. The method according to Claim 1 , wherein the predefined order follows a zigzag path of transform coefficient positions in the block starting in an upper left corner heading towards a lower right corner.
8. An apparatus for calculating run and level representations of quantizeds transform coefficients representing pixel values included in a block of a video picture, the apparatus comprising: a video processor that, packs each quantized transform coefficients in a value interval [Max, Min] by setting all quantized transform coefficients greater than Max equal too Max, and all quantized transform coefficients less than Min equal to Min; reorders the quantized transform coefficients according to a predefined order depending on respective positions in the block resulting in an array C of reordered quantized transform coefficients; masks C by generating an array M containing ones in positions 5 corresponding to positions of C having non-zero values, and zeros in positions corresponding to positions of C having zero values; generates, for each position containing a one in M3 a run and a level representation by setting the level value equal to an occurring value in a corresponding position of C; and 0 sets, for each position containing a one in M, the run value equal to the number of proceeding positions relative to a current position in M since a previous occurrence of one in M.
9. The apparatus according to Claim 8, wherein when the video processor masks C, the video processor further, creates an array C from C where positions corresponding to positions of nonzero values in C are filled with ones, and positions corresponding to positions of zero values in C are filled with zeros, and creates M from C by extracting the most significant bit from values in respective position of C and inserting the bits in corresponding positions in M.
10. The apparatus according to Claim 9, wherein when the video processor creates the array C, the video processor executes a C++ function PCMPGTB, and when the video processor creates M from C, the video processor executes a C++ function PMOVMSKB.
11. The apparatus according to Claim 8, wherein when the video processor generates the run and level representation, the video processor further determines positions containing non-zero values in C by corresponding positions containing ones in
M.
12. The apparatus according to Claim 11 , wherein when the video processor determines the positions containing non-zero values in C, the video processor executes a C++ function BSF.
13. The apparatus according to Claim 8, wherein Max is 256 and Min is 0.
14. The apparatus according to Claim 8, wherein the predefined order follows a zigzag path of transform coefficient positions in the block starting in an upper left corner heading towards a lower right corner.
15. A computer readable storage medium encoded with computer executable instructions, wherein the instructions, when executed by a video processing apparatus, cause the video processing apparatus to perform a method for calculating run and level representations of quantized transform coefficients representing pixel values included in a block of a video picture, the method comprising: packing, at the video processing apparatus, each quantized transform coefficients in a value interval [Max, Min] by setting all quantized transform coefficients greater than Max equal to Max, and all quantized transform coefficients less than Min equal to Min; reordering; at the video processing apparatus, the quantized transform - coefficients according to a predefined order depending on respective positions in the block resulting in an array C of reordered quantized transform coefficients; masking, at the video processing apparatus, C by generating an array M containing ones in positions corresponding to positions of C having non-zero values, and zeros in positions corresponding to positions of C having zero values; generating, at the video processing apparatus, for each position containing a one in M, a run and a level representation by setting the level value equal to an occurring value in a corresponding position of C; and setting, at the video processing apparatus, for each position containing a one in M, the run value equal to the number of proceeding positions relative to a current position in M since a previous occurrence of one in M.
16. The computer readable medium according to Claim 15, wherein the masking further includes, creating an array C from C where positions corresponding to positions of nonzero values in C are filled with ones, and positions corresponding to positions of zero values in C are filled with zeros, and creating M from C by extracting the most significant bit from values in respective position of C and inserting the bits in corresponding positions in M.
17. The computer readable medium according to Claim 16, wherein the creating of the array C is executed by a C++ function PCMPGTB, and the creating of M from C is executed by a C++ function PMOVMSKB.
18. The computer readable medium according to Claim 15, wherein the generating of the run and level representation further includes determining positions containing non-zero values in C by corresponding positions containing ones in M.
19. The computer readable medium according to Claim 15, wherein the determining of positions containing non-zero values in C is executed by a C++ function BSF.
- 20. The computer readable medium according to Claim 15, wherein the predefined order follows a zigzag path of transform coefficient positions in the block starting in an upper left corner heading towards a lower right corner.
PCT/NO2009/000447 2008-12-30 2009-12-28 Method, apparatus and computer readable medium for calculating run and level representations of quantized transform coefficients representing pixel values included in a block of a video picture WO2010077148A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN200980153613.6A CN102273204B (en) 2008-12-30 2009-12-28 Method, apparatus and computer readable medium for calculating run and level representations of quantized transform coefficients representing pixel values included in block of video picture
EP09836441A EP2384581A4 (en) 2008-12-30 2009-12-28 Method, apparatus and computer readable medium for calculating run and level representations of quantized transform coefficients representing pixel values included in a block of a video picture

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
NO20085407 2008-12-30
NO20085407 2008-12-30
NO20090715 2009-02-13
NO20090715A NO332205B1 (en) 2008-12-30 2009-02-13 Implementation of entropy coding / decoding of transformation coefficient data for video compression systems in computer devices

Publications (1)

Publication Number Publication Date
WO2010077148A1 true WO2010077148A1 (en) 2010-07-08

Family

ID=42309982

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/NO2009/000447 WO2010077148A1 (en) 2008-12-30 2009-12-28 Method, apparatus and computer readable medium for calculating run and level representations of quantized transform coefficients representing pixel values included in a block of a video picture

Country Status (4)

Country Link
EP (1) EP2384581A4 (en)
CN (1) CN102273204B (en)
NO (1) NO332205B1 (en)
WO (1) WO2010077148A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101964912A (en) * 2010-10-15 2011-02-02 北京中科大洋科技发展股份有限公司 Method for fast calculating run length by run length coding in MPEG2
NO20101088A1 (en) * 2010-07-30 2012-01-31 Cisco Tech Inc Implementation of run / level coding
NO336215B1 (en) * 2012-12-27 2015-06-15 Pexip AS Simultaneous and loop-free vector calculation of all run-level pairs in video compression.

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6628717B1 (en) * 1998-11-04 2003-09-30 Lg Electronics Inc. Lossless coding method and video compression coding device using the same
US20050265577A1 (en) * 2002-02-26 2005-12-01 Truelight Technologies, Llc Real-time software video/audio transmission and display with content protection against camcorder piracy
WO2008002881A2 (en) * 2006-06-26 2008-01-03 Qualcomm Incorporated Reduction of errors during computation of inverse discrete cosine transform
US20080046698A1 (en) 2006-08-21 2008-02-21 Kapil Ahuja Run Length Encoding in VLIW Architecture

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6628717B1 (en) * 1998-11-04 2003-09-30 Lg Electronics Inc. Lossless coding method and video compression coding device using the same
US20050265577A1 (en) * 2002-02-26 2005-12-01 Truelight Technologies, Llc Real-time software video/audio transmission and display with content protection against camcorder piracy
WO2008002881A2 (en) * 2006-06-26 2008-01-03 Qualcomm Incorporated Reduction of errors during computation of inverse discrete cosine transform
US20080046698A1 (en) 2006-08-21 2008-02-21 Kapil Ahuja Run Length Encoding in VLIW Architecture

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP2384581A4 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NO20101088A1 (en) * 2010-07-30 2012-01-31 Cisco Tech Inc Implementation of run / level coding
WO2012015312A1 (en) * 2010-07-30 2012-02-02 Cisco Technology, Inc Implementation of run level coding
CN101964912A (en) * 2010-10-15 2011-02-02 北京中科大洋科技发展股份有限公司 Method for fast calculating run length by run length coding in MPEG2
NO336215B1 (en) * 2012-12-27 2015-06-15 Pexip AS Simultaneous and loop-free vector calculation of all run-level pairs in video compression.
US9407933B2 (en) 2012-12-27 2016-08-02 Pexip AS Simultaneous and loopless vector calculation of all run-level pairs in video compression

Also Published As

Publication number Publication date
NO332205B1 (en) 2012-07-30
CN102273204A (en) 2011-12-07
EP2384581A4 (en) 2012-05-30
EP2384581A1 (en) 2011-11-09
CN102273204B (en) 2014-05-14
NO20090715L (en) 2010-07-01

Similar Documents

Publication Publication Date Title
US8537888B2 (en) Method, device, and computer-readable medium for video coding and decoding
US7729423B2 (en) Fixed bit rate, intraframe compression and decompression of video
KR101176691B1 (en) Efficient coding and decoding of transform blocks
US20130083855A1 (en) Adaptive color space selection for high quality video compression
US8699580B2 (en) Method, apparatus, and computer readable medium for video compression
US8331454B2 (en) Integer transform function for video compression systems
US6885320B2 (en) Apparatus and method for selecting length of variable length coding bit stream using neural network
JP2009302638A (en) Information processor and method
JP2005532768A (en) Intra-coding method and apparatus for video data
US20070036222A1 (en) Non-zero coefficient block pattern coding
KR100510756B1 (en) Image decoding apparatus and method and image reproducing apparatus
US20120027081A1 (en) Method, system, and computer readable medium for implementing run-level coding
US8175156B2 (en) Eight pixels integer transform
US20090116550A1 (en) Video compression system, method and computer program product using entropy prediction values
WO2010077148A1 (en) Method, apparatus and computer readable medium for calculating run and level representations of quantized transform coefficients representing pixel values included in a block of a video picture
US9693057B2 (en) Integer transform video compression system, method and computer program product
US20100166076A1 (en) Method, apparatus, and computer readable medium for calculating run and level representations of quantized transform coefficients representing pixel values included in a block of a video picture
US10171810B2 (en) Transform coefficient coding using level-mode and run-mode
EP1629675B1 (en) Fixed bit rate, intraframe compression and decompression of video
EP1892965A2 (en) Fixed bit rate, intraframe compression and decompression of video
CN1112336A (en) Image signal decoding apparatus having an encoding error compensation
US9183181B2 (en) Integer matrix transform video compression system, method and computer program product
WO2012015312A1 (en) Implementation of run level coding
KR0166720B1 (en) Variable length encoder
JPH0516226B2 (en)

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200980153613.6

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09836441

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2009836441

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE