Feature Request: NVENC

AquilaDev

New Member
The performance would be "phenomenal" if the data don't need to be encoded on the cpu to be sent to over a network (watch a video is not the same than streaming). Also don't forget that when you're running games you are using a lot more GPU than your CPU... It will cause lots of lags and frame drops. And if you're not using GPU you probably don't need significant performance..
 

HowardD

New Member
The H264 encoder on the Nvidia GPUs is separate from the rest of the card. As of right now, benchmarks say the impact on performance is less than 6%.
 

HowardD

New Member
It might be, we'll definitely get a good idea of the quality on the 25th of this month. Since Nvidia will finally release their Shadowplay software which makes use of it.
 

Krazy

Town drunk
Oh, interesting, I just noticed the bit where you said it was on the 600 series as well? I'll have to play with it at some point, then.
 

AquilaDev

New Member
Memory, transport bandwith are shared on the GPU.. also cpu encoding (because you need to encode it a first time to sent it to your GPU) costs... And, at least if the game already use the encoder (things that i think it's happening with mosts of games) this will be bad...
I'm not saying that's a very bad idea, but it will costs a lots of time to implement compared to the benefits, i'm also thinking that most of users doesn't have 6xx/7xx nvidia series...
 

Krazy

Town drunk
Yeah, it wouldn't really be worth the dev time to implement for a pretty small portion of the user base. And considering the quality of past GPU encoder efforts, I'm not really holding my breath on any reasonable quality. GPUs have a lot of raw power, but they lack a lot of the ability to perform the kind of calculations needed for quality encoding.
 

Grue

New Member
Krazy said:
As with most hardware encoders, the quality is probably awful.

I don't think this is the case since Nvidia Grid is based on NVENC. Also they say:

NVENC hardware has been designed to provide quality comparable to x264 (an open source H.264 encode library) with much higher performance. The comparable x264 preset used for quality comparison between NVENC, x264 and other competitive solutions is as follows (refer to x264 documentation:)

--keyint 30 --no-scenecut--no-chroma-me --fps 30 --preset faster --ref 1--trellis 0--weightp 0--b-pyramid normal–bframe n

https://developer.nvidia.com/sites/defa ... ppNote.pdf
 

Krazy

Town drunk
Wow, faster preset? That's...actually quite impressive. keyint 30 and ref 1 and fps 30 make me a bit hesitant, though. If you could tweak those settings, it would be better I think.
 

dodgepong

Administrator
Forum Admin
Not as far as I know. Right now there are several other more important issues that are being worked on, though anyone is free to try to implement it and issue a pull request. :)
 

gdlk

Member
I've tried to build nvEncoder sample from nvenc_sdk_2_01_2013_0617_windows but got only this output:
NVENC error at src\CNVEncoder.cpp:1382 code=21(NVENC Feature not available for current license key type) "nvStatus"
After this i've done some research and found those strings in NVENC_VideoEncoder_API_ProgGuide:
2. SETTING UP THE HARDWARE FOR ENCODING
2.1 Opening an Encode Session
After loading the NVENC Interface, the client should first call NvEncOpenEncodeSession to open an encoding session. The NVENC Interface will provide a encode session handle to the client, which must be used for all further API calls in the current session.
2.1.1 Using the License client Key GUID:
The client should pass a pointer to the key GUID that has been delivered with this SDK or has been purchased as part of a license separately, as NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS::clientKeyPtr

It seems we have to have GUID key for using NVENC functionality, my question is any ways how you can get one?
I really hope i'm not alone who really interested in this feature.
 

Grue

New Member
Someone made a plugin for adobe premiere pro (cs6) that uses nvenc for encoding. I tried it and it's like 5x faster than my phenom II x4 965 and the quality in my opinion is the same as mainconcept. This is better than intel quick sync someone should give it a try...
Here is the link http://forums.adobe.com/thread/1243687
 

Faruton

Developer
At the bottom of his post


License-key can only be purchased from NVidia, it is not included in the above link. (You can re-compile nvenc_export without the client-key, but the plugin won't encode any video because NVidia requires the client-key to unlock the driver's nvenc API.)
 

gdlk

Member
Hello friends,

NVIDIA updates nvenc sdk from 2.0 to 3.0 (https://developer.nvidia.com/nvidia-video-codec-sdk) and readme file now says:

The application no longer requires a GUID to initialize the NVENC encoder, the
driver performs the validation. NVENC is officially supported on GPU hardware
based on Quadro, Tesla, GeForce GRID, or VGX. NVENC on GeForce is not officially
supported.

So I've compiled new nvenc sample from this sdk, but after starting encoding i got windows crash with next output:

cmd output:
nvenc_3.0_sdk_windows\Samples\nvEncodeApp>nvEncoder -configFile=HeavyHand_1080p.txt -outfile=HeavyHandIdiot.3sec.264

>> GetNumberEncoders() has detected 1 CUDA capable GPU device(s) <<
[ GPU #0 - < GeForce GTX 670 > has Compute SM 3.0, NVENC Available ]

>> InitCUDA() has detected 1 CUDA capable GPU device(s)<<
[ GPU #0 - < GeForce GTX 670 > has Compute SM 3.0, Available NVENC ]

>> Select GPU #0 - < GeForce GTX 670 > supports SM 3.0 and NVENC

windows crash output:

Application name: nvEncoder.exe
Appendix version: 0.0.0.0
Mark of time of the appendix: 521fbdf4
Module name with a mistake: StackHash_1dc2
The module version with a mistake: 0.0.0.0
Mark of time of the module with a mistake: 00000000
Exception shift: 0000000000000000
Exception code: c0000005
These exceptions: 0000000000000008
OS version: 6.1.7601.2.1.0.256.4
Language code: 1049
Additional data 1: 1dc2
Additional data 2: 1dc22fb1de37d348f27e54dbb5278e7d
Additional data 3: eae3
Additional data 4: eae36a4b5ffb27c9d33117f4125a75c2

Any ideas what goes wrong? I'll be very grateful for any help or maybe someone else will try to compile it? :)
 

Lain

Forum Admin
Lain
Forum Moderator
Developer
Unfortunately I don't have an nvidia, so I can't really help.
 

gdlk

Member
I've tried to build nvencoder project with gtx670 under linux machine and got segfault error. Seems nvidia words 'NVENC on GeForce is not officially supported' is not just a words...
 
Top