複数のステレオ デバイスを介してオーディオを出力するために、paMME ホスト API によって提供される複数出力デバイス機能を使用しています。また、MME を使用する単一のマルチチャンネル入力デバイスを使用する必要があります。- 出力デバイスのみを設定して、内部で生成されたオーディオを再生する場合、問題はありません。- ただし、入力デバイスとマルチステレオ出力デバイスの両方を構成すると、問題が発生し始めます。出力で 3 つ以上のチャネルを使用しようとすると、アプリケーションがクラッシュします。つまり、2*frames_per_buffer を超える 'out' ポインターをインクリメントしようとするとクラッシュします。これは、バッファーが 2 つの出力チャネルにのみ割り当てられていることを示しています。
何が問題なのか、誰にでも光を当てることができますか? 構成コードを以下に示します。
outputParameters.device = paUseHostApiSpecificDeviceSpecification;
outputParameters.channelCount = 8;
outputParameters.sampleFormat = paInt16;
outputParameters.hostApiSpecificStreamInfo = NULL;
wmmeStreamInfo.size = sizeof(PaWinMmeStreamInfo);
wmmeStreamInfo.hostApiType = paMME;
wmmeStreamInfo.version = 1;
wmmeStreamInfo.flags = paWinMmeUseMultipleDevices;
wmmeDeviceAndNumChannels[0].device = selectedDeviceIndex[0];
wmmeDeviceAndNumChannels[0].channelCount = 2;
wmmeDeviceAndNumChannels[1].device = selectedDeviceIndex[1];
wmmeDeviceAndNumChannels[1].channelCount = 2;
wmmeDeviceAndNumChannels[2].device = selectedDeviceIndex[2];
wmmeDeviceAndNumChannels[2].channelCount = 2;
wmmeDeviceAndNumChannels[3].device = selectedDeviceIndex[3];
wmmeDeviceAndNumChannels[3].channelCount = 2;
wmmeStreamInfo.devices = wmmeDeviceAndNumChannels;
wmmeStreamInfo.deviceCount = 4;
outputParameters.suggestedLatency = Pa_GetDeviceInfo( selectedDeviceIndex[0] )->defaultLowOutputLatency;
outputParameters.hostApiSpecificStreamInfo = &wmmeStreamInfo;
inputParameters.device = selectedInputDeviceIndex; /* default output device */
inputParameters.channelCount = 8; /* stereo output */
inputParameters.sampleFormat = paInt16; /* 32 bit floating point output */
inputParameters.suggestedLatency = Pa_GetDeviceInfo( inputParameters.device )->defaultLowInputLatency;
inputParameters.hostApiSpecificStreamInfo = NULL;
よろしくお願いいたします。
シッダルト・クマール。