#8254: ffmpeg encoding with nvenc broken by a commit -------------------------------------+------------------------------------- Reporter: hydra3333 | Type: defect Status: new | Priority: important Component: | Version: undetermined | unspecified Keywords: | Blocked By: Blocking: | Reproduced by developer: 0 Analyzed by developer: 0 | -------------------------------------+------------------------------------- Hello. Summary of the bug: One of these commits "broke" nvenc in ffmpeg when using a 1050Ti :-
13 days ago Timo Rothenpieler avcodec/nvenc: make use of new GetLastErrorString function commit | commitdiff | tree ab0ef1abdf53e257f7628f2d264adc80038f3bcb 13 days ago Timo Rothenpieler avcodec/nvenc: pass CUstream to nvenc when available commit | commitdiff | tree 51a23343d9c736217d8845b7442fafc373726433 13 days ago Roman Arzumanyan avcodec/nvenc: add multiple reference frames support commit | commitdiff | tree 567b5e33d9d77919ee920c091f4273c5b38fc821 13 days ago Timo Rothenpieler avcodec/nvenc: switch to dedicated dpb_size option commit | commitdiff | tree e929b2f248a9c49761475e07d1a089e05912d1c6 Commit 460f74495fa93c4bb85503c5443580e2bb857efa, which is *just prior* the bottom commit, *works* on both a "1050Ti" and a "2060 Super". The top commit ab0ef1abdf53e257f7628f2d264adc80038f3bcb - *works* on a "2060 Super" - *fails* on a "1050Ti" with error "No NVENC capable devices found" when using identical drivers, input file, commandline, etc. Both PCs: Win10 Pro x64 fully patched, latest Nvidia driver 436.48, the same copy of ffmpeg.exe built with ab0ef1abdf53e257f7628f2d264adc80038f3bcb PCs: i4670 with "1050Ti", 3900X with "2060 Super". ffmpeg cross-compiled on ubuntu. How to reproduce: {{{ "C:\SOFTWARE\ffmpeg\0-homebuilt-x64\ffmpeg.exe" -hide_banner -nostats -v verbose -init_hw_device opencl=ocl:0.0 -filter_hw_device ocl -i "D:\temp\SCRATCH\demo1.mpg" -map_metadata -1 -sws_flags lanczos+accurate_rnd+full_chroma_int+full_chroma_inp -filter_complex "[0:v]yadif=0:0:0,hwupload,unsharp_opencl=lx=3:ly=3:la=0.5:cx=3:cy=3:ca=0.5,hwdownload,format=pix_fmts=yuv420p,setdar=dar=16/9" -c:v h264_nvenc -pix_fmt nv12 -preset slow -bf 2 -g 50 -refs 3 -rc:v vbr_hq -rc-lookahead:v 32 -cq 22 -qmin 16 -qmax 25 -coder cabac -strict experimental -movflags +faststart+write_colr -profile:v high -level 5.1 -af loudnorm=I=-16:TP=0.0:LRA=11:measured_I=-24.17:measured_LRA=7.30:measured_TP=-5.13:measured_thresh=-34.87:offset=-0.19:linear=true:print_format=summary -c:a libfdk_aac -cutoff 18000 -ab 384k -ar 48000 -y "T:\HDTV\autoTVS- mpg\Converted\demo1.aac.mp4" }}} built on ... using commit ab0ef1abdf53e257f7628f2d264adc80038f3bcb Logs showing the issue: 1. from the "1050Ti" failure using commit ab0ef1abdf53e257f7628f2d264adc80038f3bcb -------------------------------------------------------------------------------------------------------------- "C:\SOFTWARE\ffmpeg\0-homebuilt-x64\ffmpeg.exe" -hide_banner -v verbose -init_hw_device list Supported hardware device types: cuda dxva2 qsv d3d11va opencl -------------------------------------------------------------------------------------------------------------- "C:\SOFTWARE\ffmpeg\0-homebuilt-x64\ffmpeg.exe" -hide_banner -v verbose -init_hw_device opencl [AVHWDeviceContext @ 0000026d5440c640] 0.0: NVIDIA CUDA / GeForce GTX 1050 Ti [AVHWDeviceContext @ 0000026d5440c640] 1.0: Intel(R) CPU Runtime for OpenCL(TM) Applications / Intel(R) Core(TM) i5-4670 CPU @ 3.40GHz [AVHWDeviceContext @ 0000026d5440c640] 2.0: Intel(R) OpenCL / Intel(R) HD Graphics 4600 [AVHWDeviceContext @ 0000026d5440c640] 2.1: Intel(R) OpenCL / Intel(R) Core(TM) i5-4670 CPU @ 3.40GHz [AVHWDeviceContext @ 0000026d5440c640] More than one matching device found. Device creation failed: -19. Failed to set value 'opencl' for option 'init_hw_device': No such device Error parsing global options: No such device -------------------------------------------------------------------------------------------------------------- "C:\SOFTWARE\ffmpeg\0-homebuilt-x64\ffmpeg.exe" -hide_banner -v verbose -init_hw_device opencl:0.0 [AVHWDeviceContext @ 0000024a4c3ac6c0] 0.0: NVIDIA CUDA / GeForce GTX 1050 Ti [AVHWDeviceContext @ 0000024a4c3ac6c0] DXVA2 to OpenCL mapping function found (clCreateFromDX9MediaSurfaceKHR). [AVHWDeviceContext @ 0000024a4c3ac6c0] DXVA2 in OpenCL acquire function found (clEnqueueAcquireDX9MediaSurfacesKHR). [AVHWDeviceContext @ 0000024a4c3ac6c0] DXVA2 in OpenCL release function found (clEnqueueReleaseDX9MediaSurfacesKHR). [AVHWDeviceContext @ 0000024a4c3ac6c0] The cl_khr_d3d11_sharing extension is required for D3D11 to OpenCL mapping. [AVHWDeviceContext @ 0000024a4c3ac6c0] D3D11 to OpenCL mapping not usable. Hyper fast Audio and Video encoder usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... Use -h to get full help or, even better, run 'man ffmpeg' -------------------------------------------------------------------------------------------------------------- "C:\SOFTWARE\ffmpeg\0-homebuilt-x64\ffmpeg.exe" -hide_banner -nostats -v verbose -init_hw_device opencl=ocl:0.0 -filter_hw_device ocl -i "D:\temp\SCRATCH\demo1.mpg" -map_metadata -1 -sws_flags lanczos+accurate_rnd+full_chroma_int+full_chroma_inp -filter_complex "[0:v]yadif=0:0:0,hwupload,unsharp_opencl=lx=3:ly=3:la=0.5:cx=3:cy=3:ca=0.5,hwdownload,format=pix_fmts=yuv420p,setdar=dar=16/9" -c:v h264_nvenc -pix_fmt nv12 -preset slow -bf 2 -g 50 -refs 3 -rc:v vbr_hq -rc-lookahead:v 32 -cq 22 -qmin 16 -qmax 25 -coder cabac -strict experimental -movflags +faststart+write_colr -profile:v high -level 5.1 -af loudnorm=I=-16:TP=0.0:LRA=11:measured_I=-24.17:measured_LRA=7.30:measured_TP=-5.13:measured_thresh=-34.87:offset=-0.19:linear=true:print_format=summary -c:a libfdk_aac -cutoff 18000 -ab 384k -ar 48000 -y "T:\HDTV\autoTVS- mpg\Converted\demo1.aac.mp4" Routing option strict to both codec and muxer layer [AVHWDeviceContext @ 000001a18997ef40] 0.0: NVIDIA CUDA / GeForce GTX 1050 Ti [AVHWDeviceContext @ 000001a18997ef40] DXVA2 to OpenCL mapping function found (clCreateFromDX9MediaSurfaceKHR). [AVHWDeviceContext @ 000001a18997ef40] DXVA2 in OpenCL acquire function found (clEnqueueAcquireDX9MediaSurfacesKHR). [AVHWDeviceContext @ 000001a18997ef40] DXVA2 in OpenCL release function found (clEnqueueReleaseDX9MediaSurfacesKHR). [AVHWDeviceContext @ 000001a18997ef40] The cl_khr_d3d11_sharing extension is required for D3D11 to OpenCL mapping. [AVHWDeviceContext @ 000001a18997ef40] D3D11 to OpenCL mapping not usable. [mpeg @ 000001a18b161c40] max_analyze_duration 5000000 reached at 5000000 microseconds st:0 Input #0, mpeg, from 'D:\temp\SCRATCH\demo1.mpg': Duration: 00:44:49.53, start: 0.228244, bitrate: 3781 kb/s Stream #0:0[0x1e0]: Video: mpeg2video (Main), 1 reference frame, yuv420p(tv, bt470bg, top first, left), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc Stream #0:1[0x1c0]: Audio: mp2, 48000 Hz, stereo, s16p, 256 kb/s Stream mapping: Stream #0:0 (mpeg2video) -> yadif (graph 0) setdar (graph 0) -> Stream #0:0 (h264_nvenc) Stream #0:1 -> #0:1 (mp2 (native) -> aac (libfdk_aac)) Press [q] to stop, [?] for help [graph 0 input from stream 0:0 @ 000001a19895ba80] w:720 h:576 pixfmt:yuv420p tb:1/90000 fr:25/1 sar:64/45 sws_param:flags=2 [auto_scaler_0 @ 000001a19895a940] w:iw h:ih flags:'bilinear' interl:0 [format @ 000001a18b1d6dc0] auto-inserting filter 'auto_scaler_0' between the filter 'Parsed_setdar_5' and the filter 'format' [Parsed_setdar_5 @ 000001a1987a6200] w:720 h:576 dar:16/9 sar:64/45 -> dar:16/9 sar:64/45 [auto_scaler_0 @ 000001a19895a940] w:720 h:576 fmt:yuv420p sar:64/45 -> w:720 h:576 fmt:nv12 sar:64/45 flags:0x2 [h264_nvenc @ 000001a18b168cc0] Loaded Nvenc version 9.1 [h264_nvenc @ 000001a18b168cc0] Nvenc initialized successfully [h264_nvenc @ 000001a18b168cc0] 1 CUDA capable devices found [h264_nvenc @ 000001a18b168cc0] [ GPU #0 - < GeForce GTX 1050 Ti > has Compute SM 6.1 ] [h264_nvenc @ 000001a18b168cc0] Multiple reference frames are not supported [h264_nvenc @ 000001a18b168cc0] No NVENC capable devices found [h264_nvenc @ 000001a18b168cc0] Nvenc unloaded Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height [AVIOContext @ 000001a18b1fad80] Statistics: 0 seeks, 0 writeouts [AVIOContext @ 000001a18b16a640] Statistics: 2642064 bytes read, 2 seeks Conversion failed! -------------------------------------------------------------------------------------------------------------- 2. from the "2060 Super" success using the identical ffmpeg.exe which is commit ab0ef1abdf53e257f7628f2d264adc80038f3bcb -------------------------------------------------------------------------------------------------------------- "C:\SOFTWARE\ffmpeg\0-homebuilt-x64\ffmpeg.exe" -hide_banner -v verbose -init_hw_device list Supported hardware device types: cuda dxva2 qsv d3d11va opencl -------------------------------------------------------------------------------------------------------------- "C:\SOFTWARE\ffmpeg\0-homebuilt-x64\ffmpeg.exe" -hide_banner -v verbose -init_hw_device opencl [AVHWDeviceContext @ 000001e43031c640] 0.0: NVIDIA CUDA / GeForce RTX 2060 SUPER [AVHWDeviceContext @ 000001e43031c640] DXVA2 to OpenCL mapping function found (clCreateFromDX9MediaSurfaceKHR). [AVHWDeviceContext @ 000001e43031c640] DXVA2 in OpenCL acquire function found (clEnqueueAcquireDX9MediaSurfacesKHR). [AVHWDeviceContext @ 000001e43031c640] DXVA2 in OpenCL release function found (clEnqueueReleaseDX9MediaSurfacesKHR). [AVHWDeviceContext @ 000001e43031c640] The cl_khr_d3d11_sharing extension is required for D3D11 to OpenCL mapping. [AVHWDeviceContext @ 000001e43031c640] D3D11 to OpenCL mapping not usable. Hyper fast Audio and Video encoder usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... Use -h to get full help or, even better, run 'man ffmpeg' -------------------------------------------------------------------------------------------------------------- "C:\SOFTWARE\ffmpeg\0-homebuilt-x64\ffmpeg.exe" -hide_banner -v verbose -init_hw_device opencl:0.0 [AVHWDeviceContext @ 0000020a9b2fc6c0] 0.0: NVIDIA CUDA / GeForce RTX 2060 SUPER [AVHWDeviceContext @ 0000020a9b2fc6c0] DXVA2 to OpenCL mapping function found (clCreateFromDX9MediaSurfaceKHR). [AVHWDeviceContext @ 0000020a9b2fc6c0] DXVA2 in OpenCL acquire function found (clEnqueueAcquireDX9MediaSurfacesKHR). [AVHWDeviceContext @ 0000020a9b2fc6c0] DXVA2 in OpenCL release function found (clEnqueueReleaseDX9MediaSurfacesKHR). [AVHWDeviceContext @ 0000020a9b2fc6c0] The cl_khr_d3d11_sharing extension is required for D3D11 to OpenCL mapping. [AVHWDeviceContext @ 0000020a9b2fc6c0] D3D11 to OpenCL mapping not usable. Hyper fast Audio and Video encoder usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... Use -h to get full help or, even better, run 'man ffmpeg' -------------------------------------------------------------------------------------------------------------- "C:\SOFTWARE\ffmpeg\0-homebuilt-x64\ffmpeg.exe" -hide_banner -nostats -v verbose -init_hw_device opencl=ocl:0.0 -filter_hw_device ocl -i "D:\temp\SCRATCH\demo1.mpg" -map_metadata -1 -sws_flags lanczos+accurate_rnd+full_chroma_int+full_chroma_inp -filter_complex "[0:v]yadif=0:0:0,hwupload,unsharp_opencl=lx=3:ly=3:la=0.5:cx=3:cy=3:ca=0.5,hwdownload,format=pix_fmts=yuv420p,setdar=dar=16/9" -c:v h264_nvenc -pix_fmt nv12 -preset slow -bf 2 -g 50 -refs 3 -rc:v vbr_hq -rc-lookahead:v 32 -cq 22 -qmin 16 -qmax 25 -coder cabac -strict experimental -movflags +faststart+write_colr -profile:v high -level 5.1 -af loudnorm=I=-16:TP=0.0:LRA=11:measured_I=-24.17:measured_LRA=7.30:measured_TP=-5.13:measured_thresh=-34.87:offset=-0.19:linear=true:print_format=summary -c:a libfdk_aac -cutoff 18000 -ab 384k -ar 48000 -y "T:\HDTV\autoTVS- mpg\Converted\demo1.aac.mp4" Routing option strict to both codec and muxer layer [AVHWDeviceContext @ 000001579131d740] 0.0: NVIDIA CUDA / GeForce RTX 2060 SUPER [AVHWDeviceContext @ 000001579131d740] DXVA2 to OpenCL mapping function found (clCreateFromDX9MediaSurfaceKHR). [AVHWDeviceContext @ 000001579131d740] DXVA2 in OpenCL acquire function found (clEnqueueAcquireDX9MediaSurfacesKHR). [AVHWDeviceContext @ 000001579131d740] DXVA2 in OpenCL release function found (clEnqueueReleaseDX9MediaSurfacesKHR). [AVHWDeviceContext @ 000001579131d740] The cl_khr_d3d11_sharing extension is required for D3D11 to OpenCL mapping. [AVHWDeviceContext @ 000001579131d740] D3D11 to OpenCL mapping not usable. [mpeg @ 0000015791321940] max_analyze_duration 5000000 reached at 5000000 microseconds st:0 Input #0, mpeg, from 'D:\temp\SCRATCH\demo1.mpg': Duration: 00:44:49.53, start: 0.228244, bitrate: 3781 kb/s Stream #0:0[0x1e0]: Video: mpeg2video (Main), 1 reference frame, yuv420p(tv, bt470bg, top first, left), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc Stream #0:1[0x1c0]: Audio: mp2, 48000 Hz, stereo, s16p, 256 kb/s Stream mapping: Stream #0:0 (mpeg2video) -> yadif (graph 0) setdar (graph 0) -> Stream #0:0 (h264_nvenc) Stream #0:1 -> #0:1 (mp2 (native) -> aac (libfdk_aac)) Press [q] to stop, [?] for help [graph 0 input from stream 0:0 @ 0000015791354600] w:720 h:576 pixfmt:yuv420p tb:1/90000 fr:25/1 sar:64/45 sws_param:flags=2 [auto_scaler_0 @ 00000157a33af180] w:iw h:ih flags:'bilinear' interl:0 [format @ 00000157913549c0] auto-inserting filter 'auto_scaler_0' between the filter 'Parsed_setdar_5' and the filter 'format' [Parsed_setdar_5 @ 0000015791354340] w:720 h:576 dar:16/9 sar:64/45 -> dar:16/9 sar:64/45 [auto_scaler_0 @ 00000157a33af180] w:720 h:576 fmt:yuv420p sar:64/45 -> w:720 h:576 fmt:nv12 sar:64/45 flags:0x2 [h264_nvenc @ 00000157a2fb7700] Loaded Nvenc version 9.1 [h264_nvenc @ 00000157a2fb7700] Nvenc initialized successfully [h264_nvenc @ 00000157a2fb7700] 1 CUDA capable devices found [h264_nvenc @ 00000157a2fb7700] [ GPU #0 - < GeForce RTX 2060 SUPER > has Compute SM 7.5 ] [h264_nvenc @ 00000157a2fb7700] supports NVENC [h264_nvenc @ 00000157a2fb7700] Lookahead enabled: depth 32, scenecut enabled, B-adapt enabled. [graph_1_in_0_1 @ 00000157a33afb80] tb:1/48000 samplefmt:s16p samplerate:48000 chlayout:0x3 [Parsed_loudnorm_0 @ 00000157a33af680] auto-inserting filter 'auto_resampler_0' between the filter 'graph_1_in_0_1' and the filter 'Parsed_loudnorm_0' [format_out_0_1 @ 00000157a33ae080] auto-inserting filter 'auto_resampler_1' between the filter 'Parsed_loudnorm_0' and the filter 'format_out_0_1' [auto_resampler_0 @ 00000157a33aed80] ch:2 chl:stereo fmt:s16p r:48000Hz -> ch:2 chl:stereo fmt:dbl r:192000Hz [auto_resampler_1 @ 00000157a33ae480] ch:2 chl:stereo fmt:dbl r:192000Hz -> ch:2 chl:stereo fmt:s16 r:48000Hz Output #0, mp4, to 'T:\HDTV\autoTVS-mpg\Converted\demo1.aac.mp4': Metadata: encoder : Lavf58.33.100 Stream #0:0: Video: h264 (h264_nvenc) (High), 1 reference frame (avc1 / 0x31637661), nv12(left), 720x576 [SAR 64:45 DAR 16:9], q=16-25, 2000 kb/s, 25 fps, 12800 tbn, 25 tbc Metadata: encoder : Lavc58.59.101 h264_nvenc Side data: cpb: bitrate max/min/avg: 0/0/2000000 buffer size: 4000000 vbv_delay: N/A Stream #0:1: Audio: aac (libfdk_aac) (mp4a / 0x6134706D), 48000 Hz, stereo, s16, delay 2048, 384 kb/s Metadata: encoder : Lavc58.59.101 libfdk_aac [mpeg2video @ 0000015791329b80] ac-tex damaged at 28 27 [mpeg2video @ 0000015791329b80] Warning MVs not available [mpeg2video @ 0000015791329b80] concealing 90 DC, 90 AC, 90 MV errors in B frame D:\temp\SCRATCH\demo1.mpg: corrupt decoded frame in stream 0 No more output streams to write to, finishing. [mp4 @ 0000015791358800] Starting second pass: moving the moov atom to the beginning of the file color primaries unspecified, assuming bt470bg [AVIOContext @ 0000015791323b80] Statistics: 810591228 bytes read, 0 seeks frame=67238 fps=283 q=24.0 Lsize= 792990kB time=00:44:49.44 bitrate=2415.4kbits/s speed=11.3x video:665090kB audio:126067kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.231687% Input file #0 (D:\temp\SCRATCH\demo1.mpg): Input stream #0:0 (video): 67238 packets read (1167445781 bytes); 67238 frames decoded; Input stream #0:1 (audio): 112057 packets read (86059776 bytes); 112057 frames decoded (129089664 samples); Total: 179295 packets (1253505557 bytes) demuxed Output file #0 (T:\HDTV\autoTVS-mpg\Converted\demo1.aac.mp4): Output stream #0:0 (video): 67238 frames encoded; 67238 packets muxed (681052519 bytes); Output stream #0:1 (audio): 126065 frames encoded (129089664 samples); 126067 packets muxed (129092609 bytes); Total: 193305 packets (810145128 bytes) muxed [Parsed_loudnorm_0 @ 00000157a33af680] Input Integrated: -24.2 LUFS Input True Peak: -5.1 dBTP Input LRA: 7.3 LU Input Threshold: -34.9 LUFS Output Integrated: -16.0 LUFS Output True Peak: +0.0 dBTP Output LRA: 7.0 LU Output Threshold: -26.6 LUFS Normalization Type: Dynamic Target Offset: -0.0 LU [AVIOContext @ 00000157a2fa0500] Statistics: 30 seeks, 6209 writeouts [h264_nvenc @ 00000157a2fb7700] Nvenc unloaded [AVIOContext @ 000001579132b340] Statistics: 1273923728 bytes read, 2 seeks -------------------------------------------------------------------------------------------------------------- -- Ticket URL: <https://trac.ffmpeg.org/ticket/8254> FFmpeg <https://ffmpeg.org> FFmpeg issue tracker _______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org https://ffmpeg.org/mailman/listinfo/ffmpeg-trac To unsubscribe, visit link above, or email ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".