From patchwork Thu Mar 10 04:37:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 34654 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp388443nkb; Wed, 9 Mar 2022 20:38:14 -0800 (PST) X-Google-Smtp-Source: ABdhPJyOUzxrpjC0wl+b5zs7rOJeI+IC3Y6bjSVS3jFK7m9UANDaA0NMk55nuumituVc2E2CwNSe X-Received: by 2002:a05:6402:510b:b0:416:9d56:20e with SMTP id m11-20020a056402510b00b004169d56020emr2531815edd.264.1646887094458; Wed, 09 Mar 2022 20:38:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646887094; cv=none; d=google.com; s=arc-20160816; b=Nvy2rQJYPQThNOOimdtm0ahW2nG+5vaAw5ultBbV2ywmKJLxLltFCkHChl/4J2fmDi ASAyA16UY3lqC7JrOv79+mW8krRsPUnljlvbgGQLUTJKdvbXARj3arT9N0tula2glvVP bWPGxVtwzfsjFG8IEwtGyLNTlqvuPf2P8SPvEqgQxFiWbZQ+dnBDhwQetvJEPXAow37v 75iLF2LdVJUBJyhI08wh0+vzqukeGDixiA4p7/al4yReyUAz8t2+Xm1t5c5d6WZ0sBOG vAKnRH3PQM/NC4qJdc7wQuJyemLl4K4NYW8dvKxmYJx5zX/M88u/bXyjwrKBptr4Y7iY vLig== 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=ch7/jKBgmCIUXJshgWqtASZaYrS4ZB983j6s1BvrKSg=; b=chzlbvH7MHOIlVH7W8wLMxO6b+JnnKCOPBfJvmz/5HwiYJ7usmX7aujVIfAzo/Txkp v3p5T+a9DSc24SVYjqaytOyTqUGo6lLq0hd6oy0J1UmNWajYWOp7mP8HF+Hmwgkvw+lC qoPJ7G6894SV1T/jfPhalZpgT/ez2sKzafT10CXIq4SBpFRB8g2mHlim1+PjgvGrnKqn Zi+Qgd7qTXs/wMphTCf/KIZ+YZltEPfF4FkWtqSgrgOJYYDwMgBGtbomM2ZeI5srJsPp T23XtJfq8CgEQnL58zRdxzQKeLJSCwrI1gqvIz4VUKg2dQkYs701vddmLp6zki5ghc7F ebqg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=YBnf9UMI; 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 o20-20020a056402439400b0041697d1a688si2299857edc.145.2022.03.09.20.38.13; Wed, 09 Mar 2022 20:38:14 -0800 (PST) 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=YBnf9UMI; 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 1C88B68B122; Thu, 10 Mar 2022 06:38:09 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-236.mail.qq.com (out203-205-221-236.mail.qq.com [203.205.221.236]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 274DB68B121 for ; Thu, 10 Mar 2022 06:38:01 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1646887077; bh=rfLbGFMCNe5Vv08YjCFQDy+LLra9fq3cpWlOejWr1W8=; h=From:To:Cc:Subject:Date; b=YBnf9UMIrKj2oE58erSqyB/973WxoPkyvUFyaK4ORxnywyGQmz73/k3QZ7o3J+o+g XsjvmQd3WRhApZ71s7Fk+W0L4BnZB/xk/8X6v8pIsmySHrfDYakPcJVR9n6nQozM2n FD6Glo6ucTsJceAiC4SAo3Ddv+zY5+f0jJUQpYHw= Received: from ZHILIZHAO-MB2.tencent.com ([219.133.100.3]) by newxmesmtplogicsvrszb7.qq.com (NewEsmtp) with SMTP id 978084B0; Thu, 10 Mar 2022 12:37:56 +0800 X-QQ-mid: xmsmtpt1646887076twmewmmmf Message-ID: X-QQ-XMAILINFO: N7h1OCCDntujG60AHAhBd3vPOUpMRq3u5A5JtKdV/Wo7UlEUrcA2P47YRpESWs al6PyDpyTaBxg7Bke4WjlnpZBtH/tmfPTAv06lGtFcC92AhQtNz5BeVD0W1OS4hK9IRLIcenfg41 LV9YlhAdS74ekJKBXget/8xtg46s72GjjRdRa5eGgpMYttkkXxKzpl9HWVCXviYHAcBPD06eshVM lWGOU/o2DYlhGYcNyRNMVvpTF2HQ09cU1oDHutOb9NfdU7Les+O21RzQyBwkCKrsX3snayP1Jt7t Gj+IXW/kzTVexjVQd/Q7swt5KMQfxHgeZ4Tothe0c62ned5JhSKrs9TpQGwxpB4WHneo+y0Mz3pK BKZ8dQAaFGIFyzj+oNHAkMQEZizAWMsirb2WVMFmXXFD12yJit02Dhlhh5hHXt07r7fkZSzAEJwR Xc+IeXtUpRvit3NeSBRbY+Iz1YjHSDlGp6Hz3g7VZH/GRClcfscUf6AR2PVe86fmxBzEnafi9ls+ TUR0ym+oEMYYxI9Bw0mSLddE01KsRRNEtBQj72LaglbpoKfMPBrDuCQii2YSeI3K/Jhrawz9eQVs jSuUD2h+NuF1aGsq+AbnQ7br3IplTyPGvX8SO39UHlKBmwGsgqu2O5HwCN6kB4G8/97ZiohAdNE/ 4Kzvqn1wJtsXqMl6vRPd3ziVoPgvSrWn6+pikMMMSpF1gfI2CrzbxTohl1qeAXB4w0X2MYOxxwK8 1uZ7WxBso2mTC+UZHKZUgSSpFgXhgRb82HQY0GQ2khiPmtnwJW92kwNFUe4h5YNSD2N+b+epcgWx Z7ireuDWc6TYRln50O2aOKhHIL8zIM6FIVIKHz8Nd+icP76QorcrK6vRtY5D/tc8zZyjO6rEanF0 vSF7Sac7/T65gRUsEyKYZnXSJzlfWc45/0FTzXMJNigEH4nT/IwfM= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Mar 2022 12:37:53 +0800 X-OQ-MSGID: <20220310043754.53262-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] avutil/hwcontext_videotoolbox: create real buffer pool 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: nb/FLksztjDk vt_get_buffer shouldn't do buffer pool's job. --- libavutil/hwcontext_videotoolbox.c | 71 ++++++++++++++---------------- 1 file changed, 34 insertions(+), 37 deletions(-) diff --git a/libavutil/hwcontext_videotoolbox.c b/libavutil/hwcontext_videotoolbox.c index 026127d412..e442a95007 100644 --- a/libavutil/hwcontext_videotoolbox.c +++ b/libavutil/hwcontext_videotoolbox.c @@ -210,9 +210,36 @@ static int vt_pool_alloc(AVHWFramesContext *ctx) return AVERROR_EXTERNAL; } -static AVBufferRef *vt_dummy_pool_alloc(void *opaque, size_t size) +static void videotoolbox_buffer_release(void *opaque, uint8_t *data) +{ + CVPixelBufferRelease((CVPixelBufferRef)data); +} + +static AVBufferRef *vt_pool_alloc_buffer(void *opaque, size_t size) { - return NULL; + CVPixelBufferRef pixbuf; + AVBufferRef *buf; + CVReturn err; + AVHWFramesContext *ctx = opaque; + VTFramesContext *fctx = ctx->internal->priv; + + err = CVPixelBufferPoolCreatePixelBuffer( + NULL, + fctx->pool, + &pixbuf + ); + if (err != kCVReturnSuccess) { + av_log(ctx, AV_LOG_ERROR, "Failed to create pixel buffer from pool: %d\n", err); + return NULL; + } + + buf = av_buffer_create((uint8_t *)pixbuf, size, + videotoolbox_buffer_release, NULL, 0); + if (!buf) { + CVPixelBufferRelease(pixbuf); + return NULL; + } + return buf; } static void vt_frames_uninit(AVHWFramesContext *ctx) @@ -238,9 +265,9 @@ static int vt_frames_init(AVHWFramesContext *ctx) return AVERROR(ENOSYS); } - // create a dummy pool so av_hwframe_get_buffer doesn't EINVAL if (!ctx->pool) { - ctx->internal->pool_internal = av_buffer_pool_init2(0, ctx, vt_dummy_pool_alloc, NULL); + ctx->internal->pool_internal = av_buffer_pool_init2( + sizeof(CVPixelBufferRef), ctx, vt_pool_alloc_buffer, NULL); if (!ctx->internal->pool_internal) return AVERROR(ENOMEM); } @@ -252,41 +279,11 @@ static int vt_frames_init(AVHWFramesContext *ctx) return 0; } -static void videotoolbox_buffer_release(void *opaque, uint8_t *data) -{ - CVPixelBufferRelease((CVPixelBufferRef)data); -} - static int vt_get_buffer(AVHWFramesContext *ctx, AVFrame *frame) { - VTFramesContext *fctx = ctx->internal->priv; - - if (ctx->pool && ctx->pool->size != 0) { - frame->buf[0] = av_buffer_pool_get(ctx->pool); - if (!frame->buf[0]) - return AVERROR(ENOMEM); - } else { - CVPixelBufferRef pixbuf; - AVBufferRef *buf = NULL; - CVReturn err; - - err = CVPixelBufferPoolCreatePixelBuffer( - NULL, - fctx->pool, - &pixbuf - ); - if (err != kCVReturnSuccess) { - av_log(ctx, AV_LOG_ERROR, "Failed to create pixel buffer from pool: %d\n", err); - return AVERROR_EXTERNAL; - } - - buf = av_buffer_create((uint8_t *)pixbuf, 1, videotoolbox_buffer_release, NULL, 0); - if (!buf) { - CVPixelBufferRelease(pixbuf); - return AVERROR(ENOMEM); - } - frame->buf[0] = buf; - } + frame->buf[0] = av_buffer_pool_get(ctx->pool); + if (!frame->buf[0]) + return AVERROR(ENOMEM); frame->data[3] = frame->buf[0]->data; frame->format = AV_PIX_FMT_VIDEOTOOLBOX; From patchwork Thu Mar 10 04:37:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 34655 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp388543nkb; Wed, 9 Mar 2022 20:38:25 -0800 (PST) X-Google-Smtp-Source: ABdhPJwWGQ/Sic9jwdyhckz5X8G6o66mFqN1GVA6h/YTBNloM5A48gUDDiGbIB6JBpLSDSUecQz3 X-Received: by 2002:a17:907:da9:b0:6da:beb8:fdac with SMTP id go41-20020a1709070da900b006dabeb8fdacmr2678131ejc.364.1646887105302; Wed, 09 Mar 2022 20:38:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646887105; cv=none; d=google.com; s=arc-20160816; b=w/H6u44yo5YHJVmIjm/yPotNXvDEoNuhasx5nNOU/++n1q4DPU7UrYsJFFE5MmJXCF lfFKdkxf6K5Hrm27sk3TD2IiR1AieBnIQ2qChySmnIEPmJUWBvEnGsodv6FTUmj6DwmH EIKSYZyCd3j8f6yPDcqy+Ko+El/ifOcF1L7Sl9ihEEiEpbKqh+oyRPOs0N99qHyJc9Sl jNTHZ/qVcRISzVOYw/EXvD29xPYYH9AnsRX6MZncgQyffaDtmWfii9G/pELhCfZzNF+i b+w0VWdAb1fzxo0CUMvCyZ5mnUUQEwuvnGjtarA7mPWRw287cEKIXITbSh/lH5GZzu1c eCow== 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:references:in-reply-to:date :to:from:message-id:dkim-signature:delivered-to; bh=S5NCr5trdlzRxVgdJ3upamTfAFtg5a6/h4y35lLPUOs=; b=W0nmfD4OQJR+sXH91bm34qEgxg3y88hp/7a9yvGSDvHWIlkbnGfHoPGM9/edjjuxbG G5V0j/5lqEZxSGVjlie6yBj9V88pF7WPh2oo8s4QCiLAFZC7rjb8DHazOmIyxYBKNs8c 2wt8jPNxJNddi6DWlbI9WQGlh/K/rz/NoXfMgcbGbhfghPTPeyDxFiG3Bt/qNhwpwQ92 HXS7DuBajfXSFhkpbD2GuoAmzeB4nxZBLrDVBJnxhwkZYuoV4ep5FvenRc1xRDOEXBoT YiJsza9muczDTL9sUQUI+940EasBuGC3I7lOID8AT2evhh/eLNsOG/AAzGXNrCE87D7a xD+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b="w53wF/ZN"; 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 hb40-20020a170907162800b006ceddad109csi939337ejc.695.2022.03.09.20.38.25; Wed, 09 Mar 2022 20:38:25 -0800 (PST) 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="w53wF/ZN"; 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 5577368B14F; Thu, 10 Mar 2022 06:38:10 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-210.mail.qq.com (out203-205-221-210.mail.qq.com [203.205.221.210]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B98D568B122 for ; Thu, 10 Mar 2022 06:38:02 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1646887078; bh=3B7IlCjviu4+NehV1yBThYH9oFTbWtEa+rOTmcUSCgc=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=w53wF/ZNANClIYxeGkA0OSOtx6gSiAjt8iqFpSCS8IsvEwwiqLHLBcdkWMg+oPg/d 6thR6UYNit+2DFwnCs69YLY5G6dlQuko70VYhKtWXrKrpA3jFr137qZ7VkZK7IVWbW t0WQDWOtxW4U3SeySaMNtzUxNJIMVQNSP0Qn9Oz0= Received: from ZHILIZHAO-MB2.tencent.com ([219.133.100.3]) by newxmesmtplogicsvrszb7.qq.com (NewEsmtp) with SMTP id 978084B0; Thu, 10 Mar 2022 12:37:56 +0800 X-QQ-mid: xmsmtpt1646887077tegmiqrom Message-ID: X-QQ-XMAILINFO: NnBlO8MsmACrJJmeeIMIkHpD3qPyFXNPpmD9mbq86yXk+BAE9fIS5hMMDzs99X t2Y8Wy264biP7ly77Qs++jbidtW90NJ9aXvQyQYLzH6bqeMSOYjQA20SbKogO2g3ISEDtgtI+ERH HDGLoYYK6kPzQYCTRsQkKwYxuuwurtAo0MoI8hpAXjz1cOHdSjfB2IerkLL6ULU+HcR9Lcq4oY2N kljmUx/n2UBaBA0OBH6eqcgEzSsZZvCcdP7ADyMTtNY83bYDbAcM/nBRsfLZjE/F3r1zymwbUYyM 9QWysMAbUZKQXku+3rI9zRPPUe7ae28JmT4gInPMfuwgTU5OohcCA3CebgHhuS3lVc/g1HskvbId 1y4aG2ljeBhoBnZuR8ixubxCT5QG6GE38/+E0v0wiyi58fyoJ946TesmdoalRPU3B+TDg5ydcojs eTfM/icubEeZouoEeHNxTHeZ8omc2U1tljYmiUH+XOb9gFhGLuKkDvO4FozueAUg3XUV1pLJHAkz TPfOkxbYBuSKuCjp0bSiUfdXUjVa/i8VU+G344jVBphmYDBApL24X4Nwn1vAK2JyEehn1u23zu/m OVvlKR0zr0GvWbhGuHcKkIzt8lqGrolS7vfkADvIbGkLP70uF1xVGYDPuKrkdKq5jOAJbhoyBu0+ kUgSLs6zzqmHsuMDT0QkENMGcNu+R2aeU2odyxG3cKtpZ5a03NRHpTL2zRuXaU42lCdIgex/ztcb lhyE1/JLl+lKotN4EhILy0guzRKOuK+X3jB6TIgjOQ1A841YfrD/yw8IJhlOvlOydYrm+kcnTczJ RdxqVpm4PyKzqYOZWGRsApOHxSmlQGvTUIcM3TlO7OPA3POg9rC6+eDav29C5X+8Sw6sc68QJuit 2wSp3mcSzHlg7yqykiIEGLaWOmdS1QeO54UF5oerR7sJptEUvaAPM= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Mar 2022 12:37:54 +0800 X-OQ-MSGID: <20220310043754.53262-2-quinkblack@foxmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220310043754.53262-1-quinkblack@foxmail.com> References: <20220310043754.53262-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] avutil/hwcontext_videotoolbox: fix declaration-after-statement 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: TRG8TSABO95b --- libavutil/hwcontext_videotoolbox.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libavutil/hwcontext_videotoolbox.c b/libavutil/hwcontext_videotoolbox.c index e442a95007..13f77a7692 100644 --- a/libavutil/hwcontext_videotoolbox.c +++ b/libavutil/hwcontext_videotoolbox.c @@ -161,11 +161,11 @@ uint32_t av_map_videotoolbox_format_from_pixfmt2(enum AVPixelFormat pix_fmt, boo static int vt_pool_alloc(AVHWFramesContext *ctx) { - VTFramesContext *fctx = ctx->internal->priv; CVReturn err; CFNumberRef w, h, pixfmt; uint32_t cv_pixfmt; CFMutableDictionaryRef attributes, iosurface_properties; + VTFramesContext *fctx = ctx->internal->priv; attributes = CFDictionaryCreateMutable( NULL, @@ -589,13 +589,13 @@ int av_vt_pixbuf_set_attachments(void *log_ctx, static int vt_map_frame(AVHWFramesContext *ctx, AVFrame *dst, const AVFrame *src, int flags) { - CVPixelBufferRef pixbuf = (CVPixelBufferRef)src->data[3]; - OSType pixel_format = CVPixelBufferGetPixelFormatType(pixbuf); CVReturn err; - uint32_t map_flags = 0; int ret; int i; enum AVPixelFormat format; + CVPixelBufferRef pixbuf = (CVPixelBufferRef)src->data[3]; + OSType pixel_format = CVPixelBufferGetPixelFormatType(pixbuf); + uint32_t map_flags = 0; format = av_map_videotoolbox_format_to_pixfmt(pixel_format); if (dst->format != format) {