mp4def.h revision 2426d11f795a99de85999b3ff0a26cc070a99a59
1/* ------------------------------------------------------------------
2 * Copyright (C) 1998-2009 PacketVideo
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13 * express or implied.
14 * See the License for the specific language governing permissions
15 * and limitations under the License.
16 * -------------------------------------------------------------------
17 */
18#ifndef _PVDECDEF_H_
19#define _PVDECDEF_H_
20
21#include <stdint.h> // for uint8_t, etc
22#include <stdlib.h>
23#include <string.h>
24
25// Redefine the int types
26typedef uint8_t uint8;
27typedef uint16_t uint16;
28typedef int16_t int16;
29typedef uint32_t uint32;
30typedef int32_t int32;
31typedef unsigned int uint;
32
33/********** platform dependent in-line assembly *****************************/
34
35/*************** Intel *****************/
36
37/*************** ARM *****************/
38/* for general ARM instruction. #define __ARM has to be defined in compiler set up.*/
39/* for DSP MUL */
40#ifdef __TARGET_FEATURE_DSPMUL
41#define _ARM_DSP_MUL
42#endif
43
44/* for Count Leading Zero instruction */
45#ifdef __TARGET_ARCH_5T
46#define _ARM_CLZ
47#endif
48#ifdef __TARGET_ARCH_5TE
49#define _ARM_CLZ
50#endif
51/****************************************************************************/
52
53#ifndef _PV_TYPES_
54#define _PV_TYPES_
55typedef unsigned char UChar;
56typedef char Char;
57typedef unsigned int UInt;
58typedef int Int;
59typedef unsigned short UShort;
60typedef short Short;
61typedef short int SInt;
62typedef unsigned int Bool;
63typedef uint32_t ULong;
64typedef void Void;
65
66#define PV_CODEC_INIT       0
67#define PV_CODEC_STOP       1
68#define PV_CODEC_RUNNING    2
69#define PV_CODEC_RESET      3
70#endif
71
72typedef enum
73{
74    PV_SUCCESS,
75    PV_FAIL,
76    PV_EOS,             /* hit End_Of_Sequence     */
77    PV_MB_STUFFING,     /* hit Macroblock_Stuffing */
78    PV_END_OF_VOP,      /* hit End_of_Video_Object_Plane */
79    PV_END_OF_MB,       /* hit End_of_Macroblock */
80    PV_END_OF_BUF       /* hit End_of_Bitstream_Buffer */
81} PV_STATUS;
82
83typedef UChar PIXEL;
84//typedef Int MOT;   /* : "int" type runs faster on RISC machine */
85
86#define HTFM            /*  3/2/01, Hypothesis Test Fast Matching for early drop-out*/
87//#define _MOVE_INTERFACE
88
89//#define RANDOM_REFSELCODE
90
91/* handle the case of devision by zero in RC */
92#define MAD_MIN 1
93
94/* 4/11/01, if SSE or MMX, no HTFM, no SAD_HP_FLY */
95
96/* Code size reduction related Macros */
97#ifdef H263_ONLY
98#ifndef NO_RVLC
99#define NO_RVLC
100#endif
101#ifndef NO_MPEG_QUANT
102#define NO_MPEG_QUANT
103#endif
104#ifndef NO_INTER4V
105#define NO_INTER4V
106#endif
107#endif
108/**************************************/
109
110#define TRUE    1
111#define FALSE   0
112
113#define PV_ABS(x)       (((x)<0)? -(x) : (x))
114#define PV_SIGN(x)      (((x)<0)? -1 : 1)
115#define PV_SIGN0(a)     (((a)<0)? -1 : (((a)>0) ? 1 : 0))
116#define PV_MAX(a,b)     ((a)>(b)? (a):(b))
117#define PV_MIN(a,b)     ((a)<(b)? (a):(b))
118
119#define MODE_INTRA      0
120#define MODE_INTER      1
121#define MODE_INTRA_Q    2
122#define MODE_INTER_Q    3
123#define MODE_INTER4V    4
124#define MODE_SKIPPED    6
125
126#define I_VOP       0
127#define P_VOP       1
128#define B_VOP       2
129
130/*09/04/00 Add MB height and width */
131#define MB_WIDTH 16
132#define MB_HEIGHT 16
133
134#define VOP_BRIGHT_WHITEENC 255
135
136
137#define LUMINANCE_DC_TYPE   1
138#define CHROMINANCE_DC_TYPE 2
139
140#define EOB_CODE                        1
141#define EOB_CODE_LENGTH                32
142
143/* 11/30/98 */
144#define FoundRM     1   /* Resync Marker */
145#define FoundVSC    2   /* VOP_START_CODE. */
146#define FoundGSC    3   /* GROUP_START_CODE */
147#define FoundEOB    4   /* EOB_CODE */
148
149
150/* 05/08/2000, the error code returned from BitstreamShowBits() */
151#define BITSTREAM_ERROR_CODE 0xFFFFFFFF
152
153/* PacketVideo "absolution timestamp" object.  06/13/2000 */
154#define PVTS_START_CODE         0x01C4
155#define PVTS_START_CODE_LENGTH  32
156
157/* session layer and vop layer start codes */
158
159#define SESSION_START_CODE  0x01B0
160#define SESSION_END_CODE    0x01B1
161#define VISUAL_OBJECT_START_CODE 0x01B5
162
163#define VO_START_CODE           0x8
164#define VO_HEADER_LENGTH        32      /* lengtho of VO header: VO_START_CODE +  VO_ID */
165
166#define SOL_START_CODE          0x01BE
167#define SOL_START_CODE_LENGTH   32
168
169#define VOL_START_CODE 0x12
170#define VOL_START_CODE_LENGTH 28
171
172#define VOP_START_CODE 0x1B6
173#define VOP_START_CODE_LENGTH   32
174
175#define GROUP_START_CODE    0x01B3
176#define GROUP_START_CODE_LENGTH  32
177
178#define VOP_ID_CODE_LENGTH      5
179#define VOP_TEMP_REF_CODE_LENGTH    16
180
181#define USER_DATA_START_CODE        0x01B2
182#define USER_DATA_START_CODE_LENGTH 32
183
184#define START_CODE_PREFIX       0x01
185#define START_CODE_PREFIX_LENGTH    24
186
187#define SHORT_VIDEO_START_MARKER         0x20
188#define SHORT_VIDEO_START_MARKER_LENGTH  22
189#define SHORT_VIDEO_END_MARKER            0x3F
190#define GOB_RESYNC_MARKER         0x01
191#define GOB_RESYNC_MARKER_LENGTH  17
192
193/* motion and resync markers used in error resilient mode  */
194
195#define DC_MARKER                      438273
196#define DC_MARKER_LENGTH                19
197
198#define MOTION_MARKER_COMB             126977
199#define MOTION_MARKER_COMB_LENGTH       17
200
201#define MOTION_MARKER_SEP              81921
202#define MOTION_MARKER_SEP_LENGTH        17
203
204#define RESYNC_MARKER           1
205#define RESYNC_MARKER_LENGTH    17
206
207#define SPRITE_NOT_USED     0
208#define STATIC_SPRITE       1
209#define ONLINE_SPRITE       2
210#define GMC_SPRITE      3
211
212/* macroblock and block size */
213#define MB_SIZE 16
214#define NCOEFF_MB (MB_SIZE*MB_SIZE)
215#define B_SIZE 8
216#define NCOEFF_BLOCK (B_SIZE*B_SIZE)
217#define NCOEFF_Y NCOEFF_MB
218#define NCOEFF_U NCOEFF_BLOCK
219#define NCOEFF_V NCOEFF_BLOCK
220
221/* overrun buffer size  */
222#define DEFAULT_OVERRUN_BUFFER_SIZE 1000
223
224
225/* VLC decoding related definitions */
226#define VLC_ERROR   (-1)
227#define VLC_ESCAPE  7167
228
229#endif /* _PVDECDEF_H_ */
230