📄 tccxxx_aacdec.h
字号:
/************************************************************************************** * EAAC+ decoder * * aacdec.h - public C API for AAC decoder **************************************************************************************/#ifndef _AACDEC_H#define _AACDEC_H//#define ENABLE_FILE_PLAY // WINCE NOT USED#ifdef ENABLE_FILE_PLAY//#include "selfifc.h"#endif#ifdef __cplusplusextern "C" {#endif#ifndef NULL#define NULL 0#endif/* according to spec (13818-7 section 8.2.2, 14496-3 section 4.5.3) * max size of input buffer = * 6144 bits = 768 bytes per SCE or CCE-I * 12288 bits = 1536 bytes per CPE * 0 bits = 0 bytes per CCE-D (uses bits from the SCE/CPE/CCE-I it is coupled to) */#ifndef AAC_MAX_NCHANS /* if max channels isn't set in makefile, */#define AAC_MAX_NCHANS 2 /* set to default max number of channels */#endif#define AAC_MAX_NSAMPS 1024#define AAC_MAINBUF_SIZE (768 * AAC_MAX_NCHANS)#define AAC_SUPPORT_LD#define AAC_NUM_PROFILES 3#define AAC_PROFILE_MP 0#define AAC_PROFILE_LC 1#define AAC_PROFILE_SSR 2#define AAC_PROFILE_LD 21#define AAC_PROFILE_LTP 3 // V207#define AAC_TRANSFORM_LENGTH_1024#define AAC_TRANSFORM_LENGTH_960enum { ERR_AAC_NONE = 0, ERR_AAC_INDATA_UNDERFLOW = -1, ERR_AAC_NULL_POINTER = -2, ERR_AAC_INVALID_ADTS_HEADER = -3, ERR_AAC_INVALID_ADIF_HEADER = -4, ERR_AAC_INVALID_FRAME = -5, ERR_AAC_MPEG4_UNSUPPORTED = -6, ERR_AAC_CHANNEL_MAP = -7, ERR_AAC_SYNTAX_ELEMENT = -8, ERR_AAC_DEQUANT = -9, ERR_AAC_STEREO_PROCESS = -10, ERR_AAC_PNS = -11, ERR_AAC_SHORT_BLOCK_DEINT = -12, ERR_AAC_TNS = -13, ERR_AAC_IMDCT = -14, ERR_AAC_NCHANS_TOO_HIGH = -15, ERR_AAC_SBR_INIT = -16, ERR_AAC_SBR_BITSTREAM = -17, ERR_AAC_SBR_DATA = -18, ERR_AAC_SBR_PCM_FORMAT = -19, ERR_AAC_SBR_NCHANS_TOO_HIGH = -20, ERR_AAC_SBR_SINGLERATE_UNSUPPORTED = -21, ERR_AAC_RAWBLOCK_PARAMS = -22, ERR_AAC_PS_INIT = -23, ERR_AAC_SECTION_READ = -24, ERR_AAC_HUFFMAN_SPEC = -25, //JR-KIM 2007.10.16, (Added) ERR_AAC_CANNOT_DECODE_THIS_PROFILE = -26, // V207 ERR_UNKNOWN = -9999};typedef struct _AACFrameInfo { int bitRate; int nChans; int sampRateCore; int sampRateOut; int bitsPerSample; int outputSamps; int profile; int tnsUsed; int pnsUsed; int format; //GYkim 2007.07.10 int total_play_time; //GYkim 2007.07.12 int atom_meta_ofst; //GYkim 2007.07.12 int file_size; //GYkim 2007.07.12 int nDSE_data_count; //GYkim 2007.09.10 unsigned char *pDSE_data_buff;//GYkim 2007.09.10 int TransformLength; //JR-KIM 2007.10.23 int nDSE_curr_instTag; //JR-KIM 2007.11.27} AACFrameInfo;/* AAC file format */typedef void *HAACDecoder;#if 0 // WINCE NOT USED//NEW_VER_START #define AAC_MAX_PCM_LENGTH 1024#define SEEK_SET 0 /* start of stream (see fseek) */#define SEEK_CUR 1 /* current position in stream (see fseek) */#define SEEK_END 2 /* end of stream (see fseek) */#define FILE_CHUNK_NUM 10#define MP4_LIB// New Structures and defines.#define READBUF_SIZE (2 * AAC_MAINBUF_SIZE * AAC_MAX_NCHANS) /* pick something big enough to hold a bunch of frames */enum { AAC_FF_Unknown = 0, /* should be 0 on init */ AAC_FF_ADTS = 1, AAC_FF_ADIF = 2, AAC_FF_MP4 = 3,//GYkim 2007.07.10 AAC_FF_RAW = 4};#define PCM_BUFF_NUM 1#define STCO_BFSZ 10*1024#define MAX_ADTS_SCAN_NUM 512#define TEST_ADTS_SCAN_NUM 512#ifdef ENABLE_FILE_PLAYunsigned int STCO_buffer[STCO_BFSZ];extern unsigned int *gEAACp_stco_buffer;extern unsigned int gEAACp_stco_buffer_sz;#endif#else#define PCM_BUFF_NUM 1#endif typedef struct _CodecOpen_data { HAACDecoder hAACDecoder; AACFrameInfo *haacFrameInfo; void *inFile;#ifdef ENABLE_FILE_PLAY SFWrapper *hMP4FF_transport;#endif int nFrameCount; unsigned char *readBuf; unsigned char *readPtr; int bytesLeft; unsigned long id3tag_size_offst;//JR-KIM 2007.10.16, (Added) unsigned long avg_length_frame; //JR-KIM 2007.10.16, (Added)} CodecOpenData;#if 0 // WINCE NOT USEDtypedef struct{ HAACDecoder *hAACDecoder; CodecOpenData stCodecOpendata;#ifdef ENABLE_FILE_PLAY SFWrapper MP4FF_transport;#endif AACFrameInfo aacFrameInfo; int bytesLeft; unsigned char *readPtr; int eofReached; char pcEncodedData[READBUF_SIZE]; short psLeft[2048*PCM_BUFF_NUM+1024]; short psRight[2048*PCM_BUFF_NUM+1024]; //BufferState *pOutput; void *pOutput; int buffer_ptr[2]; unsigned short usValid; unsigned int usSampleRate; unsigned char ucChannels; unsigned char ucIsVBR; unsigned long ulFirstFrame; unsigned long ulLength; unsigned long ulTimeLength; unsigned long ulBitRate; unsigned long ulTimePos; } tAAC;#endif/* public C API */HAACDecoder EAACPlus_Get_Instance(void);void AACFreeDecoder(HAACDecoder hAACDecoder);int AACDecode_parsing(HAACDecoder hAACDecoder, unsigned char **inbuf, int *bytesLeft);int AACDecode(HAACDecoder hAACDecoder, unsigned char **inbuf, int *bytesLeft, short *ch_L, short *ch_R);int AACFindSyncWord(unsigned char *buf, int nBytes);void AACGetLastFrameInfo(HAACDecoder hAACDecoder, AACFrameInfo *aacFrameInfo);int AACSetRawBlockParams(HAACDecoder hAACDecoder, int copyLast, AACFrameInfo *aacFrameInfo);int AACFlushCodec(HAACDecoder hAACDecoder);int EAACPlusCodecSeek(HAACDecoder hAACDecoder, unsigned int frm_cnt); //JR-KIM 2007.10.16, (Added)unsigned int EAACPlus_Get_Instance_Size(void);HAACDecoder EAACPlus_Create(void *instance);int EAACPlusCodecSetTrasformLength(HAACDecoder hAACDecoder, AACFrameInfo *aacFrameInfo); //JR-KIM 2007.11.08, (Added)#define EAACPlusCodecGetInstance EAACPlus_Get_Instance#define EAACPlusCodecDecode AACDecode#define EAACPlusCodecParsing AACDecode_parsing#define EAACPlusCodecSetRawBlockParams AACSetRawBlockParams#define EAACPlusCodecGetLastFrameInfo AACGetLastFrameInfo#ifdef __cplusplus}#endif#endif /* _AACDEC_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -