首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NDK OpenSL用缓冲队列循环声音。

NDK OpenSL用缓冲队列循环声音。
EN

Stack Overflow用户
提问于 2013-11-22 21:04:34
回答 2查看 907关注 0票数 1

我对所有的音频文件都使用SLDataLocator_AndroidSimpleBufferQueue。效果很好但是..。它不支持寻找和循环。

OpenSL不能要求具有缓冲队列数据源的SL_IID_SEEK

如何使用循环处理文件?不能使用流-低延迟。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-24 09:57:57

事实证明,这在SLDataLocator_AndroidSimpleBufferQueue中是不可能的。不得不用SLDataLocator_AndroidFD..。

票数 1
EN

Stack Overflow用户

发布于 2016-11-18 07:30:10

我在播放器回调函数上使用缓冲器队列内队列函数解决了这个问题。

这样的代码样本..。

代码语言:javascript
复制
struct PARAM { char* buffer;  long  size; };

void bqPlayerCallback(SLAndroidSimpleBufferQueueItf bqPlayerBufferQueue, void *context)
{
    ...
    PARAM* param = (PARAM*)context;
    result = (*bqPlayerBufferQueue)->Enqueue(bqPlayerBufferQueue, param->buffer, nparam->size);
}

void createAudioPlayer... {
    (*engineEngine)->CreateAudioPlayer(engineEngine, &bqPlayerObject, ...);
    ...
    PARAM* param = new PARAM{buffer, size};
    result = (*bqPlayerBufferQueue)->RegisterCallback(bqPlayerBufferQueue, bqPlayerCallback, param);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20154462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档