#6884: Crash if libvmaf model file has DOS line endings or can't be found -------------------------------------+------------------------------------- Reporter: Gyan | Type: defect Status: new | Priority: important Component: | Version: git- undetermined | master Keywords: | Blocked By: Blocking: | Reproduced by developer: 0 Analyzed by developer: 0 | -------------------------------------+------------------------------------- I've compiled ffmpeg with libvmaf on Windows using MinGW. The filter works fine if the model file is found and has Unix line endings, otherwise it crashes.
'''Command 1''' - with no filter options passed to libvmaf so it looks in default path for model file, which isn't there. {{{ ffmpeg -i t:\anyfile.mp4 -lavfi [0][0]libvmaf -f null - }}} Log is pasted verbatim (with mangled character printing) {{{ ffmpeg version N-89341-g0137386fc1-2017-11-30 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 6.3.0 (x86_64-posix-sjlj-rev1, Built by MinGW-W64 project) configuration: --disable-everything --disable-ffplay --disable-ffprobe --disable-doc --enable-protocols --enable-demuxer=image2 --enable- demuxer=matroska --enable-demuxer=mov --enable-demuxer=mpegts --enable- demuxer=rawvideo --enable-demuxer=wav --enable-decoder=aac --enable- decoder=h264 --enable-decoder=mjpeg --enable-decoder=mp3 --enable- decoder=mpeg4 --enable-decoder=pcm_s16le --enable-decoder=png --enable- decoder=rawvideo --enable-filter=libvmaf --enable-encoder=pcm_s16le --enable-encoder=png --enable-encoder=rawvideo --enable- encoder=wrapped_avframe --enable-muxer=image2 --enable-muxer=null --enable-muxer=nut --enable-muxer=rawvideo --enable-muxer=wav --enable- outdev=sdl2 --enable-libvmaf --disable-w32threads --enable-pthreads --enable-static --disable-shared --extra-ldflags=-static --pkg-config- flags=--static --enable-gpl --enable-version3 --extra-version=2017-11-30 --disable-hwaccel-libs libavutil 56. 4.100 / 56. 4.100 libavcodec 58. 6.102 / 58. 6.102 libavformat 58. 2.103 / 58. 2.103 libavdevice 58. 0.100 / 58. 0.100 libavfilter 7. 5.100 / 7. 5.100 libswscale 5. 0.101 / 5. 0.101 libswresample 3. 0.101 / 3. 0.101 libpostproc 55. 0.100 / 55. 0.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 't:\anyfile.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.2.100 Duration: 00:00:01.00, start: 0.000000, bitrate: 295 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 286 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default) Metadata: handler_name : VideoHandler Stream mapping: Stream #0:0 (h264) -> libvmaf:main Stream #0:0 (h264) -> libvmaf:reference libvmaf -> Stream #0:0 (wrapped_avframe) Press [q] to stop, [?] for help Output #0, null, to 'pipe:':S t Metadata: a major_brand : risomt minor_version : c51a2l c compatible_brands:u lisomiso2avc1mp41a t encoder : iLavf58.2.103n g Stream #0: 0V: Video: wrapped_avframe, yuv420p, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/sM, A25 fps, F25 tbn, 25 tbcs (default)c o Metadata: r encoder : eLavc58.6.102 wrapped_avframe. .. Input model at /usr/local/share/model/vmaf_v0.6.1.pkl cannot be read successfully. terminate called after throwing an instance of 'VmafException' what(): Error loading model (.pkl): Trouble reading the file:/usr/local/share/model/vmaf_v0.6.1.pkl This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. }}} Windows Problem Signature {{{ Problem Event Name: APPCRASH Application Name: ffmpeg.exe Application Version: 0.0.0.0 Application Timestamp: 0026ff60 Fault Module Name: ffmpeg.exe Fault Module Version: 0.0.0.0 Fault Module Timestamp: 0026ff60 Exception Code: 40000015 Exception Offset: 0000000000518c6e OS Version: 6.1.7601.2.1.0.256.1 Locale ID: 1033 Additional Information 1: 4853 Additional Information 2: 48531a60e339689f315ee0b09464db2c Additional Information 3: 5b25 Additional Information 4: 5b2547d963930beee67fa94195b51bca }}} '''Command 2''' - correct model path specified. Model file is that checked out from VMAF repo, and has CRLF endings. Git repo was set to `eol.mode=lf` before cloning. {{{ ffmpeg -i t:\anyfile.mp4 -lavfi [0][0]libvmaf='C\:\\avutils\\ffmpeg- libs\\compiled\\share\\model\\vmaf_v0.6.1.pkl' -f null - }}} Log {{{ ffmpeg version N-89341-g0137386fc1-2017-11-30 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 6.3.0 (x86_64-posix-sjlj-rev1, Built by MinGW-W64 project) configuration: --disable-everything --disable-ffplay --disable-ffprobe --disable-doc --enable-protocols --enable-demuxer=image2 --enable- demuxer=matroska --enable-demuxer=mov --enable-demuxer=mpegts --enable- demuxer=rawvideo --enable-demuxer=wav --enable-decoder=aac --enable- decoder=h264 --enable-decoder=mjpeg --enable-decoder=mp3 --enable- decoder=mpeg4 --enable-decoder=pcm_s16le --enable-decoder=png --enable- decoder=rawvideo --enable-filter=libvmaf --enable-encoder=pcm_s16le --enable-encoder=png --enable-encoder=rawvideo --enable- encoder=wrapped_avframe --enable-muxer=image2 --enable-muxer=null --enable-muxer=nut --enable-muxer=rawvideo --enable-muxer=wav --enable- outdev=sdl2 --enable-libvmaf --disable-w32threads --enable-pthreads --enable-static --disable-shared --extra-ldflags=-static --pkg-config- flags=--static --enable-gpl --enable-version3 --extra-version=2017-11-30 --disable-hwaccel-libs libavutil 56. 4.100 / 56. 4.100 libavcodec 58. 6.102 / 58. 6.102 libavformat 58. 2.103 / 58. 2.103 libavdevice 58. 0.100 / 58. 0.100 libavfilter 7. 5.100 / 7. 5.100 libswscale 5. 0.101 / 5. 0.101 libswresample 3. 0.101 / 3. 0.101 libpostproc 55. 0.100 / 55. 0.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 't:\anyfile.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.2.100 Duration: 00:00:01.00, start: 0.000000, bitrate: 295 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 286 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default) Metadata: handler_name : VideoHandler Stream mapping: Stream #0:0 (h264) -> libvmaf:main Stream #0:0 (h264) -> libvmaf:reference libvmaf -> Stream #0:0 (wrapped_avframe) Press [q] to stop, [?] for help SOutput #0, null, to 'pipe:': ta Metadata: major_brand : rtisom c minor_version : a51l2c u compatible_brands:l aisomiso2avc1mp41t i encoder : nLavf58.2.103g Stream #0:V0M: Video: wrapped_avframe, yuv420p, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/sA, F25 fps, 25 tbn, s25 tbcc (default)o r Metadata: e encoder : .Lavc58.6.102 wrapped_avframe. . Input model at C:\avutils\ffmpeg-libs\compiled\share\model\vmaf_v0.6.1.pkl cannot be read successfully. terminate called after throwing an instance of 'VmafException' what(): Error loading model (.pkl): No newline at end o string This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. }}} Windows {{{ Problem Event Name: APPCRASH Application Name: ffmpeg.exe Application Version: 0.0.0.0 Application Timestamp: 0026ff60 Fault Module Name: ffmpeg.exe Fault Module Version: 0.0.0.0 Fault Module Timestamp: 0026ff60 Exception Code: 40000015 Exception Offset: 0000000000518c6e OS Version: 6.1.7601.2.1.0.256.1 Locale ID: 1033 Additional Information 1: 4853 Additional Information 2: 48531a60e339689f315ee0b09464db2c Additional Information 3: 5b25 Additional Information 4: 5b2547d963930beee67fa94195b51bca }}} '''Command 3''' - same command as above, after running `dos2unix` on the model file {{{ ffmpeg version N-89341-g0137386fc1-2017-11-30 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 6.3.0 (x86_64-posix-sjlj-rev1, Built by MinGW-W64 project) configuration: --disable-everything --disable-ffplay --disable-ffprobe --disable-doc --enable-protocols --enable-demuxer=image2 --enable- demuxer=matroska --enable-demuxer=mov --enable-demuxer=mpegts --enable- demuxer=rawvideo --enable-demuxer=wav --enable-decoder=aac --enable- decoder=h264 --enable-decoder=mjpeg --enable-decoder=mp3 --enable- decoder=mpeg4 --enable-decoder=pcm_s16le --enable-decoder=png --enable- decoder=rawvideo --enable-filter=libvmaf --enable-encoder=pcm_s16le --enable-encoder=png --enable-encoder=rawvideo --enable- encoder=wrapped_avframe --enable-muxer=image2 --enable-muxer=null --enable-muxer=nut --enable-muxer=rawvideo --enable-muxer=wav --enable- outdev=sdl2 --enable-libvmaf --disable-w32threads --enable-pthreads --enable-static --disable-shared --extra-ldflags=-static --pkg-config- flags=--static --enable-gpl --enable-version3 --extra-version=2017-11-30 --disable-hwaccel-libs libavutil 56. 4.100 / 56. 4.100 libavcodec 58. 6.102 / 58. 6.102 libavformat 58. 2.103 / 58. 2.103 libavdevice 58. 0.100 / 58. 0.100 libavfilter 7. 5.100 / 7. 5.100 libswscale 5. 0.101 / 5. 0.101 libswresample 3. 0.101 / 3. 0.101 libpostproc 55. 0.100 / 55. 0.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 't:\anyfile.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.2.100 Duration: 00:00:01.00, start: 0.000000, bitrate: 295 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 286 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default) Metadata: handler_name : VideoHandler Stream mapping: Stream #0:0 (h264) -> libvmaf:main Stream #0:0 (h264) -> libvmaf:reference libvmaf -> Stream #0:0 (wrapped_avframe) Press [q] to stop, [?] for help Output #0, null, to 'pipe:':St Metadata: ar major_brand : isomt minor_version : ca512lc compatible_brands:ul isomiso2avc1mp41at encoder : inLavf58.2.103 g Stream #0:V0M: Video: wrapped_avframe, yuv420p, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/sA, F 25 fps, 25 tbn, sc25 tbc (defauolt)r e Metadata: . encoder : .Lavc58.6.102 wrapped_avframe. frame= 25 fps=0.0 q=-0.0 Lsize=N/A time=00:00:01.00 bitrate=N/A speed=2.67x video:13kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown Exec FPS: 66.133787 VMAF score = 99.896002 [libvmaf @ 000000000030b320] VMAF score: 99.896002 }}} -- Ticket URL: <https://trac.ffmpeg.org/ticket/6884> FFmpeg <https://ffmpeg.org> FFmpeg issue tracker _______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org http://ffmpeg.org/mailman/listinfo/ffmpeg-trac