СОДЕРЖАНИЕ
Доступность
Производительность и качество
Как и большинство настольных кодировщиков с аппаратным ускорением, Quick Sync получил высокую оценку за свою скорость. Восьмое ежегодное сравнение видеокодеков MPEG-4 AVC / H.264 показало, что Quick Sync сравним с предустановкой x264 superfast с точки зрения скорости, степени сжатия и качества ( SSIM ); тесты проводились на процессоре Intel Core i7 3770 ( Ivy Bridge ). Однако QuickSync нельзя было настроить так, чтобы тратить больше времени на достижение более высокого качества, тогда как x264 значительно улучшился, когда было разрешено использовать больше времени с использованием рекомендуемых настроек.
Оценка, проведенная AnandTech в 2012 году, показала, что QuickSync на Intel Ivy Bridge обеспечивает такое же качество изображения по сравнению с кодировщиком NVENC на GTX 680 от Nvidia, но намного лучше работает при разрешениях ниже 1080p.
Разработка
Поддержка операционной системы
Linux
Microsoft предлагает поддержку быстрой синхронизации в Windows (в Windows Vista и более поздних версиях) на основе программного обеспечения драйверов от Intel и поддержки как через DirectX, так и через WMF ( Windows Media Foundation ). На этой базовой поддержке технологии в Windows основан широкий спектр приложений.
macOS
Аппаратное декодирование и кодирование
В следующей таблице показана поддержка кодирования / декодирования фиксированных функций для различных платформ Intel. Поддержка гибридного и / или частичного декодирования / кодирования не описывается.
| Кантига | Кларкдейл / Аррандейл | Песчаный Мост | Ivy Bridge / Haswell | Broadwell | Braswell / Cherry Trail | Skylake | Apollo Lake | Озеро Каби / Кофейное озеро | Озеро Близнецов | Ледяное озеро / озеро комет / озеро Джаспер | Тигровое озеро / Ракетное озеро / Ольховое озеро | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| MPEG-2 | Только декодировать | да | ||||||||||
| AVC | Нет | Только декодировать | да | Да (L5.2 / L5.1) | Да (L5.1) | Да (L5.2) | Да (L5.1) | Да (L5.2) | Да (L5.2 / L5.1) | да | ||
| ВК-1 | Нет | Только декодировать | ||||||||||
| JPEG | Нет | Только декодировать | да | |||||||||
| VP8 | Нет | Только декодировать | да | Расшифровать (только на Тигровом озере) | ||||||||
| HEVC | Нет | Только декодирование (L5) | Да (L5.1) | Да (L5.1 / L5) | Да (L5.1) | Да (L5.1 / L5) | Да (L5.1) | да | ||||
| HEVC 10 бит | Нет | Только декодирование (8K) | да | |||||||||
| HEVC 12 бит | Нет | Декодировать и кодировать (только кодирование 4: 2: 0) | ||||||||||
| VP9 | Нет | Только декодирование (4K) | Частичное (кодирование только в Linux) | да | ||||||||
| VP9 10-битный | Нет | Только декодировать | да | |||||||||
| VP9 12 бит | Нет | Только декодировать | ||||||||||
| AV1 | Нет | Только декодировать | ||||||||||
| AV1 10-битный | Нет | Только декодировать | ||||||||||
| AV1 12 бит | Нет | |||||||||||
| EVC | Нет | |||||||||||
| ВВЦ | Нет | |||||||||||
Некоторые компоненты младшего и высшего класса (включая многопроцессорные Xeon и некоторые процессоры Extreme Edition, которые, как предполагается, будут использоваться с выделенным графическим процессором) не содержат аппаратного ядра для поддержки быстрой синхронизации.
QuickSync против NVENC: сравнение кодирования на GPU
Для начала определимся с графикой, которую будем сравнивать. Рассмотрим только стабильные решения для работы в режиме 24/7 — в телевещании иначе нельзя. Со стороны Intel возьмем процессор последнего поколения Intel Xeon E-2246G (семейство Coffee Lake) со встроенной графикой Intel UHD Graphics P630. Со стороны NVIDIA выберем Quadro RTX 4000 — серверный аналог потребительской видеокарты GeForce RTX 2070 Super. В отличие от последней, она не имеет официальных ограничений в одновременной обработке больше трех потоков. Это ограничение можно снять, установив неофициальный патч, но мы все же рассмотрим только проверенные и официальные решения. Более ранние версии видеокарт мы отмели сразу: они проигрывают при работе с кодеком HEVC, так как не имеют возможности кодирования B-кадров.
Теперь подберем платформы с выбранными графическими решениями (см. таблицу 1).
Максимальное количество транскодируемых каналов
Для начала проведем нагрузочный тест на максимально возможное количество транскодируемых каналов (режим fastest) на одном сервере. В этом сравнении решение NVIDIA оказалось в два раза производительнее разработки Intel при транскодировании средствами кодека AVC и практически не уступило в кодировании средствами HEVC (см. таблицу 2).
Цена за канал с учетом затрат на сервер
Теперь мы знаем максимально возможное количество каналов разрешения Full HD (FHD, 1920×1080 точек) на один сервер со встроенной графикой Intel и видеокартой NVIDIA, а значит, сможем вычислить цену одного канала FHD.
Получается, что для AVC в цене разницы нет (см. таблицу 3). В случае c HEVC решение NVIDIA гораздо дороже по цене за канал на платформу, если рассчитывать максимальное количество каналов (то есть использовать самые быстрые алгоритмы кодирования, жертвуя качеством).
На этом моменте мы прервем вычисления и перейдем к вопросу о качестве, так как гораздо честнее сравнить одинаково приемлемое качество, а не получаемое в быстрых режимах.
Качество выходного потока по сравнению с исходным
Рассмотрим качество сжатия видео, ведь нет никакого смысла в количестве каналов, если их невозможно смотреть. Ниже представлен график сравнения качества по метрике PSNR (Peak Signal-to-Noise Ratio — пиковое отношение сигнала к шуму, — прим. ред.): Intel AVC с исходным потоком (синяя линия) и NVIDIA AVC с исходным потоком (красная линия).
На графике видно, что качество получаемых потоков близко по значению PSNR.
Теперь давайте сравним с помощью метрики VMAF (Video Multimethod Assessment Fusion — субъективная мультиметодная оценка видео, разработана при участии Netflix, — прим. ред.).
В следующем графике сравним Intel HEVC с исходным потоком (синяя линия) и NVIDIA HEVC с исходным потоком (красная линия).
Из графика видно, что наше сравнение было не совсем корректным, так как максимальное количество кодируемых каналов NVIDIA равно 14, и их качество почти на 2 дБ выше, чем у 13 каналов на Intel. Поэтому мы провели дополнительные измерения, и при максимально возможном качестве на NVIDIA и на Intel в режиме GAcc (GPU Accelerated — когда кодирование происходит не только средствами графического ускорителя, но и центрального процессора) получили следующий результат. Intel HEVC GAcc с исходным потоком (синяя линия) по сравнению с NVIDIA HEVC с исходным потоком (красная линия):
Качество кодирования практически совпало, но производительность обеих систем упала в разы. Теперь NVIDIA кодировала всего четыре канала FHD HEVC, а Intel — всего 2. Пересчитаем цену одного канала исходя из новых данных: 114,2 тыс. рублей/2 = 57,1 тыс. рублей за один транскодируемый HEVC-канал на Intel; 228,5 тыс. рублей/4 = 57,1 тыс. рублей за один транскодируемый HEVC-канал на Nvidia. Таким образом, мы получили то же соотношение по цене за канал, что и в ситуации с кодеком AVC.
Энергопотребление при равной нагрузке
Рассмотрим еще один важный момент при обслуживании рабочей системы — потребляемая мощность платформы. Из наших тестов при максимальной нагрузке платформ транскодированием мы получили следующие значения: потребление платформы с NVIDIA около 200 Вт, потребление платформы с Intel около 75 Вт. Поскольку на платформе Intel каналов в два раза меньше, умножим значение на 2 — итого около 150 Вт. Получается, что при той же работе платформа NVIDIA потребляет на 50 Вт больше.
Занимаемое место в серверной стойке
При больших объемах транскодируемых каналов часто возникает вопрос размещения серверов. Для решения Intel предусмотрены специальные платформы-лезвия, где в одном сервере формфактора 3 U (юнита) умещается от 8 до 14 лезвий (полноценных серверов измененного формфактора). В одной 3U-платформе можно транскодировать до 168 каналов FHD с кодеком AVC. Если же использовать не сервер-лезвие, а обычный стоечный сервер, то на такое количество каналов понадобится высота 14 U.
Решение NVIDIA в этом плане немного сложнее: сами видеокарты занимают дополнительное место в платформе. Можно размещать по одной видеокарте в 1U-сервер, тогда занимаемое место на тоже количество каналов будет составлять 7 U. Можно на одной платформе разместить несколько видеокарт, что позволяет сэкономить на цене платформы, но выиграть место вряд ли получится: чтобы разместить 2-3 графических ускорителя, потребуется платформа 3 U, а то и 4 U.
Решение специфических задач
Помимо транскодирования видео, существуют такие задачи, как декодирование видео для визуального мониторинга и кодирование с карты захвата SDI/NDI. В таких случаях решение Intel подходит лучше: эти задачи зачастую не объемные, а значит, и использовать все ресурсы NVIDIA не получится. Даже если нужно кодировать SDI, скорее всего, это будет несколько каналов — сложно найти проект, где требуется кодировать до 24 сигналов. Кроме того, в 1U-платформу довольно сложно уместить SDI-карту захвата с интерфейсом PCI и видеокарту с той же шиной — нужно выбирать либо платформу с другой высотой, либо с достаточным местом для двух карт, что встречается довольно редко.
Есть и техническое ограничение. Процесс декодирования менее затратный, чем транскодирование, и в теории на решении NVIDIA можно визуально мониторить больше 24 каналов FHD AVC. На самом деле количество каналов ограничено 8, так как невозможно передать больший объем декодированного (несжатого) видео через шину PCI. В случае же с решением Intel такой проблемы нет, так как графика встроена в процессор.
Справедливости ради отметим, что решение NVIDIA более привлекательно для транскодирования контента сверхвысокого (UHD) разрешения, поскольку на одной видеокарте можно развернуть многопрофильное транскодирование. Встроенный графический ускоритель Intel не может транскодировать UHD-контент в несколько профилей на одном графическом ядре, и приходится включать систему распределения потока между серверами — такое решение называется распределенным транскодированием.
Для выбора важно, как реализовано использование инструментов, предлагаемых компаниями Intel и NVIDIA, какие дополнительные функции сможет выполнять программно-аппаратный комплекс
Выводы
После сравнения частного кейса можно выделить основные преимущества обоих решений. Решение Intel занимает меньше серверной высоты за счет компактности серверов-лезвий, имеет меньшее энергопотребление, оптимально подходит для декодирования и кодирования видео. Решение NVIDIA обеспечивает более высокоплотное кодирование на одно графическое ядро, позволяет сэкономить бюджет, если подобрать соответствующую видеокарту и разместить нескольких видеокарт в платформе.
Сравнив графические решения по всем интересующим нас параметрам, можно сделать вывод, что они близки по характеристикам и сложно однозначно выделить фаворита. Решающим фактором при выборе аппаратного комплекса для транскодирования может стать поставщик программного обеспечения. Для выбора важно, как реализовано использование инструментов, предлагаемых компаниями Intel и NVIDIA, какие дополнительные функции сможет выполнять программно-аппаратный комплекс (ПАК). Играют роль и такие факторы, как цена за ПАК, функции ПО, гарантия, успешные реализованные проекты, возможность доработки решения под конкретную задачу, возможность обеспечения уровня качества обслуживания, компетенции сопровождающих инженеров и т. д. Например, зачастую ПАК с NVIDIA включает в себя не программную реализацию инструментов, предоставленную этим разработчиком, а встроенный в ПО тестовый образец или же открытую реализацию. С одной стороны, это неплохо, с другой — в случае с проектом open source невозможно добавить функции или исправить выявленный баг, поскольку техническая поддержка у таких реализаций отсутствует.
Автор: Вадим Блинов, менеджер продукта CodecWorks, компания Elecard
Подпишитесь на канал «Телеcпутника» в Telegram: перейдите по инвайт-ссылке или в поисковой строке мессенджера введите @telesputnik, затем выберите канал «ТелеСпутник» и нажмите кнопку +Join внизу экрана.
Повышение производительности мультимедиа приложений с помощью аппаратного ускорения
Вычислительная архитектура: от суперскалярной до разнородной
Чтобы оценить важность развития ГП, давайте начнем с истории совершенствования архитектуры ЦП.
Вернемся в девяностые годы. Первый серьезный этап в развитии — появление суперскалярной архитектуры, в которой была достигнута высокая пропускная способность за счет параллельной обработки на уровне инструкций в пределах одного процессора.

Рисунок 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.
Мгновенное создание, редактирование и публикация видеоматериалов
Видео в формате 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











