Записанные звуковые данные не воспроизводятся с использованием OpenSL на Android
Я работаю над проектом, использующим OpenSL для Android, и у меня возникла проблема. В этом следующем случае волновые данные, помещенные в очередь, будут пропущены в редких случаях.
SLObjectItf mpSLPlayerObject;
SLPlayItf mpPlayItf;
SLAndroidSimpleBufferQueueItf mpBufferQueueItf;
(*mpSLPlayerObject)->GetInterface(mpSLPlayerObject, SL_IID_PLAY, &mpPlayItf);
(*mpSLPlayerObject)->GetInterface(mpSLPlayerObject, SL_IID_BUFFERQUEUE, &mpBufferQueueItf);
(*mpPlayItf)->SetPlayState(mpPlayItf, SL_PLAYSTATE_PLAYING);
(*mpBufferQueueItf)->Enqueue(mpBufferQueueItf, pBuffer, bufferSize);
Статус mpPlayItf изменится на SL_PLAYSTATE_PLAYING, и данные будут успешно помещены в очередь.
Но данные в mpBufferQueueItf остаются постоянно, а статус mpPlayItf не меняется.
Но в следующем случае
SLObjectItf mpSLPlayerObject;
SLPlayItf mpPlayItf;
SLAndroidSimpleBufferQueueItf mpBufferQueueItf;
(*mpSLPlayerObject)->GetInterface(mpSLPlayerObject, SL_IID_PLAY, &mpPlayItf);
(*mpSLPlayerObject)->GetInterface(mpSLPlayerObject, SL_IID_BUFFERQUEUE, &mpBufferQueueItf);
(*mpBufferQueueItf)->Enqueue(mpBufferQueueItf, pBuffer, bufferSize);
(*mpPlayItf)->SetPlayState(mpPlayItf, SL_PLAYSTATE_PLAYING);
Когда я поменял две строки для Enqueue и SetPlayState, все волновые данные будут воспроизводиться безупречно.
Я сталкиваюсь с этой проблемой на устройстве 3 ниже.
Nexus 5X Android 6.0
Xperia X Performance Android 7.0
Xperia Z4 Android 5.0
Может быть больше устройств с той же проблемой, но я понятия не имею.
Это ошибка или я должен поставить в очередь свои данные перед настройкой состояния воспроизведения? Кто-нибудь сталкивается с той же проблемой со мной?