libandroidplugin added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / ARDroneLib / VLIB / P264 / p264_common.h
1 #ifndef _P264_COMMON_H_
2 #define _P264_COMMON_H_
3
4 #include <VP_Os/vp_os_types.h>
5
6 #define BLOCK_SIZE   4
7 #define BLOCK_SIZE2 16
8
9 // P6 h264 coder out data
10 // MB data
11
12 typedef struct _MB_intra_16x16_p264_t {
13 int16_t DC_Y[16];
14 int16_t AC_Y[256];
15 int16_t DC_U[4];
16 int16_t dummy_DC_U[12]; // hardware fake result
17 int16_t DC_V[4];
18 int16_t dummy_DC_V[12]; // hardware fake result
19 int16_t AC_U[64];
20 int16_t AC_V[64];
21 } MB_intra_16x16_p264_t;
22
23 typedef struct _MB_intra_4x4_p264_t {
24   int16_t AC_Y[256];
25   int16_t DC_U[4];
26   int16_t dummy_DC_U[12]; // hardware fake result
27   int16_t DC_V[4];
28   int16_t dummy_DC_V[12]; // hardware fake result
29   int16_t AC_U[64];
30   int16_t AC_V[64];
31 } MB_intra_4x4_p264_t;
32
33 typedef MB_intra_4x4_p264_t MB_inter_p264_t;
34
35 typedef union _MB_intra_p264_t {
36   MB_intra_16x16_p264_t intra_16x16;
37   MB_intra_4x4_p264_t intra_4x4;
38   MB_inter_p264_t inter;
39 }MB_p264_t;
40
41 // intra types
42
43 typedef enum _intra_type_t
44 {
45   INTRA_4x4,
46   INTRA_16x16
47 } intra_type_t;
48
49 typedef enum _intra_4x4_mode_t
50 {
51   VERTICAL_4x4_MODE=0,
52   HORIZONTAL_4x4_MODE,
53   DC_4x4_MODE,
54   DIAGONAL_DL_4x4_MODE,
55   DIAGONAL_DR_4x4_MODE,
56   VERTICAL_RIGHT_4x4_MODE,
57   HORIZONTAL_DOWN_4x4_MODE,
58   VERTICAL_LEFT_4x4_MODE,
59   HORIZONTAL_UP_4x4_MODE
60 } intra_4x4_mode_t;
61
62 typedef enum _intra_16x16_luma_mode_t
63 {
64   VERTICAL_16x16_LUMA_MODE=0,
65   HORIZONTAL_16x16_LUMA_MODE,
66   DC_16x16_LUMA_MODE,
67   PLANE_16x16_LUMA_MODE
68 } intra_16x16_luma_mode_t;
69
70 typedef enum _intra_8x8_chroma_mode_t
71 {
72   DC_8x8_CHROMA_MODE=0,
73   HORIZONTAL_8x8_CHROMA_MODE,
74   VERTICAL_8x8_CHROMA_MODE,
75   PLANE_8x8_CHROMA_MODE
76 } intra_8x8_chroma_mode_t;
77
78 // inter types
79 #define NB_PARTITION 7
80 typedef enum _inter_partition_mode_t
81 {
82   INTER_PART_16x16 = 0,
83   INTER_PART_16x8 = 1,
84   INTER_PART_8x16 = 2,
85   INTER_PART_8x8 = 3,
86   INTER_PART_8x4 = 4,
87   INTER_PART_4x8 = 5,
88   INTER_PART_4x4 = 6
89 } inter_partition_mode_t;
90
91 // motion vector
92 typedef struct _MV_XY_t {
93   int8_t x;
94   int8_t y;
95 } MV_XY_t;
96
97 #endif