Professional Documents
Culture Documents
Abstract:
The project focuses on the system-level modeling of image and video processing
systems. Based on the models given, image and video compression and decompression
standards (e.g. H.263 and MPEG-4) will be implemented in a formal, consistent and
extensible framework with well-defined and optimized processing primitives. The models
of computation and an implementation of image and video processing algorithm will also
help automate partitioning of the design into hardware and software.
The Video Codec is split into two programs Encoder and Decoder. Both of them
are organized into three layers according to the functionality, interfaces, and the coding
strategy followed.
Input
Top Layer
Bit stream
This diagram explains the flow of data and control in the Encoder. The decoder has a
similar structure with the data flowing the reverse direction.
Top Layer: This layer serves as interface between user and the actual encoder. It
loads the input into frames and feeds them to the lower layer sequentially. This layer also
performs the necessary initializations (such as Loading Huffman tables). The input
sequence is read and passed as frames to the lower layer. The very first frame is forced to
be INTRA. The subsequent frames are by default directed to be coded as P frames. The
lower layer may dynamically decide to code such a frame as an I-frame according to
various parameters (scene change / INTRA refresh).
Intermediate Layer: This Layer performs the frame level manipulations and also
takes care of the frame-level and macro block-level decision making in the encoder. This
layer performs the Motion Estimation and Compensation or removes 128 from the frame
according to whether the frame is to be coded as an I-frame or a P-frame. The residue
frame is input to the frame-encoder layer. The reconstructed residue frame received from
the encoder layer is used to reconstruct the current frame for future prediction.
Bottom Layer: This layer performs the actual coding. The frame is coded
according to the set of parameters which are passed by the higher layer. These parameters
are set by the higher layer according to the coding strategy formed. The bits generated are
put in the bit stream. One way to modify the encoder to perform better is to keep track of
the bits generated per macro block and adaptively change the quantization step size in
order to keep the bit rate to a desired value. In this case it is necessary to include the
Quantizer information in the macro block header. This is a possible extension to the
existing implementation.