stringtranslate.com

Ужасное видео

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

В видео Smacker кадр разбивается на блоки 4×4 в порядке растрового сканирования. [2] Каждый блок может быть закодирован в одном из шести режимов кодирования: пропуск, заполнение, моно и три полных режима. Каждый режим может сигнализироваться для нескольких блоков в схеме кодирования длин серий . В режиме пропуска текущий блок копируется из предыдущего кадра в режиме условного пополнения. В режиме заливки текущий блок заполняется одним цветом. В монорежиме палитра локально уменьшена с 256 цветов до двух цветов. Оба цвета записываются в битовый поток, и один бит на пиксель используется для указания того, каким из двух цветов должен быть пиксель. [2] Монорежим можно интерпретировать как векторное квантование , при котором трехмерный вектор с компонентами красного, зеленого и синего квантовается с использованием адаптивной кодовой книги с двумя записями. Существует три полных режима, один был указан в версии 2 формата Smacker, а два других были добавлены в версии 4. [2] В исходном полном режиме передаются 16 цветов, по одному на каждый пиксель, что эквивалентно необработанному несжатому режиму. ПКМ. Два полных режима, добавленные в версии 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". Игровые инструменты RAD . Проверено 4 мая 2013 г.
  2. ^ abcdefghijklmn "Smacker". МультимедиаВики . 11 апреля 2007 года . Проверено 4 апреля 2013 г.
  3. ^ Ладислав Зезула (2010). «Архивы MPQ — Обзор» . Проверено 4 мая 2013 г.
  4. ^ "Документация FFmpeg" . FFmpeg . Проверено 4 апреля 2013 г.
  5. ^ FFmpeg: видео Smacker и аудиодекодер Smacker
  6. ^ FFmpeg: демультиплексор контейнера Smacker
  7. ^ Проект SourceForge libsmacker

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