|
Файловый формат AU и в настоящее время широко используется в Internet. Он возник на компьютерах Sun в качестве сброса памяти звуковых данных в мю-кодировке. Позднее, для того чтобы облегчить идентификацию этих файлов и предоставить возможность явно задавать звуковой формат, был добавлен базовый заголовок. Ha компьютерах NeXT этот формат известен как SND. Основное достоинство AU - простота. Заголовок определяет все важные параметры, а звуковые данные хранятся в виде простого сброса памяти. Единственное неудобство состоит в том, что в заголовке записывается общая длина звуковых данных, которая не всегда известна заранее. Простейший способ решения этой проблемы, используемый в программах записи файлов формата AU, - искусственное завышение длины, а в программах чтения файлов AU - остановка работы по достижении конца файла или по прочтении соответствующего количества данных. He следует устанавливать длину звуковых данных равной 0. B табл. 15.1 показан формат заголовка AU. Все значения записываются, начиная с самого старшего байта. Хотя смещение для большинства файлов AU составляет ровно 28 байт, иногда в заголовке сохраняются дополнительные данные. Необходимо постоянно следить за тем, чтобы не выйти за пределы истинной длины. Кроме того, как уже упоминалось ранее, количество байтов звуковых данных следует рассматривать как верхний предел, а не гарантированное количество. B табл. 15.2 перечисляется часть кодов формата записи звука, используемых при работе с файлами формата AU. Хотя в таблице представлено множество вариантов, только три формата данных применяются широко: 8-битная мю-функция (обычно при частоте дискретизации 8000 Гц), линейный 8-битный и линейный 16-битный. Остальные используются почти исключительно на системах NeXT или Sun. B частности, форматы DSP (цифровой обработки) - это специальные форматы NeXT, а версий с плавающей точкой почти всегда следует избегать, так как они плохо переносимы между системами. (Конечно, формат G.711 - мю-функция хорошо переносим и, как сказано в главе 11, по существу, является 8-битным форматом с плавающей точкой.) Благодаря тому, что формат AU столь прост, я им часто пользуюсь. Как правило, я преобразую файлы в формат AU и затем применяю в качестве основы для дальнейшей обработки. B оставшейся части этой главы мы определим два класса. AuRead - это объект AudioAbstract, который читает данные из файла AU; AuWrite — это аудиопроигрыватель, который записывает данные в файл AU.
|