From patchwork Tue Apr 27 05:09:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 27437 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:6109:0:0:0:0:0 with SMTP id v9csp689656iob; Mon, 26 Apr 2021 22:10:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy6tIOgpIln3za+pPTJtg38hN3ZKL7ep5TvuLfpyXcbiRoPUooyYq0br24RVBsY5YTBREim X-Received: by 2002:a05:6402:48c:: with SMTP id k12mr2208102edv.237.1619500241316; Mon, 26 Apr 2021 22:10:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619500241; cv=none; d=google.com; s=arc-20160816; b=0fxsrmfldw5EGY9NT6S5c/MmomrlBMyDgwSmHRQZ3yyu7KXg5F9nrA6w39wWHiwwzn 49eNg7m2aTLOJYTLYayTQE+km2PmlFifbOveXxutRtB9QgYyY2Wp/XlnG5U+82y+poGx RQuhSRppuClJrN3X+GZO673IC1N5glztGD9kXXnUpgxolYpyp1C9MKrgs/X4RU7w+9L/ FC8Tk8WtBPW3LWcmoAkJYpFDybaJuUMIVcXVrEYXJaO9YDBtn1uZx/oYOwr2TOQKIqJC QAAn9shehU/7ZL+Sou2Prgy2VBVCq9aoUE9DtFp2GP2p4HP9RB761/gxxY+w0H7vdRV3 AD1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:date:to:from:message-id :dkim-signature:delivered-to; bh=ImlI/UVMjStKzbRV+KFXZUrizHPD0bUap30m1276Uzs=; b=yVtt+N7LIZHUhXymvqPxPQ6F1ILwdXO7IERJ/I1MpbOyfJRdMLr9ZB+D68p9+JMJyE 7U3heVbq/tCc/+ayi6rpeWZ5/XV8DUlF0e7lhYl67IGNOoAYwMLdp5p4/qbcxe9qN3w7 U9DAesD1ifhN7jdT1N5OPj5+ONryh4cZwXyJYl4P/h5efIaxzQgr7SfUqsnh2C4I77DA ka/7R+TbFPOP6Y+8sekzcRpFlfhyfsIA65FAUQi55zCZNRWFhjJu7nAglbRWSmqEi2Oi aZ+H1tXHaWPMQtprOgnGJgdGkhnL7WmnVQLeDnAvqd4q/4J9ZBraThhzTstDgHji730e ZLGg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=yOaRMbQe; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id d7si14741565ejd.707.2021.04.26.22.10.40; Mon, 26 Apr 2021 22:10:41 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=yOaRMbQe; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 49A78689DFA; Tue, 27 Apr 2021 08:10:36 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from qq.com (out203-205-251-73.mail.qq.com [203.205.251.73]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D8162689A8D for ; Tue, 27 Apr 2021 08:10:28 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1619500222; bh=VfSt/QqkgrYGv4+wD6wGtnzdwalHHdVMRhvSAERlajM=; h=From:To:Cc:Subject:Date; b=yOaRMbQePWHmk7P5pOiMSeTFe60RqFamLFu3K4jlI2Zt4PZsTMs2oIwdPeC0Wd1uU /BRKUh3dCrmx0FAnCRA4ShuMxDDjR8rcQ8AMB6QeKhmT2f3soAI6oVMgCi5KpVOe/K R2HUjOmWwX+PCJEg6gBM8sCxJpUTYEqcLleBN0/U= Received: from ZHILIZHAO-MB2.tencent.com ([113.108.77.55]) by newxmesmtplogicsvrsza9.qq.com (NewEsmtp) with SMTP id 2800081C; Tue, 27 Apr 2021 13:10:00 +0800 X-QQ-mid: xmsmtpt1619500200t6h7v4xk9 Message-ID: X-QQ-XMAILINFO: Ni85YrLDmO923iqjo84URt6l4XlnmVaERFqdxY1AjxM74+Wwdig8YZzgL2jLNW tUF4uzRx4TozQ4yo4L7kWYlExYDbYUHJl9maRqk9fYCMJbjSiBEXhqqHjFW7ftU5HmF6NIu3I3Ol 0cwNPsJTgtjEDWDOqVLxEOVrxewnZ3A3tKf3w9K0dqeto58L9NLMbOXXa3JsHpfxVmYrZI0b2r6G f4j8PwacMjee6L9jPQ+lD9jCyp4+xQIRLGfIDtpPNVv5aaqfG0x+1sf/Bx4goyh83sA0fk09yxjm q30z1NnU/rQNmX53LPXDS3vDi3LcFdaTfyCgIVUEK7QIj9GPvfW2DDxEnDyiBP5KJ4Zs8WVqFzcN 505OCsKzON6NM6mByoQC6jgyCicbByW7NVTUTTpT+PmsTXHdTjkQ+PMEZlXkeQuCrImcV5km8wkb esoqgPOCA/KbwW+fwR5/vVTplqY6AKUTEivhePYEkZlsbQnt2loYX9kmtpFNdsHLNX1US55NdsbW QcGI1XUcn/NiCEWkB/x5NiE0elfpUukD4rAWqF33cjzPX5M4uQenE+GUJrcUcuhKcASdynMstLJg oWFiDy0TQtShAa+ZHq+/vmz+EsGqg++TJWA3C777lsxbmJpVlPMtLFyVCrefHldzamNvEig0AMwL 3w9/3Ue9Pgp/cFkKpqS3X7F6YLoyF+WSL8Lxtba1hKqH5rA+JdPQGh+/sCT3basGTsHftnD4XKg4 5+5bwe100qtO0TDZ7ps9wp32qO+7xOnDSa5eH//DSodf7wq9xe4mStkuWd1qeMD6mI/v/Jo8O7IO atwg4/rAa7O1yoE2S4r0hupdcul47veIw= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Tue, 27 Apr 2021 13:09:56 +0800 X-OQ-MSGID: <20210427050956.7436-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [RFC PATCH] ffmpeg_videotoolbox: skip memory copy if hwaccel_output_format match X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: zhilizhao Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Wr5jFUgS2+u/ From: zhilizhao 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. --- It has a good performance with limited usecases like transcoding without autoscale/autorotate, and I don't know if it break some special usecase, since the RFC. 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) {