Nvidia NVENC (сокращение от Nvidia Encoder) [1] — это функция в видеокартах Nvidia , которая выполняет кодирование видео , перекладывая эту ресурсоемкую задачу с центрального процессора на выделенную часть графического процессора . Она была представлена в серии GeForce 600 на базе Kepler в марте 2012 года (GT 610, GT620 и GT630 — это архитектура Fermi). [2] [3]
Кодер поддерживается многими программами для прямой трансляции и записи, такими как vMix , Wirecast , Open Broadcaster Software (OBS) и Bandicam , а также приложениями для редактирования видео, такими как Adobe Premiere Pro или DaVinci Resolve . Он также работает с Share game capture, который включен в программное обеспечение GeForce Experience от Nvidia. [4] [5] [6]
До марта 2023 года потребительские видеокарты GeForce официально поддерживали не более трех одновременно кодирующих видеопотоков, независимо от количества установленных карт, но это ограничение можно обойти в системах Linux и Windows , применив неофициальный патч к драйверам . Это также разблокирует NVIDIA Frame Buffer Capture (NVFBC) , быстрый API захвата рабочего стола , который использует возможности графического процессора и его драйвера для ускорения захвата. [7] Профессиональные карты поддерживают от трех до неограниченного количества одновременных потоков на карту, в зависимости от модели карты и качества сжатия, [2] ограничения были ослаблены в 2023 году, позволяя одновременно кодировать до 5 видеопотоков. [8] С января 2024 года восемь одновременных видеопотоков кодирования стали базовым уровнем. [9]
Чипы Nvidia также оснащены встроенным декодером NVDEC (сокращение от Nvidia Dec oder ), чтобы перенести декодирование видео с центрального процессора на выделенную часть графического процессора. [2]
NVENC претерпел несколько аппаратных изменений с момента своего появления с первым графическим процессором Kepler (GK104). [10]
Первое поколение NVENC, которое используется во всех графических процессорах на базе Kepler , поддерживает высококлассный H.264 (YUV420, кадры I/P/B, CAVLC/CABAC), временное кодирование H.264 SVC VCE и режим кодирования дисплея (DEM).
В документации NVidia указана пиковая пропускная способность кодировщика 8× в реальном времени при разрешении 1920×1080 (где базовый уровень «1×» равен 30 Гц). Фактическая пропускная способность зависит от выбранной предустановки, контролируемых пользователем параметров и настроек, а также тактовых частот графического процессора/памяти. Опубликованный рейтинг 8× достигается с высокопроизводительной предустановкой NVENC, которая жертвует эффективностью и качеством сжатия ради пропускной способности кодировщика. Высококачественная предустановка значительно медленнее, но создает меньше артефактов сжатия
Представленное в архитектуре Maxwell первого поколения , второе поколение NVENC добавляет поддержку высокопроизводительного профиля HP444 (YUV4:4:4, предиктивное кодирование без потерь) и увеличивает пропускную способность кодера до 16× в реальном времени, что соответствует примерно 1080p при 480 Гц с предустановкой высокой производительности.
Maxwell GM108 не поддерживает аппаратный кодер NVENC.
Представленное с архитектурой Maxwell второго поколения, третье поколение NVENC реализует алгоритм сжатия видео High Efficiency Video Coding (он же HEVC, H.265), а также увеличивает пропускную способность кодера H.264 для покрытия разрешения 4K при 60 Гц (2160p60). Однако он не поддерживает B-кадры для кодирования HEVC (только I и P-кадры ). Максимальный размер блока дерева кодирования HEVC NVENC (CU) составляет 32 (стандарт HEVC допускает максимум 64), а минимальный размер CU составляет 8.
В кодировании HEVC также отсутствует Sample Adaptive Offset (SAO). Адаптивное квантование, управление скоростью с упреждением, адаптивные B-кадры (только H.264) и адаптивные функции GOP были добавлены с выпуском Nvidia Video Codec SDK 7. [14] Эти функции полагаются на ядра CUDA для аппаратного ускорения.
SDK 7 поддерживает две формы адаптивного квантования: пространственное AQ ( H.264 и HEVC) и временное AQ (только H.264).
Потребительские карты Nvidia (GeForce) и некоторые из ее младших профессиональных карт Quadro ограничены тремя одновременными заданиями кодирования. Более старшие карты Quadro не имеют этого ограничения.
Четвертое поколение NVENC реализует аппаратное кодирование HEVC Main10 10-бит. Оно также удваивает производительность кодирования 4K H.264 и HEVC по сравнению с предыдущим поколением NVENC. Оно поддерживает HEVC 8K, 4:4:4 цветовую субдискретизацию , кодирование без потерь и адаптивное смещение выборки (SAO).
В Nvidia Video Codec SDK 8 добавлена эксклюзивная для Pascal функция Weighted Prediction ( на основе CUDA ). Weighted Prediction не поддерживается, если сеанс кодирования настроен с B-кадрами (H.264).
Для кодирования HEVC поддержка B-Frame отсутствует , а максимальный размер CU составляет 32×32.
NVIDIA GT 1030 и Mobile Quadro P500 — это чипы GP108, которые не поддерживают кодер NVENC. [11]
В графических решениях для ноутбуков NVIDIA MX Graphics не включает NVENC, поскольку они основаны на чипе GM108 поколения Maxwell или чипе GP108 поколения Pascal. [15] GeForce MX350 — это чип GP107, кодер NVENC которого отключен во время производства.
Volta NVENC имеет такую же производительность, как и Pascal NVENC. [1]
Он не поддерживает HEVC B-Frames.
В мобильной графике, как и большинство других графических карт серии GeForce MX, GeForce MX450 не поддерживает NVENC, поскольку это чип TU117, аппаратный кодер которого постоянно отключается при производстве. Однако GeForce MX550 поддерживает NVENC, поскольку его аппаратный кодер остается включенным на уровне производства.
Шестое поколение NVENC реализует кодирование HEVC 8K со скоростью 30 FPS, HEVC B-кадры и HEVC B-кадры в качестве эталона (с поддержкой каждого и среднего режимов [16] ) и поддержку Alpha HEVC [17] и обеспечивает экономию битрейта до 25% для HEVC и экономию битрейта до 15% для H.264. Однако первоначальный запуск Nvidia GeForce GTX 1650 был исключен из этого поколения, поскольку он использовал Volta NVENC вместо Turing. Nvidia обновила кодировщик NVENC карт GTX 1650 в 2020 году, чтобы также использовать движок Turing. [18] GTX 1650 Super использует движок Turing NVENC, поскольку он основан на TU116, а не на TU117, используемом в оригинальной GTX 1650. [19]
Ampere по сути имеет тот же самый движок генерации NVENC, что и Turing. [20] Единственное существенное отличие заключается в том, что NVDEC получил поддержку декодирования AV1 (с зернистостью пленки).
В мобильной графике начального уровня GeForce MX570 на базе чипа GA107 выпускается в двух версиях, в одной из которых (GeForce MX570 A) аппаратный декодер и кодер навсегда отключены во время производства.
Nvidia анонсировала следующее поколение NVENC с фиксированным аппаратным кодером AV1 8K 10 бит 60FPS в графических процессорах Ada Lovelace . [21] [22]
Ядро Nvidia NVENC SIP должно поддерживаться драйвером устройства . Драйвер предоставляет один или несколько интерфейсов (например, OpenMAX IL ) для NVENC. Доступ к ядру NVENC SIP возможен только через фирменный API NVENC (в отличие от API VDPAU с открытым исходным кодом ).
Он входит в комплект драйвера GeForce от Nvidia .
NVENC доступен для операционных систем Windows и Linux. [2] Бесплатный и открытый драйвер устройства nouveau не поддерживает Nvidia NVENC. [23]
Сравнение пропускной способности кодирования [37] [ необходима ссылка ]