C++ 如何使用OpenSL ES播放PCM音频数据?
如何播放PCM音频缓冲区?目前,我使用排队让音频缓冲区排队,但我只能让正在讲话的客户端的音频排队,如果我尝试让另一个客户端排队,我不会收到声音 这是我的音频播放器C++ 如何使用OpenSL ES播放PCM音频数据?,c++,opensl,C++,Opensl,如何播放PCM音频缓冲区?目前,我使用排队让音频缓冲区排队,但我只能让正在讲话的客户端的音频排队,如果我尝试让另一个客户端排队,我不会收到声音 这是我的音频播放器 void createAudioPlayer(SLEngineItf engineEngine, SLObjectItf outputMixObject, SLObjectItf& audioPlayerObject) { SLDataLocator_AndroidFD_ dataSourceLocator =
void createAudioPlayer(SLEngineItf engineEngine, SLObjectItf outputMixObject,
SLObjectItf& audioPlayerObject)
{
SLDataLocator_AndroidFD_ dataSourceLocator = {
SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE,
2
};
// PCM data source format
SLDataFormat_PCM dataSourceFormat = {
SL_DATAFORMAT_PCM,
1,
SL_SAMPLINGRATE_8,
SL_PCMSAMPLEFORMAT_FIXED_16,
SL_PCMSAMPLEFORMAT_FIXED_16,
SL_SPEAKER_FRONT_CENTER,
SL_BYTEORDER_LITTLEENDIAN
};
SLDataSource dataSource = {
&dataSourceLocator,
&dataSourceFormat
};
SLDataLocator_OutputMix dataSinkLocator = {
SL_DATALOCATOR_OUTPUTMIX, // Locator type
outputMixObject // output mix
};
SLDataSink dataSink = {
&dataSinkLocator, // Locator
0,
};
// required interface
SLInterfaceID interfaceIDs[] = {
SL_IID_BUFFERQUEUE
};
SLboolean requiredInterfaces[] = {
SL_BOOLEAN_TRUE
};
// Create an audio playback object
SLresult result = (*engineEngine)->CreateAudioPlayer(
engineEngine,
&audioPlayerObject,
&dataSource,
&dataSink,
1,
interfaceIDs,
requiredInterfaces
);
assert(SL_RESULT_SUCCESS == result);
(void)result;
}