Имеет ли 24-битный блок данных wav-файла байты со знаком или без знака?

Я пытаюсь написать программу, которая будет создавать 24-битные файлы WAV с использованием Java. Java звук API не поддерживает 24-битный звук, поэтому я пытаюсь записать файл с нуля. Это началось как случайный интерес, но стало эпическим поиском битов, байтов, знаков и кусков.

Имеет ли 24-битный блок данных wav-файла байты со знаком или без знака?

Отсутствие в Java беззнаковых байтов разочаровывает. Я читал, что битовые маскированные целые числа могут использоваться для представления байтов без знака, но мне интересно, как это будет представлено в окончательном выводе в файл.

Извините за расхождение... мой вопрос "Имеет ли 24-битный блок данных wav-файла подписанные или неподписанные байты?"

В любом случае мне придется выяснить этот подписанный / неподписанный бизнес, но я не могу найти ответ относительно блока данных в ссылках, которые я нашел.

2 ответа

Я также могу подтвердить, что 24-битные данные в файлах WAV подписаны (когда данные хранятся в формате WAVE_FORMAT_PCM). В более общем смысле, данные WAVE_FORMAT_PCM всегда подписываются, КРОМЕ ТОГО, когда они составляют 8 бит на выборку.

Согласно этому (и моему личному опыту) файлы Microsoft WAVE используют целые числа со знаком 2 в дополнении для представления выборок PCM размером более 8 бит. По умолчанию, порядок байтов этих целых чисел является прямым порядком байтов.

Ты можешь использовать soxi из пакета SoX, чтобы проверить это в ваших собственных тестовых файлах (у вас есть, верно?).

Обратите внимание, что файлы WAVE также могут содержать аудиоформаты, отличные от обычного PCM.

Другие вопросы по тегам