Opened 2 years ago

Closed 2 years ago

#9558 closed defect (fixed)

Videotoolbox extremely slow (even much slower than software encoding

Reported by: Atarikid Owned by:
Priority: critical Component: undetermined
Version: git-master Keywords:
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description (last modified by Atarikid)

On macOS Monterey 12.1 using Videotoolbox is extremely slow for H264.

Below one take using X264 encoder and one take with using Videotoolbox.
Using x264 is between 3-5 faster compared to using videotoolbox.

This was not the case before which Videotoolbox was always about 5-to10 times faster.

####
HERE THE TAKE USING X264 encoder. Which took approx. 5 seconds to encode.
####

/Users/atarikid/Desktop/ffmpegdaily -i /Users/atarikid/Desktop/Rock.mp4 -an -c:v h264 -b:v 700k -y /Users/atarikid/Movies/Rock.mp4
ffmpeg version N-104939-g98f87c3d29 Copyright (c) 2000-2021 the FFmpeg developers

built with Apple clang version 13.0.0 (clang-1300.0.29.3)
configuration: --prefix=/Volumes/tempdisk/sw --extra-cflags=-fno-stack-check --arch=arm64 --cc=/usr/bin/clang --enable-gpl --enable-libopenjpeg --enable-libopus --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libvpx --enable-libwebp --enable-libass --enable-libfreetype --enable-libtheora --enable-libvorbis --enable-libsnappy --enable-libaom --enable-libvidstab --enable-libzimg --enable-libsvtav1 --enable-version3 --pkg-config-flags=--static --disable-ffplay --enable-postproc --enable-nonfree --enable-neon --enable-runtime-cpudetect --disable-indev=qtkit --disable-indev=x11grab_xcb
libavutil 57. 11.100 / 57. 11.100
libavcodec 59. 14.100 / 59. 14.100
libavformat 59. 10.100 / 59. 10.100
libavdevice 59. 0.101 / 59. 0.101
libavfilter 8. 20.100 / 8. 20.100
libswscale 6. 1.101 / 6. 1.101
libswresample 4. 0.100 / 4. 0.100
libpostproc 56. 0.100 / 56. 0.100

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/atarikid/Desktop/Rock.mp4':

Metadata:

major_brand : mp42
minor_version : 0
compatible_brands: isomavc1mp42
creation_time : 2010-07-13T15:38:07.000000Z

Duration: 00:03:48.08, start: 0.000000, bitrate: 565 kb/s
Stream #0:0[0x1](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 93 kb/s (default)

Metadata:

creation_time : 2010-07-13T15:38:07.000000Z
handler_name : (C) 2007 Google Inc. v08.13.2007.
vendor_id : [0][0][0][0]

Stream #0:1[0x2](und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(progressive), 480x270 [SAR 1:1 DAR 16:9], 469 kb/s, 25 fps, 25 tbr, 25k tbn (default)

Metadata:

creation_time : 2010-07-13T15:38:07.000000Z
handler_name : (C) 2007 Google Inc. v08.13.2007.
vendor_id : [0][0][0][0]

Stream mapping:

Stream #0:1 -> #0:0 (h264 (native) -> h264 (libx264))

Press [q] to stop, ? for help
[libx264 @ 0x147604960] using SAR=1/1
[libx264 @ 0x147604960] using cpu capabilities: ARMv8 NEON
[libx264 @ 0x147604960] profile High, level 2.1, 4:2:0, 8-bit
[libx264 @ 0x147604960] 264 - core 164 r3075 66a5bc1 - H.264/MPEG-4 AVC codec - Copyleft 2003-2021 - 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=8 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=abr mbtree=1 bitrate=700 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to '/Users/atarikid/Movies/Rock.mp4':

Metadata:

major_brand : mp42
minor_version : 0
compatible_brands: isomavc1mp42
encoder : Lavf59.10.100

Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p(progressive), 480x270 [SAR 1:1 DAR 16:9], q=2-31, 700 kb/s, 25 fps, 12800 tbn (default)

Metadata:

creation_time : 2010-07-13T15:38:07.000000Z
handler_name : (C) 2007 Google Inc. v08.13.2007.
vendor_id : [0][0][0][0]
encoder : Lavc59.14.100 libx264

Side data:

cpb: bitrate max/min/avg: 0/0/700000 buffer size: 0 vbv_delay: N/A

frame= 1 fps=0.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= frame= 445 fps=0.0 q=24.0 size= 1280kB time=00:00:15.60 bitrate= 672.2kbits/frame= 896 fps=894 q=22.0 size= 2560kB time=00:00:33.64 bitrate= 623.4kbits/frame= 1297 fps=863 q=25.0 size= 4352kB time=00:00:49.68 bitrate= 717.6kbits/frame= 1727 fps=862 q=26.0 size= 5888kB time=00:01:06.88 bitrate= 721.2kbits/frame= 2169 fps=865 q=25.0 size= 7168kB time=00:01:24.56 bitrate= 694.4kbits/frame= 2634 fps=876 q=22.0 size= 8448kB time=00:01:43.16 bitrate= 670.9kbits/frame= 3052 fps=870 q=22.0 size= 9728kB time=00:01:59.88 bitrate= 664.8kbits/frame= 3478 fps=867 q=22.0 size= 11264kB time=00:02:16.92 bitrate= 673.9kbits/frame= 3910 fps=867 q=21.0 size= 12544kB time=00:02:34.20 bitrate= 666.4kbits/frame= 4327 fps=863 q=22.0 size= 14336kB time=00:02:50.88 bitrate= 687.3kbits/frame= 4749 fps=862 q=21.0 size= 15616kB time=00:03:07.76 bitrate= 681.3kbits/frame= 5164 fps=859 q=21.0 size= 16896kB time=00:03:24.36 bitrate= 677.3kbits/frame= 5575 fps=856 q=22.0 size= 18432kB time=00:03:40.80 bitrate= 683.9kbits/frame= 5702 fps=846 q=-1.0 Lsize= 19332kB time=00:03:47.96 bitrate= 694.7kbits/s speed=33.8x
video:19270kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.321124%
[libx264 @ 0x147604960] frame I:51 Avg QP:15.31 size: 15383
[libx264 @ 0x147604960] frame P:2255 Avg QP:18.67 size: 5665
[libx264 @ 0x147604960] frame B:3396 Avg QP:22.63 size: 1818
[libx264 @ 0x147604960] consecutive B-frames: 16.7% 8.5% 9.1% 65.7%
[libx264 @ 0x147604960] mb I I16..4: 7.9% 19.1% 73.0%
[libx264 @ 0x147604960] mb P I16..4: 1.2% 5.1% 3.6% P16..4: 36.3% 31.3% 14.8% 0.0% 0.0% skip: 7.7%
[libx264 @ 0x147604960] mb B I16..4: 0.2% 0.5% 0.6% B16..8: 48.6% 17.2% 4.6% direct: 3.4% skip:24.9% L0:53.1% L1:32.3% BI:14.6%
[libx264 @ 0x147604960] final ratefactor: 17.39
[libx264 @ 0x147604960] 8x8 transform intra:45.2% inter:51.1%
[libx264 @ 0x147604960] coded y,uvDC,uvAC intra: 82.3% 84.5% 43.5% inter: 27.2% 25.2% 1.3%
[libx264 @ 0x147604960] i16 v,h,dc,p: 32% 32% 8% 27%
[libx264 @ 0x147604960] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 18% 12% 6% 8% 9% 8% 11% 9%
[libx264 @ 0x147604960] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 22% 10% 6% 9% 9% 8% 8% 6%
[libx264 @ 0x147604960] i8c dc,h,v,p: 45% 23% 23% 9%
[libx264 @ 0x147604960] Weighted P-Frames: Y:2.2% UV:0.4%
[libx264 @ 0x147604960] ref P L0: 76.8% 12.5% 8.5% 2.2% 0.1%
[libx264 @ 0x147604960] ref B L0: 96.8% 2.7% 0.5%
[libx264 @ 0x147604960] ref B L1: 98.7% 1.3%
[libx264 @ 0x147604960] kb/s:692.09

####
HERE THE TAKE USING h264_videotoolbox. Which took approx. 16 seconds to encode. (so 3 times slower)
####

/Users/atarikid/Desktop/ffmpegdaily -i /Users/atarikid/Desktop/Rock.mp4 -an -c:v h264_videotoolbox -b:v 700k -y /Users/atarikid/Movies/Rock.mp4
ffmpeg version N-104939-g98f87c3d29 Copyright (c) 2000-2021 the FFmpeg developers

built with Apple clang version 13.0.0 (clang-1300.0.29.3)
configuration: --prefix=/Volumes/tempdisk/sw --extra-cflags=-fno-stack-check --arch=arm64 --cc=/usr/bin/clang --enable-gpl --enable-libopenjpeg --enable-libopus --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libvpx --enable-libwebp --enable-libass --enable-libfreetype --enable-libtheora --enable-libvorbis --enable-libsnappy --enable-libaom --enable-libvidstab --enable-libzimg --enable-libsvtav1 --enable-version3 --pkg-config-flags=--static --disable-ffplay --enable-postproc --enable-nonfree --enable-neon --enable-runtime-cpudetect --disable-indev=qtkit --disable-indev=x11grab_xcb
libavutil 57. 11.100 / 57. 11.100
libavcodec 59. 14.100 / 59. 14.100
libavformat 59. 10.100 / 59. 10.100
libavdevice 59. 0.101 / 59. 0.101
libavfilter 8. 20.100 / 8. 20.100
libswscale 6. 1.101 / 6. 1.101
libswresample 4. 0.100 / 4. 0.100
libpostproc 56. 0.100 / 56. 0.100

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/atarikid/Desktop/Rock.mp4':

Metadata:

major_brand : mp42
minor_version : 0
compatible_brands: isomavc1mp42
creation_time : 2010-07-13T15:38:07.000000Z

Duration: 00:03:48.08, start: 0.000000, bitrate: 565 kb/s
Stream #0:0[0x1](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 93 kb/s (default)

Metadata:

creation_time : 2010-07-13T15:38:07.000000Z
handler_name : (C) 2007 Google Inc. v08.13.2007.
vendor_id : [0][0][0][0]

Stream #0:1[0x2](und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(progressive), 480x270 [SAR 1:1 DAR 16:9], 469 kb/s, 25 fps, 25 tbr, 25k tbn (default)

Metadata:

creation_time : 2010-07-13T15:38:07.000000Z
handler_name : (C) 2007 Google Inc. v08.13.2007.
vendor_id : [0][0][0][0]

Stream mapping:

Stream #0:1 -> #0:0 (h264 (native) -> h264 (h264_videotoolbox))

Press [q] to stop, ? for help
Output #0, mp4, to '/Users/atarikid/Movies/Rock.mp4':

Metadata:

major_brand : mp42
minor_version : 0
compatible_brands: isomavc1mp42
encoder : Lavf59.10.100

Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p(progressive), 480x270 [SAR 1:1 DAR 16:9], q=2-31, 700 kb/s, 25 fps, 12800 tbn (default)

Metadata:

creation_time : 2010-07-13T15:38:07.000000Z
handler_name : (C) 2007 Google Inc. v08.13.2007.
vendor_id : [0][0][0][0]
encoder : Lavc59.14.100 h264_videotoolbox

[h264_videotoolbox @ 0x13b6173c0] Color range not set for yuv420p. Using MPEG range.
frame= 1 fps=0.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= frame= 179 fps=0.0 q=-0.0 size= 512kB time=00:00:06.80 bitrate= 616.9kbits/frame= 401 fps=400 q=-0.0 size= 1280kB time=00:00:15.68 bitrate= 668.8kbits/frame= 623 fps=414 q=-0.0 size= 2048kB time=00:00:24.56 bitrate= 683.1kbits/frame= 846 fps=422 q=-0.0 size= 2816kB time=00:00:33.48 bitrate= 689.0kbits/frame= 1073 fps=428 q=-0.0 size= 3584kB time=00:00:42.56 bitrate= 689.9kbits/frame= 1300 fps=432 q=-0.0 size= 4352kB time=00:00:51.64 bitrate= 690.4kbits/frame= 1536 fps=438 q=-0.0 size= 5120kB time=00:01:01.08 bitrate= 686.7kbits/frame= 1778 fps=443 q=-0.0 size= 5888kB time=00:01:10.76 bitrate= 681.7kbits/frame= 2015 fps=446 q=-0.0 size= 6912kB time=00:01:20.24 bitrate= 705.7kbits/frame= 2252 fps=449 q=-0.0 size= 7680kB time=00:01:29.72 bitrate= 701.2kbits/frame= 2483 fps=450 q=-0.0 size= 8448kB time=00:01:38.96 bitrate= 699.3kbits/frame= 2712 fps=451 q=-0.0 size= 9216kB time=00:01:48.12 bitrate= 698.3kbits/frame= 2934 fps=450 q=-0.0 size= 9984kB time=00:01:57.00 bitrate= 699.1kbits/frame= 3158 fps=450 q=-0.0 size= 10752kB time=00:02:05.96 bitrate= 699.3kbits/frame= 3391 fps=451 q=-0.0 size= 11520kB time=00:02:15.28 bitrate= 697.6kbits/frame= 3621 fps=451 q=-0.0 size= 12288kB time=00:02:24.48 bitrate= 696.7kbits/frame= 3852 fps=452 q=-0.0 size= 13056kB time=00:02:33.72 bitrate= 695.8kbits/frame= 4083 fps=452 q=-0.0 size= 13824kB time=00:02:42.96 bitrate= 694.9kbits/frame= 4312 fps=453 q=-0.0 size= 14592kB time=00:02:52.12 bitrate= 694.5kbits/frame= 4544 fps=453 q=-0.0 size= 15360kB time=00:03:01.40 bitrate= 693.7kbits/frame= 4773 fps=453 q=-0.0 size= 16128kB time=00:03:10.56 bitrate= 693.3kbits/frame= 5002 fps=454 q=-0.0 size= 16896kB time=00:03:19.72 bitrate= 693.0kbits/frame= 5229 fps=453 q=-0.0 size= 17920kB time=00:03:28.80 bitrate= 703.1kbits/frame= 5465 fps=454 q=-0.0 size= 18688kB time=00:03:38.24 bitrate= 701.5kbits/frame= 5695 fps=454 q=-0.0 size= 19456kB time=00:03:47.44 bitrate= 700.8kbits/frame= 5702 fps=454 q=-0.0 Lsize= 19584kB time=00:03:48.04 bitrate= 703.5kbits/s speed=18.1x
video:19558kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.129136%

Change History (3)

comment:1 by Atarikid, 2 years ago

Description: modified (diff)

comment:2 by Atarikid, 2 years ago

Description: modified (diff)

comment:3 by Atarikid, 2 years ago

Resolution: fixed
Status: newclosed

This is fixed with latest daily build (23/12/2021)

Note: See TracTickets for help on using tickets.