blob: dbd70dc7399fa9e186ce76f1b7e4d6b50c31a977 [file] [log] [blame]
/* ------------------------------------------------------------------
* 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 <stdint.h> // for uint8_t, etc
#include <stdlib.h>
#include <string.h>
// Redefine the int types
typedef uint8_t uint8;
typedef uint16_t uint16;
typedef int16_t int16;
typedef uint32_t uint32;
typedef int32_t int32;
typedef unsigned int uint;
/********** platform dependent in-line assembly *****************************/
/*************** Intel *****************/
/*************** ARM *****************/
/* for general ARM instruction. #define __ARM has to be defined in compiler set up.*/
/* for DSP MUL */
#ifdef __TARGET_FEATURE_DSPMUL
#define _ARM_DSP_MUL
#endif
/* for Count Leading Zero instruction */
#ifdef __TARGET_ARCH_5T
#define _ARM_CLZ
#endif
#ifdef __TARGET_ARCH_5TE
#define _ARM_CLZ
#endif
/****************************************************************************/
#ifndef _PV_TYPES_
#define _PV_TYPES_
typedef uint8_t UChar;
typedef int8_t Char;
typedef unsigned int UInt;
typedef int Int;
typedef uint16_t UShort;
typedef int16_t Short;
typedef int16_t SInt;
typedef unsigned int Bool;
typedef uint32_t ULong;
typedef void Void;
#define PV_CODEC_INIT 0
#define PV_CODEC_STOP 1
#define PV_CODEC_RUNNING 2
#define PV_CODEC_RESET 3
#endif
typedef enum
{
PV_SUCCESS,
PV_FAIL,
PV_EOS, /* hit End_Of_Sequence */
PV_MB_STUFFING, /* hit Macroblock_Stuffing */
PV_END_OF_VOP, /* hit End_of_Video_Object_Plane */
PV_END_OF_MB, /* hit End_of_Macroblock */
PV_END_OF_BUF /* hit End_of_Bitstream_Buffer */
} PV_STATUS;
typedef UChar PIXEL;
//typedef Int MOT; /* : "int" type runs faster on RISC machine */
#define HTFM /* 3/2/01, Hypothesis Test Fast Matching for early drop-out*/
//#define _MOVE_INTERFACE
//#define RANDOM_REFSELCODE
/* handle the case of devision by zero in RC */
#define MAD_MIN 1
/* 4/11/01, if SSE or MMX, no HTFM, no SAD_HP_FLY */
/* Code size reduction related Macros */
#ifdef H263_ONLY
#ifndef NO_RVLC
#define NO_RVLC
#endif
#ifndef NO_MPEG_QUANT
#define NO_MPEG_QUANT
#endif
#ifndef NO_INTER4V
#define NO_INTER4V
#endif
#endif
/**************************************/
#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 MODE_INTRA 0
#define MODE_INTER 1
#define MODE_INTRA_Q 2
#define MODE_INTER_Q 3
#define MODE_INTER4V 4
#define MODE_SKIPPED 6
#define I_VOP 0
#define P_VOP 1
#define B_VOP 2
/*09/04/00 Add MB height and width */
#define MB_WIDTH 16
#define MB_HEIGHT 16
#define VOP_BRIGHT_WHITEENC 255
#define LUMINANCE_DC_TYPE 1
#define CHROMINANCE_DC_TYPE 2
#define EOB_CODE 1
#define EOB_CODE_LENGTH 32
/* 11/30/98 */
#define FoundRM 1 /* Resync Marker */
#define FoundVSC 2 /* VOP_START_CODE. */
#define FoundGSC 3 /* GROUP_START_CODE */
#define FoundEOB 4 /* EOB_CODE */
/* 05/08/2000, the error code returned from BitstreamShowBits() */
#define BITSTREAM_ERROR_CODE 0xFFFFFFFF
/* 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 SESSION_START_CODE 0x01B0
#define SESSION_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
/* overrun buffer size */
#define DEFAULT_OVERRUN_BUFFER_SIZE 1000
/* VLC decoding related definitions */
#define VLC_ERROR (-1)
#define VLC_ESCAPE 7167
#endif /* _PVDECDEF_H_ */