Ключевые нововведения: AV1, Zero-Copy и AI-аналитика
Компания NVIDIA представила версию 13.1 своего Video Codec SDK. Обновление фокусируется на трех направлениях: повышение эффективности кодирования AV1, оптимизация конвейера транскодирования через zero-copy и предоставление инструментов для точного доступа к кадрам, необходимых в задачах компьютерного зрения и видеомонтажа.
Кодирование: Иерархические B-кадра в AV1
Самое значимое изменение в кодировании — поддержка Hierarchical Reference Mode для кодека AV1. Теперь NVENC поддерживает до 31 B-кадра (вместо прежних 7), организуя их в древовидную структуру. Это позволяет эффективнее использовать временную избыточность видео без падения производительности, хотя и увеличивает потребление видеопамяти.
Также объединены функции iterative encoding и UHQ tuning info. Это позволяет перекодировать отдельные кадры с разными параметрами, используя look-ahead и временную фильтрацию для оптимизации качества. Ниже приведены данные по экономии битрейта при использовании 15 B-кадров:
| Режим кодирования | Сравнение | Экономия битрейта |
|---|---|---|
| Constant Quality (CQ) | Hierarchical Mode (15 B-frames) vs HQ tuning (preset p7) | Значительная (см. Fig. 2 в оригинале) |
| Variable Bitrate (VBR) | Hierarchical Mode (15 B-frames) vs стандартный режим | Значительная (см. Fig. 3 в оригинале) |
Транскодирование: Zero-Copy и архитектура на очередях
Конвейер транскодирования полностью переработан. Теперь поддерживается zero-copy transcode с использованием общих буферов CUDAarray. Это означает, что данные не копируются между памятью декодера (NVDEC) и кодировщика (NVENC), что снижает нагрузку на шину памяти и SM, повышая пропускную способность.
Примеры приложений переписаны с использованием модульной архитектуры на основе очередей. Для упрощения развертывания NVIDIA также предоставляет официальный Docker-контейнер для разработки.
Декодирование: Статистика на уровне макроблоков
API NVDECODE теперь предоставляет детализированную статистику для каждого макроблока (16x16 пикселей) при декодировании H.264 и HEVC. Без дополнительной нагрузки на CPU разработчики получают доступ к:
- Параметру квантования (QP) для люминанса.
- Типу кодирования (Intra, Inter, Skip, PCM).
- До двух векторов движения (forward/backward).
Эти данные позволяют выполнять GPU-ускоренный видеоанализ: обнаружение сцен, отслеживание объектов и анализ границ кадров, минуя медленное парсинг битстрима на CPU.
Точный поиск кадров (Frame-Accurate Seek)
Для задач AI (инференс, подготовка датасетов) и нелинейного монтажа введен класс NvVideoDecoder с поддержкой точного поиска. Архитектура aware к GOP (Group of Pictures) работает следующим образом:
- SDK находит ближайший IDR-кадр перед целевым кадром N.
- Декодер сбрасывает состояние и начинает декодирование с IDR.
- Необязательные для отображения кадры пропускаются или декодируются в обход постобработки.
- Полный цикл декодирования и маппинга выполняется только для целевого кадра N.
Это обеспечивает доступ к произвольным кадрам с эффективностью, близкой к последовательному декодированию, но с минимальными затратами ресурсов.
Источник: NVIDIA dev blog ↗
