1 /*********************************************************** 2 * 3 * Copyright (C) 2012 PUX Corporation 4 * All Rights Reserved. 5 * 6 ***********************************************************/ 7 8 #ifndef __AACDEC_API_H__ 9 #define __AACDEC_API_H__ 10 11 #ifdef __cplusplus 12 extern "C" { 13 #endif 14 /*======================================================================* 15 definitions 16 *======================================================================*/ 17 /* definitions of size */ 18 #define HEAACDEC_MAX_CHANNEL_NUM (6) /* Max Support Channel Number */ 19 #define HEAACDEC_PCM_FRAME_LENGTH (1024) /* PCM Sample Size per one frame */ 20 #define HEAACDEC_STREAM_MAX_SIZE (800*HEAACDEC_MAX_CHANNEL_NUM) /* Max AAC Bitstream Size per one frame */ 21 22 /* HE-AACDEC Libray Error Code */ 23 #define HEAACDEC_RET_OK (0) /* Success */ 24 #define HEAACDEC_RET_BUFFER_ERR (-1) /* Illegal buffer area */ 25 #define HEAACDEC_RET_ERR_PARAM (-2) /* Illegal AACDEC_AAC_INFO */ 26 #define HEAACDEC_RET_STREAM_ERR (-3) /* Invalid Bitstream */ 27 #define HEAACDEC_RET_INVALID_ERR (-4) /* Invalid API call */ 28 29 30 /*======================================================================* 31 structure 32 *======================================================================*/ 33 typedef struct { 34 u16 smpFreq; /* index of sampling frequency(Hz) */ 35 u16 channel; /* number of channel */ 36 u16 reserved[10]; /* reserved */ 37 } HEAACDEC_AAC_INFO; 38 39 /* Input frequency index */ 40 #define HEAACDEC_96000HZ (0) 41 #define HEAACDEC_88200HZ (1) 42 #define HEAACDEC_64000HZ (2) 43 #define HEAACDEC_48000HZ (3) 44 #define HEAACDEC_44100HZ (4) 45 #define HEAACDEC_32000HZ (5) 46 #define HEAACDEC_24000HZ (6) 47 #define HEAACDEC_22050HZ (7) 48 #define HEAACDEC_16000HZ (8) 49 #define HEAACDEC_12000HZ (9) 50 #define HEAACDEC_11025HZ (10) 51 #define HEAACDEC_08000HZ (11) 52 53 54 /*======================================================================* 55 AACDEC Library API Functions 56 *======================================================================*/ 57 58 /*----------------------------------------------------------------------* 59 Name: HEAACDECOpen 60 61 Description: open HE-AAC Decoder, Initialize the work area 62 63 Arguments: memPtr (IN) address of work area 64 memSize (IN) work area size 65 aacInfo (IN) input AAC Stream Information 66 67 Returns: HEAACDEC_RET_OK Success 68 HEAACDEC_RET_BUFFER_ERR Illegal buffer area 69 HEAACDEC_RET_ERR_PARAM Illegal HEAACDEC_AAC_INFO 70 *----------------------------------------------------------------------*/ 71 s32 HEAACDECOpen( void *memPtr, 72 s32 memSize, 73 HEAACDEC_AAC_INFO *aacInfo); 74 75 /*----------------------------------------------------------------------* 76 Name: HEAACDECBegin 77 78 Description: begin HE-AAC Decoder 79 80 Arguments: memPtr (IN) address of work area 81 inputBitstream (IN) address of input aacbitstream data area 82 inputBitstreamLength (IN) input AAC BitStream Size per one frame 83 84 Returns: HEAACDEC_RET_OK Success 85 HEAACDEC_RET_BUFFER_ERR Illegal buffer area 86 HEAACDEC_RET_ERR_PARAM Illegal HEAACDEC_AAC_INFO 87 HEAACDEC_RET_INVALID_ERR Invalid API call 88 *----------------------------------------------------------------------*/ 89 s32 HEAACDECBegin( void *memPtr, 90 u8 *inputBitstream, 91 u16 inputBitstreamLength); 92 93 /*----------------------------------------------------------------------* 94 Name: HEAACDECExecute 95 96 Description: execute HE-AAC decoder per one frame 97 98 Arguments: memPtr (IN) address of work area 99 inputBitstream (IN) address of input aacbitstream data area 100 inputBitstreamLength (IN) input AAC BitStream Size per one frame 101 decodedPcm (OUT) address of decoded pcm data area 102 PcmLength (OUT) output AAC PCM data size 103 outputFreqIndex (OUT) output AAC PCM index of sampling frequency 104 105 Returns: HEAACDEC_RET_OK Success 106 HEAACDEC_RET_BUFFER_ERR Illegal buffer area 107 HEAACDEC_RET_ERR_PARAM Illegal HEAACDEC_AAC_INFO 108 HEAACDEC_RET_STREAM_ERR Invalid Bitstream 109 HEAACDEC_RET_INVALID_ERR Invalid API call 110 *----------------------------------------------------------------------*/ 111 s32 HEAACDECExecute( void *memPtr, 112 u8 *inputBitstream, 113 u16 inputBitstreamLength, 114 s16 **decodedPcm, 115 u16 *PcmLength, 116 u16 *outputFreqIndex); 117 118 /*----------------------------------------------------------------------* 119 Name: HEAACDECEnd 120 121 Description: end HE-AAC decoder 122 123 Arguments: memPtr (IN) address of work area 124 decodedPcm (OUT) address of decoded pcm data area 125 PcmLength (OUT) output AAC PCM data size 126 outputFreqIndex (OUT) output AAC PCM index of sampling frequency 127 128 Returns: HEAACDEC_RET_OK Success 129 HEAACDEC_RET_BUFFER_ERR Illegal buffer area 130 HEAACDEC_RET_INVALID_ERR Invalid API call 131 *----------------------------------------------------------------------*/ 132 s32 HEAACDECEnd( void *memPtr, 133 s16 **decodedPcm, 134 u16 *PcmLength, 135 u16 *outputFreqIndex); 136 137 /*----------------------------------------------------------------------* 138 Name: HEAACDECClose 139 140 Description: close HE-AAC decoder, clear the work area 141 142 Arguments: memPtr (IN) address of work area 143 144 Returns: HEAACDEC_RET_OK Success 145 HEAACDEC_RET_BUFFER_ERR Illegal buffer area 146 HEAACDEC_RET_INVALID_ERR Invalid API call 147 *----------------------------------------------------------------------*/ 148 s32 HEAACDECClose( void *memPtr); 149 150 /*----------------------------------------------------------------------* 151 Name: HEAACDECRestart 152 153 Description: restart HE-AAC decoder 154 155 Arguments: memPtr (IN) address of work area 156 157 Returns: HEAACDEC_RET_OK Success 158 HEAACDEC_RET_BUFFER_ERR Illegal buffer area 159 *----------------------------------------------------------------------*/ 160 s32 HEAACDECRestart( void *memPtr); 161 162 /*----------------------------------------------------------------------* 163 Name: HEAACDECMemoryRequirement 164 165 Description: require HE-AAC decoder memory size 166 167 Arguments: aacInfo (IN) input AAC Stream Information 168 memSize (OUT) require AAC decoder memory size 169 170 Returns: HEAACDEC_RET_OK Success 171 HEAACDEC_RET_BUFFER_ERR Illegal buffer area 172 HEAACDEC_RET_ERR_PARAM Illegal AACDEC_AAC_INFO 173 *----------------------------------------------------------------------*/ 174 s32 HEAACDECMemoryRequirement( HEAACDEC_AAC_INFO *aacInfo, 175 s32 *memSize); 176 177 #ifdef __cplusplus 178 } /* extern "C" */ 179 #endif 180 181 #endif /* __AACDEC_API_H__ */ 182