1 /*****************************************************************************
2 * vpar_blocks.h : video parser blocks management
4 *****************************************************************************
5 *****************************************************************************
16 *****************************************************************************/
18 /*****************************************************************************
19 * macroblock_t : information on a macroblock
20 *****************************************************************************/
21 typedef struct macroblock_s
23 picture_t * p_picture;
25 int i_l_x, i_l_y; /* position of macroblock (lum) */
26 int i_c_x, i_c_y; /* position of macroblock (chroma) */
27 int i_chroma_nb_blocks; /* nb of bks for a chr comp */
28 int i_l_stride; /* number of data_t to ignore
29 * when changing lines */
30 int i_c_stride; /* idem, for chroma */
32 /* IDCT information */
33 elem_t ppi_blocks[12][64]; /* blocks */
34 f_idct_t pf_idct[12]; /* sparse IDCT or not ? */
35 int pi_sparse_pos[12];
37 /* Motion compensation information */
38 f_motion_t pf_motion; /* function to use for motion comp */
39 f_chroma_motion_t pf_chroma_motion;
40 picture_t * p_backw_top;
41 picture_t * p_backw_bot;
42 picture_t * p_forw_top;
43 picture_t * p_forw_bot;
44 int i_field_select_backw_top, i_field_select_backw_bot;
45 int i_field_select_forw_top, i_field_select_forw_bot;
46 int pi_motion_vectors_backw_top[2];
47 int pi_motion_vectors_backw_bot[2];
48 int pi_motion_vectors_forw_top[2];
49 int pi_motion_vectors_forw_bot[2];
51 /* AddBlock information */
52 f_addb_t pf_addb[12]; /* pointer to the Add function */
53 data_t * p_data[12]; /* pointer to the position
54 * in the final picture */
55 int i_addb_l_stride, i_addb_c_stride;
58 /*****************************************************************************
59 * macroblock_parsing_t : parser context descriptor #3
60 *****************************************************************************/
63 int i_mb_type, i_motion_type, i_mv_count, i_mv_format;
64 /* AddressIncrement information */
66 int i_coded_block_pattern;
69 int i_l_x, i_l_y, i_c_x, i_c_y;
70 } macroblock_parsing_t;
72 /*****************************************************************************
74 *****************************************************************************/
75 /* Macroblock types */
78 #define MB_MOTION_BACKWARD 4
79 #define MB_MOTION_FORWARD 8
83 #define MOTION_FIELD 1
84 #define MOTION_FRAME 2
88 /* Macroblock Address Increment types */
89 #define MACROBLOCK_ESCAPE 8
90 #define MACROBLOCK_STUFFING 15
96 /*****************************************************************************
98 *****************************************************************************/
99 extern int * pi_default_intra_quant;
100 extern int * pi_default_nonintra_quant;
101 extern u8 pi_scan[2][64];
103 /*****************************************************************************
105 *****************************************************************************/
106 void vpar_InitCrop( struct vpar_thread_s* p_vpar );
107 int vpar_CodedPattern420( struct vpar_thread_s* p_vpar );
108 int vpar_CodedPattern422( struct vpar_thread_s* p_vpar );
109 int vpar_CodedPattern444( struct vpar_thread_s* p_vpar );
110 int vpar_IMBType( struct vpar_thread_s* p_vpar );
111 int vpar_PMBType( struct vpar_thread_s* p_vpar );
112 int vpar_BMBType( struct vpar_thread_s* p_vpar );
113 int vpar_DMBType( struct vpar_thread_s* p_vpar );