August 2010
API Specification
NVIDIA CUDA VIDEO DECODER
NVIDIA CUDA VIDEO Decoder ii
DOCUMENT CHANGE HISTORY
Version
Date
Authors
Description of Change
0.8
5/29/08
Frank
Jargstorff
Initial draft
0.9
6/10/08
Eric Young
Added a paragraph on performance
1.0
6/16/08
Eric Young
First Public Release
1.1
8/31/10
Eric Young
Added changes regarding support of NVCUVID on
Linux
NVIDIA CUDA VIDEO Decoder iii
TABLE OF CONTENTS
Overview .......................................................................................... 4
Video decode ..................................................................................... 5
MPEG-2/VC-1 support ..................................................................................... 5
H.264/AVCHD support .................................................................................... 5
Introduction ...................................................................................... 6
CUDA Video decoder ........................................................................... 7
Decoder Creation ....................................................................................... 8
Decoding Surfaces ..................................................................................... 9
Processing and Displaying Frames ............................................................... 10
Performance Optimizations for Video Decoding ............................................. 11
NVIDIA CUDA VIDEO Decoder 4
OVERVIEW
The CUDA Video Decoder API gives developers access to hardware video decoding
capabilities on NVIDIA GPU. The actual hardware decode can run on either Video
Processor (VP) or CUDA hardware, depending on the hardware capabilities and the
codecs. This API supports the following video stream formats for Linux and Windows
platforms: MPEG-2, VC-1, and H.264 (AVCHD).
Applications can decode video streams on the GPU into Video Memory, and also apply
a post processing stage on the uncompressed video surfaces with CUDA. CUDA
supports I/O transfers of video surfaces to system memory using CUDA’s fast
asynchronous uploads and read-backs. For display, CUDA supports native graphics
interoperability, enabling the application to render the video generated surfaces using a
3D API such as OpenGL (Windows and Linux) or DirectX (Windows platforms).