CUDA(Compute Unified Device Architecture)
,
显卡
厂商
NVIDIA
推出的运算平台。
CUDA™
是一种由
NVIDIA
推出的通用
并行计算
架构,该架构使
GPU
能够解决复杂的计算问题。它包含了
CUDA
指令集架构
(
ISA
)以及
GPU
内部的
并行计算
引擎。开发人员现在可以使用
C
语言
来为
CUDA™
架构编写程序,
C
语言是应用最广泛的一种高级编程语言。所编写出的程序于是就可以在支持
CUDA™
的处理器上以超高性能运行。
NVIDIA
在
CUDA
的基础上建立了一套
SDK
用于使用显卡硬件加速来进行
H264
编码,可以在
CPU
占用率很小的情况下完成高质量实时的
H264
编码。要使用
CUDA
进行
H264
编码,首先你要确定你的显卡驱动是否支持
CUDA
,(一般现在的
NVIDIA
显卡的驱动已经支持
CUDA
,如果不确定,可以到官方网站去下载最新的
CUDA
驱动安装)。然后
CUDA toolkit
安装包,根据机器系统,进入地址在
https://developer.nvidia.com/
选择需要的安装包,这些安装包分别支持
XP32,Win7/Win8 32
位和
64
位的台式机系统和笔记本系统。安装好安装包后,系统中应该包含了
CUDA toolkit
和
CUDA SDK
。
安装好
CUDA SDK
包后,就可以进行
H264
编码开发了。在其
SDK
样例代码中,附带了一个
CudaEncode
样例代码,在
VS2010
系统中可以编译调试,理解该
SDK
实现的
H264
编码,通过编译调试,发现在
GT635M
的移动笔记本电脑上可以接近实时编码
1920x1080I
的高清编码,在编码过程中,
CPU
的占用时间平均不超过
10%(
主要是用于读取视频文件和写编码后的
H264
文件
)
。
在该演示代码中,主要包括三个文件
VideoEncoder.h, VideoEncoder.cpp
和
main.cpp
文件,
VideoEncoder.h
和
VideoEncoder.cpp
实现了对
CUDA SDK
编码做了简单的封装,包括启动,调用编码配置文件,编码和结束编码,读取
YUV
文件和写
H264
文件的封装。
main.cpp
演示了调用过程,编译成功后,系统生成执行文件
cudaEncode.exe
。该执行文件编码的调用方式为:
cudaEncode -input=test.yuv -format=IYUV -device=0 -cfg=test.cfg-out=test.h264
。
-input
为输入文件,
-format
为输入视频的色彩样式
(
系统支持
UYVY,YUY2,IV12,NV12, IYUV)
。
-device
为使用的设备数目,不加该参数,系统自动判断处理,
-cfg=test.cfg
为编码配置文件,
-out
为输出文件。
演示工程源代码下载地址: