Reputation: 177
Using the latest ffmpeg master built as at 2017.11.26, I'm having trouble deciphering what the error messages means and, more importantly, what to do about them.
Changing from -vf to -filter_complex did nothing (I had to try). The main error message seems to be
Impossible to convert between the formats supported by the filter
I have tried to insert "format=" and "scale" before/between/after yadif and unsharp_opencl but to no avail.
I wonder, could it be something to do with needing hwupload/hwdownload/hwmap or is that a red herring ?
What am I doing wrong ?
".\ffmpeg_3.latest_master.exe" -hide_banner -v verbose -init_hw_device opencl=ocl:1.0 -filter_hw_device ocl -i ".\test_01.mpg" -an -map_metadata -1 -sws_flags lanczos+accurate_rnd+full_chroma_int+full_chroma_inp -filter_complex "[0:v]yadif=0:0:0,scale=flags=lanczos+accurate_rnd+full_chroma_int+full_chroma_inp,unsharp_opencl=lx=3:ly=3:la=0.5:cx=3:cy=3:ca=0.5,setdar=dar=16/9" -r 25 -c:v h264_nvenc -preset slow -bf 2 -g 50 -refs 3 -rc:v vbr_hq -rc-lookahead:v 32 -cq 22 -qmin 16 -qmax 25 -coder cabac -movflags +faststart -profile:v high -level 4.1 -pixel_format yuv420p -y ".\test_01.newest.MP4"
[AVHWDeviceContext @ 0000020e229aad40] 1.0: NVIDIA CUDA / GeForce GTX 750 Ti
[AVHWDeviceContext @ 0000020e229aad40] DXVA2 to OpenCL mapping function found (clCreateFromDX9MediaSurfaceKHR).
[AVHWDeviceContext @ 0000020e229aad40] DXVA2 in OpenCL acquire function found (clEnqueueAcquireDX9MediaSurfacesKHR).
[AVHWDeviceContext @ 0000020e229aad40] DXVA2 in OpenCL release function found (clEnqueueReleaseDX9MediaSurfacesKHR).
[AVHWDeviceContext @ 0000020e229aad40] The cl_khr_d3d11_sharing extension is required for D3D11 to OpenCL mapping.
[AVHWDeviceContext @ 0000020e229aad40] D3D11 to OpenCL mapping not usable.
[mpeg @ 0000020e229ae240] max_analyze_duration 5000000 reached at 5000000 microseconds st:0
Input #0, mpeg, from '.\test_01.mpg':
Duration: 00:06:29.96, start: 0.240000, bitrate: 2799 kb/s
Stream #0:0[0x1e0]: Video: mpeg2video (Main), 1 reference frame, yuv420p(tv, 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
[Parsed_scale_1 @ 0000020e29951a20] w:iw h:ih flags:'lanczos+accurate_rnd+full_chroma_int+full_chroma_inp' interl:0
Stream mapping:
Stream #0:0 (mpeg2video) -> yadif
setdar -> Stream #0:0 (h264_nvenc)
Press [q] to stop, [?] for help
[Parsed_scale_1 @ 0000020e29cccda0] w:iw h:ih flags:'lanczos+accurate_rnd+full_chroma_int+full_chroma_inp' interl:0
[graph 0 input from stream 0:0 @ 0000020e29ccc980] w:720 h:576 pixfmt:yuv420p tb:1/90000 fr:25/1 sar:64/45 sws_param:flags=2
[auto_scaler_0 @ 0000020e29ccc580] w:iw h:ih flags:'bilinear' interl:0
[Parsed_unsharp_opencl_2 @ 0000020e29ccc4a0] auto-inserting filter 'auto_scaler_0' between the filter 'Parsed_scale_1' and the filter 'Parsed_unsharp_opencl_2'
Impossible to convert between the formats supported by the filter 'Parsed_scale_1' and the filter 'auto_scaler_0'
Error reinitializing filters!
Failed to inject frame into filter network: Function not implemented
Error while processing the decoded data for stream #0:0
Conversion failed!
Upvotes: 3
Views: 10939
Reputation: 177
never mind. found something that works. eg
.\ffmpeg.exe -hide_banner -v verbose -init_hw_device
opencl=ocl:1.0 -filter_hw_device ocl -i
".\test_01.mpg" -an -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,setdar=dar=16/9"
-r 25 -c:v h264_nvenc -preset slow -bf 2 -g 50 -refs 3 -rc:v
vbr_hq -rc-lookahead:v 32 -cq 22 -qmin 16 -qmax 26 -coder cabac -movflags
+faststart -profile:v high -level 4.1 -pixel_format yuv420p -y
".\test_01.newest.MP4"
Why not ... your device id (eg "1.0" above) can be found by looking at these
.\ffmpeg.exe -hide_banner -v verbose -init_hw_device list
.\ffmpeg.exe -hide_banner -v verbose -init_hw_device opencl
.\ffmpeg.exe -hide_banner -v verbose -init_hw_device opencl:1.0
And you can get a flavour of whats in these from their options :-
.\ffmpeg.exe -hide_banner -v verbose -h encoder=h264_nvenc
.\ffmpeg.exe -hide_banner -v verbose -h filter=yadif
.\ffmpeg.exe -hide_banner -v verbose -h filter=unsharp_opencl
Upvotes: 8