Транскодирование и Quick Sync

14.12.2022 | Станции

В последние годы транскодирование видео стало одним из самых распространенных потребителей процессорных мощностей. Популярность YouTube, TiкTok и т.д. превратила почти каждого, у кого есть веб-камера, в продюсера, а ПК - в станцию видеомонтажа. Мобильная революция привела к тому, что львиная доля хранения/потребления видео приходится на мобильные телефоны и планшеты. Никому не придет в голову хранить на телефоне образ  Blu-ray диска с полным битрейтом/разрешением, поэтому, если вы хотите носить с собой фильмы и телепередачи высокого качества, придется перекодировать их в более сжатый формат.

На высоком уровне перекодирование видео включает в себя получение сжатого видеопотока и его дальнейшее сжатие для лучшего соответствия возможностям хранения и декодирования целевого устройства. Это именно транскодирование, а не кодирование, поскольку исходный материал почти всегда уже закодирован в каком-то сжатом формате. Наиболее распространенным в наши дни является AVC/VP9/HEVC/AV1.

Аппаратное транскодирование

Технически, все транскодирование сводится к работе программного обеспечения. Когда говорят об аппаратном транскодировании, имеют в виду использование выделенного оборудования (обычно графического процессора) для ускорения процесса. Это снижает нагрузку на CPU, позволяя выделять его ресурсы другим приложениям. Как правило, аппаратное перекодирование выполняется быстрее и эффективнее, чем программное. Однако более важно то, что у аппаратного перекодирования больше ограничений и проблем совместимости, чем у программного.

Транскодирование - достаточно ресурсоемкая задача для процессора из-за трехмерной природы сжатия. Сжат может быть каждый отдельный кадр видео, но последовательные кадры обычно содержат много одинаковых элементов, поэтому алгоритмы сжатия рассматривают данные, повторяющиеся как во времени, так и в пространстве.

Первым шагом процесса транскодирования видео является декодирование исходника. Поскольку видео берется в уже сжатом формате и перекодируется в новый, ключевое значение имеет аппаратное ускорение декодирования видео.

Продуктивность механизма декодирования имеет первостепенное значение  по двум причинам. Если для воспроизведения нам нужно декодировать только быстрее, чем частота кадров видео, то при транскодировании механизм декодирования видео должен работать как можно быстрее. Чем быстрее кадры могут быть декодированы, тем быстрее они могут быть переданы в механизм транскодирования. Второй и менее очевидный момент заключается в том, что обратная операция –кодирования видео концептуально и структурно схожа с прямой операцией поэтому для обеих задач можно использовать одно и то же «оборудование».

Как это работает

«Оборудование» - это комбинация  дискретного  косинусного преобразования (ДКП) для внутрикадровой компрессии, алгоритма  компенсации движения и энтропийного кодирования Хаффмана.

Разбивка исходного изображение на блоки пикселов (на практике 8х8 либо 16х16) сокращает сложность вычислений ДКП и векторов движений что позволяет реализовать эти вычисления на матрице программируемых однопоточных Unified Execution Units (EU).

 

 

Путь Intel

Матрицы EU появились уже в первом поколении процессоров Intel Core – компания прекрасно понимала важность обработки видео. По мере специализации на пути к скорости и эффективности перешли от универсальных EU к специализированным, с фиксированными функциями . Вместе с микроархитектурой Sandy Bridge процессоров Core второго поколения была представлена аппаратная технология Intel для кодирования и декодирования видео Intel Quick Sync, интегрированная в графическое ядро iGPU. C тех пор декодирование видео полностью осуществляется аппаратными средствами с фиксированными функциями. Это неидеально с точки зрения гибкости (например, новые видеокодеки не могут быть полностью аппаратно ускорены на существующем оборудовании), но это самый эффективный и экономичный метод построения видеодекодера с точки зрения энергопотребления и производительности.

 

 

Графическое ядро iGPU на сегодняшний день прошло путь в 12 поколений. На справочном ресурсе ark.intel.com перечислены процессоры , поддерживающие Quick Sync. С каждой новой версией Quick Sync прибавлял в скорости, разрешении, обрастал количеством кодеков и внушительным функционалом предварительной обработки видео. iGPU процессоров Alder Lake может одновременно кодировать 16 и более потоков @1080P. Сущий зверь. Реальная производительность зависит от номинала процессора, битрейта потока, частоты памяти.

Intel приводит список поддерживаемых кодеков.

Не только Intel, AMD и NVIDIA реализовали в своих GPU аппаратное обеспечение для декодирования видео с фиксированными функциями. Никто не полагается на шейдерные ядра для ускорения декодирования видео. Сравнительные тесты показывают, что платформы Intel производительны (и при всем при том  экономичны). Так в тесте с исходным форматом H.264 6-ядерный процессор Intel Core i5 10600K не уступал 32-ядерному AMD Threadripper 3970X. Еcли вы работаете с большим количеством носителей H.264/H.265 и хотите минимизировать время экспорта, можно полагаться на Quick Sync.

Поначалу транскодирование Quick Sync от Intel поддерживали только два приложения: Media Espresso 6 от Cyberlink и Media Converter 7 от Arcsoft. Как только Intel сделала общедоступным  набор разработчика Intel  Media Software Development Kit и приложила усилия к его популяризации, поддержка Quick Sync стала стандартом для ПО кодирования/ транскодирования и обработки видео. Неполный список «клуба»:  Wowza Streaming Engine, MainConcept, Noisypeak, Handbrake, Adobe Premiere Pro, Blackmagic DaVince Resolve, Grass Valley Mync.