#5493: incomplete x264 MB tree with framerate filter -------------------------------------+------------------------------------- Reporter: blacktrash | Type: defect Status: new | Priority: normal Component: avfilter | Version: git- Keywords: framerate | master libx264 | Blocked By: Blocking: | Reproduced by developer: 0 Analyzed by developer: 0 | -------------------------------------+------------------------------------- Summary of the bug: Depending on (weird) input frame rates and chosen framerate filter frame rate and other circumstances, the framerate filter results in an incomplete MB tree 1st pass stats file.
How to reproduce: {{{ $ ffprobe -select_streams v -show_entries stream=r_frame_rate,avg_frame_rate oldphone.mp4 ffprobe version N-79691-g66dd21d Copyright (c) 2007-2016 the FFmpeg developers built with Apple LLVM version 7.0.2 (clang-700.1.81) configuration: --enable-gpl --enable-nonfree --disable-ffserver --enable-shared --enable-openssl --enable-libspeex --enable-libopus --enable-libfdk-aac --enable-libx265 --enable-libx264 --enable-libxvid --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libvidstab --extra-cflags=-I/sw/include --extra- libs=-L/sw/lib libavutil 55. 23.100 / 55. 23.100 libavcodec 57. 38.100 / 57. 38.100 libavformat 57. 34.103 / 57. 34.103 libavdevice 57. 0.101 / 57. 0.101 libavfilter 6. 44.100 / 6. 44.100 libswscale 4. 1.100 / 4. 1.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'oldphone.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: isommp42 creation_time : 2016-04-24 09:48:33 location : +60.4916+022.2685/ location-eng : +60.4916+022.2685/ com.android.version: 6.0.1 Duration: 00:00:52.12, start: 0.000000, bitrate: 15880 kb/s Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 15715 kb/s, SAR 1:1 DAR 16:9, 25.48 fps, 90k tbr, 90k tbn (default) Metadata: creation_time : 2016-04-24 09:48:33 handler_name : VideoHandle Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 196 kb/s (default) Metadata: creation_time : 2016-04-24 09:48:33 handler_name : SoundHandle [STREAM] r_frame_rate=180000/2 avg_frame_rate=14906250/584969 [/STREAM] $ ffmpeg -i oldphone.mp4 -filter:v framerate=30,scale=640:360 -b:v 500k -pass 1 -y test.mp4 ffmpeg version N-79691-g66dd21d Copyright (c) 2000-2016 the FFmpeg developers built with Apple LLVM version 7.0.2 (clang-700.1.81) configuration: --enable-gpl --enable-nonfree --disable-ffserver --enable-shared --enable-openssl --enable-libspeex --enable-libopus --enable-libfdk-aac --enable-libx265 --enable-libx264 --enable-libxvid --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libvidstab --extra-cflags=-I/sw/include --extra- libs=-L/sw/lib libavutil 55. 23.100 / 55. 23.100 libavcodec 57. 38.100 / 57. 38.100 libavformat 57. 34.103 / 57. 34.103 libavdevice 57. 0.101 / 57. 0.101 libavfilter 6. 44.100 / 6. 44.100 libswscale 4. 1.100 / 4. 1.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'oldphone.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: isommp42 creation_time : 2016-04-24 09:48:33 location : +60.4916+022.2685/ location-eng : +60.4916+022.2685/ com.android.version: 6.0.1 Duration: 00:00:52.12, start: 0.000000, bitrate: 15880 kb/s Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 15715 kb/s, SAR 1:1 DAR 16:9, 25.48 fps, 90k tbr, 90k tbn (default) Metadata: creation_time : 2016-04-24 09:48:33 handler_name : VideoHandle Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 196 kb/s (default) Metadata: creation_time : 2016-04-24 09:48:33 handler_name : SoundHandle [Parsed_framerate_0 @ 0x7fccb2700000] time base:1/90000 -> 1/90000 exact:1 [Parsed_framerate_0 @ 0x7fccb2700000] fps -> fps:30/1 scene score:7.000000 interpolate start:15 end:240 [libx264 @ 0x7fccb2812e00] using SAR=1/1 [libx264 @ 0x7fccb2812e00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX [libx264 @ 0x7fccb2812e00] profile Main, level 3.0 [libx264 @ 0x7fccb2812e00] 264 - core 148 r2694 3b70645 - H.264/MPEG-4 AVC codec - Copyleft 2003-2016 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x1:0 me=dia subme=2 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=11 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=500 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 [mp4 @ 0x7fccb2811c00] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead. Last message repeated 1 times Output #0, mp4, to 'test.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: isommp42 com.android.version: 6.0.1 location : +60.4916+022.2685/ location-eng : +60.4916+022.2685/ encoder : Lavf57.34.103 Stream #0:0(eng): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 640x360 [SAR 1:1 DAR 16:9], q=2-31, 500 kb/s, 30 fps, 15360 tbn (default) Metadata: creation_time : 2016-04-24 09:48:33 handler_name : VideoHandle encoder : Lavc57.38.100 libx264 Side data: cpb: bitrate max/min/avg: 0/0/500000 buffer size: 0 vbv_delay: -1 Stream #0:1(eng): Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, stereo, fltp, 128 kb/s (default) Metadata: creation_time : 2016-04-24 09:48:33 handler_name : SoundHandle encoder : Lavc57.38.100 aac Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264)) Stream #0:1 -> #0:1 (aac (native) -> aac (native)) Press [q] to stop, [?] for help frame= 1559 fps=137 q=-1.0 Lsize= 3989kB time=00:00:52.12 bitrate= 627.0kbits/s speed=4.58x video:3119kB audio:813kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.448805% [libx264 @ 0x7fccb2812e00] frame I:12 Avg QP:24.46 size: 8829 [libx264 @ 0x7fccb2812e00] frame P:419 Avg QP:26.64 size: 4157 [libx264 @ 0x7fccb2812e00] frame B:1128 Avg QP:29.56 size: 1193 [libx264 @ 0x7fccb2812e00] consecutive B-frames: 1.9% 3.0% 6.2% 89.0% [libx264 @ 0x7fccb2812e00] mb I I16..4: 49.9% 0.0% 50.1% [libx264 @ 0x7fccb2812e00] mb P I16..4: 23.3% 0.0% 0.0% P16..4: 49.3% 0.0% 0.0% 0.0% 0.0% skip:27.3% [libx264 @ 0x7fccb2812e00] mb B I16..4: 3.4% 0.0% 0.0% B16..8: 19.2% 0.0% 0.0% direct: 7.1% skip:70.3% L0:35.8% L1:43.1% BI:21.2% [libx264 @ 0x7fccb2812e00] final ratefactor: 23.53 [libx264 @ 0x7fccb2812e00] coded y,uvDC,uvAC intra: 45.2% 40.8% 10.6% inter: 9.6% 8.2% 0.3% [libx264 @ 0x7fccb2812e00] i16 v,h,dc,p: 74% 13% 7% 6% [libx264 @ 0x7fccb2812e00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 43% 27% 10% 3% 3% 4% 3% 3% 5% [libx264 @ 0x7fccb2812e00] i8c dc,h,v,p: 48% 16% 31% 6% [libx264 @ 0x7fccb2812e00] Weighted P-Frames: Y:14.6% UV:3.6% [libx264 @ 0x7fccb2812e00] kb/s:491.59 [aac @ 0x7fccb2814600] Qavg: 1142.250 $ ffmpeg -i oldphone.mp4 -filter:v framerate=30,scale=640:360 -b:v 500k -pass 2 -y test.mp4 ffmpeg version N-79691-g66dd21d Copyright (c) 2000-2016 the FFmpeg developers built with Apple LLVM version 7.0.2 (clang-700.1.81) configuration: --enable-gpl --enable-nonfree --disable-ffserver --enable-shared --enable-openssl --enable-libspeex --enable-libopus --enable-libfdk-aac --enable-libx265 --enable-libx264 --enable-libxvid --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libvidstab --extra-cflags=-I/sw/include --extra- libs=-L/sw/lib libavutil 55. 23.100 / 55. 23.100 libavcodec 57. 38.100 / 57. 38.100 libavformat 57. 34.103 / 57. 34.103 libavdevice 57. 0.101 / 57. 0.101 libavfilter 6. 44.100 / 6. 44.100 libswscale 4. 1.100 / 4. 1.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'oldphone.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: isommp42 creation_time : 2016-04-24 09:48:33 location : +60.4916+022.2685/ location-eng : +60.4916+022.2685/ com.android.version: 6.0.1 Duration: 00:00:52.12, start: 0.000000, bitrate: 15880 kb/s Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 15715 kb/s, SAR 1:1 DAR 16:9, 25.48 fps, 90k tbr, 90k tbn (default) Metadata: creation_time : 2016-04-24 09:48:33 handler_name : VideoHandle Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 196 kb/s (default) Metadata: creation_time : 2016-04-24 09:48:33 handler_name : SoundHandle [Parsed_framerate_0 @ 0x7fd880600000] time base:1/90000 -> 1/90000 exact:1 [Parsed_framerate_0 @ 0x7fd880600000] fps -> fps:30/1 scene score:7.000000 interpolate start:15 end:240 [libx264 @ 0x7fd88082c000] using SAR=1/1 [libx264 @ 0x7fd88082c000] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX [libx264 @ 0x7fd88082c000] profile High, level 3.0 [libx264 @ 0x7fd88082c000] 264 - core 148 r2694 3b70645 - H.264/MPEG-4 AVC codec - Copyleft 2003-2016 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=11 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=2pass mbtree=1 bitrate=500 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 cplxblur=20.0 qblur=0.5 ip_ratio=1.40 aq=1:1.00 [mp4 @ 0x7fd880828c00] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead. Last message repeated 1 times Output #0, mp4, to 'test.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: isommp42 com.android.version: 6.0.1 location : +60.4916+022.2685/ location-eng : +60.4916+022.2685/ encoder : Lavf57.34.103 Stream #0:0(eng): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 640x360 [SAR 1:1 DAR 16:9], q=2-31, 500 kb/s, 30 fps, 15360 tbn (default) Metadata: creation_time : 2016-04-24 09:48:33 handler_name : VideoHandle encoder : Lavc57.38.100 libx264 Side data: cpb: bitrate max/min/avg: 0/0/500000 buffer size: 0 vbv_delay: -1 Stream #0:1(eng): Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, stereo, fltp, 128 kb/s (default) Metadata: creation_time : 2016-04-24 09:48:33 handler_name : SoundHandle encoder : Lavc57.38.100 aac Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264)) Stream #0:1 -> #0:1 (aac (native) -> aac (native)) Press [q] to stop, [?] for help [libx264 @ 0x7fd88082c000] Incomplete MB-tree stats file.08 bitrate= 615.3kbits/s speed=3.84x Video encoding failed [libx264 @ 0x7fd88082c000] frame I:12 Avg QP:24.36 size: 8693 [libx264 @ 0x7fd88082c000] frame P:416 Avg QP:26.93 size: 3900 [libx264 @ 0x7fd88082c000] frame B:1117 Avg QP:29.65 size: 1323 [libx264 @ 0x7fd88082c000] consecutive B-frames: 1.9% 3.0% 6.2% 88.9% [libx264 @ 0x7fd88082c000] mb I I16..4: 18.8% 66.8% 14.3% [libx264 @ 0x7fd88082c000] mb P I16..4: 4.2% 7.9% 2.1% P16..4: 43.2% 10.2% 4.5% 0.0% 0.0% skip:27.8% [libx264 @ 0x7fd88082c000] mb B I16..4: 0.5% 0.7% 0.2% B16..8: 39.0% 3.8% 0.9% direct: 2.3% skip:52.7% L0:44.3% L1:49.4% BI: 6.4% [libx264 @ 0x7fd88082c000] 8x8 transform intra:56.1% inter:83.0% [libx264 @ 0x7fd88082c000] coded y,uvDC,uvAC intra: 57.8% 60.2% 23.1% inter: 12.4% 11.7% 0.4% [libx264 @ 0x7fd88082c000] i16 v,h,dc,p: 83% 6% 1% 10% [libx264 @ 0x7fd88082c000] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 53% 13% 9% 2% 3% 5% 4% 5% 6% [libx264 @ 0x7fd88082c000] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 44% 14% 7% 4% 6% 9% 6% 6% 5% [libx264 @ 0x7fd88082c000] i8c dc,h,v,p: 48% 17% 27% 8% [libx264 @ 0x7fd88082c000] Weighted P-Frames: Y:14.2% UV:3.1% [libx264 @ 0x7fd88082c000] ref P L0: 50.1% 18.3% 20.3% 10.1% 1.1% [libx264 @ 0x7fd88082c000] ref B L0: 85.2% 11.0% 3.8% [libx264 @ 0x7fd88082c000] ref B L1: 94.9% 5.1% [libx264 @ 0x7fd88082c000] kb/s:497.76 [aac @ 0x7fd88082d800] Qavg: 1142.847 [aac @ 0x7fd88082d800] 2 frames left in the queue on closing Conversion failed! }}} This does not happen e.g. with libvpx; I presume because it collects less data in its first pass stats. -- Ticket URL: <https://trac.ffmpeg.org/ticket/5493> FFmpeg <https://ffmpeg.org> FFmpeg issue tracker _______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org http://ffmpeg.org/mailman/listinfo/ffmpeg-trac