/*********************************************************** * * Copyright (C) 2012 PUX Corporation * All Rights Reserved. * ***********************************************************/ #ifndef __AACDEC_API_H__ #define __AACDEC_API_H__ #ifdef __cplusplus extern "C" { #endif /*======================================================================* definitions *======================================================================*/ /* definitions of size */ #define HEAACDEC_MAX_CHANNEL_NUM (6) /* Max Support Channel Number */ #define HEAACDEC_PCM_FRAME_LENGTH (1024) /* PCM Sample Size per one frame */ #define HEAACDEC_STREAM_MAX_SIZE (800*HEAACDEC_MAX_CHANNEL_NUM) /* Max AAC Bitstream Size per one frame */ /* HE-AACDEC Libray Error Code */ #define HEAACDEC_RET_OK (0) /* Success */ #define HEAACDEC_RET_BUFFER_ERR (-1) /* Illegal buffer area */ #define HEAACDEC_RET_ERR_PARAM (-2) /* Illegal AACDEC_AAC_INFO */ #define HEAACDEC_RET_STREAM_ERR (-3) /* Invalid Bitstream */ #define HEAACDEC_RET_INVALID_ERR (-4) /* Invalid API call */ /*======================================================================* structure *======================================================================*/ typedef struct { u16 smpFreq; /* index of sampling frequency(Hz) */ u16 channel; /* number of channel */ u16 reserved[10]; /* reserved */ } HEAACDEC_AAC_INFO; /* Input frequency index */ #define HEAACDEC_96000HZ (0) #define HEAACDEC_88200HZ (1) #define HEAACDEC_64000HZ (2) #define HEAACDEC_48000HZ (3) #define HEAACDEC_44100HZ (4) #define HEAACDEC_32000HZ (5) #define HEAACDEC_24000HZ (6) #define HEAACDEC_22050HZ (7) #define HEAACDEC_16000HZ (8) #define HEAACDEC_12000HZ (9) #define HEAACDEC_11025HZ (10) #define HEAACDEC_08000HZ (11) /*======================================================================* AACDEC Library API Functions *======================================================================*/ /*----------------------------------------------------------------------* Name: HEAACDECOpen Description: open HE-AAC Decoder, Initialize the work area Arguments: memPtr (IN) address of work area memSize (IN) work area size aacInfo (IN) input AAC Stream Information Returns: HEAACDEC_RET_OK Success HEAACDEC_RET_BUFFER_ERR Illegal buffer area HEAACDEC_RET_ERR_PARAM Illegal HEAACDEC_AAC_INFO *----------------------------------------------------------------------*/ s32 HEAACDECOpen( void *memPtr, s32 memSize, HEAACDEC_AAC_INFO *aacInfo); /*----------------------------------------------------------------------* Name: HEAACDECBegin Description: begin HE-AAC Decoder Arguments: memPtr (IN) address of work area inputBitstream (IN) address of input aacbitstream data area inputBitstreamLength (IN) input AAC BitStream Size per one frame Returns: HEAACDEC_RET_OK Success HEAACDEC_RET_BUFFER_ERR Illegal buffer area HEAACDEC_RET_ERR_PARAM Illegal HEAACDEC_AAC_INFO HEAACDEC_RET_INVALID_ERR Invalid API call *----------------------------------------------------------------------*/ s32 HEAACDECBegin( void *memPtr, u8 *inputBitstream, u16 inputBitstreamLength); /*----------------------------------------------------------------------* Name: HEAACDECExecute Description: execute HE-AAC decoder per one frame Arguments: memPtr (IN) address of work area inputBitstream (IN) address of input aacbitstream data area inputBitstreamLength (IN) input AAC BitStream Size per one frame decodedPcm (OUT) address of decoded pcm data area PcmLength (OUT) output AAC PCM data size outputFreqIndex (OUT) output AAC PCM index of sampling frequency Returns: HEAACDEC_RET_OK Success HEAACDEC_RET_BUFFER_ERR Illegal buffer area HEAACDEC_RET_ERR_PARAM Illegal HEAACDEC_AAC_INFO HEAACDEC_RET_STREAM_ERR Invalid Bitstream HEAACDEC_RET_INVALID_ERR Invalid API call *----------------------------------------------------------------------*/ s32 HEAACDECExecute( void *memPtr, u8 *inputBitstream, u16 inputBitstreamLength, s16 **decodedPcm, u16 *PcmLength, u16 *outputFreqIndex); /*----------------------------------------------------------------------* Name: HEAACDECEnd Description: end HE-AAC decoder Arguments: memPtr (IN) address of work area decodedPcm (OUT) address of decoded pcm data area PcmLength (OUT) output AAC PCM data size outputFreqIndex (OUT) output AAC PCM index of sampling frequency Returns: HEAACDEC_RET_OK Success HEAACDEC_RET_BUFFER_ERR Illegal buffer area HEAACDEC_RET_INVALID_ERR Invalid API call *----------------------------------------------------------------------*/ s32 HEAACDECEnd( void *memPtr, s16 **decodedPcm, u16 *PcmLength, u16 *outputFreqIndex); /*----------------------------------------------------------------------* Name: HEAACDECClose Description: close HE-AAC decoder, clear the work area Arguments: memPtr (IN) address of work area Returns: HEAACDEC_RET_OK Success HEAACDEC_RET_BUFFER_ERR Illegal buffer area HEAACDEC_RET_INVALID_ERR Invalid API call *----------------------------------------------------------------------*/ s32 HEAACDECClose( void *memPtr); /*----------------------------------------------------------------------* Name: HEAACDECRestart Description: restart HE-AAC decoder Arguments: memPtr (IN) address of work area Returns: HEAACDEC_RET_OK Success HEAACDEC_RET_BUFFER_ERR Illegal buffer area *----------------------------------------------------------------------*/ s32 HEAACDECRestart( void *memPtr); /*----------------------------------------------------------------------* Name: HEAACDECMemoryRequirement Description: require HE-AAC decoder memory size Arguments: aacInfo (IN) input AAC Stream Information memSize (OUT) require AAC decoder memory size Returns: HEAACDEC_RET_OK Success HEAACDEC_RET_BUFFER_ERR Illegal buffer area HEAACDEC_RET_ERR_PARAM Illegal AACDEC_AAC_INFO *----------------------------------------------------------------------*/ s32 HEAACDECMemoryRequirement( HEAACDEC_AAC_INFO *aacInfo, s32 *memSize); #ifdef __cplusplus } /* extern "C" */ #endif #endif /* __AACDEC_API_H__ */