From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id ABB0845F2D for ; Fri, 18 Aug 2023 14:26:11 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7CD4C68C690; Fri, 18 Aug 2023 17:25:46 +0300 (EEST) Received: from out203-205-221-235.mail.qq.com (out203-205-221-235.mail.qq.com [203.205.221.235]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AC97F68C5DD for ; Fri, 18 Aug 2023 17:25:37 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1692368729; bh=g2VveARFVEIqh2JTuDjM6DDwS/5Micfk9XVaRZh3bLI=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=GZEzQ3H52Jw/VfelqynMzpFkLBIHqQIfctxlNlhtuvzo+xVxy6SO3GGQgU31CPPwi LFERVo+AqkjEtxtmZGnZu3/87XU7XGxN6/npFyGgVqno13GRel80gatnhygSdZNoKn 1ig8awVp397FjhZJgV5UD0Ehp0rMhD4igl2bHirs= Received: from ZHILIZHAO-MB2.tencent.com ([119.147.10.200]) by newxmesmtplogicsvrsza10-0.qq.com (NewEsmtp) with SMTP id 6099E8C6; Fri, 18 Aug 2023 22:24:09 +0800 X-QQ-mid: xmsmtpt1692368728tx6ajs5rv Message-ID: X-QQ-XMAILINFO: NvH2zBBgt3uTwffz0RAPyBDHOCz2E4CP7NgSjVXiISsjFu08m+t4Gal+09jNwD YNFKvoABG+6jDUfPb6Sr3SzWP6FfVSb6wQQOPB2KFHLRLEib3wrQcRcUf5YXMIk6yTD3ptcZSYsw b4rAIUlp158ujRTQ5Q/p+vsc3J1UlCCs6AuDvkOXtgIBhrbK267VNVwwJkLem3kuMXzQl0kos/Fd /8j9P3sNxgrSeH53NlZnL/KCRnEZ4u/uZvPVjnDFzXBD1n6KP/oF2EOOkapAMzVHOuLeUaS+AurO p/0yAmQQGcEx0oVFyInVUyEfvDFCwCLOi3+NtJI3RxnQkbd2E4kNWaWoHNc4lFbFBKkxqfnbduyv QkunO5WlvDV/spoKOcRz6Os4bVB8A1NzqaO5Dwh4Fy/oMS3YcvKXv8nvFEkP0hzL6DovGfryhVJg 33QfpYx2kMgvghXteZvIHwODyTnc1yQ9cvVBjZEXVANLMRUQtGq2bGrSvl3ncysemJl4VZ5I2kjL MFgXhc80e4mj4wHt+9O+/ECJ5+KMB/BwKUXJZ1X1hxVkSTei44c7GLfEQ2hlBVyFxC4wS5y53Koi UViaUesPxr+pmCqNkTdHNiOIGzA1pKTW3sLz+QTVtedJw0WOCbHs9S2rdDGiRzPMV/LkZXLWR+NB 39zOyq92fd52569m1IIkNoxVWGRD2PuMPJVJ/HwpqYDftdyBT77PvJ3BwBoLDGVwn1/yXweTvgky om9olsmWB0BNjOkBQETeVci4+C2yWLXkL60rdOXYx2pu7WAqDsBIkhprIDq6rae6Zh8bGZAtIkfA sIGBYRGeEBj3WhcCI4w8c1RDK06xxARmernobpzkF00lml0oWKimH4Dya3gRQkDfAue4sFBeVWWF 3KMnl0Q1IJZPQFT/1jB/RLB7Cs9m+wPWy+BJ9NgTXEHfTnTacPdcYTA6LYlHib/QKizlxVRIJ6oW uugsocJUIO8SJrI1seFn17bEZUJrNJTXNm7JhntVaZbF0wOcDkeg== X-QQ-XMRINFO: Nq+8W0+stu50PRdwbJxPCL0= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Fri, 18 Aug 2023 22:24:07 +0800 X-OQ-MSGID: <20230818142408.74329-2-quinkblack@foxmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230818142408.74329-1-quinkblack@foxmail.com> References: <20230818142408.74329-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/3] avfilter/vf_transpose_vt: fix output frame dimension 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: Zhao Zhili Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: From: Zhao Zhili Create a new hardware frame context when necessary. Signed-off-by: Zhao Zhili --- libavfilter/vf_transpose_vt.c | 47 +++++++++++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/libavfilter/vf_transpose_vt.c b/libavfilter/vf_transpose_vt.c index b5b07e9ef1..da59479a4b 100644 --- a/libavfilter/vf_transpose_vt.c +++ b/libavfilter/vf_transpose_vt.c @@ -102,6 +102,39 @@ fail: return ret; } +static int transpose_vt_recreate_hw_ctx(AVFilterLink *outlink) +{ + AVFilterContext *avctx = outlink->src; + AVFilterLink *inlink = outlink->src->inputs[0]; + AVHWFramesContext *hw_frame_ctx_in; + AVHWFramesContext *hw_frame_ctx_out; + int err; + + av_buffer_unref(&outlink->hw_frames_ctx); + + hw_frame_ctx_in = (AVHWFramesContext *)inlink->hw_frames_ctx->data; + outlink->hw_frames_ctx = av_hwframe_ctx_alloc(hw_frame_ctx_in->device_ref); + hw_frame_ctx_out = (AVHWFramesContext *)outlink->hw_frames_ctx->data; + hw_frame_ctx_out->format = AV_PIX_FMT_VIDEOTOOLBOX; + hw_frame_ctx_out->sw_format = hw_frame_ctx_in->sw_format; + hw_frame_ctx_out->width = outlink->w; + hw_frame_ctx_out->height = outlink->h; + + err = ff_filter_init_hw_frames(avctx, outlink, 1); + if (err < 0) + return err; + + err = av_hwframe_ctx_init(outlink->hw_frames_ctx); + if (err < 0) { + av_log(avctx, AV_LOG_ERROR, + "Failed to init videotoolbox frame context, %s\n", + av_err2str(err)); + return err; + } + + return 0; +} + static int transpose_vt_config_output(AVFilterLink *outlink) { int err; @@ -113,6 +146,9 @@ static int transpose_vt_config_output(AVFilterLink *outlink) CFBooleanRef hflip = kCFBooleanFalse; int swap_w_h = 0; + av_buffer_unref(&outlink->hw_frames_ctx); + outlink->hw_frames_ctx = av_buffer_ref(inlink->hw_frames_ctx); + if ((inlink->w >= inlink->h && s->passthrough == TRANSPOSE_PT_TYPE_LANDSCAPE) || (inlink->w <= inlink->h && s->passthrough == TRANSPOSE_PT_TYPE_PORTRAIT)) { av_log(avctx, AV_LOG_VERBOSE, @@ -175,12 +211,12 @@ static int transpose_vt_config_output(AVFilterLink *outlink) return AVERROR_EXTERNAL; } - if (swap_w_h) { - outlink->w = inlink->h; - outlink->h = inlink->w; - } + if (!swap_w_h) + return 0; - return 0; + outlink->w = inlink->h; + outlink->h = inlink->w; + return transpose_vt_recreate_hw_ctx(outlink); } #define OFFSET(x) offsetof(TransposeVtContext, x) @@ -244,4 +280,5 @@ const AVFilter ff_vf_transpose_vt = { FILTER_SINGLE_PIXFMT(AV_PIX_FMT_VIDEOTOOLBOX), .priv_class = &transpose_vt_class, .flags = AVFILTER_FLAG_HWDEVICE, + .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE, }; -- 2.40.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".