#c# #naudio #endianness
#c# #naudio #порядковый номер
Вопрос:
Я работаю над PCM как новичок, и я использую библиотеку Naudio. Итак, мне было интересно, зависит ли хранение PCM-данных от Little Endian и Big Endian или, если не зависит хранение, то зависит ли адресация памяти от этого Big и Little Endian, потому что данные PCM имеют наименьший значащий байт и, конечно, самый значимый байт, и, поскольку я знаю, что Little Endian и Big Endian получили разные способы хранения этих байтов в памяти, поэтому чтение данных с диска в память может привести к неправильным значениям, пока я не переверну массив, а затем не преобразоваю его в short
значение.
Просто чтобы вы поняли, о чем я говорю, вот короткий пример:
Очень короткие данные PCM, всего 4 байта:
Address Value
1000 90
1001 AB
1002 12
1003 CD
Это хранилище в a в big endian.
и следующее — хранение в порядковом номере little Endian
Address Value
1000 CD
1001 12
1002 AB
1003 90
так происходит ли это переворачивание байтов при чтении PCM с помощью Naudio? поскольку я проверяю, является ли BitConverter порядковым номером Little Endian или нет, в соответствии с этим я переворачиваю свой массив байтов, примерно так:
Int16 Left_Sample = BitConverter.ToInt16(Buffer, i);
Int16 Right_Sample = BitConverter.ToInt16(Buffer, i 2);
Int16 Final_Sample = (Int16)(0.5f * ((float)Left_Sample (float)Right_Sample));
byte[] Final_Byte = BitConverter.GetBytes(Final_Sample);
if (BitConverter.IsLittleEndian){ Array.Reverse(Final_Byte); }
Итак, вкратце:
Вопрос: Влияет ли порядковый номер Big и Little Endian на объем байтового хранилища?
Вопрос: Нужно ли использовать if(BitConverter.IsLittleEndian)
инструкцию для обратного преобразования массива?
Ответ №1:
Внутри WAV-файлов образцы PCM хранятся в формате младшего порядкового номера.
MP3-файлы представляют собой сжатый аудиоформат, поэтому на самом деле не имеет смысла говорить, какой порядковый номер он использует, но когда NAudio преобразует в PCM, он снова будет строчным.
Файлы AIFF обычно хранят сэмплы в формате big-endian, но опять же, NAudio справится с этим за вас.
Не видя больше вашего кода, трудно сказать, но я сомневаюсь, что вам нужно будет самостоятельно менять порядок байтов, если вы используете NAudio в обычном режиме.