видеокодек vp9 что это
Видеокодек 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 я как-нибудь напишу отдельный пост. А пока, на этом всё. Спасибо за внимание 🙂
На правах автора хочу напомнить, что у нас есть группа вк и телеграм-чат, где можно пообщаться на компьютерную и сетевую тематику.
Битва кодеков 2016. AVC vs. HEVC vs.VP9
Какой кодек стоит выбрать для видео-трансляций? По мнению руководителя отдела цифровых медиа консалтинговой компании Frost & Sullivan, Анви Рамбиа нет смысла выбирать кодек в отрыве от всей экосистемы. На конференции Streamingmedia East она анализировала сегодняшние ниши применения кодеков и перспективы изменения их рыночных позиций на ближайшие годы. Предлагаемый материалы по существу является изложением ее доклада, а пояснения и дополнения Медиа-Спутника выделены курсивом и цветом.
Анви Рамбиа
В то же время, если стоит задача доставки видео с разрешением HD или ниже, резонов думать об использовании HEVC пока нет.
И еще — кодеры HEVC пока медленные. Транскодирование в HEVC в реальном времени сегодня если и выполняется, то с неэффективной тратой компьютерных ресурсов.
А в сетях профессиональной доставки живого вещания в 4К до сих пор используются связки из четырех синхронизированных AVC кодеров, каждый из которых кодирует свой квадрант. Некоторые производители, такие как Ericsson и Imagine, уже подготовили HEVC кодеры с реально низкой задержкой. Их применение в точках формирование сигнала будет большим шагом в упрощении инфраструктуру доставки HEVC сигналов. Одновременно отрабатываются и транскодеры реального времени для формата 4K.
HEVC Оборудование
С другой стороны, надо иметь в виду, что аппаратные кодеры на ASIC сегодня сохраняют актуальность только для вещательных сетей, для ОТТ это устаревшая концепция. Поэтому большинство продаваемых последнее время кодеров реализованы программно, хотя часто с аппаратными акселераторами. В будущем они могут быть перепрограммированы не только по разрешению, но и по системе компрессии. В условиях сегодняшней неопределенности это дает необходимую гибкость выбора кодека в будущем.
VP9?
Напомним, что VP9 безлицензионный кодек c открытым кодом, разработанный Google. Его последняя версия была представлена в 2013 году и включена в браузеры Google Chrome и Chromium.
По оценке Анви Рамбиа VP9 для стриминга более эффективен, чем AVC, но его основная проблема в том, что он не интегрирован с DRM и соответственно не подходит для доставки премиального контента.
Приведем здесь основные выводы:
— Кодеки следующего поколения ( HEVC и VP9) обеспечивают 50% снижение битрейта по сравнению с AVC. В то же время такой результат требует в 10-20 раз больше процессорного времени
— Декодер ffvp9 по производительности намного превосходит остальные протестированные декодеры.
По словам Анви Рамбиа VP9 сейчас активно используется в корпоративных сетях и в системе видеоконференций от Google ( видимо имеются в виду Google Hangouts и платная платформа Chromebox for meeting). Недавно Google усовершенствовал возможности масштабирования ( Scalible Video Coding) VP 9, что делает прямым конкурентом AVC в сфере видео- конференций Microsoft включил VP 9 декодер в свой Edge браузер и скоро добавит в свою систему видеоконференций. В тестовом режиме его также поддерживают Mozilla Firefox и VLC.
VP9 уже два года поддерживается YouTube, а этой осенью для сжатия контента загружаемого для off-line просмотра этот кодек начал использовать Netflix. Это в определенной мере гарантирует жизнеспособность формата и снижает риски внедрения в корпоративном секторе.
Что касается приемных устройств, то кроме ПК с упомянутыми браузерами, VP9 на уровне ОS поддерживаетcя платформой Android, начиная с версии 4.4 «KitKat». В то же время платформа IOS этот кодек не поддерживает и не очень понятно будет ли, так как в Apple пока не собираются отказываться от связки HLS + AVC.
Но, несмотря на распространение VP 9 в Интернете и корпоративных сетях, Анви Рамбиа пока не видит оснований рассматривать этот кодек как конкурента HEVC в вещательных сетях. В первую очередь, из-за отсутствия декодеров, защищенных на аппаратном уровне, отсутствия метаданных, необходимых для защиты и реализации других функции платного ТВ. Кроме того, VP9 еще более медленный, чем HEVC и активных работ для повышения его быстродействия не наблюдается.
HEVC и VP9 какой кодек лучше?
Недавно компания Google предприняла очередной шаг в борьбе с Apple, отказавшись поддерживать YouTube через браузер Safari, если яблочники не примут новый формат для видеороликов VP9 4K. Появился повод вспомнить, что формат WebM, основанный на открытых кодеках VP8 и VP9, продвигается Гуглом в качестве альтернативы или даже замены платных стандартов H.264 и H.265 (множество патентов на которые держит, в частности, Apple). Они же AVC и HEVC соответственно. Вот и получается, что VP9 против HEVC. А отсюда и интерес получить прямой ответ на вопрос, какой же кодек лучше HEVC или VP9. Если, конечно, такой вопрос правомерен. Приведём краткое описание обеих кодеков.
VP9 против HEVC
Основной целью разработки нового алгоритма сжатия (именно нового, а не модернизации широко использующегося h.264) было получить при том же качестве картинки битрейт, вполовину меньший, чем этого требовал предшествующий кодек.
Само собой разумеется, это не должно было вылиться в существенное усложнение процессора, производящего обработку видеосигнала. Задача была выполнена, и в 2012 году появились первые программные декодеры. Помимо сниженного битрейта, кодек имеет ещё несколько существенных особенностей:
1. Увеличенный в 16 раз допустимый размер блока дал возможность эффективно обрабатывать изображения высокого разрешения, вплоть до 8К (8192х4120 пикселей).
2. Инновационное распараллеливание декодирования может оценить каждый, имеющий компьютер с многоядерным процессором (процессорами).
3. Граничный профиль Main 10 кодека поддерживает глубину цвета 10 бит.
4. Произвольный доступ к кадру не так важен для редактирования или просмотра видео, но критичен, например, для систем видеобезопасности, поскольку воспроизведение в этом случае может начаться с любого кадра изображения. Необходимости декодировать для этого какие-то предшествующие фрагменты нет.
В принципе глобальные особенности перечислены. Упомянем ещё одну проблему-проблемку, наверняка решаемую. Она связана с отсутствием качественных одночиповых кодеров HEVC. Качественных – значит, способных обеспечить продолжительную стабильную работу с потоками максимального разрешения.
Это, можно сказать, одна из основных причин далеко не революционного перехода на новый кодек h.265. И отбросив в сторону рассуждения о маркетологических трюках, скажем по правде, ещё и у h.264 ресурс не исчерпан, а тут уже вроде как задача поставлена о промышленном внедрении нового стандарта…
Но несмотря ни на что, на любое действие всегда находится противодействие – таков закон. Поэтому столь же усиленно продвигается и новый, патентно не обременённый, а значит, бесплатный кодек VP9.
Теперь компания Google хочет ускорить внедрение собственного конкурирующего с HEVC формата VP9. Ведь широкомасштабное принятие H.265 застопорилось до недавнего времени из-за проблем с лицензированием, и многие из производителей оборудования и контента довольствовались временным прибежищем на H.264 и его конкуренте с открытым исходным кодом MP4.
VP9 точно так же имел перед собой целью сократить битрейт в 2 раза по сравнению с VP8, своим предшественником. Сверхзадача – обогнать ХЕВК в эффективности сжатия. В связи с этим посмотрим на кодек с точки зрения особенностей h.265:
1. Размер блоков также увеличен по отношению к VP8. Но эффективность кодировки обеспечивается возможностью рассмотрения неквадратных блоков. Хорошо? Прекрасно! Только вот вариантов предсказания перераспределения пикселей в блоке всего 10. Ну куда тут против 35 у HEVC… Т.о. главное преимущество разработки практически сводится на нет у VP9 в отношении как бы конкурента.
2. Как современный кодек, VP9 просто обязан поддерживать параллельную обработку.
3. Поддержка стандартизированного HDR пока только на стадии рассмотрения.
Итоги сравнений
Что можно сказать после беглого взгляда на оба кодека? Вопрос, какой кодек лучше, HEVC или VP9, пока неактуален. Пока что разные задачи решают компании, создающие эти стандарты. Для h.265 главная задача стать отраслевым эталоном, внедрённым практически во все виды оборудования. В этом плане есть определённая уверенность, что всё больше и больше устройств будут снабжаться аппаратной поддержкой hevc декодирования.
VP9 очень скоро был определён компанией Google как нишевый, можно сказать, стандарт для потокового вещания, в т.ч. и для видеоконференций. Благодаря «агрессивной» политике Гугл, кодек будет использоваться для просмотра видео скорее всего во всех браузерах, а иначе Ютуба не видать!
Что тут комментировать, когда уже Netflix ведёт трансляции с использованием этого кодека. Единственная загвоздка – слабое обеспечение DRM. В итоге имеем два разных кодека, дающих в принципе, одинаковые результаты в части качества картинки, но идущие к этому качеству своими собственными путями.
H.265 vs VP9: раскладываем по полочкам информацию о кодеках
Данные кодеки соревнуются за право стать форматом компрессии видео следующего поколения, вдвое превосходя по своей эффективности действующий отраслевой стандарт – H.264. Они будут иметь решающее значение для определения способов доставки 4K/Ultra HD контента на наши телевизоры, персональные компьютеры и планшеты ближайшие несколько лет. Помимо этого, они могут ускорить и облегчить загрузку и потоковую трансляцию HD-видео на медленных соединениях благодаря способности вдвое уменьшать размер файлов с 720p и 1080p видео.
К тому же кодеки H.265 и VP9 являются вполне совместимыми и с 8К-контентом, что делает их, по большому счёту, одной из основ будущего мира телевидения и видео в эпоху отмирания физических носителей. Вот почему они так важны.
Кодек H.265 изначально разрабатывался как HEVC (данную аббревиатуру следует расшифровывать как «High Efficiency Video Coding» – «Высокоэффективное кодирование видео») совместными усилиями двух известных альянсов — Video Coding Experts Group (VCEG) и Moving Picture Experts Group (MPEG). В апреле 2013 года HEVC был официально утверждён в качестве кодека, который должен прийти на смену H.264. Как и в случае с H.264, разработчики программного обеспечения и производители оборудования должны получать за определённую плату лицензии на использование кодека. Более подробно о процессе лицензирования HEVC мы писали в статье «Новые лицензионные сборы делают будущее HEVC туманным».
В то же время, кодек VP9 имеет открытый исходный код и его использование не требует уплаты роялти. Он был разработан компанией Google в качестве преемника кодека VP8 – относительно успешной альтернативы H.264. В процессе разработки кодек VP9 носил рабочее имя «NGOV» (Next Gen Open Video – Открытое видео нового поколения), и компания Google уже включила его поддержку в браузеры Chrome, а также в YouTube.
Совершенно не так, как вы, наверное, себе это представляете. В то время, как принцип формата 4К заключается в увеличении качества картинки за счёт уменьшения размера отдельных пикселей её формирующих, кодек H.265 по сути делает эти пиксели большими, дабы уменьшить битрейт (и, соответственно, размер файла). При воспроизведении же файла данный кодек проделывает с видео целую серию трюков, возвращая назад все необходимые детали.
В частности, H.264 может взять макроблок размером 16х16 пикселей и провести девять «направленных интрапредсказаний» или же обоснованных предположений, которые позволяют перестроить пиксели внутри каждого из блоков. Кодек H.265 может взять суперблок размером 64х64 и провести 35 «направленных интрапредсказаний», дабы перестроить пиксели в нём. Подобно кодеку H.264, кодек H.265 изменяет размер обрабатываемых блоков. К примеру, он может использовать намного меньшие блоки (до 4х4 пикселей), формирующие такие детализированные фрагменты изображения, как черты лица, и блоки большего размера для отображения неба или относительно однородного фона.
Кодек VP9 в целом делает то же самое. Он также может захватывать суперблоки размером 64х64, однако, в отличие от H.265, они не обязательно должны быть квадратными, а, стало быть, кодек для большей эффективности обработки берет блоки размером 64х32 или 4х8. С другой стороны, он имеет лишь 10 вариантов предсказания для их перестройки. Циники утверждают, что достоинство использования VP9 вместо H.265 состоит лишь в возможности избежать нарушения авторских прав.
Само собой разумеется, что для всех этих преобразований обеим стандартам требуются большая мощность процессора в сравнении с H.264 и VP8. Однако, учитывая тот факт, что мощности процессоров всё же значительно выросли с момента запуска данных кодеков в 2003 и 2008 годах соответственно, это не такая уж большая проблема.
Для начала скажем, что мы, в общем-то, сейчас сильно упрощаем теорию по данным форматам, однако несмотря на то, что в итоге они позволяют получать файлы примерно одинакового размера, первые отзывы экспертов говорят о том, что кодек H.265 обеспечивает более высокое качество видео, а VP9 больше подходит для потоковой трансляции видео.
Большее количество вариантов предсказания даёт кодеку H.265 преимущества визуально, но, в то же самое время, кодек VP9 устанавливает более строгие правила декодирования, что делает получаемые потоки более последовательными и надёжными. Эти различия дают возможность понять, на что же именно обращали внимание создатели кодеков в первую очередь. Впрочем, официально обе стороны утверждают, что предлагаемые ими стандарты не имеют недостатков.
Сравнение H.265 и VP9 подобно сравнению HDMI и DisplayPort в том смысле, что отсутствие необходимости уплачивать роялти за VP9 и DisplayPort должно давать им определённые преимущества, но богатые истории предшественников H.265 и HDMI указывают на то, что они должны иметь более широкую поддержку в отрасли. Ранее это сделало H.264 победителем в борьбе за лидерство с VP8.
На этот раз схватка ожесточённее. Компания Google использовала различные технологические выставки для того, чтобы продемонстрировать тот факт, что кодек VP9 уже получил поддержку компаний LG, Panasonic, Sony, Samsung, Toshiba, Philips, Sharp, ARM, Intel, Nvidia, Qualcomm, Realtek Semiconductor и Mozilla. Как мы упоминали выше, компания Google таже встроила поддержку кодека VP9 в свой браузер Chrome и в платформу YouTube.
Однако обратной стороной медали является то, что упомянутые компании также поддержали кодек H.265, и даже компания Google обеспечит его поддержку в браузере Chrome, а также не исключает поддержки на платформе YouTube.
Соответственно, большая часть компаний склоняется к тому, чтобы поддержать оба формата, а стало быть, в итоге мы получим ситуацию, сходную с аудиоплеерами: сложно найти плеер, который бы не поддерживал как MP3, так и AAC.
Следует ли переживать относительно поддержки форматов?
На фоне упадка физических носителей и усиления 4K/Ultra HD ещё не было большего давления на новые стандарты компрессии видео для доставки контента. К счастью, оба формата хороши, пусть и немного по-своему и, в отличие от форматных войн прошлого, очень похоже на то, что в итоге они оба займут своё место под солнцем, поскольку в отрасли, скорее всего, не готовы ни к тому, чтобы всецело зависеть от уплаты лицензионного сбора, ни к тому, чтобы броситься в объятия к 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. Как работают программные транскодеры с аппаратным ускорением — мы расскажем в следующей части.