ATI AVIVO: Часть 1: Видеокодирование


Введение

В первой практической статье по AVIVO мы рассмотрим одну из новых возможностей, предоставляемых технологией AVIVO — специальную утилиту для перекодирования разных форматов видео с применением аппаратного ускорения. Это одна из самых интересных особенностей технологии AVIVO, ведь аппаратная поддержка кодирования бытовыми видеочипами будет введена впервые. В этом обзоре мы рассмотрим бета-версию утилиты для перекодирования, рассмотрим как скоростные характеристики, так и качество кодирования. Ну а в самых ближайших планах на будущее — сравнение производительности и качества воспроизведения и постобработки видео разных форматов, от MPEG2 до H.264/AVC. Особенно интересно будет посмотреть на декодирование H.264, ведь декодер Cyberlink, получающий аппаратную поддержку на видеокартах серии X1000, у нас уже есть и он действительно работает, снижая нагрузку на CPU. Но сегодня пока только о кодировании.

Кстати, компания ATI приготовила новогодний подарок всем владельцам видеокарт серии RADEON X1000. Еще не так давно они выпустили очередной драйвер Catalyst 5.12 с поддержкой двухядерных систем, а теперь, еще до конца года, решили выпустить и специальную версию драйвера — Catalyst 5.13, который обладает улучшенной поддержкой MPEG2 и предлагает программно-аппаратное декодирование видео в формате H.264, особенности всех этих нововведений мы рассмотрим чуть позже. Выпуск публичной версии Catalyst 5.13 планируется уже 21 или 22 декабря.

ATI AVIVO Video Converter

Итак, как мы поняли из вводной статьи по возможностям AVIVO, все новые видеочипы семейства ATI RADEON X1000 поддерживают программно-аппаратное перекодирование видеоданных, единственным требованием является установка соответствующего программного обеспечения и свежих драйверов. Отдельные видеокарты и будущие интегрированные в чипсеты видеоядра, поддерживающие технологии AVIVO, предлагают компрессию и перекодирование видео с частичной аппаратной поддержкой установленных видеочипов. Даже такая частичная аппаратная поддержка является большим шагом вперед, ведь все предыдущие утилиты для перекодирования видеоданных использовали только центральный процессор ПК.

Во время выпуска чипов X1000 на рынок, программное обеспечение для перекодирования еще не было готово. Да и сейчас доступна лишь предварительная бета-версия перекодировщика AvivoXCode (AVIVO Video Converter), которая публично пока не распространялась. AvivoXCode работает только на ПК с установленными в них соответствующими видеокартами, причем поддерживаются все чипы линейки, от X1300 до X1800 XT, текущая бета-версия поддерживает перекодирование в следующие профили и выходные форматы: MPEG1, MPEG2, Video CD, Super Video CD, DVD, MPEG4 (DivX-совместимый), WMV9, Portable Media Center, H.264 (AVI), MPEG4 (для Sony PSP) и H.264 (MP4, для Apple iPod). AVIVO Video Converter — это отдельное приложение, которое использует перекодирующий движок из ATI Multimedia Center, в качестве исходного видео может использоваться любой формат, для которого в системе установлен DirectShow фильтр.

AvivoXCode

Как видно из скриншота, текущая версия утилиты AvivoXCode крайне бедна настройками, ее интерфейс очень простой, можно выбрать входной файл, папку, куда будет записываться полученный в результате перекодирования файл, есть выбор формата для перекодирования и ползунок для битрейта. Кроме битрейта, никаких других настроек качества видеопотока нет, хотя удобные настройки разрешения, возможностей кодирования для разных форматов и настройки качества аудиопотока для таких утилит являются обязательными, хотя бы в режиме опытного пользователя. Надеюсь, что ATI добавит эти возможности в финальную версию утилиты.

Настройка битрейта осуществляется с большими ограничениями, разными для каждого из форматов. Выбор возможных значений битрейта в бете AVIVO Video Converter очень странен. То, что для каждого из форматов/профилей выбраны разные пределы битрейта, это решение понятное. Но он еще и зависит от формата и/или битрейта входного файла, что вызывает недоумение. Кстати, шаг между значениями для каждого профиля тоже разный. Так, для первого тестового видеофайла утилитой предлагались такие значения битрейта, в кбит/с: MPEG1 (2256-4512, шаг 564), MPEG2 (2208-4412, шаг 551), MPEG4 (1128-2820, шаг 423), WMV9 (1128-2820, шаг 423), H.264 (возможные значения: 128, 2096, 4064, 6032, 8000), MPEG4 для PSP (128-768, шаг 160), H.264 для iPod (128-768, шаг 160). Не очень широкий выбор, надо сказать, поэтому и тестировали мы со значениями, примерно соответствующими битрейту в 2000 кбит/с для MPEG4, H.264 и WMV9 и 4000 кбит/с для MPEG2. Иногда приходилось перетестировать, меняя значения, так как выбранный битрейт не выдерживался в исходном файле, снижаясь до значительно меньшего.

Также интересно и то, что для некоторых форматов разрешение выходного файла автоматически изменяется. Например, исходный файл WMV HD с разрешением 1920x1080 в формате MPEG4 утилитой ужимается до разрешения 640x368, в выходном формате MPEG2 — до 720x480, а в формате H.264/PSP — до 320x192. Если с последним значением все более-менее понятно, у PSP экран с фиксированным разрешением (хотя и не равным 320x192), больше которого использовать нет смысла, то для MPEG4 такое ограничение удивляет. Будем считать все перечисленные недостатки недоработками, присущими ранней бета-версии, все-таки она еще пока далека до завершения, судя по всему.

Тестирование производительности

Конфигурация тестовой системы:
Процессор: AMD Athlon 64 3200+ Socket 939
Оперативная память: 1024 Мб DDR400 SDRAM
Видеокарта: ATI RADEON X1800 XL 256MB
Жесткий диск: Seagate Barracuda 7200.7 120 Gb
Операционная система: Microsoft Windows XP SP2
Видеодрайвер: ATI Catalyst 5.13 Beta

Утилита работает и с более ранними драйверами, проверял на Catalyst 5.11, а вот на системе без драйвера она не запускается, выводя сообщение, предназначенное для пользователей с другими видеокартами:



X1K required

ATI, а вместе с ней и большинство обозревателей, сравнивает производительность своего решения с NERO Recode, который также позволяет перекодировать видео в форматы MPEG4/ASP и H.264, ну а мы пойдем другим путем, и будем использовать VirtualDubMod 1.5.10 для всех разновидностей MPEG4 (плюс наиболее распространенные кодеки для нужных форматов), а для MPEG2 — известные перекодировщики от Cinema Craft и PEGASYS:

  • MPEG2 перекодировщик Cinema Craft Encoder SP 2.70
  • MPEG2 перекодировщик TMPGEnc Plus 2.5
  • MPEG4 AVC (H.264) кодек x264 Rev 375
  • MPEG4 ASP кодек XviD 1.0.3
  • MPEG4 ASP кодек DivX Pro 5.2
  • WMV перекодировщик Windows Media Encoder 9

Для того чтобы более полно протестировать кодировщики, мы использовали два исходных файла, оба с разрешением 640x352 (из-за ограничений перекодировщика ATI для выходного MPEG4 файла), первый сжат в формате без потерь Huffyuv, а второй — тот же файл, пережатый в высокобитрейтный MPEG2, для того, чтобы снизить возможное влияние сравнительно медленного накопителя на жестких дисках. Процесс тестирования заключался в замере времени конвертации всеми перечисленными инструментами и AVIVO Video Converter исходных файлов в несколько разных выходных форматов (MPEG2, MPEG4, WMV9, H.264). Для MPEG2 всегда использовались значения битрейта, максимально близкие к 4 Мбит/с, а для остальных форматов — к 2 Мбит/с.

Результаты тестирования:

MPEG2

Для MPEG2 мы приводим только результаты для первого тестового файла в формате Huffyuv, ведь сложно придумать, зачем нужно перекодировать MPEG2 в MPEG2. Видно, что AvivoXCode хотя и чуть побыстрее ближайшего конкурента — Cinema Craft Encoder, но разница между ними совсем невелика, лишь TMPEGEnc заметно отстает от них…

MPEG4

А вот и первые поразительные результаты! Если в перекодировании из Huffyuv в MPEG4 ни один из участников тестов не оторвался намного, то в случае MPEG2 -> MPEG4 конвертации, AvivoXCode четко впереди всех остальных по производительности, от изменения исходного формата сжатия он ускорился в три с лишним раза! Одним лишь ограничением в виде медленного HDD для Huffyuv файла (почти 500 мегабайт, против 58 мегабайт для MPEG2) этот прирост не объяснить, думаю, тут дело в чем-то другом, ведь другие кодеры увеличили производительность всего лишь на 25-35%, а тут — сразу 320%. Странно, смотрим дальше…

H.264

Почти такая же ситуация и с H.264. Видно, что сжатие утилитой ATI в этот формат выполняется чуть медленней, по сравнению с MPEG4, значит, вероятно, какие-то особенности формата H.264 все же используются, но явно не все. В x264 даже с настройками по умолчанию не включены некоторые важные особенности, сильно влияющие на результирующее качество, но качественное сжатие с использованием этого кодека занимает в 10 раз больше времени и это просто обязано влиять на получаемое качество. На которое мы еще посмотрим, а сейчас вернемся к скорости, теперь конкурент у утилиты ATI будет всего один, так как формат — WMV9.

WMV9

Отмечаем самую большую разницу во времени пережатия. WMEncoder явно в отстающих, даже кодирование в H.264/AVC проходит быстрее, чем неспешная работа этого приложения. И опять, при смене исходного файла с Huffyuv на MPEG2 наблюдается чудесное ускорение в разы.

Удивительны и очень ровные результаты для всех протестированных форматов у перекодировщика ATI, только H.264 чуть-чуть отличается по времени сжатия. Складывается такое впечатление, что алгоритм в программе используется один и тот же для всех форматов. А ведь у них есть и множество отличительных особенностей, применив которые, можно увеличить качество или снизить битрейт… Но так как нам пока не дана даже возможность изменить настройки качества в утилите ATI, ничего определенного сказать нельзя.

Во время перекодирования в любой формат, использование центрального процессора приложением AVIVO Video Converter поддерживается почти всегда на максимальном уровне, наблюдаются лишь небольшие скачки. Это интересно, посмотрим еще на изменение температуры CPU и видеочипа в процессе перекодирования, как на косвенные показатели работы этих чипов (отдельное спасибо программе RivaTuner за удобство мониторинга, еще бы плагин CPU usage туда добавить…):

Monitoring

Видно, что температура видеочипа при перекодировании не изменяется совсем, тогда как даже при обычном декодировании WMV HD ролика видно, что видеочип задействован в работе вместе с CPU. Похоже, что текущая бета-версия AvivoXCode на данный момент действительно не использует никаких возможностей видеочипа и вся работа лежит на CPU. Вероятно, компания ATI выпустит версию, использующую специфические аппаратные возможности чипов X1000 позже, и мы обязательно рассмотрим изменения в ее работе в своих будущих исследованиях.

Так как мы получили от AVIVO Video Converter весьма удивительную высокую производительность для программного кодирования, нужно посмотреть и на качество, ведь слишком странно это, когда другие кодеки разрабатываются длительное время, а у ATI сходу получается результат лучше, чем у всех остальных, причем лучше в разы. Попытаемся понять, за счет чего достигается столь высокая производительность перекодирования на основе краткого анализа качества видеороликов, полученных в результате тестирования.

Тестирование качества

Проверим сначала результаты сжатия первого исходного видеофайла, который был очень высокого качества и записан в формате без потерь. На странице даны только увеличенные в два раза фрагменты полученных кадров, полностью кадр для каждого случая можно получить по ссылке, кликнув на нужном фрагменте.

Исходный видеофайл в формате Huffyuv, первый тестовый кадр


MPEG2 AvivoXCode

MPEG2 TMPGEnc
MPEG2 AvivoXCode MPEG2 TMPGEnc

MPEG4 AvivoXCode

MPEG4 XviD
MPEG4 AvivoXCode MPEG4 XviD

H.264 AvivoXCode

H.264 x264
H.264 AvivoXCode H.264 x264

WMV9 AvivoXCode

WMV9 WMEncoder9
WMV9 AvivoXCode WMV9 WMEncoder9

На фрагментах кадра видно, что AVIVO Video Converter сравнительно неплохо справляется с видеоданными хорошего качества, из замеченных небольших проблем — недостаток детализации ("замыливание") мелких букв, видимых на фрагменте снизу-справа и в значке ® слева-снизу, особенно сильно это проявляется в WMV9 формате, полученном при перекодировании в AvivoXCode. Посмотрим другой фрагмент.

Исходный видеофайл в формате Huffyuv, второй тестовый кадр


MPEG2 AvivoXCode

MPEG2 TMPGEnc
MPEG2 AvivoXCode MPEG2 TMPGEnc

MPEG4 AvivoXCode

MPEG4 XviD
MPEG4 AvivoXCode MPEG4 XviD

H.264 AvivoXCode

H.264 x264
H.264 AvivoXCode H.264 x264

WMV9 AvivoXCode

WMV9 WMEncoder9
WMV9 AvivoXCode WMV9 WMEncoder9

Этот кадр оказался заметно сложнее для перекодировщика AvivoXCode. Такую деталь, как начавшиеся проявляться на кадре полупрозрачные буквы "SKG" (смотрите на исходном образце) смог "уловить" только высокобитрейтный MPEG2, а остальные форматы успешно сгладили изображение, сровняв буквы с фоном и посчитав их ненужными деталями. И в целом, в кадрах, полученных при помощи перекодирования в AVIVO Video Converter заметна блочность и недостаток некоторых деталей.

С еще большим интересом стоит посмотреть на качество, полученное в результате перекодирования того же файла, но в исходном MPEG2 формате с высоким битрейтом (6000 кбит/с). Ведь результаты производительности, полученные при работе AVIVO Video Converter, там удивляют больше всего, скорость пережатия по сравнению с Huffyuv увеличилась более чем в три раза, что не было отмечено в результатах других кодеров, приросты которых были куда скромнее, порядка нескольких десятков процентов. Посмотрим, может быть, секрет производительности AvivoXCode в данном случае кроется в качестве?

Исходный видеофайл в формате MPEG2, первый тестовый кадр


MPEG4 AvivoXCode

MPEG4 XviD
MPEG4 AvivoXCode MPEG4 XviD

H.264 AvivoXCode

H.264 x264
H.264 AvivoXCode H.264 x264

WMV9 AvivoXCode

WMV9 WMEncoder9
WMV9 AvivoXCode WMV9 WMEncoder9

Это тот же кадр, что и в случае Huffyuv файла, и фрагмент кадра тот же. Видно, что у всех форматов, полученных в результате работы перекодировщика от ATI, одни и те же проблемы — мелкие детали замылены больше, чем у других программных кодеков (кроме WMEncoder). В общем, здесь кодер ATI показал себя примерно также, что и в случае предыдущего видеофайла, хотя его производительность при кодировании из MPEG2 оказалась поразительно высокой. Посмотрим на еще один кадр, чтобы окончательно удостовериться в нашей оценке качества изображения…

Исходный видеофайл в формате MPEG2, второй тестовый кадр


MPEG4 AvivoXCode

MPEG4 XviD
MPEG4 AvivoXCode MPEG4 XviD

H.264 AvivoXCode

H.264 x264
H.264 AvivoXCode H.264 x264

WMV9 AvivoXCode

WMV9 WMEncoder9
WMV9 AvivoXCode WMV9 WMEncoder9

Второй кадр, показывающий более жизненную ситуацию, слегка усугубил ситуацию с качеством, полученного перекодированием рассматриваемой в обзоре утилитой. Опять все форматы перекодировщика ATI грешат одними проблемами (странное сходство всех фрагментов подкрепляет подозрения в одном коде сжатия для всех форматов) — исчезновением большого количества мелких деталей и заметной блочностью изображения, особенно у MPEG4 фрагмента. А вот с Windows Media Encoder он вполне может конкурировать по качеству — тот тоже показал себя не с лучшей стороны, замылив всё, что можно. В общем, на этом примере и тому и другому перекодировщикам до качества XviD и x264 очень далеко.

Еще одним найденным недостатком в качестве оказалось некорректное перекодирование DivX файла с разрешением 1280×720, так называемого DivX HD. Причем, эта ошибка наблюдалась в случаях трех разных DirectShow фильтров для декодирования DivX 5 (DivX 5.2, DivX 6 и ffdshow) и это никак не зависело от выходного формата в AVIVO Video Converter. В результате получалась вот такая неприглядная картинка:

Bug

Бета-версия AVIVO Video Converter стала первым шагом ATI к созданию перекодировщика видео, пока что у них получилась демонстрация скоростного программного видеокодирования. Бета-версия утилиты официально не распространяется и не поддерживается, так что все недостатки по качеству на раннем этапе вполне объяснимы. Видно, что главной задачей пока что было — показать, что работа над утилитой идет. Будем ждать релиза и надеяться, что все найденные проблемы исправят и добавят давно обещанную поддержку аппаратных возможностей по кодированию видео. Со своей стороны, могу пообещать, что мы продолжим исследования AVIVO Video Converter по мере продвижения работ над этим перспективным инструментом для видеокодирования, ведь его потрясающая скорость дает надежды на лучшее. Ну и про все остальные аспекты набора технологий AVIVO тоже не забудем.

Выводы

Если коротко — чуда пока что не получилось, виден лишь задел интересной утилиты, ее кусочек. Бета-версия AVIVO Video Converter пока сыровата и страдает от нехватки гибких настроек и отсутствия режимов высокого качества, обеспечивая в большинстве случаев очень высокую производительность при полностью программном кодировании. К сожалению, оставить одни восторги не позволяет невысокий уровень итогового качества закодированного видео. Будем ждать новых версий утилиты, чтобы получить обещанное "hardware-assisted video compression and transcode", причем, с подробными настройками. Для того чтобы каждый выбрал для себя разумный компромисс между производительностью и качеством.

Пока что неизвестно когда ATI опубликует финальную версию конвертера и когда будет реализована реальная аппаратная поддержка графических процессоров. Ограничения текущей бета-версии делают продукт не слишком приспособленным к реальному использованию из-за минимума настроек, отсутствия поддержки многопроходного кодирования и сниженного качества по сравнению с другими программными продуктами. Ну а положительная сторона перекодировщика AVIVO Video Converter в его феноменальной скорости перекодирования. Возможно, это уже сейчас применимо в тех случаях, когда дорога каждая минута.

И не стоит забывать, что особенность утилиты (и набора технологий AVIVO в общем) в том, что абсолютно все возможности поддерживаются или будут поддерживаться всеми графическими чипами новой линейки ATI, от low-end решения X1300 до high-end X1800 XT, что очень важно для покупателей видеокарт разных ценовых категорий и медиа-центров на основе ПК. Если все ранее обещанное осуществится в реальности, уверен, что у семейства ATI Radeon X1000 появится еще одно конкурентное преимущество.





Дополнительно

iXBT BRAND 2016

«iXBT Brand 2016» — Выбор читателей в номинации «Процессоры (CPU)»:
Подробнее с условиями участия в розыгрыше можно ознакомиться здесь. Текущие результаты опроса доступны тут.

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.