Детальное описание TTA мультиканального аудио формата
TTA это простой и стабильный формат цифровой записи звука, предназначенный для хранения аудио данных, сжатых с помощью беспотерьного алгоритма True Audio. Бесплатный и простой в использовании. Формат TTA имеет очень простую структуру. Заголовок TTA файла содержит уникальный идентификатор формата, который сопровождается блоком мета-данных. Блок мета-данных содержит минимальную информацию, необходимую для восстановления оригинального потока (количество каналов, частоту дискретизации, разрядность, общее количество сэмплов в файле и пр.) и оканчивается 32-битной контрольной суммой. Непосредственно за этим заголовком следуют блоки сжатых данных (фреймы), каждый из которых так же оканчивается 32-битной контрольной суммой. Декодирование возможно с начала любого TTA фрейма потока. Сжатые сэмплы каждого из каналов во фрейме располагаются последовательно, как и в обычном PCM формате данных.
Структура TTA заголовка
Заголовок TTA1 | |
---|---|
Номер байта | Значение (формат) |
Заголовок начала потока | |
00-03 | Идентификатор формата с номером версии (символьный, «TTA1») |
04-05 | Аудио формат (бинарный, Little Endian) |
06-07 | Число аудио каналов (бинарный, Little Endian) |
08-09 | Разрядность, бит/сэмпл (бинарный, Little Endian) |
10-13 | Частота дискретизации (бинарный, Little Endian) |
14-17 | Количество сэмплов в файле (бинарный, Little Endian) |
18-21 | CRC32 контрольная сумма (бинарный, Little Endian) |
Таблица поиска1 | |
22-25 | Точка поиска 1 (бинарный, Little Endian) |
26-X0 | .. .. .. .. .. .. .. .. .. .. .. .. .. .. |
X1-X4 | Точка поиска N (бинарный, Little Endian) |
X5-X8 | CRC32 контрольная сумма (бинарный, Little Endian) |
.. .. .. данные .. .. .. |
Заголовки TTA2 (В разработке) | |
---|---|
Номер байта | Значение (формат) |
Заголовок начала потока | |
00-03 | Идентификатор формата с номером версии (символьный, «TTA2») |
04-05 | Число аудио каналов (бинарный, Little Endian) |
06-07 | Разрядность, бит/сэмпл (бинарный, Little Endian) |
08-11 | Частота дискретизации (бинарный, Little Endian) |
12-15 | Маска расположения каналов2 (бинарный, Little Endian) |
16-23 | Количество сэмплов в файле (бинарный, Little Endian, может быть 0) |
24-31 | Размер блока данных, байт (бинарный, Little Endian, может быть 0) |
32-35 | CRC32 контрольная сумма (бинарный, Little Endian) |
.. .. .. данные .. .. .. | |
Заголовок конца потока (Таблица поиска) | |
00-02 | Идентификатор конца потока (бинарный, «0xFFFFFF») |
03-06 | Точка поиска 1 (бинарный, Little Endian) |
07-X0 | .. .. .. .. .. .. .. .. .. .. .. .. .. .. |
X1-X4 | Точка поиска N (бинарный, Little Endian) |
X5-X8 | CRC32 контрольная сумма (бинарный, Little Endian) |
Отношение количества сэмплов в файле к стандартной длине фрейма определяет общее количество фреймов данных. Таблица поиска (seek table) содержит количество точек поиска, равное числу фреймов данных в потоке. Каждая точка поиска занимает 4 байта, содержит размер текущего фрейма данных в байтах и соответственно может быть легко преобразована в величину относительного смещения, указывающего на начало следующего фрейма. Формат поддерживает декодирование TTA файла с поврежденной таблицей поиска, но без возможности позиционирования по файлу.
Структура TTA фрейма
Фрейм TTA1 | |
---|---|
Номер байта | Значение (формат) |
00-X0 | Данные фрейма (битовый поток) |
X1-X4 | CRC32 контрольная сумма (бинарный, Little Endian) |
Длина стандартного фрейма TTA1 = продолжительность фрейма * частота дискретизации.
Фрейм TTA2 (В разработке) | |
---|---|
Номер байта | Значение (формат) |
00-X0 | Данные фрейма (битовый поток) |
X1-X3 | Идентификатор конца фрейма (битовый поток, «0xFFFFFE») |
X4-X7 | CRC32 контрольная сумма (бинарный, Little Endian) |
Общее количество фреймов в потоке данных может быть вычислено как результат деления количества сэмплов в файле на длину стандартного TTA фрейма. TTA формат поддерживает оба формата информационных тэгов ID3v1/ID3v2 и теги APEv2.