我正在使用 FFMPEGavcodec_decode_audio
解码各种类型的音频输入文件。生成的样本是 SHORT 类型。
这些样本由另一个库处理,该库需要 FLOAT 输入格式的样本。最后,为了播放(在 Android 上),我需要再次将 FLOAT 样本转换回 SHORT:
short* inputSamples = ...;
float* tmpBuffer = new float[nrInputSamples];
for (int i=0; i<nrInputSamples; i++)
tmpBuffer[i] = inputSamples[i]/32767.0f;
//process audio here
for (int i=0; i<nrInputSamples; i++)
inputSamples[i] = tmpBuffer[i]*32767.0f;
有没有更有效的方法来做到这一点(例如强制 ffmpeg 将音频解码为 FLOAT 样本)?
问候,