CyberLink MediaShow Espresso, NVIDIA CUDA и ATI STREAM


Недавно мы рассказывали о разработке компании Cyberlink, умеющей работать одновременно на двух технологиях: NVIDIA CUDA и ATI STREAM. А если быть точным, то не на двух технологиях, а на трёх — с чего бы это нам исключать общепринятое кодирование силами центрального процессора?

Приложение, которое мы рассмотрим сегодня, анонсировано разработчиком примерно в то же время — несколько месяцев назад. Однако мы не спешили с обзором данного ПО, и не по чьей-то прихоти. Технология ATI STREAM до сих пор не работала в новой операционной системе — Windows 7. Инженеры AMD обещали исправить положение и внести поддержку этой ОС в новых версиях драйверов, и, наконец, обещание выполнено. А мы незамедлительно и внепланово приступаем к изучению.

  1. Интерфейс
  2. Кодирование
  3. Оценка качества кодирования

1. Интерфейс

CyberLink MediaShow Espresso предназначен, как нетрудно догадаться, для перекодирования видеоматериала из одного формата в другой. Программа ориентирована, в первую очередь, на владельцев мобильных устройств, умеющих проигрывать видео — по крайней мере, разработчик позиционирует своё ПО именно таким образом.

Особенность программы, делающая её желательным приобретением для неискушённых в видеокодировании пользователей, — это дружелюбность интерфейса. Энтузиастам с горячим сердцем и пытливым умом, фанатам многочисленных бесплатных кодировщиков желательно обходить подобные однокнопочные утилиты стороной: здесь нет возможности поковыряться в настройках битрейтов, размерах GOP-ов и поиздеваться над матрицами квантования. Такая "однокнопка" просто не позволит создать нестандартное видео, которое впоследствии не сумеет проиграть ни один из существующих аппаратных плееров (чего, по всей видимости, добиваются многие нынешние "экспериментаторы").

При запуске программа отобразит короткий флэш-ролик на тему "кодировать видео — это чертовски просто". Так оно и есть: две первые кнопки позволяют импортировать в программу видеофайл(ы) или сразу целую папку с видеофайлами (импорт производится также с оптических носителей), остальными кнопками выбирается формат, в который необходимо закодировать импортированный материал.

Но заглянем, прежде, в настройки программы. Точнее, в то, что они собой представляют. Хм... "Чайники" радуются, "профи" негодуют. Разработчик неплохо подстраховался, разрешив пользователю изменить всего несколько параметров: язык интерфейса (русский, к сожалению, отсутствует), количество одновременных потоков кодирования (разрешается выбрать 1, 2 и 4 потока), да активацию аппаратного декодирования.

О последнем пункте нужно сказать подробнее: как удалось выяснить, данный параметр не увеличивает скорость кодирования (даже, наоборот, в некоторых случаях кодирование производится дольше на едва заметное время, исчисляемое в единицах процентов). Суть технологии в другом: активация аппаратного декодирования разгружает процессор, уменьшая нагрузку во время кодирования — следовательно, пользователь может заниматься чем-либо ещё в то время, пока компьютер занят работой. К сожалению, эта опция доступна только при наличии видеокарты AMD, а в случае, если вы работаете с видеокартой NVIDIA, то данный пункт неактивен.

Чтобы кодировать сразу все импортированные в программу файлы, не нужно выделять ни один из них — в таком случае кодироваться станут все файлы, которые в данный момент находятся в копилке. Если требуется обработать лишь некоторые из импортированных файлов, то их следует выделить мышкой, удерживая Ctrl.

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

Каждый формат содержит свои настройки. К вящей радости обыкновенного пользователя, эти настройки не отличаются многообразием. В самом низу окна настроек присутствует параметр Enable hardware encoding, включающий и отключающий аппаратное кодирование.

Прогресс кодирования отображается в специальном окне, где имеется возможность задействовать автоматическое выключение компьютера по окончанию кодирования. На рисунке производится кодирование в четыре потока одновременно — это значительно уменьшает время работы, но лишь в тех случаях, когда обрабатывается "лёгкий" материал и кодирование производится в нересурсоёмкие форматы, не загружающие процессор на 100% (центральный процессор всегда участвует в кодировании, даже если оно производится силами графического процессора. Ведь CPU всегда отвечает за распаковку, изменение размера кадров и их передачу в графический процессор для упаковки).

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

Однако читатель, наверное, заметил, что аппаратное кодирование не всегда доступно. Так и есть — оно работает почти во всех случаях, кроме кодирования в формат, предназначенный для проигрывания на плеерах Microsoft. Также аппаратное кодирование невозможно при кодировании в MPEG-2 и WMV, но с оговоркой: если у вас установлена видеокарта AMD и свежие драйверы с технологией AMD STREAM, то флажок Enable Hardware Encoding становится доступным. Таким образом, технология AMD STREAM допускает кодирование в MPEG-2 силами графического процессора.

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

Позволяется создавать собственный пресет (заготовку), но и в этом случае выбор ограничивается лишь четырьмя форматами: WMV, MPEG-2, MPEG-4 и AVC.

Во время кодирования, в углу окна отображается информация о работающей в данный момент технологии: отсутствие какого-либо логотипа обозначает работу одного лишь центрального процессора, логотипы ATI STREAM или NVIDIA CUDA означают работу соответствующих архитектур.

После этого краткого обзора строения программы перейдём к тому, ради чего и затевалось данное исследование (чего уж душой кривить).

2. Кодирование

Тестирование проводилось на ПК со следующими характеристиками: четырёхъядерный процессор AMD Phenom II X4 810, оперативная память 3ГБ, операционная система Windows 7. Задействованные видеокарты:

  • XFX GeForce GTX 285
  • SAPPHIRE HD 4870

В тестировании участвовали четыре исходных видеофайла:

  1. DV-AVI 720x576 25i длительностью 1 мин 15 сек;
  2. MPEG-2 720x576 25i с переменным битрейтом 8000 Кбит/сек, звук AC3 192 Кбит/сек, длительность 1 мин 36 сек;
  3. MPEG-4 AVC 1280x720 30p Baseline@L3.1 с переменным битрейтом 9000 Кбит/сек, звук AAC стерео с переменным битрейтом 192 Кбит/сек, длительность 1 мин 39 сек (с видеокамеры Sanyo Xacti VPC-HD700);
  4. MPEG-4 AVC 1920x1080 25i High@L4.0 с переменным битрейтом 11,9 М Мбит/сек, звук AC3 6 каналов с переменным битрейтом 384 Кбит/сек, длительность 1 мин 46 сек (с видеокамеры Panasonic HDC-TM300).

Данные файлы последовательно кодировались в различные форматы со следующими пресетами (предустановками) CyberLink MediaShow Espresso:

  1. iPod 640x480
  2. YouTube 1280x720
  3. MPEG-4 AVC 1280x720
  4. MPEG-4 AVC 1920x1080
  5. MPEG-2 720x576
  6. MPEG-2 1920x1080

По результатам кодирования построены диаграммы, для каждого исходного видео в отдельности.

* NVIDIA CUDA не поддерживает кодирование в MPEG-2, поэтому в диаграммах будут отсутствовать значения, касающиеся этого параметра.

исходное видео DV AVI 720x576 25i

Content on this page requires a newer version of Adobe Flash Player.

Get Adobe Flash player

DV-AVI — это формат, наименее требовательный к ресурсам ПК для распаковки. Поэтому здесь зависимость от центрального процессора минимальна (хотя в случаях, когда требуется изменить размер кадра, CPU все же активно работает). В данном тесте NVIDIA CUUDA оказалась шустрее ATI STREAM, правда, незначительно. Странным выглядит отставание ATI STREAM от центрального процессора при кодировании в MPEG-2. Но ничего удивительного: сегодня формат MPEG-2 (DVD) фактически теряет популярность, поэтому ждать высокой эффективности от новых кодеков не следует, к тому же процессор тестового стенда далеко не слабенький (на более хилом ПК с процессором Athlon 4200+ процессор кодирует медленнее, чем видеокарта, что естественно).

исходное видео MPEG-2 720x576

Content on this page requires a newer version of Adobe Flash Player.

Get Adobe Flash player

Похожая картина наблюдается и при кодировании MPEG-2, имеющего невысокую степень сжатия. Снова ATI STREAM не поспевает за центральным процессором, опять NVIDIA CUDA чуть шустрее STREAM-a перелопачивает видео, не требующее значительных машинных ресурсов.

исходное видео AVC 1280x720 30p

Content on this page requires a newer version of Adobe Flash Player.

Get Adobe Flash player

В этом тесте картина несколько меняется, хоть и не столь кардинально. Исходное видео имеет сжатие, требующее для распаковки более мощный процессор, чем предыдущие DV-AVI и MPEG-2. Но всё равно кодирование в MPEG-2 занимает практически одинаковое время на CPU и с помощью ATI STREAM. А при кодировании в остальные форматы обе технологии идут почти вровень, лишь слегка обгоняя центральный процессор.

исходное видео AVC 1920x1080 25i

Content on this page requires a newer version of Adobe Flash Player.

Get Adobe Flash player

Самое трудно поддающееся, с высокой степенью сжатия, видео. И всё же, несмотря на это, мощный Phenom II X4 810 неохотно сдаёт свои позиции. И лишь в самых запущенных случаях в два раза уступая в скорости обеим технологиям: NVIDIA CUDA и ATI STREAM.

По опыту знаем, что недостаточно измерить скорость на каком-то одном ПК, поэтому повторим один из тестов на более слабой машине с двухъядерным процессором AMD Athlon 64 X2 4200+ и оперативной памятью 2 ГБ, операционная система Windows 7.

Кодирование на ПК с процессором Athlon 4200+, исходное видео AVC 1920x1080 25i

Content on this page requires a newer version of Adobe Flash Player.

Get Adobe Flash player

В данном случае выигрыш в скорости, получаемый при кодировании графическими процессорами, мы видим более отчётливо. Причина очевидна — недостаточно мощный центральный процессор.

3. Оценка качества кодирования

Для оценки качества кодирования были использованы "живые" бытовые съёмки, сделанные видеокамерой Panasonic HDC-TM300. Видео кодировалось в формат MPEG-4 AVC 1920x1080 последовательно, с помощью CPU, NVIDIA CUDA и ATI STREAM.

В первую очередь, исследуем качество кодирования статичных сцен — в этом поможет съёмка миры (точнее, некой тестовой таблицы, отпечатанной на бумаге формата A2).

 
Кадр из оригинального видео, mira-original.zip (2,5 МБ)
Кодирование CPU, mira-1920-cpu.zip (2,1 МБ)
Кодирование CUDA, mira-1920-cuda.zip (2,3 МБ)
Кодирование STREAM, mira-1920-STREAM.zip (1,6 МБ)

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

Кстати, обратите внимание на размер архивов, в которые запакованы прилагаемые стоп-кадры. Самый большой размер имеет архив, в котором запакован кадр из оригинального видео, а меньше всех "весит" кадр, закодированный ATI STREAM, что прямо подтверждает меньшее количество деталей, на кодирование которых нужен дополнительный битрейт. Но ведь чёткость при этом не потерялась!

Но это — статичная съёмка. Каковы же будут различия в качестве при кодировании динамичных сцен? Возьмём кадр, в котором присутствуют как статичные объекты, так и объекты в движении.

 
Кадр из оригинального видео, auto-original.zip (3 МБ)
Кодирование CPU, auto-1920-cpu.zip (2,4 МБ)
Кодирование CUDA, auto-1920-cuda.zip (2,4 МБ)
Кодирование STREAM, auto-1920-STREAM.zip (2,4 МБ)

Здесь ситуация повторяется. Если детали и замыливаются кодером, то в основном, излишние, представляющие собой обыкновенный шум, при этом чёткость контуров действительно нужных объектов остаётся прежней.

***

После знакомства с этим кодировщиком, вынуждены отметить один его недостаток. Это отсутствие возможности "сшить" кодируемые файлы в один. Почему разработчик не предусмотрел такой нужной всем опции — непонятно. Ведь, если в программу импортированы файлы с DVD-видео диска, то пользователь, выбрав формат Apple iPod, явно хочет получить единый фильм для просмотра на своем мобильном устройстве. Однако по окончанию кодирования программа создаст несколько файлов типа VTS_01_0.mp4, VTS_01_1.mp4 и т.д.

Что касается ускорения кодирования с помощью технологий неграфических вычислений на графических процессорах, то выигрыш от использования архитектур NVIDIA CUDA и ATI STREAM здесь вполне ощутим, хоть и не в такой фантастической степени, как иногда обещается в рекламных буклетах.

 

[Все статьи в разделе «Цифровое Видео»]





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

iXBT BRAND 2016

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

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

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

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