что такое quick sync h 264
Мгновенное создание, редактирование и публикация видеоматериалов
Видео в формате Ultra HD используется повсеместно, и его создание и просмотр стали очень важны. Редактируйте, конвертируйте и публикуйте видео дома и через сеть за несколько минут, а не за несколько часов. Теперь ваше видео будет ждать вас, а не наоборот.
Что такое Intel® Quick Sync Video?
Intel® Quick Sync Video 1 использует специальные возможности обработки мультимедийных данных графических технологий Intel® для ускорения декодирования и кодирования, позволяя процессору параллельно выполнять другие задачи и повышая быстродействие системы.
Принцип работы
При широковещании или сохранении на жесткие диски, DVD-диски, видеокамеры и сотовые телефоны видео обычно сжимается и кодируется в конкретный формат. Для воспроизведения такого контента его необходимо загрузить в Интернет либо скопировать на телефон. Но сначала его необходимо декодировать, а затем повторно закодировать в новый формат. Этот процесс требует большого количества ресурсов и времени. Intel® Quick Sync Video использует специальные возможности обработки мультимедийных данных графических технологий Intel® для ускорения декодирования и кодирования, позволяя процессору параллельно выполнять другие задачи и повышая быстродействие системы.
«Благодаря большей доступности камер для записи видео с разрешением 8K с более высокой (4:2:2 по сравнению с 4:2:0) цветовой субдискретизацией мы наблюдаем растущую потребность создателей контента в возможности воспроизведения такого видеоконтента высокой четкости и иного управления им. Наше сотрудничество с Intel дало нам возможность оптимизировать приложение DaVinci Resolve 17.1, которое теперь позволяет использовать разработанную Intel встроенную специализированную аппаратную технологию Quick Sync Video в новейших процессорах 11-го поколения для предоставления нашим клиентам расширенных мультимедийных возможностей без ущерба для производительности. Благодаря планомерной разработке корпорацией Intel архитектур будущего и нашему тесному партнерству мы намерены продолжать поддерживать сообщество создателей контента с помощью самых передовых, интуитивно-понятных и эффективных решения, оптимизированных для центральных процессоров Intel».
— Рохит Гупта (Rohit Gupta), директор отдела разработки программного обеспечения DaVinci в Blackmagic
Повышение производительности мультимедиа приложений с помощью аппаратного ускорения
Вычислительная архитектура: от суперскалярной до разнородной
Чтобы оценить важность развития ГП, давайте начнем с истории совершенствования архитектуры ЦП.
Вернемся в девяностые годы. Первый серьезный этап в развитии — появление суперскалярной архитектуры, в которой была достигнута высокая пропускная способность за счет параллельной обработки на уровне инструкций в пределах одного процессора.
Рисунок 1. Суперскалярная архитектура
Рисунок 2. Многоядерная архитектура
Современная разнородная архитектура
В разнородной архитектуре может быть несколько процессоров, использующих общий конвейер данных, которые можно оптимизировать для отдельных функций кодирования, декодирования, преобразования, масштабирования, применения чересстрочной развертки и т. д.
Другими словами, благодаря этой архитектуре мы получили ощутимые преимущества как в области производительности, так и в области потребления электроэнергии, недоступные ранее. На рис. 3 показано развитие ГП за пять последних поколений: графические процессоры приобретают все более важное значение. И при использовании h.264, и при переходе на самые современные кодеки h.265 графические процессоры предоставляют значительную вычислительную мощность, благодаря которой обработка видео с разрешением 4K и даже с более высоким разрешением не только становится возможной, но и выполняется достаточно быстро.
Рисунок 3. Развитие разнородной архитектуры
Поколения производительности ГП
На рис. 4 показано резкое повышение вычислительной мощности всего за несколько поколений, в которых графические процессоры конструктивно размещались на одном кристалле с ЦП. Если в вашем приложении используется обработка мультимедиа, необходимо задействовать разгрузку на ГП, чтобы добиться ускорения в 5 раз или более (в зависимости от возраста и конфигурации системы).
Рисунок 4. Усовершенствование обработки графики в каждом поколении процессоров Intel
Приступая к программированию ГП
На шаге 1 обычно измеряется производительность H.264, чтобы можно было в дальнейшем оценивать изменение производительности по мере доработки кода. FFmpeg часто используется для измерения производительности и для сравнения скорости при использовании аппаратного ускорения. FFmpeg — очень мощный, но при этом достаточно простой в использовании инструмент.
На шаге 2 проводится тестирование с разными кодеками и в разных конфигурациях. Можно включить аппаратное ускорение, просто заменив кодек (замените libx264 на h264_qsv) на использующий Intel Quick Sync Video.
На шаге 3 добавлено использование Intel Media SDK.
Примечание. В этой публикации рассматривается использование этих инструментов в операционной системе Windows*. Если вас интересует реализация для Linux*, см. Доступ к Intel Media Server Studio для кодеков Linux с помощью FFmpeg.
▍Кодирование и декодирование FFmpeg
Начните с H.264 (AVC), поскольку h264: libx264 является программной реализацией в FFmpeg по умолчанию и выдает высокое качество исключительно программными средствами. Создайте собственный тест, затем снова измерьте производительность, сменив кодек с libx264 на h264_qsv. Позднее мы поговорим о кодеках H.265.
Если вы хотите поэкспериментировать с Quick Sync Video в FFmpeg, необходимо добавить libmfx. Самый простой способ установить эту библиотеку — использовать версию libmfx, упакованную разработчиком lu_zero.
Пример кодирования с аппаратным ускорением Quick Sync Video:
Кодек h264_qsv работает очень быстро, но видно, что даже самый медленный режим работы с аппаратным ускорением значительно быстрее только программного кодирования при самом низком качестве и самой высокой скорости.
При тестировании с кодеками H.265 вам потребуется либо получить доступ к сборке с поддержкой libx265, либо собрать собственную версию согласно инструкциям в Руководстве по кодированию для FFmpeg и H.265 или в документации X265.
Пример H.265:
Использование Intel Media SDK (sample_multi_transcode)
Рисунок 5. Примеры характеристик производительности H264 по отношению к целевому использованию
Используйте другие программные средства Intel
Для дальнейшей доработки кода можно использовать средства оптимизации и профилирования Intel, в том числе Intel Graphics Performance Analyzer (GPA) и Intel VTune Amplifier. Кроме того, инструменты Intel Video Pro Analyzer и Intel Stress Bitstreams and Encoder помогут добиться высокого качества видео и поточной передачи, улучшить работу кодировщиков и декодеров, а также ускорить проверку, чтобы можно было быстрее выпускать решения на рынок.
Заключение
Компьютерная архитектура претерпела значительные изменения за последние 20 лет, причем ее развитие лишь в течение последних пяти лет дало существенный рост производительности. Теперь ЦП Intel могут обрабатывать мультимедиа непосредственно на ГП, благодаря чему становятся доступными новые модели использования как для конечных потребителей, так и для компаний.
Вы можете самостоятельно измерить повышение производительности с помощью FFmpeg, а также дополнительно оптимизировать код с помощью бесплатных интерфейсов API Intel Media SDK. Переход от программной обработки к аппаратному ускорению повышает производительность системы и снижает расход электроэнергии (и затраты), а также предоставляет дополнительные вычислительные ресурсы, достаточные, чтобы со временем перейти на семейство кодеков H.265.
Quicksync. Ускоренный просчет и кодирование в Edius
Intel Quick Sync — это технология аппаратного ускорения, встроенная в некоторые процессоры от Intel. Технология Intel Quick Sync Video упрощает и ускоряет процесс обработки мультимедиа, а также создания и преобразования видеоматериалов за счет использования выделенных ресурсов графической технологии Intel для обработки мультимедийных данных.
По сути для технологии Quicksync требуется лишь процессор со встроенным графическим ядром с поддержкой Quicksync и материнская плата с чипсетом с поддержкой GPU и поддержкой Quicksync.
Тестировал на двух системах:
1. процессор Intel Core i7-3770K со встроенным графическим ядром Intel HD Graphics 4000, материнка ASUS P8Z77-V, видеокарта NVIDIA GeForce GTX 570 и 670, оперативка 16Gb RAM, два монитора, Windows 7 (64), Edius 6.5.
2. процессор Intel Core i7-6700 со встроенным графическим ядром HD Graphics 530, материнка Gigabyte GA-Z170-HD3 DDR3, видеокарта ASUS GF-GTX970 STRIX, 4Gb, оперативка DDR3 32Gb, два монитора, Windows 7 (64), Edius 6.5. Подробнее о этой системе и тестах можно почитать в этой статье.
Продолжим описание, на примере первой системы.
В BIOS включил видеокарты, что бы GTX 570 была основной и подключил к ней первый монитор, а HD Graphics 4000 была вспомогательной и подключил к ней второй монитор. Отмечу, что нужна установка драйверов для обеих видеокарт (Как включить встроенную видеокарту в BIOS читайте ниже).
После подключения HD Graphics 4000 при кодировке видео в форматы H.264, появляется галочка «Use Hardware Encoder», активирующая функции Intel Quicksync и сокращающая время просчета.
Если у вас один монитор с двумя входами, то так же, все замечательно: подключаете выход с видеокарты на 1-й вход монитора, а выход со встроенной в материнку видеокарты на 2-й вход монитора и все! QuickSync работает!
Так же Virtu позволяет использовать QuickSync с одним монитором.
Ниже в статье, описан еще один способ настройки, для тех у кого один монитор.
Тесты
Тест 1. Для тестов взял проект, снятый в AVCHD 1920х1080, продолжительностью 1 час. В проекте присутствует цветокоррекция, различные фильтры, стабилизатор. Плагины сторонних производителей не использовались. Проект продолжительностью один час, без Intel Quicksync занял 52 минуты. Тот же проект с Intel Quicksync продолжался всего 18 минут.
Тест 2. Фильм 90 минут. Кодирование для DVD в mpeg2 (PAL 720х576 25р) заняло 29 минут (без Intel Quicksync). Кодирование в mp4 (1280х720 25р) заняло 30 минут (с Intel Quicksync). Ранее кодирование в mp4 занимало чуть меньше, чем продолжительность самого фильма. Снова подтверждается, что Intel Quicksync почти в 3 раза уменьшает время кодировки.
Тест 3. Тот же проект, что и в Тест 2 (90 минут), но без фильтров (только файлы) в Premiere CS6 с включенной CUDA при перекодировании в mp4 (1280х720 25р) занял 54 минуты. Получается, что Intel Quicksync действительно дает ощутимую пользу.
И это реально работает! Если учесть еще, что ускоряется и просчет фильтров и переходов во время монтажа, то несомненно технология Intel Quicksync – очень прекрасная вещь!
Совмещать технологии CUDA и Intel Quicksync на одном компьютере, никто не запрещал. Особенно если учесть, что у многих встроенная видеокарта просто простаивает без дела. Остается загадкой, почему Edius про это не особо распространяется.
Наблюдения. Про загрузку видеокарт не скажу, не успел поглядеть, а процессор грузиться чуть меньше (процентов на 10) с Intel Quicksync. Порадовало, что вывод на два монитора с разных видеокарт идет совершенно без задержек. При подключении мониторов к одной видеокарте (GTX 570), я замечал некоторое запоздание картинки (на долю секунды) на втором мониторе.
Тест 4. Сравнение двух систем. Программа EDIUS 7.5. Операционная система Windows 7, 64.
Заранее нами был выбран проект продолжительностью 30минут (30:06:23), снятый в пять камер с необходимыми эффектами и легкой цветокоррекцией. Вывод в файл в формат Н.264 с битрейтом 15000 с использованием технологии Quick Sync.
Наша старая конфигурация:
процессор Intel Core i7-3770K CPU с интегрированной видеокартой Intel HD Graphics 4000, материнская плата ASUS P8Z77-V, видеокарта NVIDIA GeForce GTX 670, оперативная память DDR3 16Gb, SSD KINGSTON SKC300S37A240G, HDD четыре штуки, по 1–2 Гб, Корпус Thermaltake.
Новая конфигурация:
процессор Intel Core i7-6700 со встроенным графическим ядром HD Graphics 530, материнка Gigabyte GA-Z170-HD3 DDR3, видеокарта ASUS GF-GTX970 STRIX, 4Gb, оперативка DDR3 32Gb.
Время кодирования на старой конфигурации составило 18 минут, на новой 14 минут. Получается, что скорость возросла на 22%. Возможно это не заметно на 30 минутном проекте, но будет ощутимо на больших проектах с большим количеством эффектов. Подробно можно почитать в этой статье.
Как включить встроенную видеокарту в BIOS
Весь смысл в том, что бы включить в БИОС интегрированное видео.
Перезагружаем компьютер и входим в БИОС. Как войти в БИОС зависит от вашего компьютера, читайте инструкцию. Обычно при загрузке нужно нажать кнопочку DEL. Представим несколько вариантов настроек БИОС UEFI, от материнских плат на чипсете Z177.
На материнке Gigabyte:
При выключенном компьютере, соединяем кабелем вашу встроенную видеокарту и монитор. Все, можно включить компьютер и установить драйвера на подключенную видеокарту.
Установка драйвера видеокарт
Для этого в диспетчере устройств, кликаем правой мышью на встроенном видеоадаптере и выбираем в меню «Обновить драйверы…».
Если драйвер автоматически не установится, то устанавливаем драйвера с диска или скачиваем драйвер на официальном сайте материнской платы или сайте Intel.
ВАЖНО. Бывает, что в Edius галочка «use Hardware Encoder» стоит, но просчет по времени идет долго, как и без неё. То есть Intel Quicksync не работает. Такое происходит из-за драйвера видеокарты. Помогает установка драйвера другой версии, как правило более ранней. В Edius с каждым обновлением добавляют поддержку новых устройств и драйверов, но не всегда успевают. Например, купив современную (на тот момент) материнскую плату Gigabyte GA-Z170 и установив самый последний драйвер версии 4352 обнаружили, что Quicksync не работает, хотя галочка «use Hardware Encoder» стоит. Помогла установка более старой версии драйвера 4300, все заработало. На официальном сайте Intel есть архив драйверов и можно скачать любые версии. Попробуйте подобрать подходящий драйвер методом перебора, либо спросите у коллег какой драйвер подойдет для вашего чипсета.
Постоянно выходят обновления для Edius, поэтому возможно уже будет работать и с более новыми версиями драйверов. Однако до сих пор, драйвер 4300 является самым рабочим.
С установкой подходящего по версии драйвера, могут быть проблемы у пользователей Windows 10, где по умолчанию включено автоматическое обновление драйверов. Что бы установить нужный драйвер, обновление необходимо отключить. Для этого нужно:
— Кликнуть правой кнопкой мыши по «Пуск», выбрать пункт контекстного меню «Система», затем в разделе «Имя компьютера, имя домена и параметры рабочей группы» нажмите «Изменить параметры». На вкладке «Оборудование» нажмите «Параметры установки устройств».
— Через правый клик по пуску зайдите в «Панель управления» — «Устройства и принтеры» и кликните правой кнопкой мыши по вашему компьютеру в списке устройств. Выберите пункт «Параметры установки устройств».
— В параметрах установки вы увидите единственный запрос «Скачивать автоматически приложения производителя и настраиваемые значки, доступные для ваших устройств?». Выберите пункт «Нет» и сохраните настройки. В дальнейшем вы не будете получать новые драйвера автоматически из центра обновления Windows 10.
Если нет второго монитора
Выход есть и из этой ситуации. Для начала идем в Диспетчер устройств и проверяем, что обе видеокарты (встроенная и дискретная) включены и их драйвера установлены.
Теперь нам нужно виртуально подключить второй монитор. Идем в окно «Разрешение экрана», для этого жмём правой кнопкой мыши на рабочем столе и в меню выбираем «разрешение экрана».
В окне, только один монитор. Жмём на кнопку «Найти», что бы появился второй дисплей. Появится надпись «Другой дисплей не обнаружен».
Жмем на «Другой дисплей…» и проверяем, что интегрированный видеоадаптер привязан к нему.
В меню «Несколько дисплеев» экран не выбран, поэтому выставляем там «Попытаться в любом случае подключиться к VGA».
Далее задействуем основной (реально подключенный) монитор и монитор который мы создали (виртуальный). Для этого выбираем опцию «Расширить эти экраны» и жмём применить.
Теперь технология Intel Quick Sync будет доступна.
ВАЖНО! Прошу помнить, что хоть реального монитора у вас нет, но виртуально он существует и на него может убежать курсор мыши или случайно перенести туда окно программы.
Перекодирование видео с Intel Quick Sync Video — сделай это по-быстрому
В русском написании аббревиатура 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), реализующий декодирование и кодирование видео:
Подобное фиксированное аппаратное решение не только ускоряет обработку видео, но и разгружает 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:
Измерение идет в кадрах в секунду, а производительность QSV Ivy Bridge сравнивается не только со внешними GPU, но и с Core i7 2000K (Sandy Bridge с первым поколением QuickSync — Intel HD Graphics 3000 на борту), а также Handbrake – программным решением с открытым кодом, не использующим QuickSync.
Также отметим, что преимущество QuickSync особенно заметно при перекодировании в низкие разрешения:
При этом, анекдот «печатаю со скоростью 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.
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 почему-то не работает.
Все это приводит нас к задаче – проверить, было ли реально использовано аппаратное ускорение при обработке вашего видео.
Как все сложно … а проще нельзя? Можно. Во всех ультрабуках Quick Sync Video работает изначально по определению, а используя бесплатный Intel MSDK вы можете легко самостоятельно написать приложение, задействующее QSV по умолчанию.