NVIDIA CUDA Accelerated H.264 Encoder
This sample uses the NVCUVENC library to encode H.264 elementary stream. The library for encoding (NVCUVENC.DLL) is
distributed with the NVIDIA drivers.
The command line encoder takes the following inputs:
cudaEncode.exe [input.yuv] [config.cfg] [output.file]
[input.yuv] - must be a YUV file and can a collection of frames. The sample YUV file has 200 frames.
[config.cfg] - configuration file for all of the settings in the CUDA Encoder
[output.file] - output elementary stream. The CUDA encoder can output either H.264 elementary stream files.
The output from this tool is H.264 video file. The test below was running on a GT200 class hardware, but it will work
with any CUDA capable GPU with R185 drivers or newer. Some of parameters are only available with newer drivers.
[To Encode (frame rate + CPU utilization)]
> enctest-h264.bat
> cudaEncode.exe data\ofer_vga_30fps_200frms.yuv config\640x480-out-main.264.cfg 640x480-out-main.264
[ CUDA H.264 Encoder ]
argv[0] = cudaEncode.exe
argv[1] = data\ofer_vga_30fps_200frms.yuv
argv[2] = config\640x480-out-main.264.cfg
argv[3] = 640x480-out-main.264
Configuration file: <config\640x480-out-main.264.cfg>
Source input file: <data\ofer_vga_30fps_200frms.yuv>
Encoded output file: <640x480-out-main.264>
Measurement: (FPS) Frames Per Second
NVSetCodec returned SUCCESS! <H.264 Video>
NVGetParamValue SUCCESS!
>> Detected 1 GPU(s) capable of GPU Encoding <<
NVGetParamValue SUCCESS!
GPU Device 0 : GeForce GTX 260
Compute Capability = SM 1.3
Total Memory = 877.38 MBytes
GPU Clock = 1242000 Hz
Multiprocessors = 24
GPU Encoding Mode:
CPU: PEL Processing
GPU: Motion Estimation, Intra Prediction
NVSetParamValue SUCCESS: NVVE_GPU_OFFLOAD_LEVEL = 8,
NVSetParamValue SUCCESS: NVVE_OUT_SIZE = 640, 480,
NVSetParamValue SUCCESS: NVVE_ASPECT_RATIO = 16, 9, 0,
NVSetParamValue SUCCESS: NVVE_FIELD_ENC_MODE = 0,
NVSetParamValue SUCCESS: NVVE_P_INTERVAL = 3,
NVSetParamValue SUCCESS: NVVE_IDR_PERIOD = 15,
NVSetParamValue SUCCESS: NVVE_DYNAMIC_GOP = 0,
NVSetParamValue SUCCESS: NVVE_RC_TYPE = 1,
NVSetParamValue SUCCESS: NVVE_AVG_BITRATE = 4000000,
NVSetParamValue SUCCESS: NVVE_PEAK_BITRATE = 10000000,
NVSetParamValue SUCCESS: NVVE_QP_LEVEL_INTRA = 25,
NVSetParamValue SUCCESS: NVVE_QP_LEVEL_INTER_P = 28,
NVSetParamValue SUCCESS: NVVE_QP_LEVEL_INTER_B = 31,
NVSetParamValue SUCCESS: NVVE_FRAME_RATE = 30000, 1001,
NVSetParamValue SUCCESS: NVVE_DEBLOCK_MODE = 1,
NVSetParamValue SUCCESS: NVVE_PROFILE_LEVEL = 65380,
NVSetParamValue SUCCESS: NVVE_FORCE_INTRA (dshow) = 0,
NVSetParamValue SUCCESS: NVVE_FORCE_IDR (dshow) = 0,
NVSetParamValue SUCCESS: NVVE_CLEAR_STAT (dshow) = 0,
NVSetParamValue SUCCESS: NVVE_SET_DEINTERLACE = 1,
NVSetParamValue SUCCESS: NVVE_PRESETS = 2, [AVCHD (1920x1080) Profile]
NVSetParamValue SUCCESS: NVVE_DISABLE_CABAC = 0,
NVSetParamValue SUCCESS: NVVE_CONFIGURE_NALU_FRAMING_TYPE = 0,
NVSetParamValue SUCCESS: NVVE_DISABLE_SPS_PPS = 0,
[cudaEncode.exe] - [Frame: 0016, 133.0 fps, frame time: 7.52 (ms) ]
[cudaEncode.exe] - [Frame: 0032, 128.9 fps, frame time: 7.76 (ms) ]
[cudaEncode.exe] - [Frame: 0048, 122.8 fps, frame time: 8.14 (ms) ]
[cudaEncode.exe] - [Frame: 0064, 119.5 fps, frame time: 8.37 (ms) ]
[cudaEncode.exe] - [Frame: 0080, 121.9 fps, frame time: 8.21 (ms) ]
[cudaEncode.exe] - [Frame: 0096, 134.8 fps, frame time: 7.42 (ms) ]
[cudaEncode.exe] - [Frame: 0112, 127.8 fps, frame time: 7.83 (ms) ]
[cudaEncode.exe] - [Frame: 0128, 154.0 fps, frame time: 6.49 (ms) ]
[cudaEncode.exe] - [Frame: 0144, 135.2 fps, frame time: 7.40 (ms) ]
[cudaEncode.exe] - [Frame: 0160, 151.6 fps, frame time: 6.60 (ms) ]
[cudaEncode.exe] - [Frame: 0176, 148.6 fps, frame time: 6.73 (ms) ]
[cudaEncode.exe] - [Frame: 0192, 160.9 fps, frame time: 6.22 (ms) ]
Number of Coded Frames : 200
Elapsed time : 1981 ms
End to End FPS : 100.959114
CPU utilization : 56.00% (user:105.69%, kernel: 6.31%) / 2 cores
cudaEncode.exe returned with return value = 0
- 1
- 2
- 3
- 4
- 5
- 6
前往页