首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > 多媒体 >

OpenAL怎么播放单个buffer

2014-01-05 
OpenAL如何播放单个buffer本帖最后由 ibingow 于 2013-01-01 14:04:07 编辑找到的所有例子都是播放一个文

OpenAL如何播放单个buffer
本帖最后由 ibingow 于 2013-01-01 14:04:07 编辑 找到的所有例子都是播放一个文件,弄队列啊循环啊什么的。其实我的要求很简单,就是是把一帧的音频解出来后丢给al,al直接去放那个数据就行。应该怎么操作?感觉很少几行代码就行
还有,openal播放一个buffer时会不会阻塞住线程? OpenAL
[解决办法]
while(1)
{
alGetSourcei(s_Wavfile.source, AL_BUFFERS_PROCESSED, &s_Wavfile.val);//val值为排队的buffer个数
if(s_Wavfile.val > 0)
break;
j++;
}

while(s_Wavfile.val--)
{
alSourceUnqueueBuffers(s_Wavfile.source, 1, &s_Wavfile.buffer);
alBufferData(s_Wavfile.buffer, s_Wavfile.format, out, frame_shift * 2 * 2, s_Wavfile.frequency);
alSourceQueueBuffers(s_Wavfile.source, 1, &s_Wavfile.buffer);
}
alGetSourcei(s_Wavfile.source, AL_SOURCE_STATE, &s_Wavfile.val);
if(s_Wavfile.val != AL_PLAYING)
{
Write_Log(LOG_TYPE_ERROR, "state not playing...\n");
alSourcePlay(s_Wavfile.source);
}
out是你的一帧数据流

热点排行