>> + echo 'NV_ENCODE_API_FUNCTION_LIST flist;' >> + echo 'void f(void) { struct { const GUID guid; } s[] = { { >> NV_ENC_PRESET_HQ_GUID } }; }' > > This will most likely prevent nvenc from being enabled for msvc 2012, but not > old > mingw32, which is failing with the error: > > src/libavcodec/nvenc.c:115:52: error: 'ENOBUFS' undeclared here (not in a > function) > { NV_ENC_ERR_NOT_ENOUGH_BUFFER, AVERROR(ENOBUFS), "not enough > buffer" }, > > I think the easiest solution would be using AVERROR_BUFFER_TOO_SMALL if > ENOBUFS is > not defined.
Yes, if that's all that's failing, I'll just do that. > That or just disable nvenc if using mingw32 toolchains by checking "enabled > libc_mingw32", since disabling for target-os == mingw32 would also affect > mingw-w64. > gcc-asan fails with > > /usr/bin/ld: libavcodec/libavcodec.a(nvenc.o): undefined reference to symbol > 'dlsym@@GLIBC_2.2.5' > /usr/lib/../lib/libdl.so.2: error adding symbols: DSO missing from command > line > collect2: error: ld returned 1 exit status > > I have no idea how to deal with this. When and how are you seeing that error? That usually means a wrong order of libraries/object-files on linker command line. >> + echo 'int main(void) { f(); return 0; }' >> + } | check_cc -I$source_path >> + nvenc_check_res=$? >> + >> + if [ $nvenc_check_res != 0 ] && enabled nvenc; then >> + die "NVENC enabled but test-compile failed" >> + fi >> + >> + case $target_os in >> + mingw32*|mingw64*|win32|win64|linux|cygwin*) >> + [ $nvenc_check_res = 0 ] && enable nvenc >> + ;; >> + *) >> + enabled nvenc && die "NVENC is only supported on Windows and >> Linux" >> + disable nvenc >> + ;; >> + esac >> + >> + unset nvenc_check_res > > This test is different from other automatically detected features, and also > unnecessarily complex. > You should force enable nvenc earlier in the script like with other similar > features (including hardware codecs and accelerators), then disable it on > unsupported platforms and old/broken compilers with the corresponding checks > and tests. > > Something like this: > [...] Ah, so even if calling enable nvenc, --disable-nvenc on the command line will still override it, and the "disabled nvenc" check will still work? I wasn't aware of that, so yes, that makes it a lot simpler.
signature.asc
Description: OpenPGP digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel