uint32 DACA_GetFromSD(uint16 *dl_buf) { uint32 I; uint32 fsize = dacaEx.frame_size; if(SP_IsSpeakerMute()){ memset(dl_buf, 0, fsize * sizeof(uint16)); } else { volatile uint16* ptr = SAL_PcmEx_GetBuf(SAL_PCMEX_DACA_BUF_DL); *dl_buf = *ptr; // dummy read for( I = fsize ; I > 0; I-- ) *dl_buf++ = *ptr++; } return fsize; }
uint32 DACA_GetFromSD(uint16 *dl_buf) { uint32 I; uint32 fsize = dacaEx.frame_size; if(SP_IsSpeakerMute()) { memset(dl_buf, 0, fsize * sizeof(uint16)); } else { volatile int16* ptr = SAL_PcmEx_GetBuf(SAL_PCMEX_DACA_BUF_DL); int16 *out_buf = dl_buf; int32 gain = AM_DSP_GetSpeechDigitalGain(); ASSERT(gain > 0 && gain <= 4096); for( I = 0 ; I < fsize; I++ ) { // tmp = *ptr++; //tmp = (tmp * gain) >> 12; //*out_buf++ = tmp; *out_buf++ = (*ptr++ * gain) >> 12; } } return fsize; }