libandroidplugin added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / ARDroneLib / VLIB / Platform / arm9_P6 / P6_h264_reg.h
1 ////////////////////////////////////////////////////
2 // Parrot proprietary DCT registers
3 ////////////////////////////////////////////////////
4
5 // Parrot DCT address: 0xD00B0000
6 #define P6_BASE_ADDRESS         0xD00B0000
7
8 // H264 general registers
9 #define H264_STATUS             0x000       // Status Register
10 #define H264_ITEN               0x004       // Interrupt Enable Register
11 #define H264_ITACK              0x008       // Interrupt Acknowledge Register
12 #define H264_DMA                0x010       // Dma Register
13 #define H264_DMAINT                             0x02C
14 #define H264_RESET                              0x03C
15 #define H264_START                              0x00C
16 #define H264_CONFIG                             0x028
17 #define H264_LINESIZE           0x01C
18 #define H264_FRAMESIZE          0x020
19 #define H264_MB_ADDR            0x024
20 #define H264_QP                 0x018       // ME/MC Y/CC quantizer
21
22 // DCT registers
23 #define DCT_CONTROL             0x040       // Control Register
24 #define DCT_ORIG_Y_ADDR         0x044       // Address Register
25 #define DCT_ORIG_CU_ADDR        0x048       // Address Register
26 #define DCT_ORIG_CV_ADDR        0x04C       // Address Register
27 #define DCT_DEST_Y_ADDR         0x050       // Address Register
28 #define DCT_DEST_CU_ADDR        0x054       // Address Register
29 #define DCT_DEST_CV_ADDR        0x058       // Address Register
30 #define DCT_LINEOFFSET          0x05C       // Line size
31 #define DCT_Q_ADDR                              0x064           // quantization table
32 //#define DCT_DEBUG               0x030?       // Debug register
33 //#define DCT_SIGNATURE           0x034?       // Signature Register
34
35
36 // Registers bitwise definitions
37 // Status register
38 #define DCT_STATUS_END_OK    (1<<0)        // DCT Done
39 //#define DCT_STATUS_ERROR     (1<<1)        // DCT Error ?
40
41 // Interrupt enable register
42 #define DCT_ITEN_END_OK      (1<<0)        // IT Done enable
43 //#define DCT_ITEN_ERROR       (1<<1)        // IT Error enable ?
44
45 // Interrupt Acknowledge register
46 #define DCT_ITACK_END_OK     (1<<0)        // IT Done acknowledge
47 //#define DCT_ITACK_ERROR      (1<<1)        // IT Error acknowledge ?
48
49 // DCT control mode (forward or inverse dct)
50 #define DCT_CTRLMODE_FDCT     0
51 #define DCT_CTRLMODE_IDCT     1
52
53 typedef enum {
54   DCT_DMA_INCR    = 0,                    //!<  4 bytes DMA burst
55   DCT_DMA_INCR4   = 1,                    //!< 16 bytes DMA burst
56   DCT_DMA_INCR8   = 2,                    //!< 32 bytes DMA burst
57   DCT_DMA_INCR16  = 3,                    //!< 64 bytes DMA burst
58 } DCT_DMA_BURST_MODE;
59
60
61 // ME registers
62 #define ME_ALGORITHM             0x100     // I/P frame choice, disable/enable pred_intra
63 #define ME_RESULT                0x148     // in I-frame mode : intra mode result (intra 16x16 mod0/1/2/3 or intra 4x4)
64 #define ME_CMB_FRAME_ADDRY       0x11C     // input frame (to be encoded) Y addr
65 #define ME_CMB_FRAME_ADDRCU      0x120     // input frame (to be encoded) U addr
66 #define ME_CMB_FRAME_ADDRCV      0x124     // input frame (to be encoded) V addr
67 #define ME_IPRED0                0x16C     // intra4*4 pred mode results (first 8 4*4 blocks)
68 #define ME_IPRED1                0x170     // intra4*4 pred mode results (last 8 4*4 blocks)
69 #define ME_ANALYSIS              0x118     // define MB split pattern (P-frame)
70 #define ME_PAT_LIST              0x104     // define/enable search patterns (P-frame)
71 #define ME_PAT_RESIZE            0x108     //
72 #define ME_SW_FRAME_ADDRY        0x128     // luma reference frame for P-frame
73 #define ME_SW_FRAME_ADDRCC       0x12C     // chroma reference frame for P-frame
74 #define ME_SW_CONFIG             0x140     // search window size
75 #define ME_PRED_BASE_REG         0x14C     // MV result
76 #define ME_RD                    0x114
77
78 // ME values
79 #define ME_ALGO_DIS_MVP_INTRA_PRED    (1<<5)  // diasable intra pred and inter MV pred
80 #define ME_ALGO_I_FRAME               (1<<4)  // configure ME to encode en I frame
81 #define ME_ALGO_P_FRAME               (0<<4)  // configure ME to encode en I frame
82
83 #define ME_ANAL_4x4              (1<<22)
84 #define ME_ANAL_4x8              (1<<21)
85 #define ME_ANAL_8x4              (1<<20)
86 #define ME_ANAL_8x8              (1<<19)
87 #define ME_ANAL_8x16             (1<<18)
88 #define ME_ANAL_16x8             (1<<17)
89 #define ME_ANAL_16x16            (1<<16)
90
91 #define ME_PAT_SMALL_DIAMOND    0x08
92 #define ME_PAT_BIG_DIAMOND      0x09
93 #define ME_PAT_SMALL_SQUARE     0x0A
94 #define ME_PAT_BIG_SQUARE       0x0B
95
96 //DEB registers
97 #define DEB_ME_FRAME_ADDRY       0x0A0     // deb reconstructed picture (reference)
98 #define DEB_ME_FRAME_ADDRCC      0x0A4     // deb reconstructed picture (reference)
99 #define DEB_ME_TMP_ADDR          0x0A8
100 #define DEB_MC_TMP_ADDR          0x0AC
101 #define DEB_CONFIG               0x080
102 #define DEB_PARAM                0x084
103 #define DEB_QPS_LEFT             0x08C
104 #define DEB_QPS_TOP              0x090
105
106 //MC registers
107 #define MC_MB_INFO               0x200
108
109 #define IS_INTRA_4x4(a)   ((a&0x1F) == 0)
110 #define IS_INTRA_16x16(a) ((a&0x1F) != 0)
111 #define CHROMA_MODE(a)    ((a>>16)&0x03)
112 #define INTRA_16x16_MODE(a) ((a&0x1F)-1 )
113 #define INTER_16_8_PARTITION(a) (a&0x1F)
114
115 #define I_MB_COMPLETION_FLAG 0x0010101
116 #define I_MB_COMPLETION_MASK 0x00FFFFF
117 #define P_MB_COMPLETION_FLAG 0x1010101
118 #define P_MB_COMPLETION_MASK 0xFFFFFFF