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 unsigned long 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