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;

0 ответов

Другие вопросы по тегам