[Libav-user] h264_v4l2m2m encoder segmentation fault (Samsung Exynos5422)

Roland Singer roland at desertbit.com
Thu Dec 20 20:04:46 EET 2018


On 12/20/18 6:24 PM, Roland Singer wrote:
> Hi,
> 
> hope somebody can help solving a segmentation fault caused by using the h264_v4l2m2m encoder on an Samsung Exynos5422.
> 
> I tested the encoder using the unmodified examples (git master):
> - encode_video.c
> - transcoding.c
> 
>> # ./encode_video out h264_v4l2m2m
>> [h264_v4l2m2m @ 0x49e150] driver 'uvcvideo' on card 'RYS HFR USB2.0 Camera: RYS HFR '
>> [h264_v4l2m2m @ 0x49e150] driver 'exynos-gsc' on card 'exynos-gsc gscaler'
>> [h264_v4l2m2m @ 0x49e150] driver 'exynos-gsc' on card 'exynos-gsc gscaler'
>> [h264_v4l2m2m @ 0x49e150] driver 's5p-mfc' on card 's5p-mfc-enc'
>> [h264_v4l2m2m @ 0x49e150] Using device /dev/video11
>> [h264_v4l2m2m @ 0x49e150] driver 's5p-mfc' on card 's5p-mfc-enc'
>> [h264_v4l2m2m @ 0x49e150] Encoder does not support b-frames yet
>> [h264_v4l2m2m @ 0x49e150] h264 profile not found
>> [h264_v4l2m2m @ 0x49e150] Encoder adjusted: qmin (0), qmax (51)
>> Send frame   0
>> Segmentation fault (core dumped)
> 
>> # ./transcoding sintel-1280-surround.mp4 out.mp4
>> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'sintel-1280-surround.mp4':
>>   Metadata:
>>     major_brand     : isom
>>     minor_version   : 512
>>     compatible_brands: isomiso2avc1mp41
>>     creation_time   : 1970-01-01T00:00:00.000000Z
>>     title           : Sintel
>>     encoder         : Lavf52.78.5
>>     copyright       : (c) Copyright 2010 Blender Foundation, all rights reserved
>>     description     : Sintel open movie project
>>   Duration: 00:14:48.06, start: 0.000000, bitrate: 2062 kb/s
>>     Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x544, 1615 kb/s, 24 fps, 24 tbr, 24 tbn, 48 tbc (default)
>>     Metadata:
>>       creation_time   : 1970-01-01T00:00:00.000000Z
>>       handler_name    : VideoHandler
>>     Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 440 kb/s (default)
>>     Metadata:
>>       creation_time   : 1970-01-01T00:00:00.000000Z
>>       handler_name    : SoundHandler
>> [h264_v4l2m2m @ 0x5051d0] driver 'uvcvideo' on card 'RYS HFR USB2.0 Camera: RYS HFR '
>> [h264_v4l2m2m @ 0x5051d0] driver 'exynos-gsc' on card 'exynos-gsc gscaler'
>> [h264_v4l2m2m @ 0x5051d0] driver 'exynos-gsc' on card 'exynos-gsc gscaler'
>> [h264_v4l2m2m @ 0x5051d0] driver 's5p-mfc' on card 's5p-mfc-enc'
>> [h264_v4l2m2m @ 0x5051d0] Using device /dev/video11
>> [h264_v4l2m2m @ 0x5051d0] driver 's5p-mfc' on card 's5p-mfc-enc'
>> [h264_v4l2m2m @ 0x5051d0] h264 profile not found
>> [h264_v4l2m2m @ 0x5051d0] Encoder adjusted: qmin (0), qmax (51)
>> Segmentation fault (core dumped)
> 
> However using ffmpeg directly with the following command works as expected:
> 
>> # ffmpeg -vcodec h264_v4l2m2m -i sintel-1280-surround.mp4 -vcodec h264_v4l2m2m output.mp4
>> ffmpeg version n4.1 Copyright (c) 2000-2018 the FFmpeg developers
>>   built with gcc 8.2.0 (GCC)
>>   configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libass --enable-libbluray --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-omx --enable-shared --enable-version3 --host-cflags='"-fPIC"'
>>   libavutil      56. 22.100 / 56. 22.100
>>   libavcodec     58. 35.100 / 58. 35.100
>>   libavformat    58. 20.100 / 58. 20.100
>>   libavdevice    58.  5.100 / 58.  5.100
>>   libavfilter     7. 40.101 /  7. 40.101
>>   libswscale      5.  3.100 /  5.  3.100
>>   libswresample   3.  3.100 /  3.  3.100
>>   libpostproc    55.  3.100 / 55.  3.100
>> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'sintel-1280-surround.mp4':
>>   Metadata:
>>     major_brand     : isom
>>     minor_version   : 512
>>     compatible_brands: isomiso2avc1mp41
>>     creation_time   : 1970-01-01T00:00:00.000000Z
>>     title           : Sintel
>>     encoder         : Lavf52.78.5
>>     copyright       : (c) Copyright 2010 Blender Foundation, all rights reserved
>>     description     : Sintel open movie project
>>   Duration: 00:14:48.06, start: 0.000000, bitrate: 2062 kb/s
>>     Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x544, 1615 kb/s, 24 fps, 24 tbr, 24 tbn, 48 tbc (default)
>>     Metadata:
>>       creation_time   : 1970-01-01T00:00:00.000000Z
>>       handler_name    : VideoHandler
>>     Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 440 kb/s (default)
>>     Metadata:
>>       creation_time   : 1970-01-01T00:00:00.000000Z
>>       handler_name    : SoundHandler
>> [h264_v4l2m2m @ 0x4f1b10] driver 'uvcvideo' on card 'RYS HFR USB2.0 Camera: RYS HFR '
>> [h264_v4l2m2m @ 0x4f1b10] driver 'exynos-gsc' on card 'exynos-gsc gscaler'
>>     Last message repeated 1 times
>> [h264_v4l2m2m @ 0x4f1b10] driver 's5p-mfc' on card 's5p-mfc-enc'
>> [h264_v4l2m2m @ 0x4f1b10] driver 's5p-mfc' on card 's5p-mfc-dec'
>> [h264_v4l2m2m @ 0x4f1b10] Using device /dev/video10
>> [h264_v4l2m2m @ 0x4f1b10] driver 's5p-mfc' on card 's5p-mfc-dec'
>> Stream mapping:
>>   Stream #0:0 -> #0:0 (h264 (h264_v4l2m2m) -> h264 (h264_v4l2m2m))
>>   Stream #0:1 -> #0:1 (aac (native) -> aac (native))
>> Press [q] to stop, [?] for help
>> [h264_v4l2m2m @ 0x524dd0] driver 'uvcvideo' on card 'RYS HFR USB2.0 Camera: RYS HFR '
>> [h264_v4l2m2m @ 0x524dd0] driver 'exynos-gsc' on card 'exynos-gsc gscaler'
>>     Last message repeated 1 times
>> [h264_v4l2m2m @ 0x524dd0] driver 's5p-mfc' on card 's5p-mfc-enc'
>> [h264_v4l2m2m @ 0x524dd0] Using device /dev/video11
>> [h264_v4l2m2m @ 0x524dd0] driver 's5p-mfc' on card 's5p-mfc-enc'
>> [h264_v4l2m2m @ 0x524dd0] h264 profile not found
>> [h264_v4l2m2m @ 0x524dd0] Encoder adjusted: qmin (0), qmax (51)
>> Output #0, mp4, to 'output.mp4':
>>   Metadata:
>>     major_brand     : isom
>>     minor_version   : 512
>>     compatible_brands: isomiso2avc1mp41
>>     description     : Sintel open movie project
>>     title           : Sintel
>>     copyright       : (c) Copyright 2010 Blender Foundation, all rights reserved
>>     encoder         : Lavf58.20.100
>>     Stream #0:0(und): Video: h264 (h264_v4l2m2m) (avc1 / 0x31637661), nv21, 1280x544, q=2-31, 200 kb/s, 24 fps, 12288 tbn, 24 tbc (default)
>>     Metadata:
>>       creation_time   : 1970-01-01T00:00:00.000000Z
>>       handler_name    : VideoHandler
>>       encoder         : Lavc58.35.100 h264_v4l2m2m
>>     Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 341 kb/s (default)
>>     Metadata:
>>       creation_time   : 1970-01-01T00:00:00.000000Z
>>       handler_name    : SoundHandler
>>       encoder         : Lavc58.35.100 aac
>> [mp4 @ 0x4edfd0] Non-monotonous DTS in output stream 0:0; previous: 0, current: 0; changing to 1. This may result in incorrect timestamps in the output file.
>> ^Came=  218 fps= 54 q=-0.0 size=   15616kB time=00:00:09.15 bitrate=13978.0kbits/s speed=2.27x
> 
> Hope we can fix the examples for the MFC Samsung h264_v4l2m2m encoder.
> Have a great day!
> 
> Kind Regards
> Roland

Oh one more thing. dmesg outputs following line:

> vidioc_try_fmt:1070: failed to try output format




More information about the Libav-user mailing list