OPENAL的播放速度

vision66 2014-07-10 11:48:06
我的流式播放器程序中, 收到服务端送来的数据流:
如果是视频帧, 就解码显示视频;
如果是音频帧, 就解码播放声音;
结果最后停止流数据后, 总会发现声音还能播放一段时间, 我每次播放声音的时候, 调用的是下面这个函数, 播放与解码是在一个线程中进行.
long openal_fill(uint8_t* data, int size, int format, int freq)
{
if (data == 0 || size <= 0)
return -1;

// 填充缓冲器
@autoreleasepool {
NSCondition* condition = [[NSCondition alloc] init];
[condition lock];

ALuint bufferId;

// 创建缓冲器
alGenBuffers(1, &bufferId);

// 将PCM数据填充到缓冲器
alBufferData(bufferId, format, data, size, freq);

// 把一个缓冲器或多个缓冲器附加在一个声源上
alSourceQueueBuffers(mOA->mSourceID, 1, &bufferId);

[condition unlock];
}

// 播放声音
ALint stateVaue;
alGetSourcei(mOA->mSourceID, AL_SOURCE_STATE, &stateVaue);
if (stateVaue != AL_PLAYING)
{
alSourcePlay(mOA->mSourceID);
return -2;
}

// 清理缓冲器
ALint processed;
alGetSourcei(mOA->mSourceID, AL_BUFFERS_PROCESSED, &processed);
for (; processed > 0; processed--)
{
ALuint bufferId;
alSourceUnqueueBuffers(mOA->mSourceID, 1, &bufferId);
alDeleteBuffers(1, &bufferId);
}

return 0;
}

求教一下, 可能是什么问题? 能不能加快openal从缓冲区播放声音的速度?
...全文
457 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
_花落谁家 2016-10-18
  • 打赏
  • 举报
回复
楼主怎么解决的。。。求分享------
codemanship 2014-09-11
  • 打赏
  • 举报
回复
楼主搞定了没?求分享。
vision66 2014-07-11
  • 打赏
  • 举报
回复
顶一下, 升上去!

29,030

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧