WO1999060521A2 - Variable length decoder for decoding digitally encoded video signals - Google Patents

Variable length decoder for decoding digitally encoded video signals Download PDF

Info

Publication number
WO1999060521A2
WO1999060521A2 PCT/US1999/010659 US9910659W WO9960521A2 WO 1999060521 A2 WO1999060521 A2 WO 1999060521A2 US 9910659 W US9910659 W US 9910659W WO 9960521 A2 WO9960521 A2 WO 9960521A2
Authority
WO
WIPO (PCT)
Prior art keywords
variable length
decoder
encoded data
data
memory
Prior art date
Application number
PCT/US1999/010659
Other languages
French (fr)
Other versions
WO1999060521A3 (en
Inventor
Moshe Bublil
Subroto Bose
Sirish C. Gadre
Original Assignee
Sony Electronics Inc.
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 Sony Electronics Inc. filed Critical Sony Electronics Inc.
Priority to AU39908/99A priority Critical patent/AU3990899A/en
Priority to JP2000550062A priority patent/JP2002516501A/en
Priority to EP99923050A priority patent/EP1078533B1/en
Priority to KR1020007012555A priority patent/KR20010043480A/en
Priority to CA002330566A priority patent/CA2330566A1/en
Priority to DE69905565T priority patent/DE69905565T2/en
Publication of WO1999060521A2 publication Critical patent/WO1999060521A2/en
Publication of WO1999060521A3 publication Critical patent/WO1999060521A3/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • 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
    • 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
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • 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
    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • 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/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Definitions

  • the present invention relates to decoding of digitally
  • Standardization has specified formats for digital video compression
  • bit stream syntax defined by the MPEG-1 and -2
  • the bit stream control information may identify that the bit stream is packetized video or audio data, or that the bit stream is a video
  • Image control information may include, as an example, the frame
  • the encoded video data As will be described in more detail below, the encoded video data
  • the MPEG-1 and -2 standards each specify a bit stream
  • Each macroblock is further made up of 8 x 16 chrominance pels
  • Motion compensated prediction is used to remove
  • MPEG contemplates Intra (I-) frames, Predictive (P-)
  • P-frames are coded more efficiently than the l-frames and are
  • Headers in the bit stream provide information to be used
  • the decoder to properly decode the time and sequence of the frames
  • transmitted video bit streams have a micro-controller or sequencer for
  • VLD variable length decoder
  • bit stream for decoding of the quantized DCT coefficients and motion
  • VLC's MPEG variable length code tables
  • transform processor is used to transform each block of quantized
  • ICT inverse discrete cosine transform
  • undecoded bits of the video bit stream are stored in one or more registers.
  • the VLD extracts a smaller number of these bits from the register(s) with
  • the leftmost bit always aligned as the first bit extracted by the VLD.
  • VLD then performs a table look-up in one of the MPEG VLC tables to
  • the VLD performs a MASK/SHIFT/OR operation on the bits in the
  • the VLC tables are typically contained in one or more PALS
  • ROMs which have approximately 2 n x m memory locations, where "n"
  • the decode efficiency of the VLD is
  • each DCT coefficient symbol i.e., each run-length and amplitude
  • each variable length code of each unique VLC table is stored in a
  • variable length DCT coefficients and motion vectors which have been
  • the present invention is embodied in a variable length video
  • the video decoder is designed as a single
  • event per cycle slice parsing engine for decoding the macroblock and block layers of individual slices to generate DCT coefficient values
  • the video decoder incorporates a micro-sequencer that
  • VLD command decode/execution unit interfaces with a VLD command decode/execution unit to control the
  • variable length decoding process according to the MPEG standard.
  • micro-sequencer either issues
  • variable length decoding or controls the program flow as provided
  • decoder is further able to receive decode instructions from a RISC CPU
  • Encoded video data is stored in DRAM memory and made
  • the video decoder is responsible for decoding the variable length code in the rotator/barrel shifter data to obtain the
  • variable length code is decoded, the pointer register of the rotator/barrel
  • shifter is incremented to prepare for the next decode cycle.
  • MPEG VLC table is divided into a series of subtables as defined by a
  • variable length encoded data has been decoded, the variable length table
  • decoder provides the decoded value and a valid code status bit.
  • variable length table decoder also provides a code length signal to the
  • the decoded DCT coefficients are stored as compressed run- length and amplitude level pairs in a run-level decoder/FIFO.
  • the run-level decoder/FIFO The run-level
  • decoder/FIFO decompresses the run-length and amplitude level pairs into
  • Fig. 1 is a block diagram of a video/audio decoder for
  • Fig. 2 is a block diagram of the video decoder in the
  • FIG. 2A is a block diagram of a micro-sequencer and VLD
  • Fig. 3 is a schematic diagram of a rotator/barrel shifter circuit
  • VLD variable length decoder
  • Fig. 4 is a representation of a pattern match structure in the
  • VLC variable length code
  • Fig. 5 is a functional block diagram of a decoding logic circuit
  • variable length decoder (VLD) of Fig. 2 accessing variable
  • VLC length code
  • Fig 6A is a micro-sequencer instruction format for the TBIT
  • Fig 6B is a micro-sequencer instruction format for the ICMD
  • Fig 6C is a micro-sequencer instruction format for the COMP
  • Fig 6D is a micro-sequencer instruction format for the
  • Fig 6E is a micro-sequencer instruction format for the SETF
  • Fig 6F is a micro-sequencer instruction format for the INCM
  • Fig 6G is a micro-sequencer instruction format for the HALT
  • decoding system 100 is shown that incorporates various functional
  • modules 102 through 1 12 for performing audio/video decoding of digitally
  • decoding system 100 is configured as an application
  • ASIC specific integrated circuit
  • Each of the functional units 102 through 1 12 interacts in various ways with
  • DRAM 1 14 Access to DRAM 1 14 is controlled by a memory controller 1 16
  • ASIC 100 will be described. These functional units include a
  • programmable input demultiplexor 102 which preferably receives the
  • the digitally encoded video/audio signal is a serial bit stream
  • the demultiplexor 102 is
  • a video decoder 104 in accordance with the
  • Output encoder 108 is preferably an NTSC/PAL encoder for providing an
  • An audio decoder 106 retrieves audio information from
  • DRAM 1 decodes the audio information for output, and delivers the audio information for output to speakers via bus 122.
  • ASIC 100 also
  • a host interface 1 10 for interacting with a host micro-controller
  • video information which may incorporate subtitles or other information
  • video decoder 104 that accompanies the main video being decoded by video decoder 104.
  • on-screen displays may be generated within ASIC 100 by an
  • OSD section connected to RBUS 126 and GBUS 128.
  • RISC CPU reduced instruction set central processing unit
  • RISC CPU 1 12 responds to 16-bit
  • Instructions which are stored in an instruction memory 130. Instructions
  • memory 130 holds 4096 16-bit instructions, adequate for relatively
  • RISC CPU 1 12 interacts with each of
  • each functional unit is connected to
  • blocks of data may be transferred from one functional unit
  • RBUS 126 may comprise one or more 32-bit busses, used by
  • the memory access request may request
  • delivery of a single memory location may include an identification of a number of memory locations to be accessed in response to the request.
  • Memory controller 1 16 responds to the request by managing access to the
  • the RBUS controller 132 causes the status word of video decoder 104 to be delivered to the requesting
  • the RBUS controller 132 In response, the RBUS controller 132 enables the
  • Video decoder 104 is the focus of the present invention.
  • 104 is particularly adapted to perform video decoding of MPEG-1 and
  • sequence layer the group of pictures layer, the picture layer, the slice layer, the macroblock layer and the block layer.
  • encoded bit stream includes a unique start code which identifies the layer
  • RISC CPU 1 12 obtains
  • FIG. 2 and 2A a block diagram of the video
  • decoder 104 is shown in detail. As will be described in more detail below,
  • video decoder 104 the primary function of video decoder 104 is a single ordered symbol per
  • Video decoder 104 Operation of video decoder 104 is primarily
  • micro-sequencer 134 that interfaces with a VLD
  • command/decode execution unit 136 through lines 138.
  • sequencer 134 includes a 256 x 16 instruction ROM 140 and an instruction
  • decode/control unit 142 (see Fig. 2A). During the decoding process of the
  • the micro-sequencer 134 is programmed to either issue commands to the VLD command/decode
  • execution unit 136 for performing variable length decoding or to control
  • VLD command/decode execution unit 136 may receive instructions
  • micro-sequencer 134 micro-sequencer 134 and VLD command decode/execution unit 136
  • VCI registers instruction registers 150 which form part of the VLD
  • encoded video data is initially stored in
  • the encoded video data is available to video decoder 104
  • Video decoder 104
  • GBUS interface in the form of 16 x 64 channel buffer FIFO 152
  • the buffer FIFO 152 does not empty or overfill during the decoding
  • One of the primary functions of the video decoder 104 is to
  • variable length encoded data in the video bit stream decode variable length encoded data in the video bit stream.
  • length data is Huffman encoded in accordance with VLC tables defined in
  • the VLD of the present invention supports at least eleven of the MPEG VLC tables, including: macroblock_type_l
  • macroblock_type_P macroblock_type_B; macroblock_type_D
  • coded_block_pattern coded_block_pattern
  • motion_code coded_code
  • the channel buffer FIFO 152 As shown most clearly in Fig.2, the channel buffer FIFO 152
  • VLD command decode/execution unit 136 These 32 bits are provided
  • VLD command decode/execution unit 136 As rotator/barrel shifter
  • B register contents of B register are refreshed with new data.
  • the barrel shifter 164 shown in Fig. 3 has seven selector
  • the first stage 166 labeled "Stage 64/0" has
  • the second stage 168 labeled "Stage 32/0"
  • the third stage 170 labeled "Stage 16/0" has 63 selectors to provide
  • the fifth stage 174 labeled "Stage 4/0" has 39 selectors to
  • command decode/execution unit 136 as the rotator/barrel shifter data 162.
  • the term “selector” means any circuit which provides the left-shift or no-shift operations
  • barrel shifter 164 to a trapezoidal shape rather than a symmetrical
  • rotator/barrel shifter data 162 are also made available to a variable length
  • VLC code
  • decode/execution unit 136 to access each of the eleven MPEG VLC tables.
  • each variable length code has a defined prefix pattern that is defined as K 0 , K,, K 2 , K 3 , K 4 0 , K 4 , K 5 , K 5 _ 01 , K 5 _ 001 , K 5 000 and K 6 .
  • K 0 K 0 , K,, K 2 , K 3 , K 4 0 , K 4 , K 5 , K 5 _ 01 , K 5 _ 001 , K 5 000 and K 6 .
  • subtables may be defined by the prefix pattern in each of the MPEG
  • VLC tables with each subtable corresponding to one of the unique prefix
  • each variable length code has a code length that
  • variable length table decoder 186 Referring now to the variable length table decoder 186
  • rotator/barrel shifter data 162 are applied to a pattern match logic and
  • the MUX control 188 to identify the unique prefix pattern in the rotator/barrel shifter data 162.
  • the identified prefix pattern match e.g., K 0 , K,, etc., is
  • MUX CNTL used as a signal "MUX CNTL" 190 to control the output of each MUX 192
  • the VLC table being decoded at any given time is determined
  • VLC TABLE SELECT the "VLC TABLE SELECT" signal 194 provided by the VLD command
  • decode/execution unit 136 as will be described in more detail below.
  • variable length the variable length
  • table decoder 186 provides two signals to the VLD command
  • decode/execution unit 136 including the decoded value 198 and the valid
  • variable length table decoder 186 also provides
  • length table decoder 186 is hardwired optimized random logic, although
  • variable length table decoder 186 is used to increment the
  • the code length signal 202 is also used by the barrel
  • variable length table decoder 186 The decode/execution unit 136 and variable length table decoder 186.
  • variable length In accordance with the MPEG standard, variable length
  • coded DCT coefficients are decoded as run-length and amplitude level
  • variable length table decoder amplitude level pairs are decoded by the variable length table decoder
  • VLD command decode/execution unit 136 to a 64 x 18 run-level
  • decoder/FIFO 206 that stores them as compressed pairs until needed by
  • decode/execution unit 136 to a 16 x 13 mv/dmv FIFO 210 that stores them until needed by the motion compensation unit 212. As described in detail
  • compensation unit 212 to form full I-, P- and B- frames for display.
  • VLD command decode/execution unit 136 preferably has state machines
  • Figs. 6A-6G illustrate the instruction set supported by micro-
  • Fig. 2A illustrates the
  • command decode/execution unit 136 the micro-sequencer
  • instruction set includes eight instructions 214a-214g, each of which uses
  • instructions ICMD and CMDI of instruction 214b are execute commands.
  • All other six instructions 214a and 214c-214g are flow control instructions
  • VCI registers 150 operate off of data found in the VCI registers 150.
  • the following tables provide a description of the various VCI
  • Table 1 defines VCI control register descriptions.
  • Table 2 defines VCI control register descriptions.
  • Table 3 defines macroblock and block layer register descriptions.
  • Table 4 defines control and status
  • Table 5 defines predictor and state machine
  • the VCI control registers are used to access the VCI indirect registers
  • the RISC CPU 1 12 sets up the VCI_addr
  • vci_motype 0x06 r/w decoded motion type [0] mv_count 0: 1 vector, 1 :2vector [1] mv_format 0:field, 1 :frame [2] dmv vci_dct_type 0x07 1 r/w dct type 0:frame, 1 :field vci_mvfsl 0x08 1 r/w motion vertical field select one reserved 0x09 1 reserved vci_temp_0 OxOa to r/w reserved OxOf
  • a write to DCJpred resets to a constant value as indicated by the DC precision bit in DEC_mode register.
  • vci_dec_cpred 0x27 r/w Chroma DC predicted value.
  • a write to DEC_cpred resets to a constant value as indicated by the DC precision bits in DEC_mode register.
  • Table 6 defines VLD control registers with RBUS interface
  • dec valuel r/w [15:0] hold the decoded value for all commands except the DECODE BLOCK commands.
  • DECODE BLOCK commands return the decoded DC coefficient in this field.
  • dec value2 r/w This value hold the current run and level.
  • Table 7 defines VLD control registers with GBUS interface 152:
  • the TBIT (test bit) instruction 214a tests a bit (given by
  • bitnum in the VCI register 220 and branches if equal to the value of
  • vci_vld_out register are compared with the start code pattern, and the flag
  • register 228 is set if they match to indicate that a start code has been
  • the BRANCH instruction 214d performs an absolute branch to the
  • the "halt" bit 236 indicates to change the vci control register to a halt state.
  • the SETF (set flag) instruction 214e sets the 8 Isb of the flag register with
  • the HALT instruction 214g halts the video decoder 104 and
  • sequencer 134 issues a command to video decoder 104 and waits.
  • CMDI instruction causes the micro-sequencer 134 to issue a command to
  • the various commands issued to the video decoder 104 are
  • 00000011 ⁇ vld_startcode> find start code 00000100 ⁇ vld_mbi> macroblock address increment 00000101 ⁇ vld_cbp> coded block pattern 00000110 ⁇ vld_intra_luma > run intra luma block 00000111 ⁇ vld_intra_chromau > run intra chroma U block 00001000 ⁇ vld_intra>chromav> run intra chroma V block 00001001 ⁇ vld_non_intra > run non-intra block 00001010* ⁇ vld_mbs> generate macroblock start signal 00001100* ⁇ vld_dpcm > reset luma and chroma predictor
  • Oxyz ⁇ vld_mvxyz> get motion vector: x-forward, y- horizon, z-first *:need to dispatch from cmdi instruction
  • the VLD commands of Table 8 are autonomous operations
  • VLD VLD
  • variable length table decode instructions may be generally categorized as variable length table decode
  • the ⁇ vld_get_bitxx> command for example, extracts a
  • ⁇ vld_dmv> command retrieves a motion vector value from one of the
  • each motion vector is stored as a combination of the previous
  • the prediction is itself coded in the form
  • the ⁇ vld_dmv> command is used to decode the quotient through
  • the ⁇ vld_peek> command permits visibility of a specified number of bits from the

Abstract

A variable length decoder (VLD) (104) for decoding MPEG-1 and -2 syntax compliant video bit streams. The VLD (104) includes a micro-sequencer (134) and VLD command decode/execution unit (136) for controlling the MPEG decoding process using a novel instruction set (214a, 214g). The instruction set (214a-214g) includes a set of commands for decoding the video data and a set of flow control instructions. A rotator/barrel shifter (158) is provided for making a predetermined number of encoded bits from the video bit stream available to the VLD (104) and a variable length table decoder (186) for variable length decoding using the MPEG standard variable length code (VLC) tables. The variable length table decoder (186) shares a prefix pattern matching scheme across all of the VLC tables and organizes the variable length codes into a series of subtables. Each subtable corresponds to one of the unique prefix patterns. Variable length codes are decoded by identifying a leading pattern in the video data bit stream and, in parallel, accessing the subtable corresponding to that leading pattern. Run-length and amplitude level DCT coefficient symbols are stored in compressed form, and decoded as needed by an inverse transform unit (208). Motion vectors are also stored until needed by a motion compensation unit (212).

Description

VARIABLE LENGTH DECODER FOR DECODING DIGITALLY ENCODED VIDEO SIGNALS
Cross-Reference
The present application claims the filing benefit of co-
pending provisional application Serial No. 60/085,797, filed on May 18,
1998, the disclosure of which is expressly incorporated herein by
reference in its entirety.
Field of the Invention
The present invention relates to decoding of digitally
encoded video signals and, more particularly, to a decoder for decoding
video data and control information which have been encoded using fixed
length values and variable length codes.
Background of the Invention
Digital transmission of video signals has become more
widely used in recent years, particularly in the consumer electronics
industry. This growth in the use of digital video signal transmission and reception in digital versatile disc (DVD) players and digital video
broadcasting (DVB) set-top-box applications, for example, has led to
improved picture quality in the transmitted sequence of images and the
ability to more effectively control storage, manipulation and display of the
video signal over existing NTSC and PAL analog transmission systems.
In furtherance of these advances, the industry sponsored Moving Pictures
Expert Group (MPEG), chartered by the International Organization for
Standardization (ISO), has specified formats for digital video compression,
i.e., the syntax for encoding video bit streams, which are defined in two
standards, ISO-11172-2 (MPEG-1) and ISO-13818-2 (MPEG-2). During the
discussion to follow, the reader is hereby referred to ISO-11172-2 (MPEG-
1) and ISO-13818-2 (MPEG-2) for a more detailed description of the bit
stream syntax used to digitally encode video signals according to these
standards. Each of these standards is hereby expressly incorporated
herein by reference in its entirety.
The bit stream syntax defined by the MPEG-1 and -2
standards relates to three general types of information or data in the bit
stream, namely control information which is necessary to define the bit
stream, control information which is necessary to properly decompress
and reproduce the transmitted sequence of images, and the encoded
video data. The bit stream control information may identify that the bit stream is packetized video or audio data, or that the bit stream is a video
signal encoded using either the MPEG-1 or -2 standard, for example.
Image control information may include, as an example, the frame
horizontal and vertical size, i.e., the number of picture elements (pels) per
line and number of lines per frame, the frame or field rate, and the aspect
ratio. As will be described in more detail below, the encoded video data
represents the DCT transformed and quantized chrominance and
luminance pel values that are necessary for recreation of each frame or
field.
The MPEG-1 and -2 standards each specify a bit stream
syntax designed to improve information density and coding efficiency by
methods that remove spatial and temporal redundancies. Each MPEG
picture is divided into a series of macroblocks which are made up of 16 x
16 luminance pels (Y), or a 2 x 2 array of four 8 x 8 transformed blocks of
pels. Each macroblock is further made up of 8 x 16 chrominance pels
(U,V), or a 1 x 2 array of two 8 x 8 blocks of pels. During the encoding
process, spatial redundancies are removed by using Discrete Cosine
Transform (DCT) coding of the 8 x 8 pel blocks followed by quantization,
zigzag scan , and variable length coding of runs of zero (run-length) and
amplitude levels. Motion compensated prediction is used to remove
temporal redundancies. For video, MPEG contemplates Intra (I-) frames, Predictive (P-
) frames and Bidirectionally Predictive (B-) frames. The l-frames are
independently coded and are the least efficiently coded of the three frame
types. P-frames are coded more efficiently than the l-frames and are
coded relative to the previously coded I- or P-frame. B-frames are coded
the most efficiently of the three frame types and are coded relative to both
the previous and the next I- or P-frame. The coding order of the frames
in an MPEG system is not necessarily the same as the presentation order
of the frames. Headers in the bit stream provide information to be used
by the decoder to properly decode the time and sequence of the frames
for presentation of a moving picture.
Typical video decoders that are used for decoding digitally
transmitted video bit streams have a micro-controller or sequencer for
controlling a variable length decoder (VLD) that is designed to parse the
bit stream for decoding of the quantized DCT coefficients and motion
vectors using the MPEG variable length code tables (VLC's). An inverse
transform processor is used to transform each block of quantized
coefficient values into a stream of values representing the inverse zigzag
of the block and to dequantize the values. The dequantized DCT
coefficients are passed to an inverse discrete cosine transform (IDCT)
processor that performs an inverse DCT transform operation to recover the chrominance an luminance pel values. These values are then applied,
in combination with the decoded motion vectors, to a motion
compensation (MC) processor which then performs the MPEG
decompression to convert l-,P- and B-frames into full video frames.
In typical VLD architectures for performing MPEG syntax
compliant bit stream parsing and decoding, a predetermined number of
undecoded bits of the video bit stream are stored in one or more registers.
The VLD extracts a smaller number of these bits from the register(s) with
the leftmost bit always aligned as the first bit extracted by the VLD. The
VLD then performs a table look-up in one of the MPEG VLC tables to
decode the variable length encoded video data and obtain the code
length. After the variable length code in the extracted bits has been
decoded, the VLD performs a MASK/SHIFT/OR operation on the bits in the
register(s) to realign the first unused bit in the leftmost position of the
register(s). The VLC tables are typically contained in one or more PALS
or ROMs which have approximately 2n x m memory locations, where "n"
represents the maximum possible variable code length in each of the VLC
tables and "m" represents the number of unique VLC tables.
It will be appreciated by those skilled in the art that the
SHIFT/MASK/OR operation required for alignment of the unused bits after
the decode process in certain VLD architectures will significantly affect the overall decode speed of the VLD. Since each of these operations may
require one or more cycles, the decode efficiency of the VLD is
significantly decreased as multiple cycles are required by the VLD to
decode each DCT coefficient symbol (i.e., each run-length and amplitude
level pair) and then realign the unused bits. Additionally, the VLC table
structure in certain VLD architectures adds cost and complexity to the VLD
as each variable length code of each unique VLC table is stored in a
separate memory location.
Thus, there is a need for a VLD that efficiently decodes
variable length DCT coefficients and motion vectors which have been
encoded according to the MPEG-1 or -2 standard. There is also a need for
a VLD that minimizes the amount of memory required to decode the
various MPEG variable length codes. There is yet also a need for a VLD
that is able to receive instructions from a micro-sequencer in accordance
with a predefined set of instructions, and further to receive instructions
from a master controller.
Summary of the Invention
The present invention is embodied in a variable length video
decoder that is particularly suited for decoding MPEG-1 and -2 syntax
compliant video bit streams. The video decoder is designed as a single
event per cycle slice parsing engine for decoding the macroblock and block layers of individual slices to generate DCT coefficient values and
motion vectors.
The video decoder incorporates a micro-sequencer that
interfaces with a VLD command decode/execution unit to control the
variable length decoding process according to the MPEG standard.
During the decoding process, the micro-sequencer either issues
commands to the VLD command decode/execution unit for performing
variable length decoding or controls the program flow as provided
through its instruction set which is stored in instruction ROM. The video
decoder is further able to receive decode instructions from a RISC CPU
that is responsible for upper layer parsing and controlling the overall
decoding process for reconstruction of the decoded sequence of images.
Encoded video data is stored in DRAM memory and made
available to the video decoder through a channel buffer FIFO. In
accordance with one aspect of the present invention, a predetermined
number of these encoded video data bits are made visible to the video
decoder and a variable length table decoder through the use of a
rotator/barrel shifter and pointer register. The barrel shifter and pointer
register make the bits from pointer address to pointer address + 31 visible
as rotator/barrel shifter data to both the video decoder and a variable
length table decoder. The video decoder is responsible for decoding the variable length code in the rotator/barrel shifter data to obtain the
necessary DCT coefficients and motion vectors for each slice. After the
variable length code is decoded, the pointer register of the rotator/barrel
shifter is incremented to prepare for the next decode cycle.
In accordance with another aspect of the present invention,
a novel scheme is provided to enable the video decoder to access each
of the MPEG VLC tables to obtain the necessary decoded value. Each
MPEG VLC table is divided into a series of subtables as defined by a
unique prefix pattern identified in each of the tables. During the variable
length decode process, the 32 bits of extracted rotator/barrel shifter data
are applied to a pattern match logic and MUX control in the variable
length table decoder to identify the unique prefix pattern in the
rotator/barrel shifter data. In parallel, the bits after the prefix pattern are
applied to all of the subtables in each of the MPEG VLC tables. After the
variable length encoded data has been decoded, the variable length table
decoder provides the decoded value and a valid code status bit. The
variable length table decoder also provides a code length signal to the
pointer register of the rotator/barrel shifter to increment the pointer
register by the code length.
In accordance with yet another aspect of the present
invention, the decoded DCT coefficients are stored as compressed run- length and amplitude level pairs in a run-level decoder/FIFO. The run-level
decoder/FIFO decompresses the run-length and amplitude level pairs into
DCT coefficients as needed by an inverse transform unit. This allows
decoding of the Huffman encoded variable length pairs in parallel with the
run-level decoding of previously decoded run-level pairs. Motion vectors
are stored in a mv/dmv FIFO until needed by a motion compensation unit.
The above and other aspects, objects and advantages of the
present invention shall be made apparent from the accompanying
drawings and the description thereof.
Brief Description of the Drawings
The accompanying drawings, which are incorporated in and
constitute a part of this specification, illustrate embodiments of the
invention and, together with a general description of the invention given
above, and the detailed description of the embodiments given below,
serve to explain the principles of the invention.
Fig. 1 is a block diagram of a video/audio decoder for
performing digital audio/video signal data decompression and output in
accordance with principles of the present invention;
Fig. 2 is a block diagram of the video decoder in the
decoding system shown in Fig. 1 , including a variable length decoder or
VLD for decoding digitally encoded video data and control information; Fig. 2A is a block diagram of a micro-sequencer and VLD
command/decode execution unit of the video decoder shown in Fig. 2;
Fig. 3 is a schematic diagram of a rotator/barrel shifter circuit
for providing 32-bit increments of encoded video data to the variable
length decoder (VLD) command decode/execution unit and the variable
length table decoder of Fig. 2;
Fig. 4 is a representation of a pattern match structure in the
"macroblock_address_increment" variable length code (VLC) table which
is accessed by the variable length decoder (VLD) command
decode/execution unit of Fig. 2;
Fig. 5 is a functional block diagram of a decoding logic circuit
used by the variable length decoder (VLD) of Fig. 2 in accessing variable
length code (VLC) tables during the video data decompression process;
Fig 6A is a micro-sequencer instruction format for the TBIT
instruction;
Fig 6B is a micro-sequencer instruction format for the ICMD,
CMDI instructions;
Fig 6C is a micro-sequencer instruction format for the COMP
instruction;
Fig 6D is a micro-sequencer instruction format for the
BRANCH instruction; Fig 6E is a micro-sequencer instruction format for the SETF
instruction;
Fig 6F is a micro-sequencer instruction format for the INCM
instruction; and
Fig 6G is a micro-sequencer instruction format for the HALT
instruction.
Detailed Description of the Preferred Embodiments
With reference to the figures and to Fig. 1 in particular, a
decoding system 100 is shown that incorporates various functional
modules 102 through 1 12 for performing audio/video decoding of digitally
encoded video signals and presentation of the decompressed video
images. Preferably, decoding system 100 is configured as an application
specific integrated circuit (ASIC) for the purposes of digital audio/video
reception in digital versatile disk (DVD) and digital video broadcasting
(DVB) set-top-box (STB) applications, for example. It will be understood
that the functional units illustrated in Fig. 1 are exemplary, and in a
practical implementation, additional functional units might be included.
Each of the functional units 102 through 1 12 interacts in various ways with
a large off-chip memory 1 14, which is a dynamic random access memory
or DRAM. Access to DRAM 1 14 is controlled by a memory controller 1 16
on the ASIC 100. For exemplary purposes, a few of the functional units of the
ASIC 100 will be described. These functional units include a
programmable input demultiplexor 102 which preferably receives the
digitally encoded video/audio input signal on line 1 18 at a data rate of up
to 72 Mbps. The digitally encoded video/audio signal is a serial bit stream
of packetized data which is commonly referred to as a "Packetized
Elementary Stream" or PES stream having a predefined bit stream syntax
to identify the configuration of the packet data. The demultiplexor 102 is
responsible for parsing the incoming digitally encoded signal into separate
μackets of video, audio or other data, and storing the input signal into
buffers in DRAM 1 14 using memory controller 1 16. As will be described
in more detail below, a video decoder 104 in accordance with the
principles of the present invention functions to retrieve video data and
image control information stored in a buffer in DRAM 1 14, decode the
video data and control information (using frequent and repetitive accesses
to DRAM memory 1 14), and thereafter deliver the decoded video
information to output encoder 108 for output on a monitor via bus 120.
Output encoder 108 is preferably an NTSC/PAL encoder for providing an
image size of 720 x 480 pixels at 30 fps for NTSC and 720 x 576 pixels at
25 fps for PAL. An audio decoder 106 retrieves audio information from
DRAM 1 14, decodes the audio information for output, and delivers the audio information for output to speakers via bus 122. ASIC 100 also
includes a host interface 1 10 for interacting with a host micro-controller
via lines 124 to permit the host computer to monitor and control
operations of the ASIC 100.
In addition to the illustrated functional units, there may be
one or more additional video decoding units for decoding subpicture
video information which may incorporate subtitles or other information
that accompanies the main video being decoded by video decoder 104.
Furthermore, on-screen displays may be generated within ASIC 100 by an
OSD section connected to RBUS 126 and GBUS 128. On-screen displays
can be generated in response to commands received from the host CPU
to provide feedback on the operation of the host CPU and/or the playback
or reception status of the device in which ASIC 100 is being used.
Control of the application specific integrated circuit 100 is
provided by a reduced instruction set central processing unit (RISC CPU)
1 12 which controls and monitors the operation of each of the other
functional units on the ASIC 100. RISC CPU 1 12 responds to 16-bit
instructions, which are stored in an instruction memory 130. Instruction
memory 130 holds 4096 16-bit instructions, adequate for relatively
straightforward programs of the ASIC 100. For more complex programs
that might be performed by the ASIC 100, "pages" of 4096 instructions can be swapped in and out of program memory 130 from a much larger
instruction buffer in DRAM 1 14.
As illustrated in Fig. 1 , RISC CPU 1 12 interacts with each of
the functional units in ASIC 100 via two main busses, known as the RBUS
126 and the GBUS 128. Specifically, each functional unit is connected to
the 64 bit GBUS 128 through which data may be retrieved and delivered
to the memory controller 1 16, and thus to or from DRAM 1 16.
Furthermore, blocks of data may be transferred from one functional unit
to another functional unit via the GBUS 128.
Requests for memory access or transfer, as well as various
other commands, are passed from one functional unit to others via RBUS
126. RBUS 126 may comprise one or more 32-bit busses, used by
functional units making frequent memory accesses, or a single 8-bit, time
multiplexed bus shared by several functional units. An RBUS controller
132 receives requests for use of RBUS 126, arbitrates between these
requests as necessary, and delivers access to the RBUS to the highest
priority requesting functional unit.
When a memory access is requested, the requesting
functional unit 102 through 1 12 delivers a virtual address over RBUS 126
to memory controller 1 16. The memory access request may request
delivery of a single memory location, or may include an identification of a number of memory locations to be accessed in response to the request.
Memory controller 1 16 responds to the request by managing access to the
identified locations in DRAM 1 14 in response to the request. If multiple
requests for memory access are pending at any time, memory controller
1 16 arbitrates between the pending requests to permit access to the
highest priority requesting functional unit. Further details on the operation
of the memory controller 1 16 in response to requests can be found in
copending U.S. Patent Application Serial No. 08/846,590, entitled
"MEMORY ADDRESS GENERATION FOR DIGITAL VIDEO", filed on April
30, 1997, which is hereby incorporated in its entirety herein by reference.
Additionally, details on the operation of RISC CPU 1 12 and its reduced
instruction set can be found in copending U.S. Patent Application Serial
No. 08/865,749, entitled SPECIAL PURPOSE PROCESSOR FOR DIGITAL
AUDIO VIDEO DECODING, filed on May 30, 1997, which is hereby
incorporated in its entirety herein by reference.
Additional data on the status of various functional units is
available via RBUS 126. Functional units provide status information which
can be accessed at a particular address identified via the RBUS 126. Thus,
for example, to access a status word from the video decoder 104, an
access request identifying the DEC_VALUE address is delivered to the
RBUS controller 132. In response, the RBUS controller 132 causes the status word of video decoder 104 to be delivered to the requesting
functional unit.
Commands are also sent to functional units via RBUS 126.
To deliver commands to a functional unit, the commands are forwarded
to a particular address for the functional unit via the RBUS. Thus, for
example, to deliver a command to the video decoder 104, an access
request identifying the VLD_CMD address is delivered to the RBUS
controller 132. In response, the RBUS controller 132 enables the
requesting functional unit to deliver the command to the RBUS 126, and
causes video decoder 104 to receive the command into its command
buffer.
Video decoder 104 is the focus of the present invention and
its operation and features are shown most clearly in Figs. 2-6G. In
accordance with the principles of the present invention, video decoder
104 is particularly adapted to perform video decoding of MPEG-1 and
Main Profile @ Main Level MPEG-2 syntax compliant digitally encoded
video signals. As set forth in ISO/IEC 13182-2: 1995 (E), which is
incorporated herein by reference in its entirety, the MPEG-2 syntax defines
a compressed bit stream of video data and control information
representing a sequence of images in six layers, in particular: the
sequence layer, the group of pictures layer, the picture layer, the slice layer, the macroblock layer and the block layer. Each of these layers in the
encoded bit stream includes a unique start code which identifies the layer
and provides either fixed length data values or variable length Huffman
encoded data, or both, which must be a parsed and decoded by video
decoder 104. Upper layer parsing of image control information above the
slice layer is handled by RISC CPU 1 12. In this way, RISC CPU 1 12 obtains
sufficient information from the compressed video bit stream to control
decompression, reconstruction and presentation of the transmitted
sequence of images in the video bit stream.
Referring now to Figs. 2 and 2A, a block diagram of the video
decoder 104 is shown in detail. As will be described in more detail below,
the primary function of video decoder 104 is a single ordered symbol per
cycle slice parsing engine for decoding the macroblock and block layers
of individual slices. When a slice end is reached, an interrupt is sent to
RISC CPU 1 12 which performs various memory checks and then instructs
processing of the next slice. Operation of video decoder 104 is primarily
controlled through a micro-sequencer 134 that interfaces with a VLD
command/decode execution unit 136 through lines 138. The micro-
sequencer 134 includes a 256 x 16 instruction ROM 140 and an instruction
decode/control unit 142 (see Fig. 2A). During the decoding process of the
macroblock and block layers for each slice, the micro-sequencer 134 is programmed to either issue commands to the VLD command/decode
execution unit 136 for performing variable length decoding or to control
the program flow as provided through its instruction set. Additionally, the
VLD command/decode execution unit 136 may receive instructions
directly from RISC CPU 1 1 2 through RBUS interface 144, line 146 and
multiplexor 148. As will be described in more detail below, the RISC CPU
1 12, micro-sequencer 134 and VLD command decode/execution unit 136
are able to read and write the content of a series of VLD command
instruction registers (VCI registers) 150 which form part of the VLD
architecture datapath.
As noted above, encoded video data is initially stored in
DRAM 1 14. The encoded video data is available to video decoder 104
through memory controller 1 16 via the GBUS 128. Video decoder 104
includes a GBUS interface in the form of 16 x 64 channel buffer FIFO 152
that stores a sufficient amount of the coded video bit stream to insure that
the buffer FIFO 152 does not empty or overfill during the decoding
process.
One of the primary functions of the video decoder 104 is to
decode variable length encoded data in the video bit stream. The variable
length data is Huffman encoded in accordance with VLC tables defined in
the MPEG-1 and -2 standards. The VLD of the present invention supports at least eleven of the MPEG VLC tables, including: macroblock_type_l
macroblock_type_P; macroblock_type_B; macroblock_type_D
macroblock_address_increment; dct_dc_size_luma
dct_dc_size_chrominance; ac_table (table 0 and table 1)
coded_block_pattern; motion_code; and dmvector.
As shown most clearly in Fig.2, the channel buffer FIFO 152
provides 64 bits of video data to each of a pair of A and B registers 156A
and 156B through respective 64-bit busses from the channel buffer FIFO
152. In accordance with one aspect of the present invention, a
rotator/barrel shifter 158 and pointer register 160 are provided to make the
bits from the pointer address to pointer address +31 inclusive visible to
the VLD command decode/execution unit 136. These 32 bits are provided
to the VLD command decode/execution unit 136 as rotator/barrel shifter
data 162.
With reference to Figs.2 and 3, the A and B registers 156A
and 156B are connected in a 128-bit ring to permit boundary crossing of
the pointer from bit 63 in A register to bit 64 in B register, and from bit 127
in B register to bit 0 in A register. When the pointer crosses from A
register to B register, the contents of A register are refreshed with new
data. Likewise, when the pointer crosses from B register to A register, the
contents of B register are refreshed with new data. To permit movement of the pointer around the ring, and to make each of the 128 bits accessible
to the pointer, the barrel shifter 164 shown in Fig. 3 has seven selector
stages that provide various incremental shifts of data to the left by a
power of 2 or no shift at all. The first stage 166, labeled "Stage 64/0", has
128 selectors (D0-D127) to allow each of the 128 bits to be shifted to the left
64 bits or not shifted at all. The second stage 168, labeled "Stage 32/0",
has 95 selectors to provide shifting to the left of 32 bits or no shift at all.
The third stage 170, labeled "Stage 16/0", has 63 selectors to provide
shifting to the left of 16 bits or no shift at all. The fourth stage 172, labeled
"Stage 8/0", has 47 selectors to provide shifting to the left of 8 bits or no
shift at all. The fifth stage 174, labeled "Stage 4/0", has 39 selectors to
provide shifting to the left of 4 bits or no shift at all. The sixth stage 176,
labeled "Stage 2/0", has 35 selectors to provide shifting to the left of 2 bits
or no shift at all, and the seventh and last stage 178, labeled "Stage 1/0",
has 33 selectors to provide shifting to the left of 1 bits or no shift at all.
With the structure of barrel shifter 164, any 32 of the 128 bits
in the A and B registers 156A and 156B may be made available to the VLD
command decode/execution unit 136 as the rotator/barrel shifter data 162.
In each of the stages 166-178, left shifts are indicated by arrows 180, while
no shift is indicated by arrows 182. Those skilled in the art will appreciate
that as used herein with respect to barrel shifter 164, the term "selector" means any circuit which provides the left-shift or no-shift operations
described in detail above. With the operation of barrel shifter 164 in
accordance with the present invention, various selectors can be
eliminated from several of the stages 168-178, as indicated
diagrammatically by the phantom triangle 182 in Fig. 3. By truncating the
barrel shifter 164 to a trapezoidal shape rather than a symmetrical
rectangular shape, it will be appreciated that unnecessary selectors may
be eliminated to save cost and hardware real estate.
As shown most clearly in Figs. 2 and 5, the 32 bits of
rotator/barrel shifter data 162 are also made available to a variable length
table decoder 184 which incorporates the MPEG standard variable length
code (VLC) tables. In accordance with another aspect of the present
invention, a novel scheme is provided to enable the VLD command
decode/execution unit 136 to access each of the eleven MPEG VLC tables.
As shown by way of example in the VLC table for
"macroblock_address_increment" in Fig. 4, a prefix pattern is identified in
each of the MPEG VLC tables that defines the number of "zeros" which
lead the first occurrence of a "one" in the variable code, and any extra
logic that is required to generate a set of all unique prefix patterns.
For example, in the "macroblock_address_increment" table
of Fig. 4, each variable length code has a defined prefix pattern that is defined as K0, K,, K2, K3, K4 0, K4 , K5 , K5_01, K5_001, K5 000 and K6. K0
represents no "zeros" before the first occurrence of a "one", K., represents
one "zero" before the first occurrence of a "one" and so on for K2, K3 and
K6. With several of the variable length codes, extra logic is required after
the leading "zeros" before "one" pattern, such as K4 0, K4 K5 ,, K5 01, K5 001,
and K5 000, to generate a set of all unique prefix patterns. In this way, a set
of subtables may be defined by the prefix pattern in each of the MPEG
VLC tables, with each subtable corresponding to one of the unique prefix
patterns . Moreover, each variable length code has a code length that
defines the number of bits in the variable length code. An increment
value is associated with each variable length code of
"macroblock_address_increment" to define the horizontal position of the
first macroblock in a slice with respect to the left edge of the picture, or
the differential increment value from the most recently transmitted
macroblock. Those skilled in the art will readily appreciate from this
example how the prefix pattern and extra logic may be defined for the
other MPEG VLC tables.
Referring now to the variable length table decoder 186
shown in Fig. 5, during the variable length decode process, the 32 bits of
rotator/barrel shifter data 162 are applied to a pattern match logic and
MUX control 188 to identify the unique prefix pattern in the rotator/barrel shifter data 162. The identified prefix pattern match, e.g., K0, K,, etc., is
used as a signal "MUX CNTL" 190 to control the output of each MUX 192
in each of the eleven MPEG VLC tables. Thus, the prefix pattern match
determined by pattern match logic and MUX control 188 is shared among
all of the eleven MPEG VLC tables, including the
"macroblock_address_increment" and "motion_code" VLC tables as shown
in Fig. 5, to control the output of their respective MUX'S 192.
The VLC table being decoded at any given time is determined
by the "VLC TABLE SELECT" signal 194 provided by the VLD command
decode/execution unit 136 as will be described in more detail below. At
the same time that the prefix pattern match is being identified by pattern
match logic and MUX control 188 to define the MUX CNTL signal 190
which is to be applied to each MUX 192, the bits after the leading pattern
match in the 32 bits of rotator/barrel shifter data 162 are simultaneously
applied to all of the subtables in each of the eleven MPEG VLC tables, as
represented by busses 196. Thus, if VLC table
"macroblock_address_increment" is selected by "VLC TABLE SELECT"
signal 194, and the prefix pattern match is K5 ,, and a "1" is applied via bus
196 to subtable K5 v MUX 192 will output a decode value of 14
(representing the increment value), a code length of 8 (representing the
number of bits in the variable length code) and a valid status bit (representing validity of the code) to the VLD command decode/execution
unit 136. Thus, after the decode process is completed, the variable length
table decoder 186 provides two signals to the VLD command
decode/execution unit 136, including the decoded value 198 and the valid
code status bit 200. The variable length table decoder 186 also provides
a code length signal 202 on line 204 to the pointer register 160 to
increment the pointer register by the code length. Preferably, the variable
length table decoder 186 is hardwired optimized random logic, although
it is also contemplated that it could be a RAM or ROM.
Referring now to Figs. 2 and 3, the code length signal 202
from the variable length table decoder 186 is used to increment the
pointer register 160. The code length signal 202 is also used by the barrel
shifter 164 to control the necessary shifting pattern in the barrel shifter.
For example, if the code length signal 202 has a value of 13, then stages
172 (8/0), 174 (4/0) and 178 (1/0) of the barrel shifter 164 would be enabled
to cause a 13 bit shift to the left while all other stages would have no shift.
After the shifting operation is performed by barrel shifter 164, a new set
of rotator/barrel shifter data 162 is made visible to the VLD command
decode/execution unit 136 and variable length table decoder 186. The
variable length table decoder 186 and barrel shifter 164 of the present
invention provide for efficient decoding of the MPEG variable length codes while at the same time reducing the memory requirements for the VLC
tables.
In accordance with the MPEG standard, variable length
coded DCT coefficients are decoded as run-length and amplitude level
pairs, represented in Fig. 2 as symbol "<r,l>". The value "r" represents the
number of zero value coefficients before the coefficient having the
amplitude level represented by "I". For example, the symbol <5,2>
represents 5 zeros before the coefficient value of 2. In accordance with
yet another aspect of the present invention, as the run-length and
amplitude level pairs are decoded by the variable length table decoder
186, the run-length and amplitude level pair symbols are applied from the
VLD command decode/execution unit 136 to a 64 x 18 run-level
decoder/FIFO 206 that stores them as compressed pairs until needed by
the inverse zigzag, inverse quantization and inverse DCT transform unit
208. It will be appreciated that as the number of compressed symbols is
less than the number of DCT coefficients, the run-level decoder/FIFO 206
permits decoding of the Huffman encoded variable length pairs in parallel
with the run-level decoding of previously decoded run-level pairs.
As also shown in Fig. 2, the decoded motion vectors "mv"
and differential motion vectors "dmv" are applied from the VLD command
decode/execution unit 136 to a 16 x 13 mv/dmv FIFO 210 that stores them until needed by the motion compensation unit 212. As described in detail
in copending U.S. Patent Application Serial No. 09/001 ,122, entitled
"MOTION COMPENSATED DIGITAL VIDEO DECODING AND BUFFER
MEMORY ADDRESSING THEREFOR", filed on December 30, 1997, which
is hereby incorporated herein by reference in its entirety, the decoded
video data values and motion vectors are combined by the motion
compensation unit 212 to form full I-, P- and B- frames for display. The
VLD command decode/execution unit 136 preferably has state machines
for motion vector, differential motion vector, macroblock increment
address, dc coefficient and ac coefficient calculations.
Figs. 6A-6G illustrate the instruction set supported by micro-
sequencer 134 of the video decoder 104, while Fig. 2A illustrates the
overall program flow control between micro-sequencer 134 and the VLD
command decode/execution unit 136. In particular, the micro-sequencer
instruction set includes eight instructions 214a-214g, each of which uses
three bit opcodes 216, where instruction 214b represents two different
instructions. Of the instructions shown in Figs. 6A-6G, only the two
instructions ICMD and CMDI of instruction 214b are execute commands.
All other six instructions 214a and 214c-214g are flow control instructions
as will be described in greater detail below. Most of the instructions 214a-
214g operate off of data found in the VCI registers 150. The following tables provide a description of the various VCI
registers 150. Table 1 defines VCI control register descriptions. Table 2
defines macroblock and block layer register descriptions. Table 3 defines
picture layer register descriptions for upper layer decoding. Table 3
registers are written by RISC CPU 1 12. Table 4 defines control and status
register descriptions, and Table 5 defines predictor and state machine
register descriptions.
TABLE 1. VCI Control Register Definition
Name Field Type Description vci_addr [5:0] r/w VCI indirect register address vci_data [15:0] r/w VCI indirect data
The VCI control registers are used to access the VCI indirect registers
defined in Tables 2-5 below. The RISC CPU 1 12 sets up the VCI_addr
register to read or write the content of the VCI indirect registers of the
specific address. This read and write operation is done by the VCI_data
register.
TABLE 2. VCI Indirect Register Definition of macroblock level
Name Address Width Dir Description vci_mba_x 0x00 7 r/w macroblock address x dimension vci_mba_y 0x01 7 r/w macroblock address y dimension vci_vld_out 0x02 16 r/w temporary output of VLD vci_q_scale 0x03 5 r/w quantizer scale information vci_cbp 0x04 8 r/w coded block pattern TABLE 2. VCI Indirect Register Definition of macroblock level (continued)
Name Address Width Dir Description vci_mtype 0x05 5 r/w macroblock type
vci_motype 0x06 r/w decoded motion type [0] mv_count 0: 1 vector, 1 :2vector [1] mv_format 0:field, 1 :frame [2] dmv vci_dct_type 0x07 1 r/w dct type 0:frame, 1 :field vci_mvfsl 0x08 1 r/w motion vertical field select one reserved 0x09 1 reserved vci_temp_0 OxOa to r/w reserved OxOf
TABLE 3. VCI Indirect Register Definition of picture level layer
Name Address Width Dir Description vci pic init 0x10 26 r/w [25:24]:DC precision
-->00:8-bit, 01:9-bit, 10: 10-bit ~>11 : 11-bit
[23:20]: backward vertical fcode
[19:16]: backward horizontal fcode
[15:12]: forward vertical fcode
[11 :8]: forward horizontal fcode
[7]: concealment motion vector
[6]: intra vie format
[5]: frame_pred_frame_dct
[4:2]: picture coding type
(l,P,B,D)
[1:0]: picture structure (field, frame)
~>[00]: reserved
-->[01]: top field
->[10]: bottom field
->[11]: frame vci_seq_init 0x11 10 r/w [10:4]: mb number x dimension
[3]: 0: regular, 1 rspecial— blk type [2]: 0: mpeg2, 1:mpeg1 [1:0]: chroma format -->00: reserved, 01: 420, 10:422, ~>11: 444 vci_conceal 0x12 3 r/w concealment count register vci_temp_1 0x13 to r/w reserved 0x1f TABLE 4. VCI Indirect Register Definition of Control and Status
Name Address Width Dir Description vci_cntl 0x20 2 r/w vci state control register
[31 :30] = 00 : run [31 :30] = 10: halt [31 :30] = 1 1 : reset vci_pc 0x21 8 r/w vci program counter vci_rom 0x22 16 r/w vci_rom output port vci_dmvfifo_a 0x23 3 r/w dmb_fifo read/write address dr vci_dmvfifo 0x24 2 r/w dmy ifo data port vvccii__ppooiinntteerr 0 0xx2255 7 7 r/w rotator pointer vci_dec_lpred 0x26 12 r/w Luma DC predicted value. A write to DCJpred resets to a constant value as indicated by the DC precision bit in DEC_mode register. vci_dec_cpred 0x27 r/w Chroma DC predicted value. A write to DEC_cpred resets to a constant value as indicated by the DC precision bits in DEC_mode register.
[23: 1 V 2]
[11 : 1 U 0] i_temp_2 0x28 to reserved 0x2f TABLE 5. VCI Indirect Register Definition of predictors & state machine
Name Address Width Dir Description vci_mv_predfhO 0x30 13 r/w mvfs, motion vector predictor forward horizontal -first vci_mv_predfvO 0x31 13 r/w mvfs, motion vector predictor forward vertical -first vci_mv_predbhO 0x32 13 r/w mvfs, motion vector predictor backward vertical -first vci_mv_predfh 1 0x34 13 r/w mvfs, motion vector predictor forward horizontal -second vci_mv_predfv1 0x35 13 r/w mvfs, motion vector predictor forward vertical -second vci_mv_predbh 1 0x36 13 r/w mvfs, motion vector predictor backward horizontal -second vci_mv_predbv1 0x37 13 r/w mvfs, motion vector predictor backward vertical -second vci err bits 0x38 10 r error conditions
[9] motype_err [8] coef_err [7] rl_error [6] cbp_err [5] mv_err [4] mbi_err [3] mtype_err [2] get_ac_err [1] dctdcsz_chroma_err [0] dctdcsz_luma_err TABLE 5. VCI Indirect Register Definition of predictors & state machine (Continued)
Name Address Width Dir Description vci stm 0x39 state machines:
[14: 12] vstate : motion vec STM [1 1 :9] dc_cstate : dc STM [8:7] sc_state : start-code STM [6:3] ms_cstate : MB STM [2:0] lc estate : block STM vci_tmp_3 0x3a to 0x3f
Table 6 defines VLD control registers with RBUS interface
144:
TABLE 6. VLD Registers with r bus interface
Name Dir Bit Field Description dec valuel r/w [15:0] hold the decoded value for all commands except the DECODE BLOCK commands. DECODE BLOCK commands return the decoded DC coefficient in this field. dec value2 r/w This value hold the current run and level.
[17: 12] Decoded run length [1 1 :0] Decoded level mvfifo adr r/w [4:0] mv_fifo read/write address bit4 - 0: read, 1 : write mvfifo data r/w [12:0] mv_fifo data port TABLE 6. VLD Registers with r bus interface (continued)
Name Dir Bit Field Description vld_cntl r/w [31 :30] 00: run, 10: halt, 1 1 : reset vld_pic_hdr r/w [31 :0]] picture level params:
[31 : 28] f_code[0][0] (F,H)
[27:24] f_code[0][1 ] (F,V)
[23: 20] f_code[1][0] (B,H)
[19: 16] f_code[1 ][1 ] (B,V)
[15: 14] intra_dc_prec
[13: 12] pic_structure
[1 1 ] topfld irst
[10] frame_prediction_frame_dct
[9] concealment_motion_vectors
[8] q_scale_type
[7] intra_vlc_format
[6] alternate_scan
[5] repeat_first_field
[4] chroma_420
[3] progressive_frame
[2:0] pic ype
rlfifo_adr r/w [6:0] rl fifo read/write address bitβ - 0: read, 1 : write rlfifo_data r/w [17:0] rl_fifo data port vld status r/w [10:0] status bits
[10] vld_busy [9] vld_mv_fifo_empty [8] vld_cfifo_empty [7:4] chfifo_wr_addr [3:0] chfifo_rd_addr vld_cmd w [7:0] vld command to be executed from cpu. dec status r/w [15] error. Set if bitstream error is detected.
Sticky bit. TABLE 6. VLD Registers with r bus interface (continued)
Name Dir Bit Field Description
[14] chan_fifo_empty. Channel FIFO empty.
[13: 10] chan_fifo_wrprt. Channel FIFO write pointer.
[9:6] chan_fifo_rdptr. Channel FIFO read pointer
[5:0] bitcnt. Decoder bitstream read pointer.
Contains number of bits to be read next by decoder. vld_cmd r/w [7:0] vld command from cpu — the vld command will be executed if this address is written from rbus interface.
Table 7 defines VLD control registers with GBUS interface 152:
TABLE 7. VLD Registers with g bus interface
Name Dir Bit Description
Field word_fifo r/w [63:0] Decoder FIFO data port
Referring nowtothe micro-sequencer instructions 214a-214g
of Figs. 6A-6G, the TBIT (test bit) instruction 214a tests a bit (given by
"bitnum" 218) in the VCI register 220 and branches if equal to the value of
the 4-bit forward relative address 222. The COMP (compare) instruction
214c compares the 8 msb or 8 Isb data contents of the vci_vld_out register
(determined by status of "msb" 224) with immediate data 226 and saves the result in flag register 228. If "st_code" 230= 1 , the contents of the
vci_vld_out register are compared with the start code pattern, and the flag
register 228 is set if they match to indicate that a start code has been
found. The BRANCH instruction 214d performs an absolute branch to the
8-bit branch target address 232. The "err" bit 234 indicates vci error and
the "halt" bit 236 indicates to change the vci control register to a halt state.
The SETF (set flag) instruction 214e sets the 8 Isb of the flag register with
the value according to immediate data 238. The INCM (increment
macroblock) instruction 214f compares lower byte of VCI register 240 with
immediate data 242 and stalls if not equal. In the last of the flow control
instructions, the HALT instruction 214g halts the video decoder 104 and
deasserts the vld_busy signal.
The ICMD and CMDI (issue command) instructions 214b
issue one of twenty-two commands to video decoder 104 and store the
output in VCI register 244. With the ICMD instruction, the micro-
sequencer 134 issues a command to video decoder 104 and waits. The
CMDI instruction causes the micro-sequencer 134 to issue a command to
video decoder 104 and keeps running the microcode.
The various commands issued to the video decoder 104 are
provided in Table 8: TABLE 8. VLD Command
OP code Symbol Description 00000001 <vld_escape> macroblock escape 00000010 <vld_peek> peek - don't execute just update CC
00000011 <vld_startcode> find start code 00000100 <vld_mbi> macroblock address increment 00000101 <vld_cbp> coded block pattern 00000110 <vld_intra_luma > run intra luma block 00000111 <vld_intra_chromau > run intra chroma U block 00001000 <vld_intra>chromav> run intra chroma V block 00001001 <vld_non_intra > run non-intra block 00001010* <vld_mbs> generate macroblock start signal 00001100* <vld_dpcm > reset luma and chroma predictor
00001101* <vld_mv_pred > reset motion vector predictor
00010000 <vld_dmv> get dual prime motion vector 00010100 <vld_non_coded> run non-coded block 00010101 <vld_field_motype> decode field motion type 00010110 <vld_frame_motype> decode frame motion type 00011000 <vld_mtypei > get macroblock type for I picture 00011001 <vld_mtypep> get macroblock type for P picture 00011010 <vld_mtypeb> get macroblock type for B picture 00011011 <vld_mtyped > get macroblock type for D picture
0010 xxxx <vld_get<bitxx> get the next 1 to 16 bits (0= > 16)
0011 Oxyz <vld_mvxyz> get motion vector: x-forward, y- horizon, z-first *:need to dispatch from cmdi instruction
The VLD commands of Table 8 are autonomous operations
that are common to many various types of encoding. The VLD
instructions may be generally categorized as variable length table decode
commands for obtaining values from the MPEG VLC tables, instructions
for receiving a parameterized number of bits from the encoded video data,
or block operations.
The <vld_get_bitxx> command, for example, extracts a
specified number of bits from the rotator/barrel shifter 158, and
increments the pointer register 160 by the number of bits retrieved. The
<vld_dmv> command retrieves a motion vector value from one of the
MPEG VLC tables using three parameters from the video data bit stream.
Specifically, each motion vector is stored as a combination of the previous
motion vector and a prediction. The prediction is itself coded in the form
of a quotient (variable length encoded) and a remainder (fixed length
code). The <vld_dmv> command is used to decode the quotient through
the MPEG VLC tables to determine the location of the remainder and the
value of the quotient. The remainder is obtained using the
<vld_get_bitxx> command. Finally, the quotient and remainder are
combined to create the motion vector component. The <vld_peek> command permits visibility of a specified number of bits from the
rotator/barrel shifter 158 without incrementing the pointer register 160 by
the number of bits retrieved.
While the present invention has been illustrated by a
description of various embodiments and while these embodiments have
been described in considerable detail, additional advantages and
modifications will readily appear to those skilled in the art. The invention
in its broader aspects is therefore not limited to the specific details,
representative apparatus and method, and illustrative example shown and
described. Accordingly, departures may be made from such details
without departing from the spirit or scope of applicants' general inventive
concept.
Having described the invention, what is claimed is:

Claims

1. A variable length decoder (104) for decoding a stream of
compressed video data, wherein the stream includes a plurality of variable
length encoded data representing image areas of transmitted frames,
comprising :
a memory (114) for storing variable length encoded data;
a command decode and execution circuit (136) coupled to
the memory for receiving selected variable length encoded data from the
memory (1 14);
a sequencer (134) coupled to the command decode and
execution circuit (136) for providing commands to the command decode
and execution circuit (136) to convert the variable length encoded data
into corresponding decoded values; and
a master controller (1 12) coupled to the command decode
and execution circuit (136) for providing commands to the command
decode and execution circuit (136) independently of the sequencer (134)
to control decoding operation of the command decode and execution
circuit (136).
2. The variable length decoder (104) of claim 1 wherein the
sequencer (134) includes memory (140) for storing a plurality of
instructions and an instruction decode and control circuit (142) coupled
to the instruction memory (140) for decoding instructions from the
memory (140) and providing commands to the command decode and
execution circuit (136) to convert the variable length encoded data into
corresponding decoded values.
3. The variable length decoder (104) of claim 1 further
comprising a plurality of command instruction registers (150) coupled to
the sequencer (134) and the master controller (112), wherein the
sequencer (134) and master controller (112) are operable to read and write
contents of the command instruction registers (150).
4. The variable length decoder (104) of claim 3 wherein the
command instruction registers (150) are associated with the instructions
provided to the command decode and execution circuit (142).
5. The variable length decoder (104) of claim 1 further
comprising a variable length table decoder (186) coupled to the command
decode and execution circuit (136) for receiving variable length encoded
data and provided a corresponding decoded value to the command
decode and execution circuit (142).
6. The variable length decoder (104) of claim 1 wherein the
command decode and execution circuit (136) is operable to decode
variable length encoded data conforming to an MPEG syntax.
7. The variable length decoder (104) of claim 6 wherein the
command decode and execution circuit (136) is operable to decode the
variable length encoded data into DCT coefficient symbols each including
a run-length value and an amplitude level value.
8. The variable length decoder (104) of claim 7 further
comprising a first-in first-out memory and decoder (206) coupled to the
command decode and execution circuit (136) for storing the DCT
coefficient symbols as compressed run-length and amplitude level pairs.
9. The variable length decoder (104) of claim 8 further
comprising an inverse DCT transform circuit (208) coupled to the first-in
first-out memory and decoder (206), wherein the first-in first-out memory
and decoder (206) is operable to decompress the run-length and
amplitude level pairs into DCT coefficients for use by the DCT transform
circuit (208) in reconstructing image data of the transmitted frames.
10. The variable length decoder (104) of claim 6 wherein the
command decode and execution circuit (136) is operable to decode the
variable length encoded data into motion vector values.
11. The variable length decoder (104) of claim 10 further
comprising a first-in first-out memory (210) coupled to the command
decode and execution circuit (136) for storing the motion vector values.
12. The variable length decoder (104) of claim 11 further
comprising a motion compensation circuit (212) coupled to the first-in
first-out memory (210), wherein the first-in first-out memory (210) is
operable to provide the motion vector values to the motion compensation
circuit (212) in reconstructing image data of the transmitted frames.
13. A variable length table decoder (186) for decoding
compressed video data using variable length code tables, wherein the
compressed video data includes variable length encoded data
representing an image area of a transmitted frame, comprising:
a memory (156A, 156B, 162) for storing variable length
encoded data;
a pattern match circuit (188) coupled to the memory (162) for
identifying a unique prefix pattern in the variable length encoded data;
variable length code table data including a decoded value
associated with each of a plurality of variable length codes, wherein the
variable length code table data comprises a plurality of subtable data
circuits each associated with a unique prefix pattern in the variable length
codes;
a datapath (162) coupling the memory (162) to each of the
subtable data circuits for applying variable length encoded data to each
of the subtable data circuits; and
control circuitry (190, 192) responsive to the pattern match
circuit (188) for obtaining a decoded value (198) from the subtable data
circuit associated with the unique prefix pattern in the variable length
codes that matches the identified prefix pattern in the variable length
encoded data, and additional data in the variable length codes after the unique prefix pattern that matches additional data in the variable length
encoded data after the identified prefix pattern.
14. The variable length table decoder (186) of claim 13 wherein
each of the variable length codes includes an associated code length, and
wherein the control circuitry (190, 192) is responsive to the pattern match
circuit (188) for obtaining a code length (202) from the subtable data
circuit associated with the unique prefix pattern in the variable length
codes that matches the identified prefix pattern in the variable length
encoded data, and additional data in the variable length codes after the
unique prefix pattern that matches additional data in the variable length
encoded data after the identified prefix pattern.
15. The variable length table decoder of claim 14 further
comprising a shifter circuit (164) associated with the memory (156A, 156B)
for applying a predetermined number of bits of the variable length
encoded data from the memory (156A, 156B) to the pattern match circuit.
16. The variable length table decoder (186) of claim 15 wherein
the shifter circuit (164) includes a plurality of selector circuits for
selectively shifting the variable length encoded data in the memory (156A,
156B).
17. The variable length table decoder (186) of claim 16 wherein
the plurality of selector circuits are arranged in a plurality of selector
stages, wherein each selector stage is operable to shift the variable length
encoded data in memory (156A, 156B) by a power of two or to provide no
shift of the variable length encoded data.
18. The variable length table decoder (186) of claim 17 wherein
at least one of the selector stages includes fewer selector circuits than a
preceding selector stage.
19. The variable length table decoder (186) of claim 17 wherein
each selector stage includes fewer selector circuits than its preceding
selector stage.
20. The variable length table decoder (186) of claim 16 wherein
the shifter circuit (164) is responsive to the last obtained code value for
shifting the variable length encoded data in the memory (156A, 156B) by
a number of bits equal to obtained code value.
21. A method for decoding a stream of compressed video data
using variable length code tables, wherein the stream includes a plurality
of variable length encoded data representing image areas of transmitted
frames, comprising the steps of:
defining a variable length code table including a decoded
value associated with each of a plurality of variable length codes;
defining a plurality of unique prefix patterns associated with
the variable length codes,
defining a plurality of subtables, wherein each subtable is
associated with one of the unique prefix patterns in the variable length
codes and includes at least one decoded value that is associated with the
unique prefix pattern and additional data in the variable length code after
the unique prefix pattern;
identifying in the variable length encoded data one of the
unique prefix patterns associated with the variable length codes; and
obtaining a decoded value (198) from the subtable associated
with the unique prefix pattern in the variable length codes that matches
the identified prefix pattern in the variable length encoded data, and
additional data in the variable length codes after the unique prefix pattern
that matches additional data in the variable length encoded data after the
identified prefix pattern.
22. The method of claim 21 further comprising the steps of:
associating a code length with each of the plurality of
variable length codes; and
obtaining a code length (202) associated with the variable
length code having a prefix pattern that matches the identified prefix
pattern in the variable length encoded data, and additional data after the
prefix pattern that matches additional data in the variable length encoded
data after the identified prefix pattern.
23. The method of claim 21 , further comprising the steps of:
identifying in the variable length encoded data one of the
unique prefix patterns associated with the variable length codes; and
simultaneously applying the additional data in the variable
length encoded data to each of the plurality of subtables,
wherein a decoded value (198) is obtained from the subtable
associated with the unique prefix pattern in the variable length codes that
matches the identified prefix pattern in the variable length encoded data,
and additional data in the variable length codes after the unique prefix
pattern that matches additional data in the variable length encoded data
after the identified prefix pattern.
PCT/US1999/010659 1998-05-18 1999-05-14 Variable length decoder for decoding digitally encoded video signals WO1999060521A2 (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
AU39908/99A AU3990899A (en) 1998-05-18 1999-05-14 Variable length decoder for decoding digitally encoded video signals
JP2000550062A JP2002516501A (en) 1998-05-18 1999-05-14 Variable length decoder for decoding digitally encoded video signals
EP99923050A EP1078533B1 (en) 1998-05-18 1999-05-14 Variable length decoder for decoding digitally encoded video signals
KR1020007012555A KR20010043480A (en) 1998-05-18 1999-05-14 Variable length decoder for decoding digitally encoded video signals
CA002330566A CA2330566A1 (en) 1998-05-18 1999-05-14 Variable length decoder for decoding digitally encoded video signals
DE69905565T DE69905565T2 (en) 1998-05-18 1999-05-14 CIRCUIT ARRANGEMENT FOR DECODING VARIABLE LENGTH CODES OF DIGITAL VIDEO SIGNALS

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US8579798P 1998-05-18 1998-05-18
US60/085,797 1998-05-18
US09/280,437 1999-03-29
US09/280,437 US6704361B2 (en) 1998-05-18 1999-03-29 Variable length decoder for decoding digitally encoded video signals

Publications (2)

Publication Number Publication Date
WO1999060521A2 true WO1999060521A2 (en) 1999-11-25
WO1999060521A3 WO1999060521A3 (en) 2000-03-16

Family

ID=26773091

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1999/010659 WO1999060521A2 (en) 1998-05-18 1999-05-14 Variable length decoder for decoding digitally encoded video signals

Country Status (9)

Country Link
US (1) US6704361B2 (en)
EP (1) EP1078533B1 (en)
JP (1) JP2002516501A (en)
KR (1) KR20010043480A (en)
CN (1) CN1199472C (en)
AU (1) AU3990899A (en)
CA (1) CA2330566A1 (en)
DE (1) DE69905565T2 (en)
WO (1) WO1999060521A2 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10140289A1 (en) * 2001-08-16 2003-02-27 Technotrend Ag Device for reducing bandwidth in MPEG2 video streams has digital tuner, interface for connecting to host, transport stream interface logic, digital signal processor with linked memory and universal serial bus controller
EP1317147A2 (en) * 2001-11-30 2003-06-04 Matsushita Electric Industrial Co., Ltd. A method of MPEG-2 video variable length decoding in software
WO2003098809A1 (en) * 2002-05-17 2003-11-27 Electronics And Telecommunications Research Institute Programmable variable length decoder including interface of cpu processor
US7970645B2 (en) * 2001-02-23 2011-06-28 Cox Communications, Inc. Method and apparatus for providing targeted advertisements
US8111753B2 (en) 2003-02-06 2012-02-07 Samsung Electronics Co., Ltd. Video encoding method and video encoder for improving performance

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6934338B1 (en) * 1998-05-18 2005-08-23 Sony Corporation Variable length decoder for decoding digitally encoded video signals
EP1315372B1 (en) * 2000-08-25 2010-05-05 Panasonic Corporation Decoding device
EP1193978A1 (en) * 2000-09-29 2002-04-03 Koninklijke Philips Electronics N.V. Display refresh method
US6975809B1 (en) * 2000-11-14 2005-12-13 Ati International, S.R.L. Method and apparatus for passing clear DVD data in a computer
US7046852B2 (en) * 2001-09-13 2006-05-16 Sharp Laboratories Of America, Inc. Fast image decompression via look up table
US7398276B2 (en) * 2002-05-30 2008-07-08 Microsoft Corporation Parallel predictive compression and access of a sequential list of executable instructions
US20040086117A1 (en) * 2002-06-06 2004-05-06 Petersen Mette Vesterager Methods for improving unpredictability of output of pseudo-random number generators
KR100522595B1 (en) * 2002-11-29 2005-10-19 삼성전자주식회사 MPEG video decoding methods and MPEG video decoders
US7627039B2 (en) * 2003-09-05 2009-12-01 Realnetworks, Inc. Parallel video decoding
EP1724931A1 (en) * 2004-03-12 2006-11-22 Matsushita Electric Industrial Co., Ltd. Variable-length code decoding device
US7590059B2 (en) * 2004-05-21 2009-09-15 Broadcom Corp. Multistandard video decoder
CN100356793C (en) * 2005-06-09 2007-12-19 清华大学 High-speed changeable long code parallel decoder
KR100731640B1 (en) * 2005-12-23 2007-06-22 주식회사 텔레칩스 Apparatus for bitstream processing
WO2007108395A1 (en) 2006-03-23 2007-09-27 Nec Corporation Variable-length code decoder and decoding method
ATE450019T1 (en) * 2006-03-23 2009-12-15 Nds Ltd SYSTEM FOR ANALYZING MOTION
KR101083379B1 (en) * 2007-03-14 2011-11-14 니폰덴신뎅와 가부시키가이샤 Motion vector searching method and device, and record medium having recorded the program therefor
KR101075606B1 (en) * 2007-03-14 2011-10-20 니폰덴신뎅와 가부시키가이샤 Quantization control method, device, program, and recording medium containing the program
CN101632308B (en) * 2007-03-14 2011-08-03 日本电信电话株式会社 Encoding bit rate control method and device
CA2679255C (en) * 2007-03-14 2013-04-30 Nippon Telegraph And Telephone Corporation Code amount estimating method and apparatus, and program and storage medium therefor
KR20080114388A (en) * 2007-06-27 2008-12-31 삼성전자주식회사 Scalable video encoding apparatus and method and scalable video decoding apparatus and method
JP2010045598A (en) * 2008-08-12 2010-02-25 Fujitsu Ltd Variable length decoder, and encoder
JP5067361B2 (en) * 2008-12-25 2012-11-07 ソニー株式会社 Encoder and decoder, encoding method and decoding method, and recording medium
CN101505155B (en) * 2009-02-19 2012-07-04 中兴通讯股份有限公司 Apparatus and method for implementing prefix code structure
US9419792B2 (en) * 2012-12-28 2016-08-16 Intel Corporation Instruction for accelerating SNOW 3G wireless security algorithm
US9490971B2 (en) * 2012-12-28 2016-11-08 Intel Corporation Instruction for fast ZUC algorithm processing
US9819359B1 (en) * 2016-12-11 2017-11-14 Microsoft Technology Licensing, Llc Multi-symbol, multi-format, parallel symbol decoder for hardware decompression engines
US11204768B2 (en) 2019-11-06 2021-12-21 Onnivation Llc Instruction length based parallel instruction demarcator

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5502493A (en) * 1994-05-19 1996-03-26 Matsushita Electric Corporation Of America Variable length data decoder for use with MPEG encoded video data
US5579052A (en) * 1993-05-27 1996-11-26 Sgs-Thomson Microelectronics S.A. Picture processing system
US5604499A (en) * 1993-12-28 1997-02-18 Matsushita Electric Industrial Co., Ltd. Variable-length decoding apparatus
US5736946A (en) * 1995-08-31 1998-04-07 Daewoo Electronics Co., Ltd. High speed apparatus and method for decoding variable length code

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5614952A (en) 1994-10-11 1997-03-25 Hitachi America, Ltd. Digital video decoder for decoding digital high definition and/or digital standard definition television signals
US5815646A (en) 1993-04-13 1998-09-29 C-Cube Microsystems Decompression processor for video applications
US5608459A (en) 1993-08-13 1997-03-04 Texas Instruments Incorporated Video data decoder having motion compensation and image memory circuitry on single substrate
KR970003024B1 (en) 1994-02-28 1997-03-13 한국전기통신공사 Fast re-synchronizing method using parallel-processing pattern matching in variable length codes
US5557538A (en) 1994-05-18 1996-09-17 Zoran Microelectronics Ltd. MPEG decoder
US5623311A (en) 1994-10-28 1997-04-22 Matsushita Electric Corporation Of America MPEG video decoder having a high bandwidth memory
US5623423A (en) 1994-12-12 1997-04-22 Univ. Of Texas Apparatus and method for video decoding
US5623308A (en) 1995-07-07 1997-04-22 Lucent Technologies Inc. Multiple resolution, multi-stream video system using a single standard coder

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5579052A (en) * 1993-05-27 1996-11-26 Sgs-Thomson Microelectronics S.A. Picture processing system
US5604499A (en) * 1993-12-28 1997-02-18 Matsushita Electric Industrial Co., Ltd. Variable-length decoding apparatus
US5502493A (en) * 1994-05-19 1996-03-26 Matsushita Electric Corporation Of America Variable length data decoder for use with MPEG encoded video data
US5736946A (en) * 1995-08-31 1998-04-07 Daewoo Electronics Co., Ltd. High speed apparatus and method for decoding variable length code

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SEUNG BAE CHOI ET AL: "HIGH SPEED PATTERN MATCHING FOR A FAST HUFFMAN DECODER" IEEE TRANSACTIONS ON CONSUMER ELECTRONICS,US,IEEE INC. NEW YORK, vol. 41, no. 1, 1 February 1995 (1995-02-01), page 97-103 XP000529206 ISSN: 0098-3063 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7970645B2 (en) * 2001-02-23 2011-06-28 Cox Communications, Inc. Method and apparatus for providing targeted advertisements
US8863190B1 (en) 2001-02-23 2014-10-14 Cox Communications, Inc. Method and apparatus for providing targeted advertisements
DE10140289A1 (en) * 2001-08-16 2003-02-27 Technotrend Ag Device for reducing bandwidth in MPEG2 video streams has digital tuner, interface for connecting to host, transport stream interface logic, digital signal processor with linked memory and universal serial bus controller
EP1317147A2 (en) * 2001-11-30 2003-06-04 Matsushita Electric Industrial Co., Ltd. A method of MPEG-2 video variable length decoding in software
EP1317147A3 (en) * 2001-11-30 2004-09-08 Matsushita Electric Industrial Co., Ltd. A method of MPEG-2 video variable length decoding in software
US6928119B2 (en) 2001-11-30 2005-08-09 Matsushita Electric Industrial Co., Ltd. Method of MPEG-2 video variable length decoding in software
WO2003098809A1 (en) * 2002-05-17 2003-11-27 Electronics And Telecommunications Research Institute Programmable variable length decoder including interface of cpu processor
US8111753B2 (en) 2003-02-06 2012-02-07 Samsung Electronics Co., Ltd. Video encoding method and video encoder for improving performance

Also Published As

Publication number Publication date
CN1302512A (en) 2001-07-04
WO1999060521A3 (en) 2000-03-16
EP1078533A2 (en) 2001-02-28
CN1199472C (en) 2005-04-27
EP1078533B1 (en) 2003-02-26
DE69905565T2 (en) 2003-12-11
CA2330566A1 (en) 1999-11-25
AU3990899A (en) 1999-12-06
DE69905565D1 (en) 2003-04-03
US20030043917A1 (en) 2003-03-06
JP2002516501A (en) 2002-06-04
KR20010043480A (en) 2001-05-25
US6704361B2 (en) 2004-03-09

Similar Documents

Publication Publication Date Title
EP1078533B1 (en) Variable length decoder for decoding digitally encoded video signals
US6917652B2 (en) Device and method for decoding video signal
KR100574415B1 (en) Multiple standard decompression and / or compression units
JP3793225B2 (en) Low resolution HDTV receiver
US6014178A (en) Receiver having analog and digital video modes and receiving method thereof
KR100376607B1 (en) Mpeg video decoder with integrated scaling and display functions
US6141059A (en) Method and apparatus for processing previously encoded video data involving data re-encoding.
US6542541B1 (en) Method and apparatus for decoding MPEG video signals using multiple data transfer units
US6091458A (en) Receiver having analog and digital video modes and receiving method thereof
US7292772B2 (en) Method and apparatus for decoding and recording medium for a coded video stream
EP2544451A2 (en) Method and system for digital decoding 3D stereoscopic video images
US20070030911A1 (en) Method and apparatus for skipping pictures
EP0847203A2 (en) Method for the reduction of the memory required for video data decompression
US5963222A (en) Multi-format reduced memory MPEG decoder with hybrid memory address generation
JP2011172243A (en) Decoder and decode information processing method
US6229852B1 (en) Reduced-memory video decoder for compressed high-definition video data
US7227589B1 (en) Method and apparatus for video decoding on a multiprocessor system
US5761423A (en) Scalable picture storage access architecture for video decoding
US6934338B1 (en) Variable length decoder for decoding digitally encoded video signals
US6850568B1 (en) Method and apparatus for decoding mpeg video signals
JP2012147457A (en) Method and system for providing high speed multi-stream mpeg processor
US6298091B1 (en) Method to play audio and video clips through MPEG decoders
JP4906197B2 (en) Decoding device and method, and recording medium
US6614437B1 (en) Apparatus and method for efficient memory utilization in an electronic system
Cacopardi et al. A DSP based MPEG-2 video decoder for HDTV or multichannel SDTV

Legal Events

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

Ref document number: 99806441.6

Country of ref document: CN

AK Designated states

Kind code of ref document: A2

Designated state(s): AE AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW SD SL SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
AK Designated states

Kind code of ref document: A3

Designated state(s): AE AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A3

Designated state(s): GH GM KE LS MW SD SL SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

WWE Wipo information: entry into national phase

Ref document number: IN/PCT/2000/00417/MU

Country of ref document: IN

WWE Wipo information: entry into national phase

Ref document number: 1999923050

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2330566

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 1020007012555

Country of ref document: KR

ENP Entry into the national phase

Ref document number: 2000 550062

Country of ref document: JP

Kind code of ref document: A

WWP Wipo information: published in national office

Ref document number: 1999923050

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWP Wipo information: published in national office

Ref document number: 1020007012555

Country of ref document: KR

WWG Wipo information: grant in national office

Ref document number: 1999923050

Country of ref document: EP

WWW Wipo information: withdrawn in national office

Ref document number: 1020007012555

Country of ref document: KR