DCT Block

The Y, U, V pixels in one frame shall be divided into DCT blocks. All DCT blocks for 625-50 system and DCT blocks except for rightmost DCT blocks in U and V for 525-60 system are structured with a rectangular area of eight vertical lines and eight horizontal pixels in a frame.

For 525-60 system, the rightmost DCT blocks in U and V are structured with 16 vertical lines and four horizontal pixels. The rightmost DCT block is reconstructed to eight vertical lines and eight horizontal pixels by moving the lower part of eight vertical lines and four horizontal pixels to the higher part of eight vertical lines and four horizontal pixels.

DCT Block Structure



Six DCT blocks Y0, Y1, Y2, Y3, U, V form a macroblock.

Macroblock Structure for 525-60 System (Except Rightmost Macroblock)



Macroblock Structure for 625-50 System and Rightmost Macroblock of 525-60 System



27 DCT macroblocks form a superblock. (Each cell stands for one macroblock).

DCT Superblock Structure for 525-60 System



System 525-60 has three types of superblocks.

DCT Superblock Structure for 625-50 System



All superblocks of 625-50 system are of the same type.

A video segment consists of five macroblocks, which are gathered from various areas as below:

Macroblock Absolute Coordinates



where k is within the interval [0,26], n = 10 for 525-60 system, n = 12 for 625-50 system, and j is the vertical order in the superblock.

Data in a video segment is compressed and transformed to the data of 385 bytes ( compressed segment). A compressed segment consists of five compressed macroblocks. Each compressed macroblock consists of 77 bytes.

Arrangement of Compressed Macroblock



 

Arrangement of Compressed Macroblock Header (H)



 

Arrangement of Y compressed blocks cbY0, cbY1, cbY2, cbY3



Arrangement Cr compressed blocks cbU, cbV



Type of block is equal to 1 when the difference between two fields is small (m0=0). Type of block is equal to 2 when the difference between two fields is big (m0=1).

Each DCT block is classified into four classes. For selecting quantization step, class number is used.

DV Functions 
Function Short Name Description

                                             Decoding

Variable Length Decoding

InitAllocHuffmanTable_DV

Allocates memory and initializes the table that contains codes for DCT coefficients (Run-Level codes).

HuffmanDecodeSegment_DV

Decodes and rearranges a segment block, multiplies the first block element by 2.

HuffmanDecodeSegment_DV100

Decodes and rearranges a DV100 segment block, multiplies the first block element by 128.

HuffmanDecodeSegmentOnePass_DV

Performs the first pass of video segment decoding, rearranges the segment block, multiplies the first block element by 128.

FreeHuffmanTable_DV

Frees the memory allocated for VLC table.
Inverse Quantization

QuantInv_DV

Performs inverse quantization on a block.

QuantWeightBlockInv_DV

Performs inverse quantization and inverse weighting on a block.

QuantWeightBlockInv_DV100

Performs inverse quantization and inverse weighting on a block according to DV100 standard.
Inverse Discrete Cosine Transformation

DCT2x4x8Inv

Performs the inverse DCT for block of type 2 ( m0=1).

DCT8x4x2To4x4Inv_DV

Performs the inverse DCT for block 2x4x8 and then creates block 4x4.

                                             Encoding

Discrete Cosine Transformation

DCT2x4x8Frw

Performs DCT for a block of type 2.

CountZeros8x8

Evaluates number of zeros in a block.

                                             Color Conversion

YCrCb411ToYCbCr422_5MBDV, YCrCb411ToYCbCr422_ZoomOut2_5MBDV, YCrCb411ToYCbCr422_ZoomOut4_5MBDV, YCrCb411ToYCbCr422_ZoomOut8_5MBDV

Convert five macroblocks from YUV411 format into YUV2 format.

YCrCb411ToYCbCr422_16x4x5MB_DV, YCrCb411ToYCbCr422_8x8MB_DV

Convert five reduced YCrCb411 macroblocks into YCrCb422 reduced macroblocks.

YCrCb411ToYCbCr422_EdgeDV, YCrCb411ToYCbCr422_ZoomOut2_EdgeDV, YCrCb411ToYCbCr422_ZoomOut4_EdgeDV, YCrCb411ToYCbCr422_ZoomOut8_EdgeDV

Convert a YCrCb411 macroblock into a YCrCb422 macroblock at the right edge of destination image.

YCrCb420ToYCbCr422_5MBDV, YCrCb420ToYCbCr422_ZoomOut2_5MBDV, YCrCb420ToYCbCr422_ZoomOut4_5MBDV, YCrCb420ToYCbCr422_ZoomOut8_5MBDV

Convert five YCrCb420 macroblocks into YCrCb422 macroblocks.

YCrCb420ToYCbCr422_8x8x5MB_DV

Converts five reduced YCrCb420 macroblocks into YCrCb422 reduced macroblocks.

YCrCb422ToYCbCr422_5MBDV, YCrCb422ToYCbCr422_ZoomOut2_5MBDV, YCrCb422ToYCbCr422_ZoomOut4_5MBDV, YCrCb422ToYCbCr422_ZoomOut8_5MBDV

Convert five YCrCb422 macroblocks into YCbCr422 macroblocks.

YCrCb422ToYCbCr422_8x4x5MB_DV

Converts five reduced YCrCb422 macroblocks into YCrCb422 reduced macroblocks.

YCrCb422ToYCbCr422_10HalvesMB16x8_DV100

Converts ten YCrCb422 half-macroblocks into YCrCb422 half-macroblocks.

Submit feedback on this help topic

Copyright © 2000 - 2011, Intel Corporation. All rights reserved.