TTA аудиокодек без потерь - Описание формата
Детальное описание TTA мультиканального аудио формата
TTA это простой и стабильный формат цифровой записи звука, предназначенный для хранения аудио данных, сжатых с помощью беспотерьного алгоритма True Audio. Бесплатный и простой в использовании. Формат TTA имеет очень простую структуру. Заголовок TTA файла содержит уникальный идентификатор формата, который сопровождается блоком мета-данных. Блок мета-данных содержит минимальную информацию, необходимую для восстановления оригинального потока (количество каналов, частоту дискретизации, разрядность, общее количество сэмплов в файле и пр.) и оканчивается 32-битной контрольной суммой. Непосредственно за этим заголовком следуют блоки сжатых данных (фреймы), каждый из которых так же оканчивается 32-битной контрольной суммой. Декодирование возможно с начала любого TTA фрейма. Сжатые сэмплы каждого из каналов во фрейме располагаются последовательно, как и в обычном PCM формате данных.
Структура TTA заголовка
Заголовок TTA1 | Заголовки TTA2 (в разработке) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 В формате TTA1 таблица поиска (seek table) располагается в начале файла, непосредственно за блоком мета-данных. |
|
Отношение количества сэмплов в файле к стандартной длине фрейма определяет общее количество фреймов данных. Таблица поиска (seek table) содержит количество точек поиска, равное числу фреймов данных в потоке. Каждая точка поиска занимает 4 байта, содержит размер текущего фрейма данных в байтах и соответственно может быть легко преобразована в величину относительного смещения, указывающего на начало следующего фрейма. Формат поддерживает декодирование TTA файла с поврежденной таблицей поиска, но без возможности позиционирования по файлу.
Структура TTA фрейма
Фрейм TTA1 | Фрейм TTA2 (в разработке) | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Продолжительность фрейма в TTA1 формате фиксирована и приблизительно равна одной секунде. Таким образом, каждый фрейм в потоке имеет одинаковое количество сэмплов, за исключением последнего. Количество сэмплов в TTA1 фрейме кратно 576 (размер буфера данных), исходя из этого продолжительность фрейма в секундах определена константой 1.04489795918367346939. Количество сэмплов в TTA1 фрейме может быть вычислено по следующей формуле: длина стандартного TTA1 фрейма = продолжительность фрейма * частота дискретизации. |
Продолжительность фрейма в TTA2 формате теоретически может быть любой, но из соображения удобства использования выбрана равной одной секунде. Таким образом, количество сэмплов с стндартном TTA2 фрейме определяется частотой дискретизации. |
Общее количество фреймов в потоке данных может быть вычислено как результат деления количества сэмплов в файле на длину стандартного TTA фрейма. TTA формат поддерживает оба формата информационных тэгов ID3v1/ID3v2 и теги APEv2.