#define AUDIO_LEN 320
static char aoCache[2048+AUDIO_LEN] = {0};
static int aoCacheLen = 0;
void SendToAoCompatible(const uint8_t *pcm, uint32_t pktNum) {
TS_S32 ret = 0;
TS_S32 tmpLen = 0;
AUDIO_FRAME_S audioFrame;
audioFrame.u32Len = AUDIO_LEN;//设置每次send的数据大小
audioFrame.u64TimeStamp = 0;
audioFrame.enSoundmode = AUDIO_SOUND_MODE_MONO;
audioFrame.enBitwidth = AUDIO_BIT_WIDTH_16;
//音频数据pcm拷贝到aoCache数组中,并更新aoCacheLen,含上次没有播放完的数据
memcpy(aoCache + aoCacheLen, pcm, pktNum);
aoCacheLen += pktNum;
while(aoCacheLen - tmpLen >= AUDIO_LEN) {
audioFrame.u64VirAddr[0] = (TS_VOID *)(aoCache + tmpLen);
ret = TS_MPI_AO_SendFrame(0, 0, &audioFrame, 1000);
if (ret != 0) {
printf("send Frame Data error with %d\n", ret);
}
tmpLen += AUDIO_LEN;
}
//将未处理完的数据移动到缓存的开始位置,并更新aoCacheLen,将aoCache + tmpLen处长为
//aoCacheLen - tmpLen数据移动到aoCache开始的位置
memcpy(aoCache, aoCache + tmpLen, aoCacheLen - tmpLen);
aoCacheLen -= tmpLen;
return;
}
音频分包发送
于 2024-09-09 20:14:19 首次发布