音频分包发送

#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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值