Pull to refresh
0

Перекодирование видео с Intel Quick Sync Video — сделай это по-быстрому

Reading time 7 min
Views 82K


В четыре раза быстрее современных топовых решений NVidia и AMD. Что это? «Секретное оружие Sandy Bridge: Quick Sync». Так называется прошлогодняя статья Tom's hardware. «Почему Quick Sync — секретное оружие Intel» — а это уже публикация techradar. На самом деле, ничего секретного в технологии Intel Quick Sync Video (Intel QSV) нет, но у большинства к сожалению, нет и полной ясности, что это такое, где оно есть, и, главное, как его эффективно использовать. Ответить на эти вопросы затруднится не только простой пользователь, но даже и почти любой сотрудник Intel, особенно, если его разбудить ночью. Попробуем это исправить, и начнем с основ.

В русском написании аббревиатура Intel QSV выглядит как «ИКСВ», что привносит еще больше неизвестности — «икс», да еще и «в»? Поэтому (и не только поэтому) название лучше просто перевести.
Полный перевод — «Быстрая Синхронизация Видео». Что такое «видео» — вы, наверное, знаете сами. «Синхронизация» — это возможность конвертирования видео из исходных «десктопных», т.е. высокого разрешения форматов, в форматы, поддерживаемые мобильными устройствами и видеохостингами. Хотя, это далеко не единственное возможное использование QSV.
Прилагательное «быстрая» здесь отражает то, что по всем независимым тестам транскодирования видео QSV значительно, в разы, выигрывает не только у программного кодирования на CPU, но и у hi-end GPU!

Intel Quick Sync Video — это маркетинговый термин, обозначающий аппаратное декодирование и кодирование видеоконтента в форматах H.264/MPEG-4 AVC, VC-1 и MPEG-2 (пока только декодирование), реализованное во встроенных GPU процессоров Intel — от ультрабуков до серверов, начиная со второго поколения микроархитектуры Core (Sandy Bridge).
То есть, можно перекодировать видео с DVD или Blu-Ray.

Во встроенных GPU Intel помимо исполнительных устройств общего назначения (Execution Units или просто EU), имеется специальный аппаратный модуль, Multi-Format Codec Engine (MFX), реализующий декодирование и кодирование видео:
image

Подобное фиксированное аппаратное решение не только ускоряет обработку видео, но и разгружает CPU, а также снижает энергопотребление системы.
При этом, декодирование целиком осуществлено в упомянутом аппаратном модуле,
а кодирование происходит в два этапа: один на исполнительных устройствах GPU, второй — аппаратно.

На приведенном слайде из презентации на Intel Developer Forum видно, какие стадии кодирования где делаются. Еще раз подчеркну, что все происходит на GPU, т.е. в железе, а «Гибридное HW/SW решение» обозначает только факт использования программируемых EU блоков GPU.


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

В процессорах Ivy Bridge, то есть, во второй версии Quick Sync, аппаратные модули Sandy Bridge были доработаны — повышена скорость и качество кодирования, добавлена поддержка сверхвысоких разрешений вплоть до 4K Видео. Система даже способна декодировать несколько Quad HD video потоков одновременно.
Найти бы еще соответствующий монитор....

Тестов работы с подобным QuadHD разрешением не нашлось, зато обычных тестов, показывающих скорость работы Quick Sync больше, чем достаточно для статистики.
Например, прошлогодний опыт vilianov Счастлив с Quick Sync.
А вот относительно недавняя информация — Anandtech обозревает Intel Ivy Bridge (Core i7 3770K с HD Graphics 4000, Quick Sync второй версии) и сравнивает скорость перекодирования Blu-Ray исходника на iPad:

image
Измерение идет в кадрах в секунду, а производительность QSV Ivy Bridge сравнивается не только со внешними GPU, но и с Core i7 2000K (Sandy Bridge с первым поколением QuickSync — Intel HD Graphics 3000 на борту), а также Handbrake – программным решением с открытым кодом, не использующим QuickSync.

Также отметим, что преимущество QuickSync особенно заметно при перекодировании в низкие разрешения:
image

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

Доступ к аппаратной видеообработке QSV осуществляется через драйвер Intel HD graphics, интерфейс к нему непубличен, прежде всего, потому, что он непостоянен — зависим от конкретного железа и версии драйвера. Хотя, отдельные немногочисленные компании-разработчики, при необходимости, по специальному соглашению с Intel, получают доступ к заветному API.

Все остальные компании, желающие использовать преимущества Quick Sync Video, могут сделать это (и делают, конечно) с помощью специального SDK — Intel Media SDK, который предоставляет фиксированный интерфейс для работы с видео. При этом, автоматически, «за кулисами», MSDK использует все возможности аппаратного ускорения Intel для каждой данной системы: Quick Sync при его наличии, иначе – оптимизированные для конкретного CPU программные библиотеки.
В общем, штука отличная. Да еще и бесплатная...
Поэтому в списке компаний, использующих MSDK, можно найти такие известные компании, как MainConcept, Nero, Corel, CyberLink…

Но, не все приложения одинаково полезны, т.е. производительны (сами понимаете, из одних и тех же кирпичей можно построить разные дома). Вот интересное и полезное сравнение производительности от того же vilianov — "Быстрее есть куда"

Итак, если вы хотите, чтобы столь же быстро видео перекодировалось и у вас, то для этого требуется:

1. Наличие в процессоре интегрированного GPU с поддержкой Quick Sync.
Как уже было сказано, CPU должен быть не старше, чем второе поколение микроархитектуры Core (Sandy Bridge).
Кроме того, его встроенная графика должна быть также второго поколения — начиная с Intel HD Graphics 2000. Это важно, так как начальные модели Sandy Bridge, продаваемые под маркой Pentium, имеют «безномерную» Intel HD Graphics, которая не поддерживает Quick Sync.
На сегодняшний день поддержка Quick Sync для мобильных и десктопных компьютеров присутстует в Intel HD Graphics 2000, 2500, 3000 и 4000, а для серверов – в моделях P3000 и P4000.

2. Поддержка GPU чипсетом (материнской платой) .
Чтобы GPU мог передавать данные на южный мост материнской платы – то есть, в конечном итоге, к порту дисплея (DisplayPort), чипсет должен поддерживать Flexible Display Interface (FDI) –«мостик» между GPU и дисплеем. Актуальный список моделей чипсетов и CPU с поддержкой FDI есть в соответствующей статье на wikipedia
Кстати, это требование не имеет специфического отношения к поддержке Quick Sync Video, а является просто необходимым условием работы Intel HD Graphics в системе.

И конечно, если в системе используется внешняя графическая карта, отключающая интегрированную графику CPU, использовать Quick Sync в общем случае невозможно. Решения этой проблемы для некоторых случаев:
  • Для ноутбуков – использовать возможность переключения графики системы со внешней на внутреннюю (switchable graphics)
  • Для настольных компьютеров — подключить второй монитор на порт интегрированной графики, разрешив его использование в BIOS и сделав его первичным.
  • Использовать решение графической виртуализации LucidLogix Virtu


3. Поддержка видеодрайвером.
На сегодняшний день QSV поддерживается драйверами Windows 7, Windows 8 и Mac OS Mountain Lion.
Также возможно поставить соответствующие драйвера Windows 7 на Windows Server 2008 (при установленной компоненте Desktop Experience).
Свежие драйвера для Intel HD Graphics (кстати, не только для упомянутых выше систем) можно найти здесь.

Чтобы убедиться в том, что у вас актуальный драйвер, правильно понимающий ваше железо, проверьте наличие в системе библиотеки вида libmfxhw*.dll. Если она нашлась, например, libmfxhw64-s1.dll в случае 64-битной системы с процессором Sandy Bridge, все ОК.

4. Поддержка софтом.
Актуальный список рекомендованных Intel коммерческих приложений для Windows, использующих Quick Sync посредством MSDK находится здесь.

Также существует и приложение с открытым кодом – Quick Sync Decoder, использующее Quick Sync декодирование H.264, MPEG2 и VC-1 видео через фильтр ffdshow.

В OS X Mountain Lion QSV поддерживают AirPlay Mirroring и QuickTime X.

Но, во-первых, приложений для обработки видео в природе имеется на порядок больше, чем в приведенном списке. И какие-то из них вполне могут использовать QSV, не сообщая об этом из скромности. А во-вторых, заявленная поддержка QSV и его реальное задействование вашей задачей – это две большие разницы. Во многих приложениях для активации QSV надо выставить галочку в совершенно неожиданном месте или поменять какую-то неочевидную настройку, которую, возможно, стоит поискать, если QSV почему-то не работает.
Все это приводит нас к задаче – проверить, было ли реально использовано аппаратное ускорение при обработке вашего видео.

Для приложений из вышеприведенного списка, а также тех, которые вы подозреваете в использовании Intel Media SDK (улики – использование приложением библиотеки libmfxsw*.dll) сделать это можно так:
  1. Скачиваем и устанавливаем Intel Media SDK
  2. В папке “<install-folder>\tools\mediasdk_tracer\” находим и запускаем профилировщик MSDK — tracer.exe
  3. Начинаем логирование кнопкой Start, запускаем обработку видео в вашем подопытном приложении, через несколько секунд останавливаем логирование нажатием Stop.
  4. В логфайле, указанном в поле Output File, ищем строки
    • MFXInit.impl=HARDWARE или MFXInit.impl=AUTO
    • MFXInit.status=MFX_ERR_NONE
    Если они нашлись – все в порядке, QSV используется. Иначе – нет, либо вы ошиблись, и приложение не использует MSDK.


В последнем случае рассеять сомнения поможет еще одна проверка, выполняемая со стороны железа:
  1. Скачиваем и устанавливаем Intel Graphics Performance Analyzer (GPA)
  2. Запускаем GPA Monitor, далее щелчком правой кнопки мыши по иконке GPA Monitor в системном трее вызываем контекстное меню и выбираем в нем Media Performance:

    Открывшееся окно показывает загрузку исполнительных устройств (EU) и аппаратного обработчика видео (MFX) Intel GPU.
  3. Запускаем обработку видео в вашем приложении, и в реальном времени смотрим на таблицы использования компонент Intel GPU. Или – не смотрим, а сохраняем эти данные в логе нажатием Capture. Если в таблицах или логфайле мелькают строки «декодирование» (DECODING) и «кодирование» (ENCODE), как показано ниже, значит, QSV используется.


Как все сложно … а проще нельзя? Можно. Во всех ультрабуках Quick Sync Video работает изначально по определению, а используя бесплатный Intel MSDK вы можете легко самостоятельно написать приложение, задействующее QSV по умолчанию.
Tags:
Hubs:
+6
Comments 22
Comments Comments 22

Articles

Information

Website
www.intel.ru
Registered
Founded
Employees
5,001–10,000 employees
Location
США
Representative
Анастасия Казантаева