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 サンプルにデコードさせるなど)?
よろしく、