Главная » Программирование звука » Источники дополнительной информации

0

Полный  стандарт  ISO  можно  получить  из  нескольких  источников.  B  Соединенных  Штатах  можно  получить  информацию  в  Global  Engineering  Documents (http://global.ihs.com).

K  сожалению,  большинство  книг  по  MPEG  охватывают  только  кодирование видеоинформации.   Тем   не   менее   работа   "MPEG   Video   Compression   Standard" Джоан Митчелл Qoan Mitchell), Вильяма Пеннбейкера (William Pennebaker), Чеда

Фогга  (Chad  Fogg)  и  Дидье  Леголла  (Didier  LeGaIl)  содержит  полезную  информацию  по  истории  стандартов  MPEG.  По  заявлению  авторов,  следующий  том  будет специально посвящен кодированию аудио.

Проигрыватели MPEG и сопутствующую информацию можно получить на

Web-сайте http://www.mpeg.org.

Глава 15. Формат файла AU

Файловый  формат  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 (цифровой обработки) это специальные форматы

Таблица 15.1. Заголовок АU

Длина                                 Описание

4                                                «Волшебная струна»: .snd

4                                                Смещение звуковых данных от начала файла (минимум 28)

4                                                Число байтов звуковых данных

4                                                Звуковой формат, см. табл. 15.2

4                                                Частота дискретизации (отсчетов в секунду)

4                                                Количество каналов

n                                                Необязательное текстовое описание (минимум 4 байта)

n                                                Звуковые данные

Таблица 15.2. Коды формата записи звука в файлах АU

Код                                   Описание

1                                             8-битный формат, мю-функция по стандарту G.711

2                                             Линейный, 8 бит

3                                             Линейный, 16 бит

4                                             Линейный, 24 бит

5                                             Линейный, 32 бита

6                                             Отсчеты с плавающей точкой

7                                             Отсчеты с плавающей точкой двойной точности

8                                             Фрагментированные отсчеты

10                                           Программа DSP

11                                           Отсчеты с фиксированной точкой, 8 бит

12                                           Отсчеты с фиксированной точкой, 16 бит

13                                           Отсчеты с фиксированной точкой, 24 бит

14                                           Отсчеты с фиксированной точкой, 32 бита

18                                           16-битный линейный с предыскажением

19                                           Линейный сжатый, 16 бит

20                                           16-битный линейный с предыскажением и компрессией

21                                           Набор музыкальных команд DSP

23                                           Адаптивная дифференциальная импульсно-кодовая модуляция

(АДИКМ) стандарта G.721

24                                           АДИКМ G.722

25                                           АДИКМ G.723.3

26                                          АДИКМ G.723.5

27                                           8-битный, ?-Law по стандарту G.711

NeXT,  а  версий  с  плавающей  точкой  почти  всегда  следует  избегать,  так  как  они плохо  переносимы  между  системами.  (Конечно,  формат  G.711   мю-функция  хорошо переносим и, как сказано в главе 11, по существу, является 8-битным форматом с плавающей точкой.)

Благодаря  тому,  что  формат  AU  столь  прост,  я  им  часто  пользуюсь.  Как  правило, я преобразую файлы в формат AU и затем применяю в качестве основы для дальнейшей обработки.

B оставшейся части этой главы мы определим два класса. AuRead это объект AudioAbstract,  который читает  данные  из  файла  AU;  AuWrite —  это  аудиопроигрыватель, который записывает данные в файл AU.

Листинг 15.1. Программа au.h

#ifndef  AU_H_INCLUDED

#define  AU_H_INCLUDED

#include "audio.h"

#include "compress.h"

#include "aplayer.h"

#include <iostream>

bool IsAuFile(istream &file);

class AuRead: public AudioAbstract {

class AuWrite: public AbstractPlayer {

};

#endif

Листинг 15.2. Программа au.cpp

#include "au.h"

#include "g711.h"

Идентификация файлов AU

Созданные  за  последнее  время  файлы  формата  AU  наделены  заголовком,  показанным  в  табл.  15.1.  B  первые  четыре  байта  записана  строка  .snd.  Есть  множество   более   старых   файлов,   которые   содержат   идентификатор   формата   AU   (используют  расширение  .au),  но  не  имеют  этого  заголовка.  Такие  файлы  являются обычно   сбросом   памяти  звуковых  данных  в  мю-кодировке,  записанных  на  частоте дискретизации 8000 Гц.

Листинг 15.3. Идентификация файла формата AU

bool IsAuFile(istream &file) { file.seekg(0); // B начало файла. long magic = ReadIntMsb(file,4);

return (magic == 0x2E736E64); // Должно   быть  ".snd".

}

Источник: Кинтцель Т.  Руководство программиста по работе со звуком = A Programmer’s Guide to Sound: Пер. с англ. М.: ДМК Пресс, 2000. 432 с, ил. (Серия «Для программистов»).

По теме:

  • Комментарии