Vp9 видео декодер что это
Видеокодек VP9 от Google получил поддержку большинства производителей
Google объявил, что практически все крупные производители в скором времени обеспечат поддержку видеокодеку VP9 в своих продуктах и позволят YouTube транслировать видео в формате 4K, пишет TechCrunch. До этого поддержка VP9 была включена в Mozilla Firefox, Google Chrome и в нескольких видеоплеерах, таких как FFmpeg.
Google утверждает, что кодирование видео в формате VP9 даёт около 50 % экономии пропускной способности по сравнению с его старшим кодеком VP8 или стандартом H.264. Среди производителей, согласившихся поддержать VP9 — компании ARM, Broadcom, Intel, LG, Marvell, MediaTek, NVIDIA, Panasonic, Philips, Qualcomm, Realtek, Samsung, Sigma, Sharp, Sony и Toshiba.
Уже в 2015 году встроенную поддержку VP9 можно будет увидеть во многих моделях телевизоров и Blu-ray-плееров упомянутых производителей, а в компьютерах и мобильных устройствах поддержка кодека появится уже в течение 2014 года.
Для большинства ноутбуков и мобильных устройств высокого класса аппаратная поддержка не является обязательной, так как они могут использовать программный декодер. Однако для достижения наилучших результатов и экономии заряда батареи аппаратная поддержка необходима. Практически все из упомянутых производителей уже предлагают такую поддержку для H.264.
Для YouTube поддержка VP9 означает, что видео будет запускаться быстрее, хотя перевод всех видео в новый формат займёт некоторое время. Эффект от перехода на VP9 будет виден на потоковом видео любого разрешения, но наиболее он будет заметен на видео в HD и особенно в 4K.
В Google считают, что для 4K более эффективные кодеки «абсолютно необходимы», и уверены, что это разрешение очень быстро станет стандартом, тем более, что цены и на экраны, и на камеры с разрешением 4K за последние несколько лет заметно упали.
Получить согласие производителей было делом несложным, учитывая, что VP9 не обременён сложными вопросами лицензирования. Google сделал кодек свободно доступным, в то время как вендоры, желающие использовать стандарт H.264, должны платить лицензионный сбор фирме MPEG LA (которая затем распределяет эти деньги между различными патентообладателями).
LG, Panasonic и Sony собираются продемонстрировать YouTube в 4K на выставке CES в этом году, и в YouTube говорят, что работают с рядом операторов, чтобы записать для выставки видео в 4K. Google в основном заинтересован в поддержке производителями VP9 из-за YouTube, но в долгосрочной перспективе другие видеосайты тоже получат выгоду от широкой поддержки кодека.
Vp9 видео декодер что это
Если ваша задача — получить лучшее качество при наименьшем битрейте, то тут кодек VP9 и приходит на помощь. С помощью него можно кодировать, например, 1080p видео с битрейтом 2500k (2,5 мегабита) и иметь вполне приличное качество. Если видео очень динамичное, битрейт следует поднять до 3000-4000k. Если же с таким битрейтом мы будем кодировать в кодек h264 — получим пиксельную кашу, примерно как на Ютубе. Ютуб далеко не всё видео кодирует в VP9 (webm), многие видео хранятся в кодеке h264/avc — смотреть на них больно.
Однако, кодек VP9 не идеален и есть у него небольшой изъян, связанный с цветовым пространством. Условно, два основных цветовых пространства — это TV (bt601) и PC (bt709). Чем они отличаются? Уровнями черного и белого. Цветовое пространство TV имеет более узкий диапазон цветов 16-235, где 16 — белый, а 235 — черный. Если просматривать такое видео на мониторе ПК, то оно будет блеклое, тусклое, с низким контрастом. Потому что правильное цветовое пространство для PC — 00-255, где 00 — абсолютный белый, а 255 — абсолютный черный. Простыми словами, телевизионное цветовое пространство имеет ограниченный диапазон RGB. А компьютерное — полный.
Проблема кодека VP9 состоит в том, что он умеет работать только с TV пространством, обозначаемое так же, как yuv420. Для многих современных фото и видеокамер — это не проблема, они снимают точно в таком же цветовом поле с поправкой на контраст, картинка с них вполне хорошо смотрится. Но есть старые модели фото-видео камер, которые снимают в цветовом пространстве yuvj420 (pc, bt709) и с них необработанное видео смотрится отлично, сочно, контрастно. Но вот при кодировании в VP9 подобных видео со старых камер, кодек обрезает диапазон цвета с 00-255 до 16-235 и мы получаем тусклую, неконтрастную картинку. Абсолютно черный 255 превращается в тёмно-серый 235.
Как решать эту проблему?
Облазив огромное количество интернет-сайтов, как российских, так и зарубежных, я не нашел практически никакой полезной информации. И вывод напрашивается сам собой: раз кодек не поддерживает yuvj420 (pc, bt709), то и бороться с потерей цвета никак нельзя. Тем не менее, я нашел небольшую уловку, которая работает в актуальных версиях ffmpeg (4.2) и позволяет с помощью фильтра подкрутить контраст на 10%. Вероятно, Ютуб пользуется подобными методами, так как конвертировать PC-стандарт (yuvj420) в TV (yuv420) и не потерять часть цвета — невозможно. Делюсь командой для ffmpeg под Linux, чтобы закодировать видео yuvj420 и не лишиться контраста. Конечно, это лишь уловка, но закодированное видео в yuv420 практически не будет визуально отличаться от исходника и большинство вообще не заметит никакой разницы.
Решение:
-i — входной файл
MVI_9360.MOV — название входного файла, включая расширение
-c:v vp9 — кодек видео VP9
-vf «eq=contrast=1.1:brightness=0:saturation=1» — видеофильтр, контраст, яркость, насыщенность. Единица — это 100%.
-b:v 2000k — примерный битрейт видео установлен в 2000 килобит/c
-c:a libopus — кодек аудиодорожки, кроме libopus может использоваться libvorbis
-b:a 256k — битрейт аудиодорожки установлен в 256 килобит/c
-y — означает yes, полезно в случае перезаписи существующего в каталоге файла с тем же названием.
По поводу кодирования различных видеофайлов с помощью ffmpeg я как-нибудь напишу отдельный пост. А пока, на этом всё. Спасибо за внимание 🙂
На правах автора хочу напомнить, что у нас есть группа вк и телеграм-чат, где можно пообщаться на компьютерную и сетевую тематику.
Свободный кодек VP9 улучшает видеоролики на YouTube
Linux для хакера
Недавно компания Google начала применять свободный видеокодек VP9 для кодирования новых видеороликов, которые закачиваются на YouTube. Пришло время подвести первые итоги этого эксперимента.
Кодек VP9 умеет быстро кодировать видеоматериалы с размером кадра до 4K (2160p), при этом обеспечивает гораздо лучшее качество и более высокий уровень сжатия, чем H.264 и другие кодеки.
Для сравнения, вот один и тот же кадр из видеоролика, сжатого VP9 и H.264 с потоком 600 Кбит/с.
Разница видна невооружённым глазом.
Новый видеокодек гораздо лучше сжимает файлы. В результате, пользователи могут смотреть видео лучшего качества на канале с низкой пропускной способностью.
Google приводит статистику, сколько пользователей на медленном интернете смогли улучшить качество просматриваемого видео с 240p до 360p после апгрейда YouTube на VP9.
Пока что Google не решается начать перекодирование старых материалов в VP9. Возможно, в этом нет особого смысла, но вот свежезалитые видеоролики сплошь кодируются в VP9.
Разработано | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Первый выпуск | 17 июня 2013 г. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Тип формата | Сжатое видео | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Содержится |
Уровень | Образцы яркости / с | Размер изображения яркости | Максимальный битрейт (Мбит / с) | Максимальный размер CPB для визуального уровня (Мбит) | Мин. Степень сжатия | Макс плитки | Мин. Расстояние Alt-Ref | Максимальное количество опорных кадров | Примеры разрешения при частоте кадров |
---|---|---|---|---|---|---|---|---|---|
1 | 829440 | 36864 | 0,20 | 0,40 | 2 | 1 | 4 | 8 | 256 × 144 @ 15 |
1.1 | 2764800 | 73728 | 0,80 | 1.0 | 2 | 1 | 4 | 8 | 384 × 192 @ 30 |
2 | 4608000 | 122880 | 1,8 | 1.5 | 2 | 1 | 4 | 8 | 480 × 256 при 30 |
2.1 | 9216000 | 245760 | 3,6 | 2,8 | 2 | 2 | 4 | 8 | 640 × 384 @ 30 |
3 | 20736000 | 552960 | 7.2 | 6.0 | 2 | 4 | 4 | 8 | 1080 × 512 @ 30 |
3.1 | 36864000 | 983040 | 12 | 10 | 2 | 4 | 4 | 8 | 1280 × 768 при 30 |
4 | 83558400 | 2228224 | 18 | 16 | 4 | 4 | 4 | 8 | 2048 × 1088 @ 30 |
4.1 | 160432128 | 2228224 | 30 | 18 | 4 | 4 | 5 | 6 | 2048 × 1088 при 60 |
5 | 311951360 | 8912896 | 60 | 36 | 6 | 8 | 6 | 4 | 4096 × 2176 @ 30 |
5.1 | 588251136 | 8912896 | 120 | 46 | 8 | 8 | 10 | 4 | 4096 × 2176 @ 60 |
5.2 | 1176502272 | 8912896 | 180 | TBD | 8 | 8 | 10 | 4 | 4096 × 2176 @ 120 |
6 | 1176502272 | 35651584 | 180 | TBD | 8 | 16 | 10 | 4 | 8192 × 4352 @ 30 |
6.1 | 2353004544 | 35651584 | 240 | TBD | 8 | 16 | 10 | 4 | 8192 × 4352 @ 60 |
6.2 | 4706009088 | 35651584 | 480 | TBD | 8 | 16 | 10 | 4 | 8192 × 4352 @ 120 |
Технология
Новые инструменты кодирования также включают:
Начиная с каждого ключевого кадра, декодеры сохраняют в буфере 8 кадров для использования в качестве опорных кадров или для отображения позже. Переданные кадры сигнализируют о том, какой буфер следует перезаписать, и при необходимости могут быть декодированы в один из буферов без отображения. Кодер может отправить минимальный кадр, который просто запускает отображение одного из буферов («пропустить кадр»). Каждый межкадр может ссылаться на до трех буферизованных кадров для временного предсказания. До двух из этих опорных кадров могут использоваться в каждом блоке кодирования для вычисления предсказания выборки данных с использованием пространственно смещенного ( компенсация движения ) контента из опорного кадра или среднего содержания из двух опорных кадров («режим составного предсказания»). Оставшаяся (в идеале небольшая) разница ( дельта-кодирование ) от вычисленного предсказания до фактического содержимого изображения преобразуется с использованием DCT или ADST (для краевых блоков) и квантуется.
Что-то вроде b-кадра может быть закодировано с сохранением исходного порядка кадров в потоке битов с использованием структуры, называемой суперкадрами. Скрытые альтернативные опорные кадры могут быть упакованы вместе с обычным промежуточным кадром и пропускаемым кадром, который запускает отображение предыдущего скрытого содержимого altref из его буфера опорных кадров сразу после сопутствующего p-кадра.
VP9 обеспечивает кодирование без потерь, передавая на самом низком уровне квантования (q-индекс 0) дополнительный остаточный сигнал с преобразованием Уолша-Адамара (WHT), закодированный по 4 × 4 блокам.
Принятие
Контент-провайдеры
Google Play Movies & TV использует (по крайней мере частично) профиль VP9 2 с Widevine DRM.
Услуги кодирования
Encoding.com предлагает кодирование VP9 с четвертого квартала 2016 года, что в этом году составило в среднем 11% популярности VP9 среди его клиентов.
ПО промежуточного слоя для веб
JW Player поддерживает VP9 в своем широко используемом видеопроигрывателе HTML5 типа « программное обеспечение как услуга ».
Поддержка браузера
VP9 реализован в следующих веб-браузерах:
Поддержка операционной системы
Майкрософт Виндоус | macOS | BSD / Linux | ОС Android | iOS | |
---|---|---|---|---|---|
Поддержка кодеков | Да Частично : Win 10 v1607 Полная : Win 10 v1809 | да | да | да | да |
Поддержка контейнера | В юбилейном обновлении Windows 10 (1607) : WebM (.webm не распознается; требуется псевдорасширение) Matroska (.mkv) |
Поддержка программного обеспечения медиаплеера
Поддержка аппаратного устройства
Аппаратные реализации
Это не полный список. Другие SoC, а также поставщиков оборудования для IP можно найти на webmproject.org.
Приставки для видеоигр
Sony PlayStation 5 поддерживает запись видео 1080p и 2160p с использованием VP9 в контейнере WebM.
Программные реализации
Кодирование
Расшифровка
Декодер FFmpeg VP9 использует преимущества корпуса оптимизаций SIMD, совместно используемых с другими кодеками, чтобы сделать его быстрым. Сравнение, проведенное разработчиком FFmpeg, показало, что это было быстрее, чем libvpx, и по сравнению с декодером FFmpeg h.264, «идентичная» производительность для видео с таким же битрейтом или примерно на 10% быстрее для видео того же качества.
Патентные претензии
Цена Sisvel составляет 0,24 евро за устройства отображения и 0,08 евро за устройства без дисплея, использующие VP9, но не требует лицензионных отчислений за кодированный контент. Однако их лицензия не делает исключений для программного обеспечения.
Google знает о патентных пулах, но не планирует изменять их текущие или будущие планы использования VP9 или AV1.
Преемник: с VP10 на AV1
12 сентября 2014 года Google объявил о начале разработки VP10 и о том, что после выпуска VP10 планируется 18-месячный перерыв между выпусками видеоформатов. В августе 2015 года Google начал публиковать код для VP10.
Однако Google решил включить VP10 в AOMedia Video 1 (AV1). Кодек AV1 был разработан на основе комбинации технологий VP10, Daala ( Xiph / Mozilla ) и Thor ( Cisco ). Соответственно, Google заявила, что не будет развертывать VP10 внутри компании и не выпускать ее официально, что делает VP9 последним из кодеков на основе VPx, выпущенных Google.
VP8, VP9 и H265. Аппаратное ускорение кодирования и декодирования видео в процессорах 6-го поколения Skylake
Встроенная графика 9-го поколения HD Graphics 530 в процессоре Intel Core i7 6700K с 24 блоками выполнения команд (EU), организованными в три фрагмента по 8 блоков.
Удивительно, но Intel сумела обойти и AMD, и Nvidia в реализации аппаратного ускорения кодирования видео: похожие технологии AMD Video Codec Engine и Nvidia NVENC в видеокартах AMD и Nvidia появились со значительным опозданием (алгоритмы компрессии требуют серьёзной адаптации под процессоры видеокарт). Вот почему идея и разработка QSV хранились в секрете пять лет.
Сказать, что QSV была востребована — значит, ничего не сказать. Воспроизведение (декодирование) видео с аппаратной поддержкой стало гораздо меньше отнимать ресурсов у других задач в ОС, меньше нагревать CPU и потреблять меньше электроэнергии.
К тому же, в последние годы кодирование видео стало одной из самых ресурсоёмких задач на ПК. Популярность YouTube превратила миллионы человек в операторов и режиссёров. А тут ещё и повсеместное распространение смартфонов, для которых требуется транскодирование с DVD в сжатый AVC MP4/H.264. В результате, практически каждый ПК стал видеостудией. Массово распространились IPTV и потоковые видеотрансляции в интернете. Компьютер начал выполнять роль телевизора. Видео стало вездесущим и превратилось в один из самых популярных видов контента на ПК. Оно кодируется и транскодируется постоянно и везде: на разные битрейты, в зависимости от типа устройства, размера экрана и скорости интернета. В такой ситуации возможность быстрого кодирования и декодирования видео в процессорах напрашивалась сама собой. Так в Intel GPU встроили аппаратный кодер/декодер.
Современный кодек обрабатывает каждый кадр в отдельности, но также анализирует последовательность кадров на предмет повторений во времени (между кадрами) и пространстве (внутри одного кадра). Это сложная вычислительная задача. Ниже показан пример кадра из видео, который закодирован новейшим кодеком HEVC. Для конкретного участка возле уха зайца показано, как именно были закодированы различные участки кадра. Также показано положение и тип кадра в общей структуре видеопотока. Не углубляясь в детали алгоритмов видеокомпрессии, это даёт общее представление, насколько много информации требуется анализировать, чтобы эффективно кодировать и декодировать видео.
Скриншот открытого видео в программе Elecard StreamEye, 1920×1040
Аппаратная поддержка кодирования и декодирования означает, что непосредственно в процессоре реализованы интегральные схемы, специализированные для конкретных задач кодирования и декодирования. Например, дискретное косинусное преобразования (DCT) выполняется при кодировании, а обратное дискретное косинусное преобразования — при декодировании.
За прошедшие пять лет технология Intel QSV значительно продвинулась вперёд. Добавлена поддержка свободных видеокодеков VP8 и VP9, обновлены драйверы под Linux и т.д.
Технология улучшалась с каждым новым поколением Intel Core, вплоть до нынешнего 6-го поколения Skylake.
Микроархитектура GPU 9-го поколения
Последняя версия QSV 5.0 вышла вместе с микроархитектурой ядра шестого поколения Skylake. Данная версия GPU в официальной документации Intel классифицируется как Gen9, то есть графика 9-го поколения.
Процессор Intel Core i7 6700K для настольных компьютеров содержит 4 ядра CPU и встроенную графику 9-го поколения HD Graphics 530
С каждой новой микроархитектурой в GPU увеличивалось количество блоков выполнения команд (EU). Оно выросло с 6 в Sandy Bridge до 72 в топовой графике Iris Pro Graphics 580 на кристаллах Skylake. В том числе за счёт этого производительность GPU увеличилась десятикратно без увеличения тактовой частоты. Во всей графике последнего поколения Iris и Iris Pro имеется встроенный кэш Level 4 на 64 или 128 МБ.
▍Микроархитектура блоков выполнения команд (EU)
Базовым строительным блоком микроархитектуры Gen9 является блок выполнения команд (EU). Каждый EU сочетает в себе одновременную многопоточность (SMT) и тщательно настроенную чередующуюся многопоточность (IMT). Здесь работают арифметическо-логические устройства с одиночным потоком команд, множественным потоком данных (SIMD ALU). Они выстроены по конвейерам многочисленных тредов для высокоскоростного проведения вычислений с плавающей запятой и целочисленных операций.
Суть чередующейся многопоточности в EU состоит в том, чтобы гарантировать непрерывный поток готовых для выполнения инструкций, но в то же время ставить в очередь с минимальной задержкой более сложные операции, такие как размещение векторов в памяти, запросы семплеров или другие системные коммуникации.
Блок выполнения команд (EU)
Каждый тред в блоке выполнения команд Gen9 содержит 128 регистров общего назначения. В каждом из регистров 32 байта памяти, доступной в виде 8-элементного вектора SIMD или 32-битных элементов данных. Таким образом, на каждый тред приходится 4 КБ файла реестра общего назначения (GRF). Всего на один EU приходится 7 тредов с общим количеством 28 КБ GRF на EU. Гибкая система адресации позволяет адресовать несколько регистров вместе. Состояние треда в текущий момент сохраняется в отдельном файле архитектуры реестра (ARF).
В зависимости от нагрузки, аппаратные треды в EU могут выполнять параллельно один код от одного вычислительного ядра либо могут выполнять код от совершенно разных вычислительных ядер. Состояние выполнения в каждом треде, в том числе его собственные указатели инструкций, хранятся в его независимом ARF. На каждом цикле EU может выдавать до четырёх различных инструкций, которые должны быть от четырёх различных тредов. Специальный арбитр тредов (Thread Arbiter) отправляет эти инструкции в один из четырёх функциональных блоков для выполнения. Обычно арбитр может выбирать из разнородных инструкций, чтобы одновременно загружать все функциональные блоки и, таким образом, обеспечивать параллелизм на уровне инструкций.
Пара модулей FPU на схеме на самом деле выполняет и операции с плавающей запятой, и целочисленные вычисления. В Gen9 эти модули способы обработать за цикл не только до четырёх операций с 32-битными числами, но и до восьми операций с 16-битными. Операции сложения и умножения выполняются одновременно, то есть блок EU способен выполнить максимум до 16 операций с 32-битными числами за один цикл: 2 FPU по 4 операции × 2 (сложение+умножение).
Генерацией SPMD-кода для многопоточной загрузки EU занимаются соответствующие компиляторы, такие как RenderScript, OpenCL, Microsoft DirectX Compute Shader, OpenGL Compute и C++AMP. Компилятор сам эвристически выбирает режим загрузки тредов (SIMD-width): SIMD-8, SIMD-16 или SIMD-32. Так, в случае SIMD-16 на одном EU могут одновременно исполняться 112 (16×7) потоков.
Обмен данными в рамках одной инструкции внутри блока EU может составлять, например, 96 байтов на чтение и 32 байтов на запись. При масштабировании на весь GPU с учётом нескольких уровней иерархии памяти получается, что максимальный теоретический лимит обмена данными между FPU и GRF достигает нескольких терабайт в секунду.
▍Масштабируемость
Микроархитектура GPU обладает масштабируемостью на всех уровнях. Масштабируемость на уровне тредов переходит в масштабируемость на уровне блоков выполнения команд. В свою очередь, эти блоки выполнения команд объединятся в группы по восемь штук (8 EU = 1 subslice).
На каждом уровне масштабирования имеются локальные модули, работающие только здесь. Например, для каждой группы из 8 блоков EU предназначен свой локальный диспетчер тредов, порт данных и семплер для текстур.
Группа из 8 блоков EU (subslice)
В свою очередь группы из 8 EU объединяются в группы по 24 EU (3 sublices = 1 slice). Эти срезы по 24 блока, в свою очередь, тоже масштабируются: существующая графика Gen9 содержит 24, 48 или 72 EU.
В графике Gen9 увеличен объём кэша третьего уровня L3 до 768 КБ на каждую группу из 24 EU. У всех семплеров и портов данных свой собственный интерфейс доступа к L3, позволяющий считать и записать по 64 байта за цикл. Таким образом, на группу из 24 EU приходится три порта данных с полосой передачи данных к кэшу L3 192 байта за цикл. Если в кэше нет данных по запросу, то данные запрашиваются или направляется для записи в системную память, тоже по 64 байта за цикл.
Микроархитектура Gen9 из двух групп по 24 (3×8) EU
Такая масштабируемость позволяет эффективно снижать энергопотребление, отключая те модули, которые не задействованы в данный момент.
Что умеет QSV в Skylake
В Gen9 появилась полная поддержка аппаратного ускорения при кодировании и декодировании H.265/HEVC, частичная поддержка аппаратного кодирования и декодирования свободным кодеком VP9. Произведены значительные улучшения в технологии QSV. Они повысили качество и эффективность кодирования и декодирования, а также производительность фильтров в программах для транскодирования и видеоредактирования, которые используют аппаратное ускорение.
Интегрированная графика Skylake поддерживает стандарты DirectX 12 Feature Level 12_1, OpenGL 4.4 и OpenCL 2.0. Решено полностью отказаться от мониторов VGA, зато Skylake GPU поддерживают до трёх мониторов c интерфейсами HDMI 1.4, DisplayPort 1.2 или Embedded DisplayPort (eDP) 1.3.
Аппаратное ускорение декодирования видео доступно графическому драйверу через интерфейсы Direct3D Video API (DXVA2), Direct3d11 Video API или Intel Media SDK, а также через фильтры MFT (Media Foundation Transform).
В графике Gen9 поддерживается аппаратное ускорение декодирования AVC, VC1, MPEG2, HEVC (8 бит), VP8, VP9 и JPEG.
▍Аппаратное ускорение декодирования видео
Кодек | Профиль | Уровень | Максимальное разрешение |
MPEG2 | Main | Main High | 1080p |
VC1/WMV9 | Advanced Main Simple | L3 High Simple | 3840×3840 |
AVC/H264 | High Main MVC & stereo | L5.1 | 2160p(4K) |
VP8 | 0 | Unified level | 1080p |
JPEG/MJPEG | Baseline | Unified level | 16k × 16k |
HEVC/H265 | Main | L5.1 | 2160(4K) |
VP9 | 0 (4:2:0 Chroma 8-bit) | Unified level | ULT, 4k 24fps @15Mbps ULX, 1080p 30fps @10Mbps |
Источник: 6th Generation Intel Processor Datasheet for S-Platforms
Расчётная производительность декодирования видео при аппаратном ускорении составляет более 16 одновременных потоков видео 1080p. Реальная производительность зависит от модели GPU, битрейта и тактовой частоты. Аппаратное декодирование H264 SVC не поддерживается в Skylake.
Аппаратное ускорение кодирования доступно только через интерфейсы Intel Media SDK, а также через фильтры MFT (Media Foundation Transform).
▍Аппаратное ускорение кодирования видео
Кодек | Профиль | Уровень | Максимальное разрешение |
MPEG2 | Main | High | 1080p |
AVC/H264 | Main High | L5.1 | 2160p(4K) |
VP8 | Unified profile | Unified level | — |
JPEG | Baseline | — | 16K×16K |
HEVC/H265 | Main | L5.1 | 2160p(4K) |
VP9 | 8-bit 4:2:0 BT2020 | — | — |
Источник: 6th Generation Intel Processor Datasheet for S-Platforms
Кроме аппаратного ускорения кодирования и декодирования, в графике Gen9 реализовано аппаратное ускорение обработки видео, в том числе следующих функций: деинтерлейсинг, определение каденции, масштабирование видео (Advanced Video Scaler), улучшение детализации, стабилизация изображения, сжатие охвата цветовой гаммы (gamut compression), адаптивное улучшение контраста HD, улучшение оттенков кожи, контроль цветопередачи, шумоподавление в цветовой составляющей канала (chroma de-noise), преобразование SFC (Scalar and Format Conversion), сжатие памяти, LACE (Localized Adaptive Contrast Enhancement), пространственное шумоподавление, Out-Of-Loop De-blocking (для декодера AVC) и др.
Аппаратный транскодер Gen9 поддерживает следующие специфические функции транскодирования:
Источник: 6th Generation Intel Processor Datasheet for S-Platforms
В Gen9 реализована аппаратная поддержка обработки видео с цифровых камер (Camera Processing Pipeline), в том числе отдельные функции этой обработки: баланс белого, восстановление полноцветного изображения с массива цветных фильтров на сенсоре камеры (de-mosaic), коррекция дефективных пикселей, исправление уровня чёрного, гамма-коррекция, устранение виньетирования, конвертер цветового пространства (Front end Color Space Converter, CSC), улучшение цветопередачи (Image Enhancement Color Processing, IECP).
Как программы используют аппаратное ускорение
Чтобы использовать аппаратное ускорение, каждая программа должна явно реализовать поддержку специфических функций Gen9. Многие делают это. Компания Intel публикует в открытом доступе Media SDK 2.0, так что поддержку аппаратного ускорения кодирования и декодирования можно внедрить в любую программу. Кроме того, существуют готовые приложения для транскодирования лайв видео на кодеках Intel, такие как Элекард CodecWorks 990. В отличие от SDK, CodecWorks 990 не требует участия программистов для применения в реальных задачах, уже содержит наиболее популярные профили транскодирования и работать с ним инженеру-не программисту в целом гораздо проще, чем с SDK. Как работают программные транскодеры с аппаратным ускорением — мы расскажем в следующей части.