[FFmpeg-user] Intel libmfx Crash with Hardware Decoding

Shane Warren shanew at innovsys.com
Wed Oct 16 00:39:51 EEST 2024



>> > -----Original Message-----
>> > From: ffmpeg-user <ffmpeg-user-bounces at ffmpeg.org> On Behalf Of 
>> > Dennis Mungai
>> > Sent: Monday, October 14, 2024 4:50 PM
>> > To: FFmpeg user questions <ffmpeg-user at ffmpeg.org>
>> > Subject: Re: [FFmpeg-user] Intel libmfx Crash with Hardware Decoding
>> >
>> >
>> > On Mon, 14 Oct 2024 at 18:57, Shane Warren <shanew at innovsys.com> wrote:
>> >
>> > >> I have a system with Intel Flex 140 cards and use ffmpeg to 
>> > >> transcode video on an Ubuntu 22.x system. Through a lot of 
>> > >> testing, I have come up with a flow that handles multicast h264 
>> > >> input (decoding using
>> > >> vaapi) with
>> > >> h264/h265 output using QSV. I wanted to use QSV decoding but if I 
>> > >> used QSV decoding and QSV encoding, but QSV decoding seems to 
>> > >> strip
>> > >> A53 captions (which I need).
>> > >>
>> > >> I found one input stream that eventually crashes the vaapi 
>> > >> decoder inside of libmfx.
>> > >>
>> > >> The call stack ends up in some function in libfmx:
>> > >>
>> > >> Program terminated with signal SIGSEGV, Segmentation fault.
>> > >>
>> > >> #0  0x00007f14b22d9f88 in ?? () from
>> > >> /usr/lib/x86_64-linux-gnu/libmfx-gen.so.1.2.10
>> > >>
>> > >> Is there a way to get symbols for libmfx so I can get a better 
>> > >> bug report, or some suggestion on how to debug this.
>> > >>
>> > >> I have switched this stream to software decoding then QSV 
>> > >> encoding, and it is stable but obviously uses a bit more cpu.
>> > >>
>> > >> An extra question is: Will the QSV hardware decoder ever support 
>> > >> passing through a53 captions?
>> > >>
>> > >> Thanks,
>> > >>
>> > >> Shane Warren
>> > >>
>> >
>> > > Full ffmpeg command and uncut console output would help in 
>> > > understanding
>> >> what's going on in your setup.
>> >>
>> >> Full ffmpeg command and full output follows (I can upload the ts 
>> >> file that makes it core dump if needed):
>> >>
>> >> root at restarttv:~# ffmpeg -y -threads 2 -nostats -loglevel verbose 
>> >> -fflags
>> >> +genpts -fflags discardcorrupt -hwaccel vaapi -vaapi_device
>> >> /dev/dri/renderD130 -hwaccel_output_format vaapi -extra_hw_frames 2 
>> >> -init_hw_device qsv=hw3 -filter_hw_device hw3 -i 
>> >> /tmp/crash-intel.ts
>> >> -filter:a:0 "aresample=async=10000" -c:a:0 aac  -ac:a:0 2 -ar:a:0
>> >> 48000
>> >> -b:a:0 192k -flush_packets 0 -filter_complex
>> >>
>> "[0:v:0]hwmap=derive_device=qsv,vpp_qsv=deinterlace=2:w=1280:h=720,fps=60000/1001,format=yuv420p[vout]"
>> >> -map "[vout]" -map "0:a:0" -map 0:d? -c:v h264_qsv -b:v 4000k 
>> >> -minrate:v 4000k -maxrate:v 4000k -bufsize:v 8000k -scenario 
>> >> livestreaming -strict_gop
>> >> 1 -forced_idr 1 -profile:v high -level:v 4.2 -bf:v 0 -g:v 30 -f 
>> >> mpegts -muxrate 4953560 -pes_payload_size 1528 /tmp/intel-output.ts
>> >>
>> >> ffmpeg version N-112548-g48a1b7005d Copyright (c) 2000-2023 the 
>> >> FFmpeg developers
>> >>   built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
>> >>   configuration: --nvcc=/usr/local/cuda/bin/nvcc --enable-debug 
>> >> --disable-shared --enable-static --enable-version3 --arch=x86_64 
>> >> --target-os=linux --enable-cuda --enable-cuvid --enable-nvenc 
>> >> --enable-gpl --enable-nonfree --enable-runtime-cpudetect 
>> >> --enable-libnpp --extra-cflags='-I/usr/local/cuda/include --static'
>> >> --extra-ldflags=-L/usr/local/cuda/lib64 --enable-gpl 
>> >> --enable-cuda-nvcc --enable-libfreetype --enable-libvpl 
>> >> --enable-ffnvcodec --enable-cuda-llvm --disable-ffplay 
>> >> --pkg-config-flags=--static --enable-libnpp-static --enable-opengl
>> --enable-filter=gltransition --extra-libs='-lGLEW -lEGL'
>> >> --logfile=./config.log --enable-libfreetype --enable-libharfbuzz 
>> >> --enable-libsrt
>> >>   libavutil      58. 37.100 / 58. 37.100
>> >>   libavcodec     60. 30.102 / 60. 30.102
>> >>   libavformat    60. 15.101 / 60. 15.101
>> >>   libavdevice    60.  2.101 / 60.  2.101
>> >>   libavfilter     9. 11.100 /  9. 11.100
>> >>   libswscale      7.  4.100 /  7.  4.100
>> >>   libswresample   4. 11.100 /  4. 11.100
>> >>   libpostproc    57.  2.100 / 57.  2.100
>> >> [AVHWDeviceContext @ 0x55c1ddf49b40] libva: VA-API version 1.20.0 
>> >> [AVHWDeviceContext @ 0x55c1ddf49b40] libva: Trying to open 
>> >> /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
>> >> [AVHWDeviceContext @ 0x55c1ddf49b40] libva: Found init function
>> >> __vaDriverInit_1_20
>> >> [AVHWDeviceContext @ 0x55c1ddf49b40] libva: va_openDriver() returns
>> >> 0 [AVHWDeviceContext @ 0x55c1ddf49b40] Initialised VAAPI connection:
>> >> version
>> >> 1.20
>> >> [AVHWDeviceContext @ 0x55c1ddf49b40] VAAPI driver: Intel iHD driver 
>> >> for
>> >> Intel(R) Gen Graphics - 23.4.3 ().
>> >> [AVHWDeviceContext @ 0x55c1ddf49b40] Driver not found in known 
>> >> nonstandard list, using standard behaviour.
>> >> [AVHWDeviceContext @ 0x55c1ddf7b080] Trying to use DRM render node 
>> >> for device 0.
>> >> [AVHWDeviceContext @ 0x55c1ddf7b080] libva: VA-API version 1.20.0 
>> >> [AVHWDeviceContext @ 0x55c1ddf7b080] libva: User requested driver 'iHD'
>> >> [AVHWDeviceContext @ 0x55c1ddf7b080] libva: Trying to open 
>> >> /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
>> >> [AVHWDeviceContext @ 0x55c1ddf7b080] libva: Found init function
>> >> __vaDriverInit_1_20
>> >> [AVHWDeviceContext @ 0x55c1ddf7b080] libva: va_openDriver() returns
>> >> 0 [AVHWDeviceContext @ 0x55c1ddf7b080] Initialised VAAPI connection:
>> >> version
>> >> 1.20
>> >> [AVHWDeviceContext @ 0x55c1ddf7b080] VAAPI driver: Intel iHD driver 
>> >> for
>> >> Intel(R) Gen Graphics - 23.4.3 ().
>> >> [AVHWDeviceContext @ 0x55c1ddf7b080] Driver not found in known 
>> >> nonstandard list, using standard behaviour.
>> >> [AVHWDeviceContext @ 0x55c1ddf78680] Use Intel(R) oneVPL to create 
>> >> MFX session, API version is 2.9, the required implementation 
>> >> version is
>> >> 1.3 libva info: VA-API version 1.20.0 libva info: Trying to open 
>> >> /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
>> >> libva info: Found init function __vaDriverInit_1_20 libva info:
>> >> va_openDriver() returns 0 libva info: VA-API version 1.20.0 libva
>> >> info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
>> >> libva info: Found init function __vaDriverInit_1_20 libva info:
>> >> va_openDriver() returns 0 libva info: VA-API version 1.20.0 libva
>> >> info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
>> >> libva info: Found init function __vaDriverInit_1_20 libva info:
>> >> va_openDriver() returns 0 libva info: VA-API version 1.20.0 libva
>> >> info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
>> >> libva info: Found init function __vaDriverInit_1_20 libva info:
>> >> va_openDriver() returns 0 libva info: VA-API version 1.20.0 libva
>> >> info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
>> >> libva info: Found init function __vaDriverInit_1_20 libva info:
>> >> va_openDriver() returns 0 libva info: VA-API version 1.20.0 libva
>> >> info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
>> >> libva info: Found init function __vaDriverInit_1_20 libva info:
>> >> va_openDriver() returns 0 libva info: VA-API version 1.20.0 libva
>> >> info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
>> >> libva info: Found init function __vaDriverInit_1_20 libva info:
>> >> va_openDriver() returns 0 libva info: VA-API version 1.20.0 libva
>> >> info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
>> >> libva info: Found init function __vaDriverInit_1_20 libva info:
>> >> va_openDriver() returns 0 [AVHWDeviceContext @ 0x55c1ddf78680] 
>> >> Initialize MFX session:
>> >> implementation version is 2.10
>> >> [Parsed_fps_2 @ 0x55c1de1e5c40] 0 frames in, 0 frames out; 0 frames 
>> >> dropped, 0 frames duplicated.
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] non-existing PPS 0 referenced
>> >>     Last message repeated 1 times
>> >> [h264 @ 0x55c1de19a480] decode_slice_header error
>> >> [h264 @ 0x55c1de19a480] no frame!
>> >> [h264 @ 0x55c1de19a480] Reinit context to 1280x720, pix_fmt:
>> >> yuv420p [mpegts @ 0x55c1de1f8ac0] max_analyze_duration 5000000 
>> >> reached at
>> >> 5013333 microseconds st:1 [mpegts @ 0x55c1de1f8ac0] start time for 
>> >> stream 2 is not set in estimate_timings_from_pts Selecting decoder 
>> >> 'h264' because of requested hwaccel method vaapi Input #0, mpegts, 
>> >> from '/tmp/crash-intel.ts':
>> >>   Duration: 00:00:29.14, start: 26553.922556, bitrate: 6855 kb/s
>> >>   Program 1
>> >>     Metadata:
>> >>       service_name    : Service01
>> >>       service_provider: FFmpeg
>> >>   Stream #0:0[0x100]: Video: h264 (High), 1 reference frame 
>> >> ([27][0][0][0] / 0x001B), yuv420p(tv, bt709, progressive, left),
>> >> 1280x720 [SAR 1:1 DAR 16:9], Closed Captions, 59.94 fps, 59.94 tbr, 
>> >> 90k
>> tbn
>> >>   Stream #0:1[0x101](eng): Audio: aac (LC) ([15][0][0][0] / 
>> >> 0x000F),
>> >> 48000 Hz, stereo, fltp, 193 kb/s
>> >>   Stream #0:2[0x102]: Data: scte_35 [out#0/mpegts @ 0x55c1df079c80] 
>> >> Adding streams from explicit maps...
>> >> [out#0/mpegts @ 0x55c1df079c80] Creating output stream from an 
>> >> explicitly mapped complex filtergraph 0, output [vout] 
>> >> [vost#0:0/h264_qsv @ 0x55c1dee9dec0] Created video stream from 
>> >> complex filtergraph 0:[format:default] [vost#0:0/h264_qsv @ 
>> >> 0x55c1dee9dec0] [aost#0:1/aac @ 0x55c1de151700] Created audio 
>> >> stream from input stream
>> >> 0:1 [dost#0:2/copy @ 0x55c1de291840] Created data stream from input 
>> >> stream 0:2 Stream mapping:
>> >>   Stream #0:0 (h264) -> hwmap:default (graph 0)
>> >>   format:default (graph 0) -> Stream #0:0 (h264_qsv)
>> >>   Stream #0:1 -> #0:1 (aac (native) -> aac (native))
>> >>   Stream #0:2 -> #0:2 (copy)
>> >> Press [q] to stop, [?] for help
>> >> [graph_1_in_0_1 @ 0x55c1de750b40] tb:1/48000 samplefmt:fltp
>> >> samplerate:48000 chlayout:stereo
>> >> [Parsed_aresample_0 @ 0x55c1de1c4900] ch:2 chl:stereo fmt:fltp 
>> >> r:48000Hz
>> >> -> ch:2 chl:stereo fmt:fltp r:48000Hz
>> >> [h264 @ 0x55c1de2513c0] Reinit context to 1280x720, pix_fmt: vaapi 
>> >> [graph 0 input from stream 0:0 @ 0x55c1de20a040] w:1280 h:720 
>> >> pixfmt:vaapi
>> >> tb:1/90000 fr:60000/1001 sar:1/1
>> >> [auto_scale_0 @ 0x55c1de1f4180] w:iw h:ih flags:'' interl:0
>> >> [Parsed_format_3 @ 0x55c1dee0c280] auto-inserting filter 'auto_scale_0'
>> >> between the filter 'Parsed_fps_2' and the filter 'Parsed_format_3'
>> >> [auto_scale_1 @ 0x55c1defb3240] w:iw h:ih flags:'' interl:0 [format 
>> >> @ 0x55c1de1c5780] auto-inserting filter 'auto_scale_1' between the 
>> >> filter 'Parsed_format_3' and the filter 'format'
>> >> [AVHWDeviceContext @ 0x55c1de113600] Use Intel(R) oneVPL to create 
>> >> MFX session, API version is 2.9, the required implementation 
>> >> version is
>> >> 1.3 libva info: VA-API version 1.20.0 libva info: Trying to open 
>> >> /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
>> >> libva info: Found init function __vaDriverInit_1_20 libva info:
>> >> va_openDriver() returns 0 libva info: VA-API version 1.20.0 libva
>> >> info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
>> >> libva info: Found init function __vaDriverInit_1_20 libva info:
>> >> va_openDriver() returns 0 libva info: VA-API version 1.20.0 libva
>> >> info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
>> >> libva info: Found init function __vaDriverInit_1_20 libva info:
>> >> va_openDriver() returns 0 libva info: VA-API version 1.20.0 libva
>> >> info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
>> >> libva info: Found init function __vaDriverInit_1_20 libva info:
>> >> va_openDriver() returns 0 libva info: VA-API version 1.20.0 libva
>> >> info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
>> >> libva info: Found init function __vaDriverInit_1_20 libva info:
>> >> va_openDriver() returns 0 libva info: VA-API version 1.20.0 libva
>> >> info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
>> >> libva info: Found init function __vaDriverInit_1_20 libva info:
>> >> va_openDriver() returns 0 libva info: VA-API version 1.20.0 libva
>> >> info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
>> >> libva info: Found init function __vaDriverInit_1_20 libva info:
>> >> va_openDriver() returns 0 libva info: VA-API version 1.20.0 libva
>> >> info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
>> >> libva info: Found init function __vaDriverInit_1_20 libva info:
>> >> va_openDriver() returns 0 [AVHWDeviceContext @ 0x55c1de113600] 
>> >> Initialize MFX session:
>> >> implementation version is 2.10
>> >> [Parsed_vpp_qsv_1 @ 0x55c1de758c00] Use Intel(R) oneVPL to create 
>> >> MFX session with the specified MFX loader
>> >> [Parsed_vpp_qsv_1 @ 0x55c1de758c00] VPP: input is video memory 
>> >> surface
>> >> [Parsed_vpp_qsv_1 @ 0x55c1de758c00] VPP: output is system memory 
>> >> surface
>> >> [Parsed_fps_2 @ 0x55c1de1e4980] fps=60000/1001
>> >> [auto_scale_0 @ 0x55c1de1f4180] w:1280 h:720 fmt:nv12 sar:1/1 ->
>> >> w:1280
>> >> h:720 fmt:yuv420p sar:1/1 flags:0x00000004
>> >> [auto_scale_1 @ 0x55c1defb3240] w:1280 h:720 fmt:yuv420p sar:1/1 ->
>> >> w:1280
>> >> h:720 fmt:nv12 sar:1/1 flags:0x00000004
>> >> [Parsed_fps_2 @ 0x55c1de1e4980] Set first pts to 33
>> >> [auto_scale_0 @ 0x55c1de1f4180] w:1280 h:720 fmt:nv12 sar:1/1 ->
>> >> w:1280
>> >> h:720 fmt:yuv420p sar:1/1 flags:0x00000004
>> >>     Last message repeated 2 times
>> >> [auto_scale_1 @ 0x55c1defb3240] w:1280 h:720 fmt:yuv420p sar:1/1 ->
>> >> w:1280
>> >> h:720 fmt:nv12 sar:1/1 flags:0x00000004
>> >>     Last message repeated 2 times
>> >> [h264_qsv @ 0x55c1de150b00] Using device hw3 (type qsv) with 
>> >> h264_qsv encoder.
>> >> [h264_qsv @ 0x55c1de150b00] Encoder: input is system memory surface 
>> >> [h264_qsv @ 0x55c1de150b00] Use Intel(R) oneVPL to create MFX 
>> >> session with the specified MFX loader [h264_qsv @ 0x55c1de150b00] 
>> >> Using the constant bitrate (CBR) ratecontrol method [h264_qsv @ 
>> >> 0x55c1de150b00]
>> >> profile: avc high; level: 32 [h264_qsv @ 0x55c1de150b00] GopPicSize:
>> >> 30; GopRefDist: 1; GopOptFlag:
>> >> closed; IdrInterval: 0
>> >> [h264_qsv @ 0x55c1de150b00] TargetUsage: 4; RateControlMethod: CBR 
>> >> [h264_qsv @ 0x55c1de150b00] BufferSizeInKB: 1000; InitialDelayInKB:
>> >> 750;
>> >> TargetKbps: 4000; MaxKbps: 4000; BRCParamMultiplier: 1 [h264_qsv @ 
>> >> 0x55c1de150b00] NumSlice: 1; NumRefFrame: 2 [h264_qsv @ 
>> >> 0x55c1de150b00] RateDistortionOpt: OFF [h264_qsv @ 0x55c1de150b00]
>> >> RecoveryPointSEI: OFF [h264_qsv @ 0x55c1de150b00] VDENC: ON 
>> >> [h264_qsv @ 0x55c1de150b00] Entropy coding: CABAC;
>> >> MaxDecFrameBuffering: 2 [h264_qsv @ 0x55c1de150b00] NalHrdConformance: ON; SingleSeiNalUnit:
>> >> ON;
>> >> VuiVclHrdParameters: OFF VuiNalHrdParameters: ON [h264_qsv @ 
>> >> 0x55c1de150b00] FrameRateExtD: 1001; FrameRateExtN: 60000 [h264_qsv 
>> >> @ 0x55c1de150b00] IntRefType: 0; IntRefCycleSize: 0;
>> >> IntRefQPDelta: 0
>> >> [h264_qsv @ 0x55c1de150b00] MaxFrameSize: 0; MaxSliceSize: 0 
>> >> [h264_qsv @ 0x55c1de150b00] BitrateLimit: OFF; MBBRC: OFF; ExtBRC:
>> >> OFF [h264_qsv @ 0x55c1de150b00] Trellis: auto [h264_qsv @ 0x55c1de150b00] RepeatPPS:
>> >> OFF; NumMbPerSlice: 0; LookAheadDS:
>> >> 2x
>> >> [h264_qsv @ 0x55c1de150b00] AdaptiveI: OFF; AdaptiveB: OFF; 
>> >> BRefType:off [h264_qsv @ 0x55c1de150b00] MinQPI: 0; MaxQPI: 0; MinQPP:
>> >> 0; MaxQPP: 0;
>> >> MinQPB: 0; MaxQPB: 0
>> >> [h264_qsv @ 0x55c1de150b00] DisableDeblockingIdc: 0 [h264_qsv @ 
>> >> 0x55c1de150b00] SkipFrame: no_skip [h264_qsv @ 0x55c1de150b00]
>> >> PRefType: simple [h264_qsv @ 0x55c1de150b00] TransformSkip: unknown 
>> >> [h264_qsv @ 0x55c1de150b00] IntRefCycleDist: 0 [h264_qsv @ 
>> >> 0x55c1de150b00] LowDelayBRC: OFF [h264_qsv @ 0x55c1de150b00]
>> >> MaxFrameSizeI: 0; MaxFrameSizeP: 0 [h264_qsv @ 0x55c1de150b00]
>> >> ScenarioInfo: 4 Automatically inserted bitstream filter 
>> >> 'scte35ptsadjust'; args=''
>> >> [mpegts @ 0x55c1de167180] service 1 using PCR in pid=256, 
>> >> pcr_period=20ms [mpegts @ 0x55c1de167180] muxrate 4953560, sdt 
>> >> every
>> >> 500 ms, pat/pmt every
>> >> 100 ms
>> >> Output #0, mpegts, to '/tmp/intel-output.ts':
>> >>   Metadata:
>> >>     encoder         : Lavf60.15.101
>> >>   Stream #0:0: Video: h264, 1 reference frame, nv12(tv, bt709, 
>> >> progressive, left), 1280x720 (0x0) [SAR 1:1 DAR 16:9], q=2-31, 4000 
>> >> kb/s,
>> >> 59.94 fps, 90k tbn
>> >>     Metadata:
>> >>       encoder         : Lavc60.30.102 h264_qsv
>> >>     Side data:
>> >>       cpb: bitrate max/min/avg: 4000000/4000000/4000000 buffer size:
>> >> 8000000 vbv_delay: N/A
>> >>   Stream #0:1(eng): Audio: aac (LC), 48000 Hz, stereo, fltp, delay 
>> >> 1024,
>> >> 192 kb/s
>> >>     Metadata:
>> >>       encoder         : Lavc60.30.102 aac
>> >>   Stream #0:2: Data: scte_35
>> >> Segmentation fault (core dumped)
>> >>
>>
>> > Please upload the sample source file triggering the segfault.
>> >
>> > Also, test with these variants:
>> >
>> > 1. Initializing a QSV instance from VAAPI.
>> >
>> > ffmpeg -y -threads 2 -nostats -loglevel verbose -fflags +genpts 
>> > -fflags
>> discardcorrupt -hwaccel vaapi -init_hw_device
>> vaapi=va:/dev/dri/renderD130 -hwaccel_output_format vaapi 
>> -extra_hw_frames 2 -init_hw_device qsv=qs at va -filter_hw_device qs 
>> -autorotate 0 -i /tmp/crash-intel.ts -autoscale 0
>> > -filter:a:0 "aresample=async=10000" -c:a:0 aac  -ac:a:0 2 -ar:a:0
>> > 48000
>> > -b:a:0 192k -flush_packets 0 -filter_complex
>> "[0:v:0]vpp_qsv=deinterlace=2:w=1280:h=720,fps=60000/1001,format=yuv420p[vout]"
>> > -map "[vout]" -map "0:a:0" -map 0:d? -c:v h264_qsv -b:v 4000k 
>> > -minrate:v
>> 4000k -maxrate:v 4000k -bufsize:v 8000k -scenario livestreaming 
>> -strict_gop
>> > 1 -forced_idr 1 -profile:v high -level:v 4.2 -bf:v 0 -g:v 30 -f 
>> > mpegts
>> -muxrate 4953560 -pes_payload_size 1528 /tmp/intel-output.ts
>> >
>> >
>> > 2. Using hwmap to derive QSV from VAAPI H/W:
>> >
>> > ffmpeg -y -threads 2 -nostats -loglevel verbose -fflags +genpts 
>> > -fflags
>> discardcorrupt -hwaccel vaapi -init_hw_device
>> vaapi=va:/dev/dri/renderD130 -hwaccel_output_format vaapi 
>> -extra_hw_frames 2 -filter_hw_device va -autorotate 0 -i 
>> /tmp/crash-intel.ts -autoscale 0
>> > -filter:a:0 "aresample=async=10000" -c:a:0 aac  -ac:a:0 2 -ar:a:0
>> > 48000
>> > -b:a:0 192k -flush_packets 0 -filter_complex
>> "[0:v:0]hwmap=derive_device=qsv,format=qsv,vpp_qsv=deinterlace=2:w=1280:h=720,fps=60000/1001,format=yuv420p[vout]"
>> > -map "[vout]" -map "0:a:0" -map 0:d? -c:v h264_qsv -b:v 4000k 
>> > -minrate:v
>> 4000k -maxrate:v 4000k -bufsize:v 8000k -scenario livestreaming 
>> -strict_gop
>> > 1 -forced_idr 1 -profile:v high -level:v 4.2 -bf:v 0 -g:v 30 -f 
>> > mpegts
>> -muxrate 4953560 -pes_payload_size 1528 /tmp/intel-output.ts
>> >
>> > 3. Using hwupload to derive QSV from VAAPI H/W:
>> >
>> > The extra_hw_frames argument is now passed directly to hwupload's
>> derive_device option, with the value of 64.
>> >
>> > ffmpeg -y -threads 2 -nostats -loglevel verbose -fflags +genpts 
>> > -fflags
>> discardcorrupt \
>> > -hwaccel vaapi -init_hw_device vaapi=va:/dev/dri/renderD130
>> -hwaccel_output_format vaapi -filter_hw_device va -autorotate 0 \
>> > -i /tmp/crash-intel.ts -autoscale 0 -filter:a:0 "aresample=async=10000"
>> -c:a:0 aac -ac:a:0 2 -ar:a:0 48000 -b:a:0 192k -flush_packets 0 \
>> > -filter_complex
>> "[0:v:0]hwmap=derive_device=qsv:extra_hw_frames=64,format=qsv,vpp_qsv=deinterlace=2:w=1280:h=720,fps=60000/1001,format=yuv420p[vout]"
>> \
>> > -map "[vout]" -map "0:a:0" -map 0:d? \ -c:v h264_qsv -b:v 4000k 
>> > -minrate:v 4000k -maxrate:v 4000k -bufsize:v
>> 8000k -scenario livestreaming -strict_gop 1 -forced_idr 1 -profile:v 
>> high -level:v 4.2 -bf:v 0 -g:v 30 \
>> > -f mpegts -muxrate 4953560 -pes_payload_size 1528 
>> > /tmp/intel-output.ts
>> >
>> > Extra parameters added:
>> >
>> > (a). -autororate 0 : This disables the automatic rotation of the 
>> > video
>> according to file metadata. Known to make some H/W decoders to misbehave.
>> > (b). -noautoscale : Used to prevent the automatic insertion of a 
>> > scale
>> filter in the pipeline(s), ensuring better resilience against crashes 
>> due to changing input resolutions with *some* encoder & decoder combinations.
>> >
>> > Test and report back.
>>
>> Link to input ts file:
>> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdriv
>> %2F&data=05%7C02%7Cshanew%40innovsys.com%7C8b560a334e1c427677b708dced5
>> 8cc45%7C7a48ce45ee974a95ac183390878a179b%7C0%7C0%7C638646212890216867%
>> 7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik
>> 1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=Y6oJ4c16rQ%2B37E%2BX5eaxDF4V6B
>> U8pPw%2F%2FmR6gBp%2B6Vg%3D&reserved=0
>> e.google.com%2Ffile%2Fd%2F1Vy67szauLHemJMaVYHAQ9qZvpwO2qBnj%2Fview%3Fu
>> sp%3Dsharing&data=05%7C02%7Cshanew%40innovsys.com%7C330d8c43847847a6f4
>> 7e08dced536136%7C7a48ce45ee974a95ac183390878a179b%7C0%7C0%7C6386461896
>> 19449414%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiL
>> CJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=gLNEaeLZx%2BSBPtdU7x6
>> 6c0b8LNK2bceM%2B8MFNtymvlM%3D&reserved=0
>>
>> 1. Had to add this to start of the filter (or I got invalid conversion
>> errors): hwmap=derive_device=qsv, Result: Segfaults 2. Segfaults 3.
>> Had to change to this at the start of the filter (or I got invalid 
>> conversion errors): hwmap=derive_device=qsv, Result: Segfaults
>>
>> I have also been testing directly decoding with QSV and encoding QSV 
>> using this test stream, this works 100% no crash. The only issue with 
>> QSV is the decoder strips A53 captions.
>>
>> Today I have been digging around in ffmpeg source and I think the 
>> problem is the QSV decoder is not copying out the a53 captions and 
>> putting them in the sideband data for the qsv endoder to use. In 
>> theory this should be easy to fix.
>>

>> Somehow, this seems to work correctly on the current ffmpeg git tip 
>> (master
>> branch) and release points 7.0 and 7.1 with the command:
>>
>> ffmpeg -y -threads 2 -loglevel verbose -fflags +genpts -fflags 
>> discardcorrupt \ -hwaccel vaapi -init_hw_device 
>> vaapi=va:/dev/dri/renderD128 -hwaccel_output_format vaapi \ 
>> -filter_hw_device va -noautorotate -i "crash-intel.ts" \ -noautoscale 
>> -filter:a:0 "aresample=async=10000" -c:a:0 aac  -ac:a:0 2
>> -ar:a:0 48000 -b:a:0 192k -flush_packets 0 \ -filter_complex "[0:v:0]hwmap=derive_device=qsv,format=qsv,vpp_qsv=deinterlace=2:w=1280:h=720:framerate=60000/1001[vout]"
>> \
>> -map "[vout]" -map "0:a:0" -map 0:d? -c:v h264_qsv -b:v 4000k -minrate:v 4000k -maxrate:v 4000k -bufsize:v 8000k \ -scenario livestreaming -strict_gop 1 -forced_idr 1 -profile:v high -level:v 4.2 -bf:v 0 -g:v 30 \ -y -f mpegts -muxrate 4953560 -pes_payload_size 1528 "intel-output.ts"
>>
>> And the output has the A53 captions:
>>
>> mediainfo intel-output.ts
>> General
>> ID                                       : 1 (0x1)
>> Complete name                            : intel-output.ts
>> Format                                   : MPEG-TS
>> File size                                : 17.2 MiB
>> Duration                                 : 29 s 179 ms
>> Overall bit rate mode                    : Constant
>> Overall bit rate                         : 4 954 kb/s
>> Frame rate                               : 59.940 FPS
>> Movie name                               : My Blue Heaven
>> Law rating                               : TV-PG (DL)
>>
>> Video
>> ID                                       : 256 (0x100)
>> Menu ID                                  : 1 (0x1)
>> Format                                   : AVC
>> Format/Info                              : Advanced Video Codec
>> Format profile                           : High at L4
>> Format settings                          : CABAC / 2 Ref Frames
>> Format settings, CABAC                   : Yes
>> Format settings, Reference frames        : 2 frames
>> Format settings, GOP                     : M=1, N=30
>> Codec ID                                 : 27
>> Duration                                 : 28 s 587 ms
>> Bit rate mode                            : Constant
>> Nominal bit rate                         : 4 000 kb/s
>> Width                                    : 1 280 pixels
>> Height                                   : 720 pixels
>> Display aspect ratio                     : 16:9
>> Frame rate                               : 59.940 (60000/1001) FPS
>> Standard                                 : Component
>> Color space                              : YUV
>> Chroma subsampling                       : 4:2:0
>> Bit depth                                : 8 bits
>> Scan type                                : Progressive
>> Bits/(Pixel*Frame)                       : 0.072
>> Color range                              : Limited
>> Color primaries                          : BT.709
>> Transfer characteristics                 : BT.709
>> Matrix coefficients                      : BT.709
>>
>> Audio
>> ID                                       : 257 (0x101)
>> Menu ID                                  : 1 (0x1)
>> Format                                   : AAC LC
>> Format/Info                              : Advanced Audio Codec Low
>> Complexity
>> Format version                           : Version 4
>> Muxing mode                              : ADTS
>> Codec ID                                 : 15-2
>> Duration                                 : 29 s 141 ms
>> Bit rate mode                            : Variable
>> Channel(s)                               : 2 channels
>> Channel layout                           : L R
>> Sampling rate                            : 48.0 kHz
>> Frame rate                               : 46.875 FPS (1024 SPF)
>> Compression mode                         : Lossy
>> Delay relative to video                  : -572 ms
>> Language                                 : English
>>
>> Text #1
>> ID                                       : 256 (0x100)-CC1
>> Menu ID                                  : 1 (0x1)
>> Format                                   : EIA-608
>> Muxing mode                              : SCTE 128 / DTVCC Transport
>> Muxing mode, more info                   : Muxed in Video #1
>> Duration                                 : 28 s 587 ms
>> Duration of the visible content          : 25 s 592 ms
>> Start time (commands)                    : 2 s 522 ms
>> Start time                               : 2 s 623 ms
>> End time                                 : 28 s 215 ms
>> Bit rate mode                            : Constant
>> Stream size                              : 0.00 Byte (0%)
>> Count of events                          : 9
>> Count of PopOn events                    : 9
>> Count of lines                           : 15
>> Maximum count of lines per event         : 3
>> Count of frames before first event       : 39
>> Type of the first event                  : PopOn
>>
>> Text #2
>> ID                                       : 256 (0x100)-CC3
>> Menu ID                                  : 1 (0x1)
>> Format                                   : EIA-608
>> Muxing mode                              : SCTE 128 / DTVCC Transport
>> Muxing mode, more info                   : Muxed in Video #1
>> Duration                                 : 28 s 587 ms
>> Start time (commands)                    : 10 s 981 ms
>> Bit rate mode                            : Constant
>> Stream size                              : 0.00 Byte (0%)
>> Count of lines                           : 0
>>
>> Text #3
>> ID                                       : 256 (0x100)-1
>> Menu ID                                  : 1 (0x1)
>> Format                                   : EIA-708
>> Muxing mode                              : SCTE 128 / DTVCC Transport
>> Muxing mode, more info                   : Muxed in Video #1
>> Duration                                 : 28 s 587 ms
>> Bit rate mode                            : Constant
>> Stream size                              : 0.00 Byte (0%)
>>
>> Text #4
>> ID                                       : 256 (0x100)-2
>> Menu ID                                  : 1 (0x1)
>> Format                                   : EIA-708
>> Muxing mode                              : SCTE 128 / DTVCC Transport
>> Muxing mode, more info                   : Muxed in Video #1
>> Duration                                 : 28 s 587 ms
>> Bit rate mode                            : Constant
>> Stream size                              : 0.00 Byte (0%)
>>
>> Menu
>> ID                                       : 4096 (0x1000)
>> Menu ID                                  : 1 (0x1)
>> Format                                   : AVC / AAC
>> Duration                                 : 29 s 179 ms
>> List                                     : 256 (0x100) (AVC) / 257 (0x101)
>> (AAC, English)
>> Title                                    : My Blue Heaven
>> Language                                 :  / English
>> Service name                             : Service01
>> Service provider                         : FFmpeg
>> Service type                             : digital television
>> Law rating                               : TV-PG (DL)

> I should have mentioned that the command does not crash 100% of the time, if you run it over and over mine crashes maybe 10-15% of the time. I would try it a few times and see if it still works.

I pulled the latest source, and built it, then ran my command again. It didn't crash the first time, but it did crash the 2nd run and I can still make it crash reliably with the latest source. 




More information about the ffmpeg-user mailing list