Зависит ли хранение PCM-данных Mp3-файла от Big Endian и little Endian?

#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 в обычном режиме.