Reputation: 5672
I'm using SLDataLocator_AndroidSimpleBufferQueue for all audio files. It works good, but... It doesnt support seek and loop.
OpenSL can't require SL_IID_SEEK with a buffer queue data source
How can i use looping for files? Cant use streaming - low latency.
Upvotes: 1
Views: 942
Reputation: 21
I solved this problem with buffer queue Enqueue function on player callback function.
the sample code like this...
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);
}
Upvotes: 2
Reputation: 5672
As it turned out, this is not possible with SLDataLocator_AndroidSimpleBufferQueue
.
Had to use SLDataLocator_AndroidFD
...
Upvotes: 1