C++ 如何使用OpenSL ES播放PCM音频数据?

C++ 如何使用OpenSL ES播放PCM音频数据?,c++,opensl,C++,Opensl,如何播放PCM音频缓冲区?目前,我使用排队让音频缓冲区排队,但我只能让正在讲话的客户端的音频排队,如果我尝试让另一个客户端排队,我不会收到声音 这是我的音频播放器 void createAudioPlayer(SLEngineItf engineEngine, SLObjectItf outputMixObject, SLObjectItf& audioPlayerObject) { SLDataLocator_AndroidFD_ dataSourceLocator =

如何播放PCM音频缓冲区?目前,我使用排队让音频缓冲区排队,但我只能让正在讲话的客户端的音频排队,如果我尝试让另一个客户端排队,我不会收到声音

这是我的音频播放器

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;

}