新手上路
- 积分
- 28
- 金钱
- 28
- 注册时间
- 2017-6-9
- 在线时间
- 10 小时
|
发表于 2017-6-20 09:57:00
|
显示全部楼层
本帖最后由 会会问情 于 2017-6-20 10:01 编辑
本地播放这个音频文件是可以的
WM8978_ADDA_Cfg(1,0); //¿aÆôDAC
WM8978_Input_Cfg(0,0,0);//1رÕêäèëí¨μà
WM8978_Output_Cfg(1,0); //¿aÆôDACêä3ö
DMA_BUF1=mymalloc(SRAMIN,WAV_I2S_TX_DMA_BUFSIZE);//WAV_I2S_TX_DMA_BUFSIZE=500
DMA_BUF2=mymalloc(SRAMIN,WAV_I2S_TX_DMA_BUFSIZE);
receive_buffer=mymalloc(SRAMIN,520);
if(receive_buffer&&DMA_BUF1&&DMA_BUF2){
int recbuflen=1024;
WM8978_I2S_Cfg(2,0);
I2S2_Init(I2S_Standard_Phillips,I2S_Mode_MasterTx,I2S_CPOL_Low,I2S_DataFormat_16b);
I2S2_SampleRate_Set(44100);
I2S2_TX_DMA_Init(DMA_BUF1,DMA_BUF2,WAV_I2S_TX_DMA_BUFSIZE/2); //ÅäÖÃTX DMA
i2s_tx_callback=wav_i2s_dma_tx_callback;
audio_stop();
while(1) {
int recbuflen=1024;
err = RTPReceive(cid, sock[0], receive_buffer, &recbuflen);
if (err != RTP_OK) printf("RTPReceive %s (%d): %s\n", 0 ? "RTCP" : "RTP", sock[0], RTPStrError(err));
memcpy(play_cach+j,receive_buffer+12,500);
j+=500;
if(j==500000){
j=0;
printf(" 接收完毕,开始播放.........\r\n");
while(k<500000){
audio_play_song(play_cach+k);
k+=500;
}
}
}
u8 audio_play_song(u8* receive_buffer)
{
u8 res;
if(count==0){
wav_buffill(DMA_BUF1,receive_buffer,WAV_I2S_TX_DMA_BUFSIZE,16);
wav_buffill(DMA_BUF2,receive_buffer,WAV_I2S_TX_DMA_BUFSIZE,16);
audio_start();
count=1;
play_flag=1;
return res;
}
while(wavtransferend==0);
wavtransferend=0;
if(wavwitchbuf)
wav_buffill(DMA_BUF2,receive_buffer,WAV_I2S_TX_DMA_BUFSIZE,16);//ìî3äbuf2
else
wav_buffill(DMA_BUF1,receive_buffer,WAV_I2S_TX_DMA_BUFSIZE,16);//ìî3äbuf1
play_flag=1;
return res;
}
|
|