#9933 closed defect (needs_more_info)

`xfade_opencl` doesn't build

Reported by: Johnny Owned by:
Priority: normal Component: avfilter
Version: unspecified Keywords: opencl
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:

The underlying [opencl program](https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/opencl/xfade.cl) for xfade_opencl doesn't seem to build.

How to reproduce:

% ffmpeg -v verbose -nostdin -init_hw_device opencl=opencl:0.0 -filter_hw_device opencl \
-i input.mp4 \
-filter_complex "\
    [0:v]format=yuv420p,hwupload,split=2[base][blurred];

    [blurred]boxblur_opencl[blurred];
    [base][blurred]xfade_opencl[base];

    [base]hwdownload,format=yuv420p[base]
" \
-map [base] -y output.mp4

ffmpeg version 4.3 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
  configuration: --prefix=/usr/local --extra-cflags=-I/usr/local/cuda/include --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/cuda/lib64 --disable-debug --disable-stripping --disable-static --enable-shared --enable-nonfree --enable-gpl --enable-swresample --enable-avfilter --enable-fontconfig --enable-libzmq --enable-nvenc --enable-cuda --enable-cuvid --enable-libnpp --enable-opencl --enable-libfdk_aac --enable-pthreads --enable-libx264 --enable-libfontconfig --enable-libfreetype --enable-cuda-nvcc --enable-openssl
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
[AVHWDeviceContext @ 0x55c1bd60abc0] 0.0: NVIDIA CUDA / Tesla T4
[h264 @ 0x55c1bdec1980] Reinit context to 1280x720, pix_fmt: yuv420p
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf59.27.100
  Duration: 00:02:00.07, start: 0.000000, bitrate: 278 kb/s
    Stream #0:0(und): Video: h264 (High), 1 reference frame (avc1 / 0x31637661), yuv420p(left), 1280x720, 142 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      encoder         : Lavc59.37.100 libx264
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:0 (h264) -> format
  format -> Stream #0:0 (libx264)
[h264 @ 0x55c1bdf004c0] Reinit context to 1280x720, pix_fmt: yuv420p
[graph 0 input from stream 0:0 @ 0x55c1be3ea280] w:1280 h:720 pixfmt:yuv420p tb:1/15360 fr:30/1 sar:0/1
[Parsed_boxblur_opencl_3 @ 0x55c1be3e75c0] luma_radius:2 luma_power:2 chroma_radius:2 chroma_power:2 alpha_radius:2 alpha_power:2 w:1280 chroma_w:1280 h:720 chroma_h:720
[Parsed_xfade_opencl_4 @ 0x55c1be3e8000] Failed to build program: -11.
[Parsed_xfade_opencl_4 @ 0x55c1be3e8000] Build log:
<kernel>:109:27: error: call to 'mix' is ambiguous
    write_imagef(dst, uv, mix(val1, val2, (p.y >= 0) * (h > p.y) * (p.x >= 0) * (w > p.x)));
                          ^~~
cl_kernel.h:3925:26: note: candidate function
float4  __OVERLOADABLE__ mix(float4 x, float4 y, float a)    ;
                         ^
cl_kernel.h:3942:25: note: candidate function
float4 __OVERLOADABLE__ mix(float4, float4, float4);
                        ^

Error while filtering: Input/output error
Failed to inject frame into filter network: Input/output error
Error while processing the decoded data for stream #0:0
[AVIOContext @ 0x55c1bdc7fdc0] Statistics: 0 seeks, 0 writeouts
[AVIOContext @ 0x55c1bde96c00] Statistics: 178037 bytes read, 2 seeks
Conversion failed!

nvidia-smi output:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.64       Driver Version: 440.64       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla T4            Off  | 00000000:00:04.0 Off |                    0 |
| N/A   66C    P0    20W /  70W |      0MiB / 15109MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

The error looks like the opencl compiler/builder failed to build the program and that stopped the filtergraph from being constructed.
Perhaps I'm having a mismatch of opencl version ? Or it has something to do with CUDA/nvidia driver ?

Change History (2)

comment:1 by Carl Eugen Hoyos, 19 months ago

Keywords: openCL xfade removed

I cannot reproduce but please test with current FFmpeg git head, the only version supported on this bug tracker.

comment:2 by Carl Eugen Hoyos, 18 months ago

Resolution: needs_more_info
Status: newclosed
Note: See TracTickets for help on using tickets.