Инструменты Intel для создателей видео кодеков
На Хабре в блоге Intel регулярно появляются статьи с описанием технологий и инструментов, созданных в стенах Intel. Многие из них так или иначе связаны с обработкой и анализом видео и изображений. Это такие продукты как, например, Intel Media Server Studio или Intel RealSense. Однако, существует набор инструментов, не так широко представленных в медиа пространстве, но не менее значимых для такой категории разработчиков, как создатели медиа кодеков. Именно этот пробел мы и попытаемся восполнить в данном топике. Речь пойдет про Intel Video Pro Analyzer (Intel VPA) и Intel Stress Bitstreams and Encoder (Intel SBE), а также про те возможности, что скрываются за этими названиями.
Для начала определимся с предметом, сущностью, с которой работают вышеназванные инструменты. Это битовые стримы. Битовый стрим — это то, что получается после того, как отработал видео энкодер. Битовый стрим — это поток битов, отвечающий спецификации того или иного кодека. Если мы заглянем в спецификацию большинства кодеков, то увидим, что этот битстрим представляет из себя ничто иное как набор синтаксических элементов данного кодека различной длины. Это, к примеру, ширина и высота картинки, профиль кодирования, коэффициенты трансформации, различные битовые флаги и т.д. Для стандарта HEVC это сотни синтаксических элементов. После кодирования эти битовые стримы доходят до пользователей, помещенные в различные медиа контейнеры — avi, mp4, mpeg ts и т.д. Но разработчики кодеков в основном работают именно с битовыми стримами. Разработчики ПО, дизайнеры, инженеры — электронщики, тестеры имеют свои инструменты для работы. Почему же разработчикам кодеков их не иметь?
Итак, как же Intel Video Pro Analyzer и Intel Stress Bitstreams and Encoder могут упростить жизнь разработчикам кодеков? Начем с Intel Video Pro Analyzer.
Intel Video Pro Analyzer представляет собой приложение, которое умеет визуализировать информацию, скрытую в недрах кодека и просматривать весь его синтаксис. Так, для HEVC это синтаксис начиная от параметров заголовков (VPS, SPS, PPS) и заканчивая блоками трансформации (TU), блоками прогноза (PU) и блоками кодирования (CU).
Intel Video Pro Analyzer сможет обнаружить проблемы, связанные с отклонением от стандарта и указать на конкретный блок или проблемный синтаксический элемент. Такая возможность очень сильно облегчает жизнь разработчиков, реализующих современные видео кодеки. Если вы изучаете кодеки, то сможете посмотреть его структуру, увидеть наглядно вектора движения и дерево разбиения конкретного блока. При этом, выбрав каждый элемент, вы сможете перейти к его описанию в стандарте. Существует еще одно важное применение для Intel Video Pro Analyzer: это приложение — большое иллюстрированное пособие, которое может заменить чтение стандарта на этапе изучения/ознакомления с технологиями кодирования. Столь удобная навигация по стандарту может сильно ускорить изучение как самого стандарта, так и технологий кодирования видео. В настоящее время Intel Video Pro Analyzer поддерживает следующие кодеки: HEVC (включая RExt, SCC, Multiview и SHVC), VP9, MPEG2, AVC. Так же он умеет открывать стримы, упакованные в контейнеры MPEG2-TS, MP4, MKV, MMT и MPEG4-DASH. Intel Video Pro Analyzer позволяет оценить качество кодирования, использую PSNR метрику, обеспечить соответствие стандарту, а так же поддерживает технологию HRD (Hypothetical Reference Decoder).
Итак, у нас есть удобный инструмент для визуализации синтаксиса кодека, позволяющий быстро найти ошибки в его реализации. Следующий инструмент, ускоряющий создание кодека это Intel Stress Bitstreams and Encoder. Этот инструмент создан для быстрой отладки реализаций кодеков. По сути Intel Stress Bitstreams and Encoder представляет собой энкодер, который обеспечивает наибольшее покрытие синтаксиса кодека путем его рандомизации. На выходе мы получим стримы, который в отличии от обычных стримов обеспечивают максимальную комбинацию различных значений элементов синтаксиса. Intel Video Pro Analyzer на этих стримах покажет примерно такую картинку:
Intel Stress Bitstreams and Encoder поддерживает следующие кодеки: HEVC, SHVC, VP9, AVS2. Кроме этого, Intel Stress Bitstreams and Encoder позволяет создавать так называемые broken стримы, содержащие заведомо неверные значения элементов синтаксиса и моделирующие основные проблемы передачи стримов в сети, такие как потеря пакетов, инверсия битов и т.д. Это позволяет очень быстро создать собственные обработчики нештатных ситуаций и повысить качество кодеков. Отчет о работе этих инструментов позволяет оценить качество покрытия синтаксиса и выглядит примерно так:
Итак, все вышеописанные инструменты позволяют ускорить выход кодеков на рынок и повысить их качество. Кроме этого, они содержат в себе множество других полезных инструментов и возможностей для отладки и оптимизации как энкодеров так и декодеров. Если вы хотите изучить технологии, которые используются в видео кодировании, то Intel Video Pro Analyzer может помочь вам значительно ускорить этот процесс и показать наглядно синтаксис кодека и то, как элементы «упаковываются» в стрим.
Спасибо за внимание.