NVIDIA VIDEO ENCODER 5.0



Similar documents
HIGH-PERFORMANCE GPU VIDEO ENCODING ABHIJIT PATAIT SR. MANAGER, NVIDIA

AGENDA. Overview GPU Video Encoding NVIDIA Video Encoding Capabilities. Software API Performance & Quality. Kepler vs Maxwell GPU capabilities Roadmap

GRID SDK FAQ. PG January Frequently Asked Questions

HIGH PERFORMANCE VIDEO ENCODING WITH NVIDIA GPUS

Whitepaper. NVIDIA Miracast Wireless Display Architecture

NVIDIA GeForce GTX 580 GPU Datasheet

Technical Brief. DualNet with Teaming Advanced Networking. October 2006 TB _v02

NVIDIA GeForce Experience

NVIDIA Tesla Compute Cluster Driver for Windows

NVIDIA CUDA GETTING STARTED GUIDE FOR MICROSOFT WINDOWS

Technical Brief. Introducing Hybrid SLI Technology. March 11, 2008 TB _v01

Technical Brief. NVIDIA nview Display Management Software. May 2009 TB _v02

Intel Media SDK Library Distribution and Dispatching Process

REMOTE HIGH FIDELITY VISUALIZATION. May 2015 Jeremy Main, Sr. Solution Architect GRID

NVIDIA GeForce GTX 750 Ti

Black-Scholes option pricing. Victor Podlozhnyuk

Cloud Gaming & Application Delivery with NVIDIA GRID Technologies. Franck DIARD, Ph.D. GRID Architect, NVIDIA

NVIDIA GRID 2.0 ENTERPRISE SOFTWARE

NVIDIA CUDA GETTING STARTED GUIDE FOR MAC OS X

TESLA K10 GPU ACCELERATOR

XID ERRORS. vr352 May XID Errors

NVIDIA NVIEW DESKTOP MANAGEMENT SOFTWARE

NVIDIA GRID OVERVIEW SERVER POWERED BY NVIDIA GRID. WHY GPUs FOR VIRTUAL DESKTOPS AND APPLICATIONS? WHAT IS A VIRTUAL DESKTOP?

NVIDIA CUDA GETTING STARTED GUIDE FOR MAC OS X

Power Benefits Using Intel Quick Sync Video H.264 Codec With Sorenson Squeeze

Alberto Corrales-García, Rafael Rodríguez-Sánchez, José Luis Martínez, Gerardo Fernández-Escribano, José M. Claver and José Luis Sánchez

QUADRO POWER GUIDELINES

GRID VGPU FOR VMWARE VSPHERE

DUAL MONITOR DRIVER AND VBIOS UPDATE

GRID LICENSING. DU April User Guide

TESLA K20X GPU ACCELERATOR

QUADRO AND NVS DISPLAY RESOLUTION SUPPORT

CLOUD GAMING WITH NVIDIA GRID TECHNOLOGIES Franck DIARD, Ph.D., SW Chief Software Architect GDC 2014

NVIDIA Jetson TK1 Development Kit

NVIDIA GRID K2 GRAPHICS BOARD

TESLA K20 GPU ACCELERATOR

Intel Media SDK Features in Microsoft Windows 7* Multi- Monitor Configurations on 2 nd Generation Intel Core Processor-Based Platforms

TESLA M2075 DUAL-SLOT COMPUTING PROCESSOR MODULE

Binomial option pricing model. Victor Podlozhnyuk

NVIDIA GRID DASSAULT CATIA V5/V6 SCALABILITY GUIDE. NVIDIA Performance Engineering Labs PerfEngDoc-SG-DSC01v1 March 2016

Intel Media Server Studio - Metrics Monitor (v1.1.0) Reference Manual

Monte-Carlo Option Pricing. Victor Podlozhnyuk

Parallel Prefix Sum (Scan) with CUDA. Mark Harris

TESLA C2050/2070 COMPUTING PROCESSOR INSTALLATION GUIDE

Get the Best out of NVIDIA GPUs for 3D Design and Engineering in the Cloud

Windows Embedded Security and Surveillance Solutions

Steps to Migrating to a Private Cloud

TESLA M2050 AND TESLA M2070 DUAL-SLOT COMPUTING PROCESSOR MODULES

OpenCL Programming for the CUDA Architecture. Version 2.3

Amazon EC2 Product Details Page 1 of 5

NVIDIA GRID K1 GRAPHICS BOARD

HOW MANY USERS CAN I GET ON A SERVER? This is a typical conversation we have with customers considering NVIDIA GRID vgpu:

NVIDIA CUDA Software and GPU Parallel Computing Architecture. David B. Kirk, Chief Scientist

COMPUTING. SharpStreamer Platform. 1U Video Transcode Acceleration Appliance

Technical bulletin: Remote visualisation with VirtualGL

NVIDIA CUDA INSTALLATION GUIDE FOR MICROSOFT WINDOWS

PNY Professional Solutions NVIDIA GRID - GPU Acceleration for the Cloud

Technical Brief. Quadro FX 5600 SDI and Quadro FX 4600 SDI Graphics to SDI Video Output. April 2008 TB _v01

PLANNING FOR DENSITY AND PERFORMANCE IN VDI WITH NVIDIA GRID JASON SOUTHERN SENIOR SOLUTIONS ARCHITECT FOR NVIDIA GRID

Video Encoding on Intel Atom Processor E38XX Series using Intel EMGD and GStreamer

GRID VIRTUAL GPU FOR CITRIX XENSERVER Version ,

Boundless Security Systems, Inc.

Understanding Video Latency What is video latency and why do we care about it?

Graphics Cards and Graphics Processing Units. Ben Johnstone Russ Martin November 15, 2011

NVIDIA WMI. WP _v02 August White Paper

This letter contains latest information about the above mentioned software version.

Windows Embedded Compact 7: RemoteFX and Remote Experience Thin Client Integration

Introduction to GP-GPUs. Advanced Computer Architectures, Cristina Silvano, Politecnico di Milano 1

NVIDIA Tesla K20-K20X GPU Accelerators Benchmarks Application Performance Technical Brief

Quest vworkspace Virtual Desktop Extensions for Linux

Tegra Android Accelerometer Whitepaper

NetIQ Privileged User Manager

SierraVMI Sizing Guide

Home Exam 3: Distributed Video Encoding using Dolphin PCI Express Networks. October 20 th 2015

QULU VMS AND SERVERS Elegantly simple, Ultimately scalable

GPU Parallel Computing Architecture and CUDA Programming Model

Milestone Solution Partner IT Infrastructure Components Certification Summary

Intel Ethernet Switch Converged Enhanced Ethernet (CEE) and Datacenter Bridging (DCB) Using Intel Ethernet Switch Family Switches

4Kp60 H.265/HEVC Glass-to-Glass Real-Time Encoder Reference Design

MetaMorph Microscopy Automation & Image Analysis Software Super-Resolution Module

Big Data on the Open Cloud

GPU System Architecture. Alan Gray EPCC The University of Edinburgh

Intel NetStructure Host Media Processing Software Release 1.0 for the Windows * Operating System

PassMark - G3D Mark High End Videocards - Updated 12th of November 2015

Solution Recipe: Improve PC Security and Reliability with Intel Virtualization Technology

NVIDIA Tegra Android Platform Support Pack Getting Started Guide

Configuring RemoteFX on Windows Server 2012 R2

CTX OVERVIEW. Ucentrik CTX

Milestone Solution Partner IT Infrastructure MTP Certification Report Scality RING Software-Defined Storage

This letter contains latest information about the above mentioned software version.

Intel Ethernet Switch Load Balancing System Design Using Advanced Features in Intel Ethernet Switch Family

GeoImaging Accelerator Pansharp Test Results

Intel Data Direct I/O Technology (Intel DDIO): A Primer >

Intel Embedded Virtualization Manager

EMC ISILON AND ELEMENTAL SERVER

Understanding Compression Technologies for HD and Megapixel Surveillance

* * * Intel RealSense SDK Architecture

Transcription:

NVIDIA VIDEO ENCODER 5.0 NVENC_DA-06209-001_v06 November 2014 Application Note NVENC - NVIDIA Hardware Video Encoder 5.0 NVENC_DA-06209-001_v06 i

DOCUMENT CHANGE HISTORY NVENC_DA-06209-001_v06 Version Date Authors Description of Change Highlights 01 Jan 30,2012 AP/CC Initial release Initial Support for Kepler NVENC 02 Sept 24, 2012 AP Updated for NVENC SDK release 2.0 Additional features on Kepler NVENC 03 April 10, 2013 AP Updated for Monterey SDK 2.0.0 update Additional features on Kepler NVENC 04 Aug 4, 2013 AP Updated for NVENC SDK release 3.0 New APIs added to SDK 05 June 17, 2014 SM/AP Updated for NVENC SDK release 4.0 Software Support for First generation GPUs 06 Nov 14, 2014 SM Updated for NVENC SDK release 5.0 Software Support for Second generation GPUs NVENC - NVIDIA Hardware Video Encoder 5.0 NVENC_DA-06209-001_v06 2

TABLE OF CONTENTS NVIDIA Hardware Video Encoder 5.0... 5 1. Introduction... 5 2. NVENC Capabilities... 6 3. NVENC BLOCK Diagram... 8 4. NVENC Performance... 9 5. Programming NVENC... 12 NVENC - NVIDIA Hardware Video Encoder 5.0 NVENC_DA-06209-001_v06 3

LIST OF FIGURES Figure 1. NVENC hardware block diagram... 8 LIST OF TABLES Table 1. NVENC Hardware Codec Capabilities... 6 Table 2. Additional NVENC Hardware Capabilities in Second generation GPUs... 6 Table 3. Major H.265 features supported in Second Generation GPUs... 7 Table 4. Additional features supported in NVIDIA Encoder SDK 5.0... 7 Table 5. NVENC Encoding Performance High Performance/High Quality Presets... 10 Table 6. NVENC Encoding Performance - Low Latency Presets... 11 Table 7. Comparison between NVENC SDK and GRID SDK Capabilities... 12 NVENC - NVIDIA Hardware Video Encoder 5.0 NVENC_DA-06209-001_v06 4

NVIDIA HARDWARE VIDEO ENCODER 5.0 1. INTRODUCTION NVIDIA GPUs - beginning with the Kepler generation - contain a hardware based encoder (also referred to as NVENC hence forth in the document) which provides fully accelerated hardware based video encoding. Before Kepler GPUs, the only GPU based solution for video encoding was to use CUDA for encoding. One of the disadvantages of the CUDA-based encoder is that it uses a combination of the CPU and GPU s graphics engines for encoding, taking away processing power from other tasks that can be performed on the CPU and GPU s graphics engines. The approach of encoding using NVENC increases overall system power consumption. The NVENC engine s performance is also independent of the graphics performance. NVIDIA s latest generation of GPUs based on the second generation architecture support full Hardware acceleration for High Efficiency Video coding (also known as HEVC or H.265) along with support for H.264 encoding and related encoding features that were supported on earlier Kepler and first generation GPUs. The second generation GPUs also provide significant improvement in encoding performance in comparison to earlier generations of NVENC. This improvement in performance is due to improvements in architecture within NVENC hardware. In order to support more number of simultaneous encoding sessions an extra NVENC had been added on certain variants of the second generation of GPUs. The hardware capabilities available in NVENC are exposed through APIs referred to as Encode APIs or NVENC API in the document. This document provides information about the capabilities of the hardware encoder and features exposed though Encode APIs. NVENC - NVIDIA Hardware Video Encoder 5.0 NVENC_DA-06209-001_v06 5

2. NVENC CAPABILITIES At a high level, capabilities of NVENC hardware are summarized in Table 1. Table 1. NVENC Hardware Codec Capabilities Feature What it provides Kepler GPUs H.264 Base, Main, High Profiles YUV 4:2:0 Encoding. First generation GPUs Second generation GPUs H.264 4:4:4 and Lossless Regular YUV 4:4:4 and lossless Encoding. H.265 Main Profile YUV 4:2:0 Encoding. At high level, the second generation GPUs support several additional encoding features in addition to the features supported on Kepler and first generation GPUs which are summarized in Table 2 and Table 3. Table 2. Additional NVENC Hardware Capabilities in Second generation GPUs Additional NVENC Hardware Feature in second Generation GPUs H.265 Main profile Enhanced performance for H.264 encoding Additional NVENC engine What it provides The input YUV 4:2:0 sequence can be encoded to generate a H.265 bit-stream. Encoding performance is significantly improved for H.264 in comparison to first generation and Kepler GPUs. In order to support more number of concurrent encoder sessions, the number of encoding engines has been increased to two in certain variants of second generation GPUs. The NVIDIA Software stack manages the load-balancing between the two NVENC engines which ensures that applications do not need any changes to their software stack to benefit from the extra NVENC engine. NVENC - NVIDIA Hardware Video Encoder 5.0 NVENC_DA-06209-001_v06 6

Table 3. Major H.265 features supported in Second Generation GPUs Features supported Max supported CTB size of 32x32 What it provides Dynamic Reconfiguration of parameters on fly Asymmetric Motion Partitioning Static and dynamic slice modes All Intra modes Intra-refresh, invalidation of reference pictures and force IDR frame This enables Clients to change encoding parameters without destroying and re-initializing the encoding session. Captures asymmetric motion. Clients can specify the slice size in terms of CTBs or max number of bytes to be present in a slice respectively. All Intra modes mandated in H.265 specification. Error resilience features useful in streaming scenarios, when feedback loop between server and client is available. In addition to supporting features from earlier NVENC SDK releases, NVENC SDK 5.0 adds support for H.265 encoding on second-generation GPU hardware (e.g. GTX 980, Quadro M6000 etc.). NVENC SDK 5.0 also contains several other features and improvements from the previous SDK release, some of which are highlighted in the following table. Table 4. Additional features supported in NVIDIA Encoder SDK 5.0 Additional Software features Software support for H.265 Main profile Support for 2 NVENC sessions in GeForce and low-end Quadro hardware Several bug fixes and quality improvements What it provides APIs exposed to access NVENC for YUV 4:2:0 H.265 encoding. Several low latency and Error Resilience features (helpful for handling and recovering from error conditions in streaming scenarios) are exposed through Encode APIs. The current SDK package allows up to two simultaneous encode sessions per system for low-end Quadro and GeForce cards. If the system contains any low-end hardware (even in conjunction with other high-end hardware), only two encoding sessions will be permitted. There have been several bug fixes and quality improvements since the last SDK release which increases the encoded quality and stability of the entire software stack. NVENC - NVIDIA Hardware Video Encoder 5.0 NVENC_DA-06209-001_v06 7

3. NVENC BLOCK DIAGRAM Apart from the rate control and picture type decision, NVENC can perform all tasks that are a critical part of the end-to-end H.264 and H.265 encoding. The rate control algorithm is implemented in GPU s firmware and controlled via the driver. From the application s perspective, rate control is a hardware function controlled via the parameters exposed in the NVENC APIs. The hardware also provides capability to use external motion estimation engine and custom quantization parameter maps (for ROI region of interest encoding). The region of interest encoding has been made available using the QP delta map where in the Quantization parameters derived from the Rate Control algorithm can be tweaked using the QP delta map. Figure 1. NVENC hardware block diagram NVENC - NVIDIA Hardware Video Encoder 5.0 NVENC_DA-06209-001_v06 8

4. NVENC PERFORMANCE The second-generation NVENC hardware improves standalone encoding performance compared to first generation NVENC and Kepler generation NVENC. The application can trade performance for encoded picture quality via the software API provided. While Kepler and first generation GPUs had one NVENC engine, certain variants of the second generation GPUs have two NVENC engines physically present on the silicon. That enables clients to support more number of concurrent encoding sessions. The underlying software implementation takes care of the load balancing between the two engines so that applications don t require changes in their own software stack for taking advantage of both the engines. NVENC hardware natively supports multiple hardware encoding contexts with negligible context-switching penalty. As a result, subject to the hardware performance limit and available memory, an application can encode multiple videos simultaneously. The hardware and software maintain the context for each encoding session, allowing a large number of simultaneous encoding sessions to run in parallel. NVENC API exposes several presets and rate control modes for programming the hardware. A combination of these two parameters enables video encoding at varying quality and performance. For example, the presets with the prefix LOW_LATENCY are useful for applications that require very low-latency encoding (e.g. real-time streaming or remote interactive applications). Similarly, 2-pass rate control modes help the encoder to gather statistics of the frame to be encoded before actually encoding it in the second pass, thereby resulting in optimal bit-utilization within the frame and consequently, higher encoding quality. Note that the encoder performance is a function of several parameters. Table 5 and Table 6 provide indicative data of NVENC performance on Kepler and GPUs for different presets and rate control modes. The hardware has been extensively tested and verified to yield the advertised performance at all settings. Video quality and latency requirements for different types of content may be significantly different. This can affect the overall encoding performance either positively or negatively which is determined by the NVENC parameter settings. NVENC - NVIDIA Hardware Video Encoder 5.0 NVENC_DA-06209-001_v06 9

Table 5. NVENC Encoding Performance High Performance/High Quality Presets Preset High Performance High Quality Rate control mode Constant QP CBR VBR VBR MinQP Two PassFrameSize Two PassQuality Two PassVBR Constant QP CBR VBR VBR MinQP Two PassFrameSize Two Pass Quality Two PassVBR Kepler First Gen. H.264 (FPS) H.265(FPS) Second Gen. 520 833 1111 526 502 833 1123 534 490 826 1111 552 497 819 1111 540 250 534 675 421 250 523 680 421 247 515 653 400 157 512 653 292 160 529 645 273 157 502 641 347 158 500 641 303 101 300 387 167 101 301 390 167 99 280 352 133 Second Gen. NVENC - NVIDIA Hardware Video Encoder 5.0 NVENC_DA-06209-001_v06 10

Table 6. NVENC Encoding Performance - Low Latency Presets H.264 (FPS) H.265(FPS) Preset Rate control mode Constant QP Kepler First Gen. Second Gen. 311 549 653 523 Second Gen. CBR 310 564 666 531 VBR 296 549 653 549 Lowlatency Performance High VBR MinQP Two PassFrameSize 301 549 636 540 177 398 469 425 Two PassQuality 177 392 467 423 Two PassVBR 161 375 448 400 Constant QP 120 483 645 436 CBR 120 490 657 421 VBR 120 462 632 460 Lowlatency Quality High VBR MinQP Two PassFrameSize 119 465 636 440 89 288 469 232 Two Pass Quality 89 287 467 232 Two PassVBR 87 270 349 208 FPS: Encoding speed in Frames per second Resolution/Format: 1280x720/ YUV 4:2:0 NVENC - NVIDIA Hardware Video Encoder 5.0 NVENC_DA-06209-001_v06 11

5. PROGRAMMING NVENC Various capabilities of NVENC are exposed to the application software via the NVIDIA proprietary application programming interface (API). There are two API s available to use NVENC encoding capabilities: NVENC SDK Useful for direct encoding applications such as video conferencing, transcoding, video editing, archiving etc. GRID SDK Useful for screen capture + encoding use-cases such as cloud gaming, streaming etc. Table 7. Comparison between NVENC SDK and GRID SDK Capabilities Standalone Encode NVENC SDK No capture H.264/H.265 encode only Use cases: Transcoding, archiving, video conferencing, video editing, camera capture and encoding Linux and Windows Access to exhaustive encoder settings and fine-grained control Available via NVIDIA developer zone at https://developer.nvidia.com/nvidia-videocodec-sdk Works on GeForce, Quadro, Tesla, and GRID cards. For GeForce and low end Quadro cards two encoding sessions per-system are allowed. Capture + Encode GRID SDK Capture + H.264/H.265 encode Use cases: Low-latency applications such as cloud gaming, streaming where a single API performs screen capture + encode in most optimized manner Linux and Windows Limited encoder settings, applicable to only low-latency streaming use-cases Available under license from NVIDIA Works on Quadro, Tesla, and GRID boards only. NVENC - NVIDIA Hardware Video Encoder 5.0 NVENC_DA-06209-001_v06 12

Notice ALL NVIDIA DESIGN SPECIFICATIONS, REFERENCE BOARDS, FILES, DRAWINGS, DIAGNOSTICS, LISTS, AND OTHER DOCUMENTS (TOGETHER AND SEPARATELY, MATERIALS ) ARE BEING PROVIDED AS IS. NVIDIA MAKES NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. Information furnished is believed to be accurate and reliable. However, NVIDIA Corporation assumes no responsibility for the consequences of use of such information or for any infringement of patents or other rights of third parties that may result from its use. No license is granted by implication of otherwise under any patent rights of NVIDIA Corporation. Specifications mentioned in this publication are subject to change without notice. This publication supersedes and replaces all other information previously supplied. NVIDIA Corporation products are not authorized as critical components in life support devices or systems without express written approval of NVIDIA Corporation. Trademarks NVIDIA, the NVIDIA logo, GeForce, Quadro, Tesla, and NVIDIA GRID are trademarks and/or registered trademarks of NVIDIA Corporation in the U.S. and other countries. Other company and product names may be trademarks of the respective companies with which they are associated. Copyright 2011-2014 NVIDIA Corporation. All rights reserved. www.nvidia.com