我的问题与这个问题有关,但它是相反的。
将 UInt32(音频帧)拆分为两个 SInt16(左右)?
在上面的链接中,操作想要将 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 位应该在右边。整个事情不应该是两者的总和……我想。