Opened 10 months ago

Closed 5 months ago

#9370 closed task (invalid)

ffmpeg nvenc/nvdec new build dependency ? commit 00b579890d866f0dd2f34bcb8aceb890ab29f582

Reported by: hydra3333 Owned by:
Priority: normal Component: avcodec
Version: git-master Keywords: nvenc nvdec SDK
Cc: hydra3333 Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the potential issue:

In regard to commit 00b579890d866f0dd2f34bcb8aceb890ab29f582
https://git.videolan.org/?p=ffmpeg.git;a=blobdiff;f=libavcodec/nvenc.c;h=815b9429b3d35013a5d9c09f4f1b56a956f3e2af;hp=df8e472e73531be62cd1e177bc6755b633c62fa9;hb=00b579890d866f0dd2f34bcb8aceb890ab29f582;hpb=c60b76d0c880037309e78badd62943455f715e6e

I see this line:

av_log(avctx, AV_LOG_WARNING, "Failed setting QP CB/CR offsets, SDK 11.1 or greater required at compile time.\n");

I was under an impression that compiling ffmpeg with NV headers was all that was required to enable the Nvidia nvenc/nvdec encoder/decoder in ffmpeg and that no SDK was required to be installed at compile time.

Up until now ffmpeg seems to have built and nvenc has worked for me without the SDK being installed at compile time - since I and others cross-compile ffmpeg under Unubtu/mingw64 for target Windows 10 x64, installing the nvidia SDK in this scenario is not an option.

Can you please clarify whether indeed the Nvidia SDK 11.1 or greater is now actually required to be installed in order to build ffmpeg with nvenc/nvdec enabled ?

Thank you.

If so, it's probably a deal breaker for cross-compiling ffmpeg ?

Thank you.

Change History (8)

comment:1 by hydra3333, 10 months ago

Component: build systemavcodec

changed component

comment:2 by Balling, 10 months ago

No, of course you need the last driver and SDK headers (see https://github.com/FFmpeg/nv-codec-headers/commit/b641a195edbe3ac9788e681e22c2e2fad8aacddb) or even SDK itself (unless you compile with LLVM and do not need the last non-free component) to use all latest fearures. Not mentioning that you may want to target more modern CUDA compute capability. Or use some modern technics like CUDA PTX or SASS (Streaming ASSembler) compression. https://github.com/FFmpeg/FFmpeg/commit/072788c46e36a21ca9e8f1e3cc19a1944db5b89c

Last edited 10 months ago by Balling (previous) (diff)

comment:3 by hydra3333, 10 months ago

Summary: ffmpeg nvenc/nvdec new build dependency ?ffmpeg nvenc/nvdec new build dependency ? commit 00b579890d866f0dd2f34bcb8aceb890ab29f582

comment:4 by hydra3333, 10 months ago

Thanks Bailing.

The NV headers bit I do build with, the SDK I don't really have "access" to in a linux mingw64 based cross-compilation environment with target Win10x64 (if I do have access, I do not know how to "install" the windows sdk version in linux and get the cross-compilation to use it ... I would love to know how, if you have any pointers).

ATM I only need ffmpeg's nvenc encoder as the video filtering is currently being done by avisynth/vapoursynth.

In regard to the commit error message, it looks like it is saying the SDK itself is required whereas it may mean only the SDK NV headers are required ?

in reply to:  4 ; comment:5 by Balling, 10 months ago

Replying to hydra3333:

In regard to the commit error message, it looks like it is saying the SDK itself is required whereas it may mean only the SDK NV headers are required ?

Yeah, it means headers, but for libnpp (last non-free left) SDK is required and nvcc.

in reply to:  5 comment:6 by hydra3333, 9 months ago

Replying to Balling:

Yeah, it means headers, but for libnpp (last non-free left) SDK is required and nvcc.

OK, thanks, I had conjectured so.
Looks like libnpp is unavailable to cross-compilers (cross-compiling on linux systems) unless there's a way to "install" the windows SDK there.
I wonder ... I may attempt a single try with wine, but knowing next to zero about it I guess that won't work.

comment:7 by hydra3333, 9 months ago

To be clear, the log message in the code :-
"Failed setting QP CB/CR offsets, SDK 11.1 or greater required at compile time.\n"
appears to be is incorrect.

It seems it would be more accurate and helpful for users if it were instead along the lines:
"Failed setting QP CB/CR offsets, SDK 11.1 or greater NV Headers required at compile time.\n"

comment:8 by Timo R., 5 months ago

Resolution: invalid
Status: newclosed

It's referring to the Video-Codec-SDK version, which you get for ffmpeg via the freely available nv-codec-headers packages.

Note: See TracTickets for help on using tickets.