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 );
}
示例#2
0
void *audio_alloc_ext_mem_simplified(kal_uint32 size)
{
   return audio_alloc_mem(size);
}