/* ------------------------------------------------------------------ * Copyright (C) 1998-2009 PacketVideo * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. * See the License for the specific language governing permissions * and limitations under the License. * ------------------------------------------------------------------- */ #ifndef _PVDECDEF_H_ #define _PVDECDEF_H_ #include "mp4dec_api.h" typedef enum { PV_SUCCESS, PV_FAIL, PV_MB_STUFFING, /* hit Macroblock_Stuffing */ PV_END_OF_VOP, /* hit End_of_Video_Object_Plane */ PV_END_OF_MB /* hit End_of_Macroblock */ #ifdef PV_TOLERATE_VOL_ERRORS , PV_BAD_VOLHEADER #endif } PV_STATUS; typedef uint8 PIXEL; typedef int16 MOT; /* : "int" type runs faster on RISC machine */ #define TRUE 1 #define FALSE 0 #define PV_ABS(x) (((x)<0)? -(x) : (x)) #define PV_SIGN(x) (((x)<0)? -1 : 1) #define PV_SIGN0(a) (((a)<0)? -1 : (((a)>0) ? 1 : 0)) #define PV_MAX(a,b) ((a)>(b)? (a):(b)) #define PV_MIN(a,b) ((a)<(b)? (a):(b)) #define PV_MEDIAN(A,B,C) ((A) > (B) ? ((A) < (C) ? (A) : (B) > (C) ? (B) : (C)): (B) < (C) ? (B) : (C) > (A) ? (C) : (A)) /* You don't want to use ((x>UB)?UB:(xUB) x = UB #define MODE_INTRA 0x08 //01000 #define MODE_INTRA_Q 0x09 //01001 #define MODE_SKIPPED 0x10 //10000 #define MODE_INTER4V 0x14 //10100 #define MODE_INTER 0x16 //10110 #define MODE_INTER_Q 0x17 //10111 #define MODE_INTER4V_Q 0x15 //10101 #define INTER_1VMASK 0x2 #define Q_MASK 0x1 #define INTRA_MASK 0x8 #define INTER_MASK 0x4 #define I_VOP 0 #define P_VOP 1 #define B_VOP 2 #define LUMINANCE_DC_TYPE 1 #define CHROMINANCE_DC_TYPE 2 #define START_CODE_LENGTH 32 /* 11/30/98 */ #define NoMarkerFound -1 #define FoundRM 1 /* Resync Marker */ #define FoundVSC 2 /* VOP_START_CODE. */ #define FoundGSC 3 /* GROUP_START_CODE */ #define FoundEOB 4 /* EOB_CODE */ /* PacketVideo "absolution timestamp" object. 06/13/2000 */ #define PVTS_START_CODE 0x01C4 #define PVTS_START_CODE_LENGTH 32 /* session layer and vop layer start codes */ #define VISUAL_OBJECT_SEQUENCE_START_CODE 0x01B0 #define VISUAL_OBJECT_SEQUENCE_END_CODE 0x01B1 #define VISUAL_OBJECT_START_CODE 0x01B5 #define VO_START_CODE 0x8 #define VO_HEADER_LENGTH 32 /* lengtho of VO header: VO_START_CODE + VO_ID */ #define SOL_START_CODE 0x01BE #define SOL_START_CODE_LENGTH 32 #define VOL_START_CODE 0x12 #define VOL_START_CODE_LENGTH 28 #define VOP_START_CODE 0x1B6 #define VOP_START_CODE_LENGTH 32 #define GROUP_START_CODE 0x01B3 #define GROUP_START_CODE_LENGTH 32 #define VOP_ID_CODE_LENGTH 5 #define VOP_TEMP_REF_CODE_LENGTH 16 #define USER_DATA_START_CODE 0x01B2 #define USER_DATA_START_CODE_LENGTH 32 #define START_CODE_PREFIX 0x01 #define START_CODE_PREFIX_LENGTH 24 #define SHORT_VIDEO_START_MARKER 0x20 #define SHORT_VIDEO_START_MARKER_LENGTH 22 #define SHORT_VIDEO_END_MARKER 0x3F #define GOB_RESYNC_MARKER 0x01 #define GOB_RESYNC_MARKER_LENGTH 17 /* motion and resync markers used in error resilient mode */ #define DC_MARKER 438273 #define DC_MARKER_LENGTH 19 #define MOTION_MARKER_COMB 126977 #define MOTION_MARKER_COMB_LENGTH 17 #define MOTION_MARKER_SEP 81921 #define MOTION_MARKER_SEP_LENGTH 17 #define RESYNC_MARKER 1 #define RESYNC_MARKER_LENGTH 17 #define SPRITE_NOT_USED 0 #define STATIC_SPRITE 1 #define ONLINE_SPRITE 2 #define GMC_SPRITE 3 /* macroblock and block size */ #define MB_SIZE 16 #define NCOEFF_MB (MB_SIZE*MB_SIZE) #define B_SIZE 8 #define NCOEFF_BLOCK (B_SIZE*B_SIZE) #define NCOEFF_Y NCOEFF_MB #define NCOEFF_U NCOEFF_BLOCK #define NCOEFF_V NCOEFF_BLOCK #define BLK_PER_MB 4 /* Number of blocks per MB */ /* VLC decoding related definitions */ #define VLC_ERROR (-1) #define VLC_ESCAPE 7167 /* macro utility */ #define ZERO_OUT_64BYTES(x) { *((uint32*)x) = *(((uint32*)(x))+1) = \ *(((uint32*)(x))+2) = *(((uint32*)(x))+3) = \ *(((uint32*)(x))+4) = *(((uint32*)(x))+5) = \ *(((uint32*)(x))+6) = *(((uint32*)(x))+7) = \ *(((uint32*)(x))+8) = *(((uint32*)(x))+9) = \ *(((uint32*)(x))+10) = *(((uint32*)(x))+11) = \ *(((uint32*)(x))+12) = *(((uint32*)(x))+13) = \ *(((uint32*)(x))+14) = *(((uint32*)(x))+15) = 0; } #endif /* _PVDECDEF_H_ */