Кодек DivX Pro 5.1: новые возможности

altВот уже полтора года развивается новая версия кодека компании DivX Networks Inc. – DivX Pro 5.0, выпущенная еще 4.03.2002. За это время вышло 7 бета-версий, последняя из которых (5.1) увидела свет три месяца назад, но официального окончательного релиза до сих пор нет. Следовательно, пока кодек можно считать сырым и пользоваться им необходимо с осторожностью, чтобы не испортить ценное для вас видео. Но развитие все же идет, и желательно заранее присмотреться к тенденциям и новым возможностям, чтобы должным образом подготовиться к долгожданному релизу.

В файле Readme мы находим краткие сведения о продукте: «DivX Pro 5.1 – версия DivX, созданная специально для профессиональных пользователей и включающая в себя не только кодер, но и дополнительные средства редактирования, а также утилиту EKG (Electrokompressiongraph), которая позволяет наглядно увидеть распределение различных характеристик компрессии по кадру и клипу».

Рассмотрим новые возможности кодека более подробно.

Bidirectional encoding

Кодирование с применением B-кадров. Этот метод давно используется в MPEG-кодировании – видео MPEG-1 и MPEG-2 обычно содержат все три типа кадров. Мы знаем, что старый кодек DivX умел кодировать только с помощью двух типов кадров – I-frame и P-frame. I (Intra) – это ключевые кадры, в которых записывается полная информация о кадре и которые занимают максимальный размер по сравнению с остальными. В них применяется компрессия JPEG. P (Predicted) – это промежуточные, или дельта-кадры, в которых записывается только разность информации между предыдущим и последующим кадрами, то есть только сдвиг объекта (макроблока). B (Bi-directional) – это кадры, информация в которых восстанавливается не только с использованием предыдущего, но и с помощью последующего кадра. То есть если в следующем ключевом кадре есть информация о конечной точке сдвигаемого неизменного объекта, то B-кадр будет занимать еще меньше места, чем дельта – нет необходимости вносить в него дополнительную информацию. При этом качество картинки должно повышаться, поскольку новый объект берется из наиболее качественного – I-кадра, а вес файла должен снижаться за счет замены разностного P-кадра на прогнозируемый B.

Использование этой опции, как и двух последующих, становится возможным только в разделе «Select Profile Wizard» при отключении всех профилей («Disable profiles»).

Global Motion Compensation

Глобальная компенсация движения. Обычный алгоритм, применявшийся ранее в DivX, следил за сдвигом объектов в кадре, но если объект менял размеры (приближение или удаление камеры), то алгоритм уже не мог удержать объект и могли появиться артефакты. Глобальная компенсация движения призвана следить за общими тенденциями в кадре и компенсировать применение, например, «отъездов» камеры для улучшения отображения объектов в кадре.

Quarter pixel или Qpel

Точность «Четверть пикселя». Все изображение в кадре разделено на блоки (8х8 пикселей) и макроблоки (16х16 пикселей). Кодек следит за изменениями, происходящими в каждом блоке, и, если происходит сдвиг какой-либо точки, фиксирует данное изменение. Блок (либо макроблок) считается измененным для следующего P-кадра. В данной версии кодек позволяет воспользоваться усовершенствованной технологией, отмечающей сдвиг точки с аккуратностью до четверти пикселя. Функция подходит только для кодирования видео с абсолютным качеством (например, DVD с высокими потоками кодирования или 3D-ролик для видеоклипа).

MV file

Файл записи векторов движения. И раньше в файле статистики (divx.log) для планирования второго прохода сохранялась информация о каждом кадре – номер, сложность текстур, количество движения, общая сложность (в совокупности по движению и текстурам), предполагаемая степень сжатия. Дополнительная информация о векторах движения помогает кодеку определить тенденции движения и сопоставить конечные пункты сдвига объектов через промежуточные кадры. Создание этого файла помогает экономить время при втором проходе. Это особенно важно при включении опции Qpel, отслеживающей сдвиг объектов вплоть до четверти пикселя.

Psychovisual modeling

Психовизуальное моделирование. По утверждению специалистов DivX Netrworks Inc., ими разработан алгоритм удаления излишней видеоинформации, основанной на особенностях человеческой системы зрения (Human Visual System, HVS). Алгоритм напоминает удаление «излишних» частот при сжатии аудиофайлов MP3. Функцией стоит пользоваться с осторожностью, так как при кодировании DVD с ее применением, особенно в режиме «slow», были замечены артефакты.

Pre Processing

Подготовка оригинала. Кодек DivX предназначен не только для кодирования DVD, но и для других видов записей, в том числе зашумленного видео – съемки в сложных условиях (цветовой шум), старые кассеты (прострелы и шумы), ТВ-рипинг (снег в ТВ-сигнале) и т.д. Подготовка заключается в удалении шумов по запатентованному алгоритму (Noise PreProcessing Filter) и призвана уменьшить количество шумов для улучшения сжатия до начала кодирования видео (однотонный объект сжимается гораздо лучше, чем пестрый). При чрезмерном увлечении этой функцией степень сжатия, конечно, повышается, но мелкие детали в кадре пропадают начисто, а текстуры становятся «плоскими» и «размытыми».

Scene change threshold

Порог изменения сцены. Это параметр чувствительности алгоритма смены сцены, по которому кодек устанавливает в кадре на смене сцен I-frame. При увеличении процента порога кодек перестает замечать даже большие изменения сцен и ключевые кадры выставляются только в местах, заданных ключевым интервалом. Минимальный порог (1%) используется обычно для быстрого кодирования, особенно при быстром кодировании для максимального качества по типу MJPEG: «Performance» выставляется на «Fastest», режим кодирования устанавливается на 1-pass quality-based, а «Quantizer» на 1 или 2. При этом захват видео идет в максимальном качестве, флаг “ключевой” ставится практически на каждый кадр, кодек работает наиболее быстро. Далее видео, захваченное в максимальном качестве, можно перекодировать на более низкие битрейты, используя функции, уменьшающие размер файла.

Enable resize

Изменение исходного размера кадра. Задается новая ширина и высота кадра, а также способ изменений – bilinear или bicubic. При применении bilinear (very soft) происходит наибольшее «замыливание» кадра. При этом мелкие детали объектов размываются, но степень сжатия видео увеличивается. Алгоритм bicubic имеет три степени резкости: soft – «мягкий», размывающий кадр несколько менее, чем bilinear; normal – «нормальный», или средний уровень резкости, и sharp – «резкий», дающий наибольшую резкость кадра, но уменьшающий степень сжатия. При одинаковом битрейте в наиболее резком кадре будет больше артефактов, чем в наиболее размытом. Математически доказано, что bilinear лучше применять для уменьшения кадра, а bicubic – для увеличения, но в каждом конкретном случае лучше проверить это экспериментально.

Feedback mode

Режим статистики. Включается автоматически при начале кодирования в любом режиме, отключается в разделе «Settings» – «disable the feedback window». Этот режим позволяет наглядно увидеть статистику кодирования, а также реально кодируемый кадр и его изменения. Изначально утилита использовалась для лабораторного тестирования. Эта утилита для передачи живого видео по сети дает возможность в реальном времени влиять на степень сжатия потока, таким образом подстраиваясь под изменения пропускной способности канала и тем самым влияя на качество изображения.