stringtranslate.com

Видео Smacker

Smacker video — это формат видеофайларасширением файла .SMK ), разработанный Epic Games Tools и в основном используемый для полноэкранного видео в видеоиграх . [1] Smacker использует адаптивную 8-битную палитру RGB . Формат RAD для видео с более высокой глубиной цвета — Bink Video . Формат Smacker определяет формат контейнера , формат сжатия видео и формат сжатия аудио. [2] С момента своего выпуска в 1994 году Smacker использовался в более чем 2300 играх. [1] Blizzard использовала этот формат для кинематографических видеороликов, которые можно увидеть в своих играх Warcraft II , StarCraft и Diablo I. [ 3]

Формат был подвергнут обратному проектированию и реализован в libavcodec . [4] [5] [6] Некоммерческий проект SourceForge libsmacker выпустил декодер с открытым исходным кодом в 2013 году. [7]

Технические подробности

Формат файла (контейнер)

Smacker определяет свой собственный формат контейнера . [2] Файл Smacker может содержать видеодорожку Smacker и до семи аудиодорожек. Каждая аудиодорожка может иметь либо один канал (моно), либо два канала (стерео) с глубиной цвета 8 или 16 бит. Звук может быть несжатым PCM , сжатым в формате Smacker Audio или, в более новых версиях Smacker, сжатым в формате Bink Audio. [2]

Видео

Видео Smacker поддерживает 256 цветов, но не прозрачность. [2] Несмотря на то, что это формат на основе палитры , который по своей сути ограничен наличием не более 256 цветов в каждом кадре, видео Smacker могут по-прежнему содержать больше цветов в общей сложности из-за «ротации палитры», при которой палитра обновляется на основе каждого кадра. [2] Обычно это приводит к тому, что файлы SMK выглядят лучше, если исходное видео имеет более 256 цветов. Степень сжатия зависит от контента. Кодирование видео, состоящего из неподвижных или едва движущихся кадров, после первого кадра практически бесплатно. [2] Кадры со случайными цветами могут более чем вдвое превышать исходный размер. [ необходима ссылка ]

В видео Smacker кадр разбивается на блоки 4×4 в порядке растрового сканирования. [2] Каждый блок может быть закодирован в одном из шести режимов кодирования: пропуск, заполнение, моно и три полных режима. Каждый режим может быть сигнализирован для нескольких блоков в схеме кодирования длины серии . В режиме пропуска текущий блок копируется из предыдущего кадра в условном режиме пополнения. В режиме заполнения текущий блок заполняется одним цветом. В моно режиме палитра локально сокращается с 256 цветов до двух цветов. Оба цвета записываются в битовый поток, и один бит на пиксель используется для указания того, какой из двух цветов должен быть у пикселя. [2] Моно режим можно интерпретировать как векторное квантование , где трехмерный вектор с компонентами красный, зеленый и синий квантуется с использованием адаптивной кодовой книги с двумя записями. Существует три полных режима, один из которых был указан в версии 2 формата Smacker, а два других были добавлены в версии 4. [2] В исходном полном режиме передаются 16 цветов, по одному на каждый пиксель, что эквивалентно необработанному несжатому PCM. Два полных режима, добавленных в версии 4, используют 4 и 8 цветов в блоке соответственно. [2] В 4-цветном режиме блок 4×4 разделен на четыре блока 2×2, каждый из которых заполнен сплошным цветом. В 8-цветном режиме блок 4×4 разделен на восемь блоков 1×2, каждый из которых заполнен сплошным цветом. [2]

Дальнейшее сжатие достигается с помощью энтропийного кодирования с использованием кодирования Хаффмана различных элементов битового потока, которые являются результатом вышеописанного процесса. [2] Существует четыре отдельных таблицы Хаффмана, каждая с 16-битными записями: одна для решения режима, длины серии и цвета заливки в режиме цвета заливки, одна для индексов цвета в монорежиме, одна для битовой карты в монорежиме и одна для всех данных в полном режиме. Каждая таблица адаптивна и передается один раз на файл в заголовке. Таблицы Хаффмана в заголовке сами по себе сжаты: 16-битные значения в листьях кодового дерева разделены на старший байт и младший байт. Каждый байт сжимается с использованием таблицы Хаффмана, которая также содержится в заголовке. [2]

Аудио

Аудио Smacker — один из аудиоформатов, которые можно использовать в контейнере Smacker. Для сжатия используется дифференциальная импульсно-кодовая модуляция (DPCM). Разница между двумя последовательными сэмплами сжимается с помощью кодирования Хаффмана . Таблицы Хаффмана адаптируются один раз для каждого аудиокадра. [2]

Смотрите также

Ссылки

  1. ^ ab "Smacker video Technology". RAD Game Tools . Получено 4 мая 2013 г.
  2. ^ abcdefghijklmn "Smacker". MultimediaWiki . 11 апреля 2007 г. Получено 4 апреля 2013 г.
  3. ^ Ладислав Зезула (2010). "Архивы MPQ - Обзор" . Получено 4 мая 2013 г.
  4. ^ "Документация FFmpeg". FFmpeg . Получено 4 апреля 2013 г. .
  5. ^ FFmpeg: декодер видео и аудио Smacker
  6. ^ FFmpeg: демультиплексор контейнера Smacker
  7. ^ Проект SourceForge libsmacker

Внешние ссылки