NVEnc support, license

Hello,
I do not own any NVidia card and plan to buy one, depending on the answer to this topic.
I am interested in using NVEnc to optimize H264 encoding in one of my software.

1)The page “NVIDIA VIDEO CODEC SDK | NVIDIA Developer” states that NVEnc is for Kepler GPUs, but only mentions Tegra, Quadro and Grid. I assume this is just obsolete information, and that GT 640, for instance, can use the latest NVEnc SDK flawlessly ? Where can I find, for instance “the less expensive GeForce that supports NVEnc” ?

2)Such post “Where can I get GTX 680 NVENC SDK ? - CUDA Programming and Performance - NVIDIA Developer Forums” makes me wonder what is going on with that SDK license. Where can I get such a license ? Is this again obsolete info related to beta versions ?

3)Anyway, I don’t understand at all the NVidia Video Codec SDK License. [Please, make simple versions of such terrible documents “https://developer.nvidia.com/nvidia-video-codec-sdk-license-agreement”]
Basically, the questions are always the same :
-I am a developer. Do I have to buy something to use the SDK ?
-I make a commercial software. Can I sell it simply or are there royalties for NVidia ?

Regards,

Pierre Chatelier

It seems like NVEnc requires a Quadro/Tesla/Grid card:
[url]NVENC and 780 TI - GPU-Accelerated Libraries - NVIDIA Developer Forums

Such a document mentions that GeForce should be compatible…
http://www.geforce.com/Active/en_US/en_US/pdf/GeForce-GTX-680-Whitepaper-FINAL.pdf

But a GT 640 has a Kepler GPU, so what would tell me that it is not compatible ?
I have contacted NVIdia directly, but they did not answer.

Apparently it used to work at some point using a specific version of the SDK and drivers on GeForce cards: [url]GPU-accelerated H264/AVC encoding - NVENC Beta released - Ars Technica OpenForum

Edit: a bit more information:
[url]http://www.geeks3d.com/20121221/nvidia-encode-nvenc-sdk-2-0-beta-available/[/url]
[url]How to get a steady ,or commercial license key for NVENC SDK - GPU-Accelerated Libraries - NVIDIA Developer Forums

Yes, we can find such information all around the net, but nothing well-defined by an official page, at it should be to determine what I should buy to develop, and which configurations would be valid for potential end-users

This looks like a pretty official page to me:

[url]https://developer.nvidia.com/nvidia-video-codec-sdk#gpulist[/url]

I’m not sure why you think that is obsolete.

Regarding your question here:

1)The page “NVIDIA VIDEO CODEC SDK | NVIDIA Developer” states that NVEnc is for Kepler GPUs, but only mentions Tegra, Quadro and Grid. I assume this is just obsolete information, and that GT 640, for instance, can use the latest NVEnc SDK flawlessly ? Where can I find, for instance “the less expensive GeForce that supports NVEnc” ?

I don’t think GeForce is supported, and that seems pretty clear. (Quadro, Tesla, GRID, but no mention of GeForce on an official page.) The GTX 680 whitepaper, to some degree, is talking about the GK104 chip upon which GTX 680 is built, and also predates the production release of the NVEnc SDK. It suggests to me that at the time the production release of NVEnc SDK was finalized, a decision was made not to support GeForce.

I fortgot to mention that if you download the NVEnc SDK, the Requirements of the readme.txt mentions “every card with Kepler GPU”. If I believe that, GT640 should work. But I really doubt it.

I disagree. I just downloaded the Linux SDK:

http://developer.download.nvidia.com/compute/nvenc/v3.0/nvenc_3.0_linux_sdk.tgz

And unzipped it. Then I took a look at ReadMe.txt in the top level directory:

$ cat ReadMe.txt
NVENC 3.0 SDK Readme and Getting Started Guide

System Requirements

* NVIDIA Kepler based GPU - Refer to the NVIDIA NVENC developer site for GPUs that support NVENC

Certainly Kepler (or newer, I think) is a required condition. But it is not a sufficient condition. For that, you must refer to the developer site as indicated. It does not say “every card with a Kepler GPU” is supported.

I just downloaded the SDK and run nvenc encoder example on GTX 670, windows7. It worked. It wasn’t working few months ago, because of missing client key guid but now it works with client key guid = 0

I disagree.
I understand, as you say, it’s legible to see that as required but not sufficient. However, you can find people reporting that it works for GTX680, and even GTX670 (like Stan72). So, does it work by chance ? By design ? Is it officially supported since the official page does not mention GeForce ? Will it still work after SDK upgrades ?
Those questions are unanswered.

Nvidia finally told me that I must wait for one of their dev team member answering the current topic. Ironically I do not want them to work on the subject, or make any card compatible : I would just like documentation !

I am waiting. Meanwhile I do not buy anything and do not start developments :-(

Will it still work after SDK upgrades ?

Very good questions, Chacha21! SDK once worked with the GUID key=0 then stopped working and now works again. Will it stop working again in future releases?

For the license, I believe there is no problems to use it. NVenc SDK is mostly examples and doc, the only required binary, nvenc.dll, is shipped with nvidia drivers (on windows). But again, the question of the key remains. Can you legally distribute your code with test key? Will it work or will it stop working?

Also, in CUDA 6.0 docs they said that nvcuvenc (CUDA h264 encoder) is deprecated and we need to use nvenc in the future.

@Stan72 : I had new contacts with NVidia, my question has been escalated.
I will post the answer when I get it.

@Stan72 :
Here is the answer from NVidia :

The NVENC policy for Geforce is to support up to 2 H.264 streams. The GUID required to previously use NVENC on Geforce has change, and for drivers 335.35 and newer, no GUID is required to enable NVENC. So the GeForce GT 640 (Kepler) should be supported with NVENC, providing you’re using drivers 335.35 or newer. There is plan to update the NVENC SDK website to reflect this but I don’t have ETA.

As for license, the responses I’ve received was that this is a pretty standard click-through license, and the it actually articulates this pretty clearly:

“NVIDIA grants to Licensee a nonexclusive, non-transferable, worldwide, royalty-free, fully paid-up license and right to install, use, reproduce, display, perform, modify the Source Code of the Software, and to prepare and have prepared derivative works thereof, and distribute the Software and derivative works thereof (in object code only) as integrated in Licensee software products solely for use with supported NVIDIA GPU hardware products as specified in the accompanying release notes.”

They suggest to consult with legal counsel if you are unsure about the license.

@Chacha21:

Thanks! As I understand it there is no need for the key anymore and you can distribute your code based on the sdk/api.

“The NVENC policy for Geforce is to support up to 2 H.264 streams”

Is this going to change or do i have to get a Quadro card to use more than 2 h.264 streams?