#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
, иначе вы получите обтекание и искажение.