Компания
1 070,70
рейтинг
12 сентября 2012 в 14:02

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



В четыре раза быстрее современных топовых решений 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 по умолчанию.
Автор: @vikky13
Intel
рейтинг 1 070,70

Комментарии (22)

  • +1
    Все хорошо. Но когда это появится под linux?
    Не будешь же ставить windows ради кодирования видео только.
    • 0
      Я ждала этого вопроса. Единственный ответ — принципиальных непреодолимых сложностей для QSV под Linux нет. Так что НЕ никогда :)
      И — не хотите ставить windows, ставьте Mac OS :)
      • 0
        В продакшен мак ось еще хуже.
        Даже платные решения интересны были бы
    • +1
      Для того чтобы запустить, нужно собрать libva и vaapi-driver-intel. Более того, уже написаны модули для gstreamer'a как для декодирования так и для кодирования. Вот только нужно запастись бубном чтоб собрать это всё до кучи.
  • 0
    А как же поддержка webm и VP8?
    • 0
      Она есть в софте. В текущей версии железа ее нет.
      • +4
        Плохо. Значит, intel не поддерживает современные стандарты кодирования видео.

        (Я знаю, что это резкий и грубый вброс, но давайте стараться держаться технологий, в которых нет патентных троллей, ок?)
        • 0
          помимо всего прочего, «Не поддерживает сегодня» != «не будет поддерживать завта»
  • +1
    Все было хорошо и радужно до момента, когда сказали про необходимость втыкать монитор в материнку, это при условии что у меня вывода нет вообще. Неужели нельзя было реализовать поддержку кодирования из файла в файл без необходимости выдачи сигнала на монитор.
    • 0
      Втыкание монитора нужно для того, чтобы встроенная графика заработала. Если не хотите этого делать, выньте отдельную видеокарту из монитора. Еще одно решение я привела — Вирту.
      Если вам все это не подходит, могу только посочувствовать.
      • –1
        У меня физически нет разъема на материнке, Р65 чипсеты их просто не поддерживают.
        • 0
          Тогда точно работать не будет. Нужен правильный чипсет, я про это как раз писала.
  • 0
    Если я не использую Virtu, и монитор подключен к дискретной видеокарте (gtx670), но в биосе включить intel hd 4000, возможно будет конвертировать с помощью интеловской встроенной карты? если в биосе не включать графическую карту, то на проце этот блок вообще не работает?
    • 0
      Если карту в биосе не включать, то этот блок не работает.
      По первому пункту -мой честный ответ «не знаю, но предполагаю, что нет». Но зато знаю способы проверки этого — я привела их в посте. Попробуйте, потом расскажете, может свой пост на эту тему напишете.
      • 0
        Сегодня вернусь с работы и сравню Intel Quick Sync и nvidia Cuda.
  • 0
    Ой лукавите про качество выигрывающее «на глаз». Quick Synс до сих пор остаётся решением для быстрого перекодирования без оглядки на качество и битрейт. compression.ru/video/codec_comparison/h264_2012/
    • –2
      спасибо за ссылку, посмотрела, так и не поняла, каким именно софтом кодировали с использованием Quick Synс. А от этого качество тоже зависит.
      • 0
        Всё в отчёте.
        2.1.7 Intel Ivy Bridge QuickSync
        • Transcoder and presets was provided by Intel specifically for this
        test
        И страница 116.
        • 0
          Прочитала. Теперь и вы прочитайте еще раз. И, будьте добры, найдите мне там опровержение моего утверждения «качество кодирования, хотя и немного уступает чисто софтовому, но всегда выигрывает, или, в худшем случае, идет вровень с любым другим GPU кодированием», т.е. то, что имеются GPU с качеством, превосходящим Quick Sync. Я этого не нашла. Напротив, CUDA там на последних местах.
          • 0
            То есть разница в качестве 40% — это «немного уступает чисто софтовому»?
            • 0
              По-моему честному мнению 40% — много. Но я читала несколько других внешних источников, никак не связанных с Интел, и там речь идет именно «о немного», + приводятся примеры картинок для принятия самостоятельного решения читателем. Мои глаза в союзе с мозгом тоже сказали «немного».
              Я не помню такого результата (40%), но помню, что у остальных gpu значительно хуже.
              Если хотите, скопируйте в следующий коммент всю табличку из документа, пусть читатели сами решат «что такое хорошо и что такое плохо»
  • 0
    Доступ к аппаратной видеообработке QSV осуществляется через драйвер Intel HD graphics, интерфейс к нему непубличен...

    В дровах под linux лежат исходники шейдеров для графического ядра (кодеров, декодеров и пост-процессинга). Есть ещё что-то, что осталось закрытым?

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

Самое читаемое Дизайн