]> git.sesse.net Git - vlc/blob - include/vpar_blocks.h
* Modifications d'erreurs dans MacroBlockAddressIncrement
[vlc] / include / vpar_blocks.h
1 /*****************************************************************************
2  * vpar_blocks.h : video parser blocks management
3  * (c)1999 VideoLAN
4  *****************************************************************************
5  *****************************************************************************
6  * Requires:
7  *  "config.h"
8  *  "common.h"
9  *  "mtime.h"
10  *  "vlc_thread.h"
11  *  "input.h"
12  *  "video.h"
13  *  "video_output.h"
14  *  "decoder_fifo.h"
15  *  "video_fifo.h"
16  *****************************************************************************/
17
18 /*****************************************************************************
19  * macroblock_t : information on a macroblock
20  *****************************************************************************/
21 typedef struct macroblock_s
22 {
23     picture_t *             p_picture;
24     int                     i_structure;
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 */
31
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];
36
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                     ppi_field_select[2][2];
45     int                     pppi_motion_vectors[2][2][2];
46     int                     pi_dm_vector[2];
47    
48     /* AddBlock information */
49     f_addb_t                pf_addb[12];      /* pointer to the Add function */
50     data_t *                p_data[12];              /* pointer to the position
51                                                       * in the final picture */
52     int                     i_addb_l_stride, i_addb_c_stride;
53 } macroblock_t;
54
55 /*****************************************************************************
56  * macroblock_parsing_t : parser context descriptor #3
57  *****************************************************************************/
58 typedef struct
59 {
60     int                     i_mb_type, i_motion_type, i_mv_count, i_mv_format;
61     boolean_t               b_dmv;
62     /* AddressIncrement information */
63     int                     i_addr_inc;
64
65     /* Macroblock Type */
66     int                     i_coded_block_pattern;
67     boolean_t               b_dct_type;
68
69     int                     i_l_x, i_l_y, i_c_x, i_c_y;
70 } macroblock_parsing_t;
71
72 /******************************************************************************
73  * lookup_t : entry type for lookup tables                                    *
74  ******************************************************************************/
75
76 typedef struct lookup_s
77 {
78     int    i_value;
79     int    i_length;
80 } lookup_t;
81
82 /*****************************************************************************
83  * Standard codes
84  *****************************************************************************/
85 /* Macroblock types */
86 #define MB_INTRA                        1
87 #define MB_PATTERN                      2
88 #define MB_MOTION_BACKWARD              4
89 #define MB_MOTION_FORWARD               8
90 #define MB_QUANT                        16
91
92 /* Motion types */
93 #define MOTION_FIELD                    1
94 #define MOTION_FRAME                    2
95 #define MOTION_16X8                     2
96 #define MOTION_DMV                      3
97
98 /* Macroblock Address Increment types */
99 #define MB_ADDRINC_ESCAPE               8
100 #define MB_ADDRINC_STUFFING             15
101
102 /* Error constant for lookup tables */
103 #define MB_ERROR                        (-1)
104
105 /* Scan */
106 #define SCAN_ZIGZAG                         0
107 #define SCAN_ALT                            1
108
109 /*****************************************************************************
110  * Constants
111  *****************************************************************************/
112 extern int *    pi_default_intra_quant;
113 extern int *    pi_default_nonintra_quant;
114 extern u8       pi_scan[2][64];
115
116 /*****************************************************************************
117  * Prototypes
118  *****************************************************************************/
119 void vpar_InitCrop( struct vpar_thread_s* p_vpar );
120 int vpar_CodedPattern420( struct vpar_thread_s* p_vpar );
121 int vpar_CodedPattern422( struct vpar_thread_s* p_vpar );
122 int vpar_CodedPattern444( struct vpar_thread_s* p_vpar );
123 int  vpar_IMBType( struct vpar_thread_s* p_vpar );
124 int  vpar_PMBType( struct vpar_thread_s* p_vpar );
125 int  vpar_BMBType( struct vpar_thread_s* p_vpar );
126 int  vpar_DMBType( struct vpar_thread_s* p_vpar );