[FFmpeg-user] ffmpeg hwmap SW decoded frame to OpenCL and hwmap back to h264 for SW encode

Alex 3.14pi at ukr.net
Tue Nov 5 03:36:52 EET 2019


I trying speed up process and avoid copy frames between GPU and CPU. But got error: "Segmentation fault: 11", so may be I'm doing something wrong?

My full ffmpeg command and log here:

./ffmpeg -i ../720.mp4 -init_hw_device opencl=ocl:0.1 -filter_hw_device ocl  -filter_complex "hwmap,avgblur_opencl=30,hwmap"  -c:v h264 -an -t 10 -y ../out_blur.mp4 -loglevel debug
ffmpeg version N-95621-g53c21c2d6b Copyright (c) 2000-2019 the FFmpeg developers
  built with Apple LLVM version 10.0.0 (clang-1000.10.44.4)
  configuration: --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libfreetype --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --disable-ffplay --enable-nonfree --enable-opencl
  libavutil      56. 35.101 / 56. 35.101
  libavcodec     58. 60.100 / 58. 60.100
  libavformat    58. 33.100 / 58. 33.100
  libavdevice    58.  9.100 / 58.  9.100
  libavfilter     7. 66.100 /  7. 66.100
  libswscale      5.  6.100 /  5.  6.100
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
Splitting the commandline.
Reading option '-i' ... matched as input url with argument '../720.mp4'.
Reading option '-init_hw_device' ... matched as option 'init_hw_device' (initialise hardware device) with argument 'opencl=ocl:0.1'.
Reading option '-filter_hw_device' ... matched as option 'filter_hw_device' (set hardware device used when filtering) with argument 'ocl'.
Reading option '-filter_complex' ... matched as option 'filter_complex' (create a complex filtergraph) with argument 'hwmap,unsharp_opencl=lx=17:ly=17:la=5,hwmap'.
Reading option '-c:v' ... matched as option 'c' (codec name) with argument 'h264'.
Reading option '-an' ... matched as option 'an' (disable audio) with argument '1'.
Reading option '-t' ... matched as option 't' (record or transcode "duration" seconds of audio/video) with argument '10'.
Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
Reading option '../out_blur.mp4' ... matched as output url.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option init_hw_device (initialise hardware device) with argument opencl=ocl:0.1.
[AVHWDeviceContext @ 0x7fbb1ec08480] 1 OpenCL platforms found.
[AVHWDeviceContext @ 0x7fbb1ec08480] 3 OpenCL devices found on platform "Apple".
[AVHWDeviceContext @ 0x7fbb1ec08480] 0.1: Apple / HD Graphics 4000
Applying option filter_hw_device (set hardware device used when filtering) with argument ocl.
Applying option filter_complex (create a complex filtergraph) with argument hwmap,unsharp_opencl=lx=17:ly=17:la=5,hwmap.
Applying option y (overwrite output files) with argument 1.
Applying option loglevel (set logging level) with argument debug.
Successfully parsed a group of options.
Parsing a group of options: input url ../720.mp4.
Successfully parsed a group of options.
Opening an input file: ../720.mp4.
[NULL @ 0x7fbb1f818c00] Opening '../720.mp4' for reading
[file @ 0x7fbb1ec3d600] Setting default whitelist 'file,crypto'
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fbb1f818c00] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fbb1f818c00] ISO: File Type Major Brand: isom
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fbb1f818c00] Unknown dref type 0x206c7275 size 12
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fbb1f818c00] Processing st: 0, edit list 0 - media time: 0, duration: 300300
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fbb1f818c00] Before avformat_find_stream_info() pos: 4123312 bytes read:34929 seeks:1 nb_streams:1
[h264 @ 0x7fbb1f9ae800] nal_unit_type: 7(SPS), nal_ref_idc: 1
[h264 @ 0x7fbb1f9ae800] nal_unit_type: 8(PPS), nal_ref_idc: 1
[h264 @ 0x7fbb1f9ae800] nal_unit_type: 6(SEI), nal_ref_idc: 0
[h264 @ 0x7fbb1f9ae800] nal_unit_type: 5(IDR), nal_ref_idc: 1
[h264 @ 0x7fbb1f9ae800] Format yuv420p chosen by get_format().
[h264 @ 0x7fbb1f9ae800] Reinit context to 1280x720, pix_fmt: yuv420p
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fbb1f818c00] All info found
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fbb1f818c00] After avformat_find_stream_info() pos: 38244 bytes read:73125 seeks:2 frames:1
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '../720.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.33.100
  Duration: 00:00:10.01, start: 0.000000, bitrate: 3295 kb/s
    Stream #0:0(und), 1, 1/30000: Video: h264 (High), 1 reference frame (avc1 / 0x31637661), yuv420p(left), 1280x720 [SAR 1:1 DAR 16:9], 0/1, 3293 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 60k tbc (default)
    Metadata:
      handler_name    : ISO Media file produced by Google Inc. Created on: 10/24/2018.
Successfully opened the file.
[Parsed_unsharp_opencl_1 @ 0x7fbb1ec45640] Setting 'lx' to value '17'
[Parsed_unsharp_opencl_1 @ 0x7fbb1ec45640] Setting 'ly' to value '17'
[Parsed_unsharp_opencl_1 @ 0x7fbb1ec45640] Setting 'la' to value '5'
Parsing a group of options: output url ../out_blur.mp4.
Applying option c:v (codec name) with argument h264.
Applying option an (disable audio) with argument 1.
Applying option t (record or transcode "duration" seconds of audio/video) with argument 10.
Successfully parsed a group of options.
Opening an output file: ../out_blur.mp4.
Matched encoder 'libx264' for codec 'h264'.
[file @ 0x7fbb1ec44680] Setting default whitelist 'file,crypto'
Successfully opened the file.
detected 8 logical cores
[h264 @ 0x7fbb1f9a9800] nal_unit_type: 7(SPS), nal_ref_idc: 1
[h264 @ 0x7fbb1f9a9800] nal_unit_type: 8(PPS), nal_ref_idc: 1
Stream mapping:
  Stream #0:0 (h264) -> hwmap
  hwmap -> Stream #0:0 (libx264)
Press [q] to stop, [?] for help
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
    Last message repeated 1 times
[h264 @ 0x7fbb1f9a9800] nal_unit_type: 6(SEI), nal_ref_idc: 0
[h264 @ 0x7fbb1f9a9800] nal_unit_type: 5(IDR), nal_ref_idc: 1
[h264 @ 0x7fbb1f9a9800] Format yuv420p chosen by get_format().
[h264 @ 0x7fbb1f9a9800] Reinit context to 1280x720, pix_fmt: yuv420p
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
[h264 @ 0x7fbb1f9b7e00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 1
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
[h264 @ 0x7fbb1f9cf200] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 1
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
[h264 @ 0x7fbb1fa04c00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 1
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
[h264 @ 0x7fbb1fa1b000] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 1
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
[h264 @ 0x7fbb1fa24800] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 1
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
[h264 @ 0x7fbb1fa24e00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 1
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
[h264 @ 0x7fbb1fa25400] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 1
[h264 @ 0x7fbb22809200] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 1
[Parsed_unsharp_opencl_1 @ 0x7fbb1ed04e80] Setting 'lx' to value '17'
[Parsed_unsharp_opencl_1 @ 0x7fbb1ed04e80] Setting 'ly' to value '17'
[Parsed_unsharp_opencl_1 @ 0x7fbb1ed04e80] Setting 'la' to value '5'
[graph 0 input from stream 0:0 @ 0x7fbb1ee09040] Setting 'video_size' to value '1280x720'
[graph 0 input from stream 0:0 @ 0x7fbb1ee09040] Setting 'pix_fmt' to value '0'
[graph 0 input from stream 0:0 @ 0x7fbb1ee09040] Setting 'time_base' to value '1/30000'
[graph 0 input from stream 0:0 @ 0x7fbb1ee09040] Setting 'pixel_aspect' to value '1/1'
[graph 0 input from stream 0:0 @ 0x7fbb1ee09040] Setting 'sws_param' to value 'flags=2'
[graph 0 input from stream 0:0 @ 0x7fbb1ee09040] Setting 'frame_rate' to value '30000/1001'
[graph 0 input from stream 0:0 @ 0x7fbb1ee09040] w:1280 h:720 pixfmt:yuv420p tb:1/30000 fr:30000/1001 sar:1/1 sws_param:flags=2
[format @ 0x7fbb1ed0a080] Setting 'pix_fmts' to value 'yuv420p|yuvj420p|yuv422p|yuvj422p|yuv444p|yuvj444p|nv12|nv16|nv21|yuv420p10le|yuv422p10le|yuv444p10le|nv20le'
[AVFilterGraph @ 0x7fbb21004240] query_formats: 7 queried, 6 merged, 0 already done, 0 delayed
[Parsed_hwmap_2 @ 0x7fbb1ed03e00] picking yuv420p out of 13 ref:opencl alpha:1
[Parsed_hwmap_0 @ 0x7fbb1ed09940] Configure hwmap yuv420p -> opencl.
[Parsed_hwmap_2 @ 0x7fbb1ed03e00] Configure hwmap opencl -> yuv420p.
[hwmap @ 0x7fbb1ed03940] Filter input: yuv420p, 1280x720 (0).
Segmentation fault: 11


More information about the ffmpeg-user mailing list