1 #ifndef _VIDEO_MACROBLOCK_H_
2 #define _VIDEO_MACROBLOCK_H_
4 #include <VP_Os/vp_os_types.h>
5 #include <VLIB/video_picture.h>
6 #include <VLIB/P264/p264_common.h>
8 // Default zigzag ordering matrix
9 extern int32_t video_zztable_t81[MCU_BLOCK_SIZE];
11 typedef struct _video_macroblock_t {
12 int32_t azq; // All zero coefficients
14 int32_t num_coeff_y0; // Number of non-zeros coefficients for block y0
15 int32_t num_coeff_y1; // Number of non-zeros coefficients for block y1
16 int32_t num_coeff_y2; // Number of non-zeros coefficients for block y2
17 int32_t num_coeff_y3; // Number of non-zeros coefficients for block y3
18 int32_t num_coeff_cb; // Number of non-zeros coefficients for block cb
19 int32_t num_coeff_cr; // Number of non-zeros coefficients for block cr
21 // p264 additional data
23 intra_type_t intra_type;
24 intra_4x4_mode_t intra_4x4_mode[16]; // when encoding, intra_4x4_mode[] use a special format (see P6 h264) to handle intra prediction. when decoding intra_4x4_mode[] contains the real intra mode
25 intra_16x16_luma_mode_t intra_luma_16x16_mode;
26 intra_8x8_chroma_mode_t intra_chroma_8x8_mode;
29 inter_partition_mode_t inter_partition_mode[16]; // max number of partition per MB is 16 block_4x4
30 MV_XY_t inter_MV[16]; // motion vector array. when encoding inter_MV use MV prediction, when decoding the real MV are stored in this array
31 uint32_t nb_partition; // number of partitions [1:16]
33 int16_t* data; // macroblock's data
36 #endif // _VIDEO_MACROBLOCK_H_