static void dtmf_mcu_Init(kal_uint16 uSampleRate) { kal_uint32 uIntBufSize=0, uPcmBufSize=0, uTotalBufferSize=0; kal_uint8 *pAllocBuf; DTMF_SR uSr=0; memset(&DTMF_SW, 0, sizeof(DTMF_SW)); DTMF_SW.uSampleRate = uSampleRate; switch (DTMF_SW.uSampleRate) { case 8000: uSr = DTMF_8K; break; case 11025: uSr = DTMF_11K; break; case 12000: uSr = DTMF_12K; break; case 16000: uSr = DTMF_16K; break; case 22050: uSr = DTMF_22K; break; case 24000: uSr = DTMF_24K; break; case 32000: uSr = DTMF_32K; break; case 44100: uSr = DTMF_44K; break; case 48000: uSr = DTMF_48K; break; default: ASSERT(0); break; } DTMF_GetBufferSize(&uIntBufSize, &uPcmBufSize, uSr, DTMF_MONO); uTotalBufferSize = uIntBufSize + uPcmBufSize * DTMF_BUFFERED_FRAME_NUMBER; kal_trace( TRACE_GROUP_AUD_PLAYBACK, MCU_DTMF_INIT, uSampleRate, uPcmBufSize, uTotalBufferSize); pAllocBuf = (kal_uint8 *)audio_alloc_mem(uTotalBufferSize); ASSERT(pAllocBuf); ASSERT(uIntBufSize); ASSERT(uPcmBufSize); DTMF_SW.uFrameByte = uPcmBufSize; DTMF_SW.RingBuffer.rb_base = (kal_uint8*)pAllocBuf; DTMF_SW.RingBuffer.rb_size = uPcmBufSize * DTMF_BUFFERED_FRAME_NUMBER; DTMF_SW.RingBuffer.write = uPcmBufSize * uPreSilenceLength; //fill a silence to prevent pop up noise DTMF_SW.RingBuffer.read=0; pAllocBuf += uPcmBufSize * DTMF_BUFFERED_FRAME_NUMBER; DTMF_SW.pHandle = DTMF_Init( (void *)pAllocBuf, DTMF_CONTINUOUS, uSr, DTMF_MONO); ASSERT(DTMF_SW.pHandle); DTMF_SW.uAudId = L1Audio_GetAudioID(); L1Audio_SetFlag( DTMF_SW.uAudId ); L1Audio_SetEventHandler( DTMF_SW.uAudId, dtmf_mcu_Process ); }
void *audio_alloc_ext_mem_simplified(kal_uint32 size) { return audio_alloc_mem(size); }