#11273: Processing is x40 times slower in latest builds (tpad filter)
-------------------------------------+-------------------------------------
Reporter: Alex | Type: defect
Status: new | Priority: normal
Component: | Version:
undetermined | unspecified
Keywords: tpad | Blocked By:
filtering filter_complex |
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Summary of the bug:
There are three ways to loop a static image: -loop, -stream_loop, and the
tpad filter, which can repeat the last frame forever. In 2023, tpad was
the fastest option. However, now the same command works 40 times slower.
It seems that adding tpad triggers the entire processing chain, whereas in
the 2023 builds, frames were treated as duplicates without any processing.
How to reproduce:
`ffmpeg -y -r 0.3 -i 3.png -i 1.wav -shortest -filter_complex "[0:v]^`
`scale=w=if(gt(iw*ih\,1920*1080)\,iw*min(1920/iw\,1920/ih)\,iw):h=-2,^`
`pad=ceil(iw/2)*2:ceil(ih/2)*2,^`
`tpad=stop_mode=clone:stop_duration=3600100[v]" ^`
`-filter_complex "[1:a]anull[a]" -map "[v]" -map "[a]" ^`
`-c:a pcm_s16le -c:v libx264 -pix_fmt yuv420p ^`
`-benchmark -report bench2024.mp4`
{{{
ffmpeg -y -r 0.3 -i 3.png -i 1.wav -shortest -filter_complex
"[0:v]scale=w=if(gt(iw*ih\,1920*1080)\,iw*min(1920/iw\,1920/ih)\,iw):h=-2,pad=ceil(iw/2)*2:ceil(ih/2)*2,tpad=stop_mode=clone:stop_duration=3600100[v]"
-filter_complex "[1:a]anull[a]" -map "[v]" -map "[a]" -c:a pcm_s16le -c:v
libx264 -pix_fmt yuv420p -benchmark -report bench2024.mp4
ffmpeg started on 2024-10-30 at 11:36:51
Report written to "ffmpeg-20241030-113651.log"
Log level: 48
ffmpeg version 2024-10-27-git-bb57b78013-essentials_build-www.gyan.dev
Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14.2.0 (Rev1, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-
w32threads --disable-autodetect --enable-fontconfig
--enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-
bzlib --enable-lzma --enable-zlib --enable-libsrt --en
able-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-
libwebp --enable-libx264 --enable-libx265 --enable-libxv
id --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-
mediafoundation --enable-libass --enable-libfreetype --enabl
e-libfribidi --enable-libharfbuzz --enable-libvidstab --enable-libvmaf
--enable-libzimg --enable-amf --enable-cuda-llvm --ena
ble-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-
ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc -
-enable-vaapi --enable-libgme --enable-libopenmpt --enable-libopencore-
amrwb --enable-libmp3lame --enable-libtheora --enable-
libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus
--enable-libspeex --enable-libvorbis --enable-libr
ubberband
libavutil 59. 46.100 / 59. 46.100
libavcodec 61. 22.100 / 61. 22.100
libavformat 61. 9.100 / 61. 9.100
libavdevice 61. 4.100 / 61. 4.100
libavfilter 10. 6.100 / 10. 6.100
libswscale 8. 9.101 / 8. 9.101
libswresample 5. 4.100 / 5. 4.100
libpostproc 58. 4.100 / 58. 4.100
Input #0, png_pipe, from '3.png':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: png, rgb24(pc, gbr/unknown/unknown), 1920x1440 [SAR
2834:2834 DAR 4:3], 25 fps, 25 tbr, 25 tbn
[aist#1:0/pcm_s16le @ 00000000004e8e40] Guessed Channel Layout: stereo
Input #1, wav, from '1.wav':
Duration: 00:00:21.69, bitrate: 1413 kb/s
Stream #1:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo,
s16, 1411 kb/s
Stream mapping:
Stream #0:0 (png) -> scale:default (graph 0)
Stream #1:0 (pcm_s16le) -> anull:default (graph 1)
tpad:default (graph 0) -> Stream #0:0 (libx264)
anull:default (graph 1) -> Stream #0:1 (pcm_s16le)
Press [q] to stop, [?] for help
[libx264 @ 0000000000530500] using SAR=1/1
[libx264 @ 0000000000530500] using cpu capabilities: MMX2 SSE2Fast SSSE3
SSE4.2 AVX
[libx264 @ 0000000000530500] profile High, level 5.0, 4:2:0, 8-bit
[libx264 @ 0000000000530500] 264 - core 164 r3198 da14df5 - H.264/MPEG-4
AVC codec - Copyleft 2003-2024 - 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=12 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 di
rect=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=1 scenecut=40
intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf
=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'bench2024.mp4':
Metadata:
encoder : Lavf61.9.100
Stream #0:0: Video: h264 (avc1 / 0x31637661), yuv420p(tv, progressive),
1920x1440 [SAR 1:1 DAR 4:3], q=2-31, 0.30 fps, 1228
8 tbn
Metadata:
encoder : Lavc61.22.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
Stream #0:1: Audio: pcm_s16le (ipcm / 0x6D637069), 44100 Hz, stereo,
s16, 1411 kb/s
Metadata:
encoder : Lavc61.22.100 pcm_s16le
[out#0/mp4 @ 0000000000579440] video:905KiB audio:3736KiB subtitle:0KiB
other streams:0KiB global headers:0KiB muxing overhea
d: 0.075687%
frame= 151 fps= 50 q=-1.0 Lsize= 4645KiB time=00:00:21.68
bitrate=1754.5kbits/s speed=7.24x
bench: utime=18.408s stime=0.234s rtime=2.999s
bench: maxrss=969164KiB
[libx264 @ 0000000000530500] frame I:1 Avg QP: 4.59 size:832750
[libx264 @ 0000000000530500] frame P:38 Avg QP: 5.62 size: 2129
[libx264 @ 0000000000530500] frame B:112 Avg QP:11.34 size: 114
[libx264 @ 0000000000530500] consecutive B-frames: 0.7% 1.3% 0.0% 98.0%
[libx264 @ 0000000000530500] mb I I16..4: 11.3% 45.9% 42.8%
[libx264 @ 0000000000530500] mb P I16..4: 0.0% 0.0% 0.0% P16..4:
5.6% 0.0% 0.1% 0.0% 0.0% skip:94.3%
[libx264 @ 0000000000530500] mb B I16..4: 0.0% 0.0% 0.0% B16..8:
0.4% 0.0% 0.0% direct: 0.0% skip:99.6% L0: 1.0% L
1:99.0% BI: 0.0%
[libx264 @ 0000000000530500] 8x8 transform intra:45.9% inter:85.7%
[libx264 @ 0000000000530500] coded y,uvDC,uvAC intra: 100.0% 99.7% 99.6%
inter: 0.5% 0.1% 0.1%
[libx264 @ 0000000000530500] i16 v,h,dc,p: 14% 22% 32% 32%
[libx264 @ 0000000000530500] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 15% 10%
6% 8% 9% 7% 14% 10%
[libx264 @ 0000000000530500] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 20% 9%
6% 9% 8% 7% 8% 7%
[libx264 @ 0000000000530500] i8c dc,h,v,p: 39% 17% 22% 22%
[libx264 @ 0000000000530500] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0000000000530500] ref P L0: 99.4% 0.0% 0.4% 0.2%
[libx264 @ 0000000000530500] ref B L0: 78.4% 21.6%
[libx264 @ 0000000000530500] kb/s:14.72
}}}
{{{
ffmpeg2023 -y -r 0.3 -i 3.png -i 1.wav -shortest -filter_complex
"[0:v]scale=w=if(gt(iw*ih\,1920*
1080)\,iw*min(1920/iw\,1920/ih)\,iw):h=-2,pad=ceil(iw/2)*2:ceil(ih/2)*2,tpad=stop_mode=clone:stop_duration=3600100[v]"
-filte
r_complex "[1:a]anull[a]" -map "[v]" -map "[a]" -c:a pcm_s16le -c:v
libx264 -pix_fmt yuv420p -benchmark -report bench2023.mp4
ffmpeg started on 2024-10-30 at 11:52:58
Report written to "ffmpeg-20241030-115258.log"
Log level: 48
ffmpeg version 2023-04-17-git-65e537b833-essentials_build-www.gyan.dev
Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-
w32threads --disable-autodetect --enable-fontconfig
--enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-
bzlib --enable-lzma --enable-zlib --enable-libsrt --en
able-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-
libwebp --enable-libx264 --enable-libx265 --enable-libxv
id --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-
mediafoundation --enable-libass --enable-libfreetype --enabl
e-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg
--enable-amf --enable-cuda-llvm --enable-cuvid --enable-ff
nvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2
--enable-libvpl --enable-libgme --enable-libopenmpt --e
nable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-
libvo-amrwbenc --enable-libgsm --enable-libopencore-a
mrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-
librubberband
libavutil 58. 6.100 / 58. 6.100
libavcodec 60. 9.100 / 60. 9.100
libavformat 60. 4.101 / 60. 4.101
libavdevice 60. 2.100 / 60. 2.100
libavfilter 9. 5.100 / 9. 5.100
libswscale 7. 2.100 / 7. 2.100
libswresample 4. 11.100 / 4. 11.100
libpostproc 57. 2.100 / 57. 2.100
Input #0, png_pipe, from '3.png':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: png, rgb24(pc, gbr/unknown/unknown), 1920x1440 [SAR
2834:2834 DAR 4:3], 25 fps, 25 tbr, 25 tbn
[aist#1:0/pcm_s16le @ 00000000005e8d00] Guessed Channel Layout: stereo
Input #1, wav, from '1.wav':
Duration: 00:00:21.69, bitrate: 1413 kb/s
Stream #1:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2
channels, s16, 1411 kb/s
Stream mapping:
Stream #0:0 (png) -> scale:default (graph 0)
Stream #1:0 (pcm_s16le) -> anull:default (graph 1)
tpad:default (graph 0) -> Stream #0:0 (libx264)
anull:default (graph 1) -> Stream #0:1 (pcm_s16le)
Press [q] to stop, [?] for help
[libx264 @ 00000000005f42c0] using SAR=1/1
[libx264 @ 00000000005f42c0] using cpu capabilities: MMX2 SSE2Fast SSSE3
SSE4.2 AVX
[libx264 @ 00000000005f42c0] profile High, level 5.0, 4:2:0, 8-bit
[libx264 @ 00000000005f42c0] 264 - core 164 r3106 eaa68fa - H.264/MPEG-4
AVC codec - Copyleft 2003-2023 - 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=12 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 di
rect=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=1 scenecut=40
intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf
=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'bench2023.mp4':
Metadata:
encoder : Lavf60.4.101
Stream #0:0: Video: h264 (avc1 / 0x31637661), yuv420p(tv, progressive),
1920x1440 [SAR 1:1 DAR 4:3], q=2-31, 0.30 fps, 1228
8 tbn
Metadata:
encoder : Lavc60.9.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
Stream #0:1: Audio: pcm_s16le (ipcm / 0x6D637069), 44100 Hz, stereo,
s16, 1411 kb/s
Metadata:
encoder : Lavc60.9.100 pcm_s16le
[out#0/mp4 @ 0000000000529700] video:454kB audio:3736kB subtitle:0kB other
streams:0kB global headers:0kB muxing overhead: 0.
034613%
frame= 6 fps=0.0 q=-1.0 Lsize= 4191kB time=00:00:21.66
bitrate=1584.8kbits/s speed=65.5x
bench: utime=0.515s stime=0.109s rtime=0.334s
bench: maxrss=433352kB
[libx264 @ 00000000005f42c0] frame I:1 Avg QP: 9.83 size:462555
[libx264 @ 00000000005f42c0] frame P:2 Avg QP:14.57 size: 424
[libx264 @ 00000000005f42c0] frame B:3 Avg QP:12.68 size: 264
[libx264 @ 00000000005f42c0] consecutive B-frames: 33.3% 0.0% 0.0% 66.7%
[libx264 @ 00000000005f42c0] mb I I16..4: 4.6% 82.7% 12.7%
[libx264 @ 00000000005f42c0] mb P I16..4: 0.0% 0.0% 0.0% P16..4:
1.3% 0.1% 0.0% 0.0% 0.0% skip:98.5%
[libx264 @ 00000000005f42c0] mb B I16..4: 0.0% 0.0% 0.0% B16..8:
0.9% 0.0% 0.1% direct: 0.2% skip:98.8% L0:17.7% L
1:82.3% BI: 0.0%
[libx264 @ 00000000005f42c0] 8x8 transform intra:82.7% inter:100.0%
[libx264 @ 00000000005f42c0] coded y,uvDC,uvAC intra: 99.8% 98.9% 96.6%
inter: 0.0% 0.3% 0.0%
[libx264 @ 00000000005f42c0] i16 v,h,dc,p: 7% 18% 18% 57%
[libx264 @ 00000000005f42c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 20% 16% 13%
6% 7% 8% 7% 12% 9%
[libx264 @ 00000000005f42c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 24% 18% 10%
7% 11% 9% 7% 8% 6%
[libx264 @ 00000000005f42c0] i8c dc,h,v,p: 38% 18% 21% 23%
[libx264 @ 00000000005f42c0] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 00000000005f42c0] ref P L0: 97.5% 0.0% 2.5%
[libx264 @ 00000000005f42c0] ref B L1: 99.7% 0.3%
[libx264 @ 00000000005f42c0] kb/s:185.68
}}}
ffmpeg 2024: 18.5 s and 100% CPU
ffmpeg 2023: 0.5 s and 5% CPU
--
Ticket URL: <https://trac.ffmpeg.org/ticket/11273>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
_______________________________________________
FFmpeg-trac mailing list
FFmpeg-trac@avcodec.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-trac
To unsubscribe, visit link above, or email
ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".