Имеет ли 24-битный блок данных wav-файла байты со знаком или без знака? - PullRequest
2 голосов
/ 31 марта 2011

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 31 марта 2011

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

1 голос
/ 31 марта 2011

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

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

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

...