Мой вопрос связан с этим вопросом, но он обратный.
Разделить UInt32 (аудиокадр) на две SInt16 (слева и справа)?
Inссылка над операцией хотела разделить 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-битного кадра, или предложить правильный путь.
У меня естьощущение, что то, что я сделал, неправильно.Я думаю, что это потому, что первые 16 бит 32-битного кадра должны быть левыми, а вторые 16 бит должны быть правыми.Все это не должно быть суммой двух ...... Я думаю.