[FFmpeg-cvslog] ffmpeg_videotoolbox: skip memory copy if hwaccel_output_format match

zhilizhao git at videolan.org
Thu Jun 10 14:55:43 EEST 2021


ffmpeg | branch: master | zhilizhao <zhilizhao at tencent.com> | Tue Apr 27 13:09:56 2021 +0800| [cf1746d77989c2742c8c364f57a626942cccd8d1] | committer: Steven Liu

ffmpeg_videotoolbox: skip memory copy if hwaccel_output_format match

Simple test results:

Command:
./ffmpeg -y -hwaccel videotoolbox -hwaccel_output_format videotoolbox_vld \
  -i test.mp4 -an -c:v h264_videotoolbox -benchmark out.mp4

Before:
frame= 1221 fps= 66 q=-0.0 Lsize=    3144kB time=00:00:20.33 bitrate=1266.6kbits/s dup=4 drop=0 speed= 1.1x
bench: utime=2.714s stime=1.218s rtime=18.574s

After:
frame= 1221 fps=137 q=-0.0 Lsize=    3144kB time=00:00:20.33 bitrate=1266.4kbits/s dup=4 drop=0 speed=2.28x
bench: utime=1.450s stime=1.440s rtime=8.924s

It has limited usecase since there is no video filter support, so
a log message is added to notify the user.

Reviewed-by: Steven Liu <liuqi05 at kuaishou.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=cf1746d77989c2742c8c364f57a626942cccd8d1
---

 fftools/ffmpeg_videotoolbox.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/fftools/ffmpeg_videotoolbox.c b/fftools/ffmpeg_videotoolbox.c
index a6b78d0f7d..4ba8618539 100644
--- a/fftools/ffmpeg_videotoolbox.c
+++ b/fftools/ffmpeg_videotoolbox.c
@@ -29,6 +29,7 @@
 
 typedef struct VTContext {
     AVFrame *tmp_frame;
+    int log_once;
 } VTContext;
 
 char *videotoolbox_pixfmt;
@@ -44,6 +45,13 @@ static int videotoolbox_retrieve_data(AVCodecContext *s, AVFrame *frame)
     int linesize[4] = { 0 };
     int planes, ret, i;
 
+    if (frame->format == ist->hwaccel_output_format) {
+        av_log_once(s, AV_LOG_INFO, AV_LOG_TRACE, &vt->log_once,
+            "There is no video filter for videotoolbox pix_fmt now, remove the "
+            "-hwaccel_output_format option if video filter doesn't work\n");
+        return 0;
+    }
+
     av_frame_unref(vt->tmp_frame);
 
     switch (pixel_format) {



More information about the ffmpeg-cvslog mailing list