void pcm4way_hisrHdl() { uint32 I; int16 *buf1, *buf2; buf1 = (int16*)PCM_UL_BUF[pcm_buf_rw]; buf2 = (int16*)PCM_BUF; for(I = 160; I > 0 ; I--) *buf2++ = (*buf1++) >> 2; PCM4WAY_GetFromMic((uint16*)PCM_UL_BUF[pcm_buf_rw]); buf1 = (int16*)PCM_UL_BUF[pcm_buf_rw]; buf2 = (int16*)PCM_BUF; for(I = 160; I > 0 ; I--) (*buf2++) += (*buf1++) >> 2 * 3; PCM4WAY_PutToSE((const uint16*)PCM_BUF); buf1 = (int16*)PCM_DL_BUF[pcm_buf_rw]; buf2 = (int16*)PCM_BUF; for(I = 160; I > 0 ; I--) *buf2++ = (*buf1++) >> 2; PCM4WAY_GetFromSD((uint16*)PCM_DL_BUF[pcm_buf_rw]); buf1 = (int16*)PCM_DL_BUF[pcm_buf_rw]; buf2 = (int16*)PCM_BUF; for(I = 160; I > 0 ; I--) (*buf2++) += (*buf1++) >> 2 * 3; PCM4WAY_PutToSpk((const uint16*)PCM_BUF); pcm_buf_rw ++; pcm_buf_rw &= 0x7; }
static void spe_custom_hisr_hdlr(void) { if(spe_custom == NULL) return; if(spe_custom->state != SPE_STATE_WORKING) return; if(spe_custom->buf_read != spe_custom->buf_to_process){ PCM4WAY_PutToSpk((const uint16 *)spe_custom->dl_pcm[spe_custom->buf_read]); PCM4WAY_PutToSE((const uint16 *)spe_custom->ul_pcm[spe_custom->buf_read]); spe_custom->buf_read++; if( spe_custom->buf_read == PCM_BUFFER_NUM ) spe_custom->buf_read = 0; } else { PCM4WAY_FillSpk(0); PCM4WAY_FillSE(0); } PCM4WAY_GetFromSD((uint16 *)spe_custom->dl_pcm[spe_custom->buf_write]); PCM4WAY_GetFromMic((uint16 *)spe_custom->ul_pcm[spe_custom->buf_write]); spe_custom->buf_write++; if( spe_custom->buf_write == PCM_BUFFER_NUM ) spe_custom->buf_write = 0; L1Audio_SetEvent(spe_custom->aud_id, 0); }