Portaudio PCM и сжатие
Я использую portaudio для получения звука с микрофона, я сжимаю звук с помощью avcodec_encode_audio. Я отправляю его на другой компьютер, распаковываю и играю. Отлично. Однако я хочу начать с вывода из программы AecSdkDemo от Microsoft. Это тот, который отфильтровывает обратную связь. Это тоже отлично работает, но дает вывод PCM. Функция обратного вызова portaudio использует какой-то другой формат, и это единственный формат, который принимает компрессор. Какой формат? Это не PCM. Я могу записать его в файл, но Audacity не может ни воспроизвести, ни идентифицировать его, и он может воспроизводить PCM. Ниже приведен код, который я использую для запуска PortAudio. Любая помощь очень ценится.
PaStreamParameters inputParameters;
PaError err = paNoError;
err = Pa_Initialize();
if( err != paNoError )
{
goto done;
}
inputParameters.device = Pa_GetDefaultInputDevice();
if (inputParameters.device == paNoDevice)
{
sprintf(ErrLine,"Error: No default input device.");
AfxMessageBox(ErrLine);
goto done;
}
inputParameters.channelCount = NUM_CHANNELS; /* stereo input */
inputParameters.sampleFormat = PA_SAMPLE_TYPE;
inputParameters.suggestedLatency = Pa_GetDeviceInfo( inputParameters.device )->defaultLowInputLatency;
inputParameters.hostApiSpecificStreamInfo = NULL;
err = Pa_OpenStream(
&stream,
&inputParameters,
NULL,
SAMPLE_RATE,
SAMPLES_PER_FRAME,
paClipOff,
AudioEncodeCallback,
EncodeAudioData );
if( err != paNoError )
{
goto done;
}
EncodeAudioData->recordStream = stream;
return paNoError;