Curious results using NVEnc in VRD 6

Otter

Member
I've been testing the VRD v6-803 HW encoding and am getting curious results.

I'm starting with a HD-PVR recording (1080i, AVC, 11.6Mb/s, VBR). I edit to 43 mins removing ads and recode to 720p.

My hardware is a Ryzen 3900X, 16GB 3600MHz memory, NVidia GTX 1650-4GB video card.
Ryzen BIOS is the latest with ABBA AGESA, latest AMD driver (Sep 27, 2019) and NVidia v4.36.30 driver (Sep 10th 2019)

I ran several test encodes using NVEnc and various VRD settings.

- NVEnc, H264, 2000kbps, 1-pass, FAST, 720p
- NVEnc, H264, 2000kbps, 1-pass, MEDIUM, 720p
- NVEnc, H264, 2000kbps, 1-pass, SLOW, 720p
- NVEnc, H264, 2000kbps, 2-pass, SLOW, 720p
- NVEnc, H264, 2000kbps, 2-pass, VERY SLOW, 720p

- NVEnc, HEVC, 1500kbps, 1-pass, SLOW, 720p
- NVEnc, HEVC, CRF18, 720p
- NVEnc, HEVC, CRF20, 720p

During encoding, I monitored CPU core and total load, GPU core and GPU engine load as well as disk load.

I expected to see differences based on the various settings and codec, but there was none!

All encodes took 306-312 seconds to complete with average 220-235ps encoding rate.
All encodes had a CPU load ranging 25-38% and spread evenly amongst the 12 cores.
All encodes had GPU Encode load and Video Engine load both ranging between 60% - 70%
Disk load was variable and low, with source and output being on the same HDD.

The final file size of all the NVEnc/H264 files was within 50 KBs of each otheras expected.

The NVEnc/HEVC 1-pass and CRF 20 files were both 25% smaller, but had the same CPU/GPU loadings and encode time.
The HEVC CRF18 was 20% larger than the H264 files, but again, roughly the same fps encoding.

Image quality of all the H264 files was subjectively the same on a 1080p 27" monitor.

Image quality of the smaller HEVC files was less with softer detail and harder edges as well as some blocking and motion artifacts.
Not "same quality in a smaller filesize" that is advertised.
Quality of the HEVC CRF18 file was similar to the H264 files, but 20% larger size than the H264 files.

I would expect a longer encode time and lower fps encode rate between FAST and VERY SLOW profiles - there is none.
I certainly would expect a change going to H264 -> HEVC - again nothing but smaller files (maybe).

My question is: Do the VRD "advanced settings" do anything?

Is my inexpensive video card so good that it encodes H264 and H265 at the same speed?
 

Danr

Administrator
Staff member
1. 2-pass isn't supported with NVEnc. There are some calls in the NVEnc for dual pass encoding, but they are marked in the current API as "deprecated". We will remove the dual pass option for NVEnc.

2. NVEnc uses custom on-chip encoding hardware. From what we can tell, this hardware is the same on low-cost vs high-cost GPUs and will yield similar encoding speeds regardless of which board is used. More expensive GPUs do support more formats, and more simultaneous encodes. See: https://developer.nvidia.com/video-encode-decode-gpu-support-matrix

3. The advanced options are used with all the encoders, but not all the options are supported for each encoder. For example, the speed option is primarily used for software encoding and isn't used with NVEnc.
 

Otter

Member
1. I was going on an older copy of Nvidia's NVEnc API Programing Guide (2017) that documents both 2-pass and Quality setting calls.

"In 2-pass rate control modes, NVENC estimates the complexity of the frame to be encoded and determines bit distribution across the frame in the first pass. In the second
pass, NVENC actually encodes macroblocks in the frame using the distribution determined in the first pass."

Did not know it and the quality settings had been "deprecated" - too bad - I've always usedthem with software encoding to improve quality

2. NVidia has several current GPUs with different NVEnc capabilities. The TU117 in my card has only 1 NVEnc engine, where the GP104 in the GTX1060 card has 2 NVEnc processors and the Titan V card/GV100 GPU has 3 NVEnc units. The GPUs with extra engines are supposed to schedule the workload via an internal stack manager . The GTX 1060 GTX is double the $ over my GTX 1650 and the Titan V is $3000+. I never game, so 1650 it is.
 

jessiecarr

New member
1. 2-pass isn't supported with NVEnc. There are some calls in the NVEnc for dual pass encoding, but they are marked in the current API as "deprecated". We will remove the dual pass option for NVEnc.

2. NVEnc uses custom on-chip encoding hardware. From what we can tell, this hardware is the same on low-cost vs high-cost GPUs and will yield similar encoding speeds regardless of which board is used. More expensive GPUs do support more formats, and more simultaneous encodes. See: https://developer.nvidia.com/video-encode-decode-gpu-support-matrix
run 3
3. The advanced options are used with all the encoders, but not all the options are supported for each encoder. For example, the speed option is primarily used for software encoding and isn't used with NVEnc.
Thanks for your helpful response. All questions answered
 
Top Bottom