
Детальное описание 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.