Как усилить аудиоданные в методе Oboe onAudioReady?

#android #c #audio #oboe

#Android #c #Аудио #oboe

Вопрос:

Я хочу усилить аудиоданные, записанные микрофоном, используя библиотеку Oboe. Я создал AudioEngine.cpp вот так:https://github.com/google/oboe/blob/master/samples/LiveEffect/src/main/cpp/LiveEffectEngine.cpp Вот класс, в котором есть audioData:

 DataCallbackResult
AudioEngine::onAudioReady(AudioStream *oboeStream, void *audioData, int32_t numFrames) {

    /* some code */


 // add your audio processing here

    return DataCallbackResult::Continue;
}
  

Комментарии:

1. Я попробовал 0.2f вместо 2, все равно это сильно искажает.

Ответ №1:

В примере LiveEffect оба потока записи и воспроизведения являются AudioFormat::I16 т.е. 16-битными целыми числами. В этой строке вы приводите к float :

 auto *outputData = static_cast<float *>(audioData);    
  

Это вызовет искажение, которое вы слышите, поэтому вместо этого просто преобразуйте в int16_t и умножьте на постоянную амплитуду.

Убедитесь, что увеличенное значение сэмпла не выше INT16_MAX , иначе вы получите обтекание и искажение.