私の質問はこの質問に関連していますが、逆です。
UInt32(オーディオフレーム)を2つのSInt16(左と右)に分割しますか?
上記のリンクでは、opは32ビットフレームを2つの16ビットサンプル(左と右)に分割したいと考えていました。
2つの16ビットサンプルがあり、それらを単一の32ビットインターリーブフレームとして表現したいと思います。
私がこれまでに試みたことはこのように見えます。
UInt32* ar = malloc(totalFramesInFile * sizeof (ar));
for (int b=0; b < totalFramesInFile; b++)
{
UInt32 l = soundStructArray[audioFile].audioDataLeft[b];
UInt32 r = soundStructArray[audioFile].audioDataRight[b];
UInt32 t = (UInt32) l + r;
ar[b] = t;
}
soundStructArray[audioFile].audioData = ar;
これは合法で正しいですか?経験が浅いのでわかりません。私のオーディオ出力は少し奇妙に聞こえます、そして私は除去のプロセスによって何が悪いのかを決定しようとしています。
誰かが私がしていることが2つの16ビットサンプルを32ビットフレームとして表現する正しい方法であることを確認するか、正しい方法を提案することができれば役に立ちます。
自分のやったことが間違っているような気がします。これは、32ビットフレームの最初の16ビットを左に、次の16ビットを右にする必要があるためだと思います。全部が2つの合計であってはならない……と思います。