hydra3333
hydra3333

Reputation: 177

ffmpeg ... "Impossible to convert between the formats supported by the filter"

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

Answers (1)

hydra3333
hydra3333

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

Related Questions