Home | History | Annotate | Download | only in src
      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
     26 typedef uint8_t uint8;
     27 typedef uint16_t uint16;
     28 typedef int16_t int16;
     29 typedef uint32_t uint32;
     30 typedef int32_t int32;
     31 typedef 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_
     55 typedef unsigned char UChar;
     56 typedef char Char;
     57 typedef unsigned int UInt;
     58 typedef int Int;
     59 typedef unsigned short UShort;
     60 typedef short Short;
     61 typedef short int SInt;
     62 typedef unsigned int Bool;
     63 typedef uint32_t ULong;
     64 typedef 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 
     72 typedef 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 
     83 typedef 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