Oboe onAudioReady方法如何放大音频数据?
How to amplify Audio Data in Oboe onAudioReady Method?
我想使用双簧管库放大麦克风录制的音频数据。
我这样创建 AudioEngine.cpp:https://github.com/google/oboe/blob/master/samples/LiveEffect/src/main/cpp/LiveEffectEngine.cpp
这是具有 audioData 的 class:
DataCallbackResult
AudioEngine::onAudioReady(AudioStream *oboeStream, void *audioData, int32_t numFrames) {
/* some code */
// add your audio processing here
return DataCallbackResult::Continue;
}
在 LiveEffect 示例中,录制和播放流都是 AudioFormat::I16
,即 16 位整数。在此行中,您要投射到 float
:
auto *outputData = static_cast<float *>(audioData);
这会造成您听到的失真,因此只需转换为 int16_t
并乘以恒定幅度即可。
确保检查放大后的样本值不高于 INT16_MAX
,否则会出现环绕和失真。
我想使用双簧管库放大麦克风录制的音频数据。 我这样创建 AudioEngine.cpp:https://github.com/google/oboe/blob/master/samples/LiveEffect/src/main/cpp/LiveEffectEngine.cpp 这是具有 audioData 的 class:
DataCallbackResult
AudioEngine::onAudioReady(AudioStream *oboeStream, void *audioData, int32_t numFrames) {
/* some code */
// add your audio processing here
return DataCallbackResult::Continue;
}
在 LiveEffect 示例中,录制和播放流都是 AudioFormat::I16
,即 16 位整数。在此行中,您要投射到 float
:
auto *outputData = static_cast<float *>(audioData);
这会造成您听到的失真,因此只需转换为 int16_t
并乘以恒定幅度即可。
确保检查放大后的样本值不高于 INT16_MAX
,否则会出现环绕和失真。