From patchwork Wed Sep 6 06:00:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 43578 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4f16:b0:149:dfde:5c0a with SMTP id gi22csp2310491pzb; Tue, 5 Sep 2023 23:01:25 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHRAz9u8tlxMd8Q0iT2/X3FuOm7hM2LKako3i8aYcIxA1DrXudqEMqGpXB7hBpFdxVhiF3x X-Received: by 2002:a17:906:768d:b0:9a2:ecd:d95d with SMTP id o13-20020a170906768d00b009a20ecdd95dmr1599451ejm.68.1693980085230; Tue, 05 Sep 2023 23:01:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693980085; cv=none; d=google.com; s=arc-20160816; b=GglljbGwoPit5nSNBeRRkVDc32dcWL1CI2sO7DcP6+3ueM1GhC1LnVAhFGhiO590wb qZFIAUmkSGw4RsuALqp/vK6TouXef7uz2sQhzn6+fzD11MWAT7sglTC+d9Js6eWrVKLo jubp1R8EHl5Iqq2NBmN/LhC/V8GLCh+w2PnRa0+jx20r2DiOfkwW3DGC9IAJtLWtPkh7 C4yITED2MUtEBF9RTFXF6QFVmXwbmimUpj0G3Mj90/6Q+Z7AKKkjb2lKcG+DBhK+ziAt 3OGoZJ4WnvfLf3ePodFtYZvFRXX7ZXdk7r+Fh1Fmu+aO31uUpSu7sewJzZU0n03un/Jh xClw== 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:message-id:date:to:from :dkim-signature:delivered-to; bh=BoEQJICWxpmyZnGXf93wv1i0WQMqosICJg+K/B8PSOY=; fh=1kpmTRI1sW42eNCnNMby7VLIISQBX6KJuVYxOEG0t2A=; b=ioJZ4t3nw360+kYHIFYt96DuSgjZZYChdswogpAIfUslBE+z3GTw7Ghurw1DYJbuF4 ln909ZRXD7PpVdgriDwk/ckTIUOZNKVxwXPzJawanpPXhtvShsyhzQhOSvE1Q2DU3Tqz JiAvYViGVyJvPZfeYQNqm/Niv23DxjDgvu+Lh3b6gTTdbritBfARVwiV6W0VeYKpZgaB GheysfrguqYEVSV+IVAyJn5+pgoSNn7zKhLdERXAt+/yAjNkBNg4gHQQVKqIIj+ntESC EvKcRfrjhUDmRi1SzHEjR0EPFF6S7e0oDAiYDnpzAOYQc7rVFKOZr/rjaHdwf5R0PV8W Qv4w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=OCfMIQwN; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id j26-20020a1709064b5a00b009886c3287e0si8961007ejv.536.2023.09.05.23.01.23; Tue, 05 Sep 2023 23:01:24 -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=@intel.com header.s=Intel header.b=OCfMIQwN; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5A2CF68C772; Wed, 6 Sep 2023 09:01:20 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7D31668C59D for ; Wed, 6 Sep 2023 09:01:12 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1693980077; x=1725516077; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=K7gMgIztAup3Sxb/FsOOYnTis2EP6sAYKWBP3dhL+kE=; b=OCfMIQwNIHViEF2gM+o8Pnoy06tbpxg9pqtIBx2xEgR2Fq2yvskN/lJb VCc7Odxv8tsp7FjhYBqQGezlHHyEcHZ3HUDqJNqkDisqqUrDhHfAr6/XV qnhzRkg5FgiRUAFQDZibdy0Ze26/9BaRSBxlkuJcneieO1Dup/l1puXqQ B3BHpAwrncPP+nAn3+GT8bp4000q6LNV0Kfapfp7boJdV5sttgm1JwEyq sAPWHxDtUczl82V/j8iv/J4wk2LRWXwDfsCdRENtEsQTww8ZDe8TGcTYv xTftP7ABz5xl4z6se09yYbgqjBx4VTrYAgJhkwsZQQUX7YgGhu8k04fMq A==; X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="374372395" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="374372395" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:09 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="734918995" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="734918995" Received: from xhh-dg264.sh.intel.com ([10.238.2.76]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:08 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Wed, 6 Sep 2023 14:00:40 +0800 Message-Id: <20230906060052.698620-1-haihao.xiang@intel.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 01/13] lavu/hwcontext_qsv: update AVQSVFramesContext to support dynamic frame pools 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: Haihao Xiang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 6CMoVbgg9APV From: Haihao Xiang When AVQSVFramesContext.nb_surfaces is set to 0, a dynamic frame pool is expected, otherwise a fixed frame pool is expected. In addition, AVQSVFramesContext.info is added. User should provide AVQSVFramesContext.info instead of AVQSVFramesContext.surfaces for dynamic frame pools. Signed-off-by: Haihao Xiang --- doc/APIchanges | 3 +++ libavutil/hwcontext_qsv.c | 4 ++-- libavutil/hwcontext_qsv.h | 22 +++++++++++++++++++++- libavutil/version.h | 2 +- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index dbaec30aac..5fa9110c21 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -2,6 +2,9 @@ The last version increases of all libraries were on 2023-02-09 API changes, most recent first: +2023-09-xx - xxxxxxxxxx - lavu 58.20.100 - hwcontext_qsv.h + Add AVQSVFramesContext.info to support dynamic frame pools + 2023-09-02 - xxxxxxxxxx - lavu 58.19.100 - executor.h Add AVExecutor API diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c index 1bfda9e69b..b76a89d13a 100644 --- a/libavutil/hwcontext_qsv.c +++ b/libavutil/hwcontext_qsv.c @@ -613,7 +613,7 @@ static mfxStatus frame_alloc(mfxHDL pthis, mfxFrameAllocRequest *req, QSVFramesContext *s = ctx->internal->priv; AVQSVFramesContext *hwctx = ctx->hwctx; mfxFrameInfo *i = &req->Info; - mfxFrameInfo *i1 = &hwctx->surfaces[0].Info; + mfxFrameInfo *i1 = hwctx->nb_surfaces ? &hwctx->surfaces[0].Info : hwctx->info; if (!(req->Type & MFX_MEMTYPE_VIDEO_MEMORY_PROCESSOR_TARGET) || !(req->Type & (MFX_MEMTYPE_FROM_VPPIN | MFX_MEMTYPE_FROM_VPPOUT)) || @@ -1173,7 +1173,7 @@ static int qsv_init_internal_session(AVHWFramesContext *ctx, MFX_IOPATTERN_OUT_SYSTEM_MEMORY; par.AsyncDepth = 1; - par.vpp.In = frames_hwctx->surfaces[0].Info; + par.vpp.In = frames_hwctx->nb_surfaces ? frames_hwctx->surfaces[0].Info : *frames_hwctx->info; /* Apparently VPP requires the frame rate to be set to some value, otherwise * init will fail (probably for the framerate conversion filter). Since we diff --git a/libavutil/hwcontext_qsv.h b/libavutil/hwcontext_qsv.h index e2dba8ad83..317ae5094f 100644 --- a/libavutil/hwcontext_qsv.h +++ b/libavutil/hwcontext_qsv.h @@ -51,7 +51,27 @@ typedef struct AVQSVDeviceContext { * This struct is allocated as AVHWFramesContext.hwctx */ typedef struct AVQSVFramesContext { - mfxFrameSurface1 *surfaces; + /** + * A pointer to mfxFrameSurface1 or mfxFrameInfo structure. + * + * When nb_surfaces is 0, it is a pointer to mfxFrameInfo structure, + * otherwise it is a pointer to mfxFrameSurface1. + */ + union { + mfxFrameSurface1 *surfaces; + mfxFrameInfo *info; + }; + + /** + * Number of frames + * + * A dynamic frame pool is required when nb_surfaces is 0, otherwise + * a fixed frame pool is required. + * + * User should make sure the configuration can support dynamic frame + * allocation when dynamic frame pool is required. For example, you cannt + * set nb_surfaces to 0 when the child_device_type is AV_HWDEVICE_TYPE_DXVA2. + */ int nb_surfaces; /** diff --git a/libavutil/version.h b/libavutil/version.h index 897feff84f..605f85cd41 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -79,7 +79,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 58 -#define LIBAVUTIL_VERSION_MINOR 19 +#define LIBAVUTIL_VERSION_MINOR 20 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ From patchwork Wed Sep 6 06:00:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 43579 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4f16:b0:149:dfde:5c0a with SMTP id gi22csp2310594pzb; Tue, 5 Sep 2023 23:01:36 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHcHCVMGOHIjkE+joaTId2rBIS/XuPruE5N8K4tXgUwVOeTMo/oqvqSmfGazEil8gNzgVVh X-Received: by 2002:a17:907:2c57:b0:99b:c830:cf23 with SMTP id hf23-20020a1709072c5700b0099bc830cf23mr1419150ejc.27.1693980096437; Tue, 05 Sep 2023 23:01:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693980096; cv=none; d=google.com; s=arc-20160816; b=rakjUS3toRRR+NevehrCTtN//WiY4HdIKi5kXz9dnj8NcrxaqtJu+nyUKZPFgDo0yW H4I/5/SYC2uHAmHDZ2vzY0796j14TjDHNzLlRqAJgI6BNq9SeEi36aK8gDHIP1BFwUyT E/XlhR7Oy+k++6Ob22osUIQnKE/RXsp3eCAgaGd3CQyNLJ8aB5W5Z4Noz1irdZjigyXp f2yVsGyPKV4NEDuZTbZ2YPfByAcvQaDludqGmh9kjqe0Wi2qWvFOwKdSl1RKZf+uAi4v rix9VqBciq0ubl4dfWZ1Shxf67KzSRPYpFP7pXISuIQ8dtajYvDNepTAZkIDIyybG/eK KWHA== 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 :message-id:date:to:from:dkim-signature:delivered-to; bh=EK+dfeZPs5jUX6s+4l+xztxe9K4+FeQgMgCJ1Dnj8mY=; fh=1kpmTRI1sW42eNCnNMby7VLIISQBX6KJuVYxOEG0t2A=; b=Cn0ktKyQJvCJilK0o28a2wW92E1bMcB3kce9PnBkGhrH1azdKxRSAzvDoZktZSCTHp l/7wUuu9k4/InhloGTZ5wAroOZK0Q8BQq1aPV3MXSf6vRAZSPLSZFlCQOsao0VcR972u U2ElL9HbmNQZ8hrF6GuGPt/otd4d+Dp0qfHBXf8bqlkBBSRRIo2UfvSocqy5Z2it8Yab 93SqLZCKBj0J9rxIt9ahhf3AHOlsGfoc1ORhitzTLDMteF3fJ8OP/1SVKy7lKItpf1Qr Xk5/W99xFJTIbFI7uXjn4PsuP54dl8mxp5O+IXioGNBVM9sajmoTMeTFH43g+wWnwKzL j83A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=JlNmdVRN; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id h22-20020a17090634d600b0099bcb54fae7si8903968ejb.512.2023.09.05.23.01.35; Tue, 05 Sep 2023 23:01:36 -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=@intel.com header.s=Intel header.b=JlNmdVRN; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7EF4E68C79E; Wed, 6 Sep 2023 09:01:23 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0BE2E6800AC for ; Wed, 6 Sep 2023 09:01:13 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1693980079; x=1725516079; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=BiXF0RkK/EG9rUhHRobRm+EX7dpPkr2xi5ddGM9aZO4=; b=JlNmdVRNmQs17KVP5aaG+3bUPGyjV9X4EREvVuZNSao5StFDgAxGXZtg rOSkRktURM57o7F2jPruMwCPmgeHmUAlJd5kjmtGwDG0+2I5YNl04/1jN +C/BuNqCm9hFlpCHFetYT00RABLTzI3ypv+xad1/PD1sJ1sOBGnvdEBd/ I4rp1HFhpxku8IDarIMMXmOiW3eVt6VqCi/eQovGu1RffWvoi1jUkwoot KeArumyIWeh2O+SrIkT0PJbZKsvuJ+QOVhhhAptXwRKN+cNDqkLN9APtw 4mYvYu0hp6JAP3AR1FrsCDW+aGnvC1cBIaDR2Z1QVntvG7Jve2OqQmEEq A==; X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="374372401" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="374372401" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:10 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="734919011" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="734919011" Received: from xhh-dg264.sh.intel.com ([10.238.2.76]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:09 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Wed, 6 Sep 2023 14:00:41 +0800 Message-Id: <20230906060052.698620-2-haihao.xiang@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906060052.698620-1-haihao.xiang@intel.com> References: <20230906060052.698620-1-haihao.xiang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 02/13] lavu/hwcontext_qsv: create dynamic frame pool if required 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: Haihao Xiang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: /7PJ9WKFOUH2 From: Haihao Xiang When AVHWFramesContext.initial_pool_size is 0, a dynamic frame pool is required. We may support this under certain conditions, e.g. oneVPL 2.9+ support dynamic frame allocation, we needn't provide a fixed frame pool in the mfxFrameAllocator.Alloc callback. Signed-off-by: Haihao Xiang --- libavutil/hwcontext_qsv.c | 157 +++++++++++++++++++++++++++++++++++++- 1 file changed, 154 insertions(+), 3 deletions(-) diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c index b76a89d13a..21ce4225bd 100644 --- a/libavutil/hwcontext_qsv.c +++ b/libavutil/hwcontext_qsv.c @@ -104,8 +104,15 @@ typedef struct QSVFramesContext { #endif AVFrame realigned_upload_frame; AVFrame realigned_download_frame; + + mfxFrameInfo frame_info; } QSVFramesContext; +typedef struct QSVSurface { + mfxFrameSurface1 mfx_surface; + AVFrame *child_frame; +} QSVSurface; + static const struct { enum AVPixelFormat pix_fmt; uint32_t fourcc; @@ -151,6 +158,8 @@ extern int ff_qsv_get_surface_base_handle(mfxFrameSurface1 *surf, enum AVHWDeviceType base_dev_type, void **base_handle); +static int qsv_init_surface(AVHWFramesContext *ctx, mfxFrameSurface1 *surf); + /** * Caller needs to allocate enough space for base_handle pointer. **/ @@ -359,7 +368,32 @@ static void qsv_pool_release_dummy(void *opaque, uint8_t *data) { } -static AVBufferRef *qsv_pool_alloc(void *opaque, size_t size) +static void qsv_pool_release(void *opaque, uint8_t *data) +{ + AVHWFramesContext *ctx = (AVHWFramesContext*)opaque; + QSVFramesContext *s = ctx->internal->priv; + QSVSurface *qsv_surface = (QSVSurface *)data; + mfxHDLPair *hdl_pair = (mfxHDLPair *)qsv_surface->mfx_surface.Data.MemId; + AVHWFramesContext *child_frames_ctx; + + if (!s->child_frames_ref) + return; + + child_frames_ctx = (AVHWFramesContext*)s->child_frames_ref->data; + if (!child_frames_ctx->device_ctx) + return; + +#if CONFIG_VAAPI + if (child_frames_ctx->device_ctx->type == AV_HWDEVICE_TYPE_VAAPI) + av_freep(&hdl_pair->first); +#endif + + av_freep(&hdl_pair); + av_frame_free(&qsv_surface->child_frame); + av_freep(&qsv_surface); +} + +static AVBufferRef *qsv_fixed_pool_alloc(void *opaque, size_t size) { AVHWFramesContext *ctx = (AVHWFramesContext*)opaque; QSVFramesContext *s = ctx->internal->priv; @@ -374,6 +408,104 @@ static AVBufferRef *qsv_pool_alloc(void *opaque, size_t size) return NULL; } +static AVBufferRef *qsv_dynamic_pool_alloc(void *opaque, size_t size) +{ + AVHWFramesContext *ctx = (AVHWFramesContext*)opaque; + QSVFramesContext *s = ctx->internal->priv; + AVHWFramesContext *child_frames_ctx; + QSVSurface *qsv_surface = NULL; + mfxHDLPair *handle_pairs_internal = NULL; + int ret; + + if (!s->child_frames_ref) + goto fail; + + child_frames_ctx = (AVHWFramesContext*)s->child_frames_ref->data; + if (!child_frames_ctx->device_ctx) + goto fail; + +#if CONFIG_DXVA2 + if (child_frames_ctx->device_ctx->type == AV_HWDEVICE_TYPE_DXVA2) { + av_log(ctx, AV_LOG_ERROR, + "QSV on dxva2 requires a fixed frame pool size\n"); + goto fail; + } +#endif + + qsv_surface = av_calloc(1, sizeof(*qsv_surface)); + if (!qsv_surface) + goto fail; + + qsv_surface->child_frame = av_frame_alloc(); + if (!qsv_surface->child_frame) + goto fail; + + ret = av_hwframe_get_buffer(s->child_frames_ref, qsv_surface->child_frame, 0); + if (ret < 0) + goto fail; + + handle_pairs_internal = av_calloc(1, sizeof(*handle_pairs_internal)); + if (!handle_pairs_internal) + goto fail; + + ret = qsv_init_surface(ctx, &qsv_surface->mfx_surface); + if (ret < 0) + goto fail; + +#if CONFIG_VAAPI + if (child_frames_ctx->device_ctx->type == AV_HWDEVICE_TYPE_VAAPI) { + VASurfaceID *surface_id_internal; + + surface_id_internal = av_calloc(1, sizeof(*surface_id_internal)); + if (!surface_id_internal) + return NULL; + + *surface_id_internal = (VASurfaceID)(uintptr_t)qsv_surface->child_frame->data[3]; + handle_pairs_internal->first = (mfxHDL)surface_id_internal; + handle_pairs_internal->second = (mfxMemId)MFX_INFINITE; + } +#endif + +#if CONFIG_D3D11VA + if (child_frames_ctx->device_ctx->type == AV_HWDEVICE_TYPE_D3D11VA) { + AVD3D11VAFramesContext *child_frames_hwctx = child_frames_ctx->hwctx; + handle_pairs_internal->first = (mfxMemId)qsv_surface->child_frame->data[0]; + + if (child_frames_hwctx->BindFlags & D3D11_BIND_RENDER_TARGET) + handle_pairs_internal->second = (mfxMemId)MFX_INFINITE; + else + handle_pairs_internal->second = (mfxMemId)qsv_surface->child_frame->data[1]; + + } +#endif + + qsv_surface->mfx_surface.Data.MemId = (mfxMemId)handle_pairs_internal; + return av_buffer_create((uint8_t *)qsv_surface, sizeof(*qsv_surface), + qsv_pool_release, ctx, 0); + +fail: + if (qsv_surface) { + av_frame_free(&qsv_surface->child_frame); + } + + av_freep(&qsv_surface); + av_freep(&handle_pairs_internal); + + return NULL; +} + +static AVBufferRef *qsv_pool_alloc(void *opaque, size_t size) +{ + AVHWFramesContext *ctx = (AVHWFramesContext*)opaque; + AVQSVFramesContext *hwctx = ctx->hwctx; + + if (hwctx->nb_surfaces == 0) { + return qsv_dynamic_pool_alloc(opaque, size); + } else { + return qsv_fixed_pool_alloc(opaque, size); + } +} + static int qsv_init_child_ctx(AVHWFramesContext *ctx) { AVQSVFramesContext *hwctx = ctx->hwctx; @@ -562,9 +694,28 @@ static int qsv_init_pool(AVHWFramesContext *ctx, uint32_t fourcc) int i, ret = 0; - if (ctx->initial_pool_size <= 0) { - av_log(ctx, AV_LOG_ERROR, "QSV requires a fixed frame pool size\n"); + if (ctx->initial_pool_size < 0) { + av_log(ctx, AV_LOG_ERROR, "Invalid frame pool size\n"); return AVERROR(EINVAL); + } else if (ctx->initial_pool_size == 0) { + mfxFrameSurface1 mfx_surf1; + + ret = qsv_init_child_ctx(ctx); + if (ret < 0) + return ret; + + ctx->internal->pool_internal = av_buffer_pool_init2(sizeof(mfxFrameSurface1), + ctx, qsv_pool_alloc, NULL); + if (!ctx->internal->pool_internal) + return AVERROR(ENOMEM); + + memset(&mfx_surf1, 0, sizeof(mfx_surf1)); + qsv_init_surface(ctx, &mfx_surf1); + s->frame_info = mfx_surf1.Info; + frames_hwctx->info = &s->frame_info; + frames_hwctx->nb_surfaces = 0; + + return 0; } s->handle_pairs_internal = av_calloc(ctx->initial_pool_size, From patchwork Wed Sep 6 06:00:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 43580 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4f16:b0:149:dfde:5c0a with SMTP id gi22csp2310664pzb; Tue, 5 Sep 2023 23:01:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEs251dtuCjHXG5nKVrOjEw518peuKVA0l0Q1dTmMqhaUXFn7L1ytgXNPm8eqz01ww3YmB+ X-Received: by 2002:aa7:ce1a:0:b0:52c:9ce1:f117 with SMTP id d26-20020aa7ce1a000000b0052c9ce1f117mr1127849edv.40.1693980106915; Tue, 05 Sep 2023 23:01:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693980106; cv=none; d=google.com; s=arc-20160816; b=S9LVpPhnJmHNdPFL8t6cwtqX0ZNu4rfwDg6P5IRQKTkqgqSBW55IA3MaHUDMDyoRZw tSxGUtp588iyJd075+ueZIk7+3tAwqrviBwppqwiEXZV96wFjyDGx64x4ZNPnI6FV06o Ed0mLG2Y38I4m/fkRcfYqmajRDXaUjSXEnhLq8A98WLbYIWfOZmN9+ovcDGu7u7HUQk3 ocZ3fXvPzWxXGOHoOijI665RTDvs17d6OWvyQpxP5b8SB3XkwbxX6oRe/NZgpN+O2kfL yGtKJ3ISiicIk2SoR7xJmpmfaTsUI09l/MXLNwKW8q/yMGAKuQGzsNpnzU+S7XC0mjHt MdRg== 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 :message-id:date:to:from:dkim-signature:delivered-to; bh=rseUR/QpbTyMNh+ns4xPiKwK3EpV4513VsIfnpnmcxk=; fh=1kpmTRI1sW42eNCnNMby7VLIISQBX6KJuVYxOEG0t2A=; b=yyIfB5qe+d73pSc4yuBAPTjkQ2S+shwVwKhAsYj/nRAOZB9C9zzr6KDi4PVU9gsKn4 dqABD5TgpKO0g3rmZjsEme2w6SIDtDaU8Y2aCF30i0OJO0W+ucu1qbR8vNu8lHJNPD9N 8VAZObvK2ERxzHe8h6oLj02cNUAVcTKdGpp9/4/x0ukedsQ0Wu7STN9DJp8QJtmf6I7c 5MKDVTedN2J7C3I+E1xZZwqIu9vRo77BEaV/H8gyIKuQKWi5T9KjgughloJ2s86bx1O5 Bv0LGp3d9+/G6oc/fB3IHu1NdnZ97tEYQ8BGlDHtWwATOf59/q4IWqGADs1S+9Sjz+Re FRhg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=iRs6a+0g; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id i7-20020a056402054700b005222c07f612si8788875edx.496.2023.09.05.23.01.46; Tue, 05 Sep 2023 23:01:46 -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=@intel.com header.s=Intel header.b=iRs6a+0g; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8827368C766; Wed, 6 Sep 2023 09:01:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 37DF168C770 for ; Wed, 6 Sep 2023 09:01:15 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1693980080; x=1725516080; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=sgVx5EKe+b1dfggITLVn+U2nthNpP+WrZ7ok3TtQA1E=; b=iRs6a+0gD+e+rLz9PitAE85Ga1Hsdz0lci0/Y7OHVXHMBwRJfmXwdu0h ebShJdZWW0s8i0qVhymiQFJYQp91QPinVSJ2JPT37OGUoLz4L3U+xc67P GP149Sse43wmVI0rHwGYdHdVJ46mY0AI8Ifap0URshfZTPj9QUFHejhV7 r9Mjx5kwqvdrSo+xAGxAJaPeJDvThpg5vV7LVhVyMJFS9h+5878YDPn1N QdJS08Z02KYk/u6BL6u2wQVAtQPw53X306s76s/7SN7RYczG1ZLgRs8qG EA7mxlOYupANv4JOl2w2gDipzXpHzpnNtR9nP34L2B0jg00CQu89eqqBB A==; X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="374372408" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="374372408" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:11 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="734919017" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="734919017" Received: from xhh-dg264.sh.intel.com ([10.238.2.76]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:10 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Wed, 6 Sep 2023 14:00:42 +0800 Message-Id: <20230906060052.698620-3-haihao.xiang@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906060052.698620-1-haihao.xiang@intel.com> References: <20230906060052.698620-1-haihao.xiang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 03/13] lavu/hwcontext_qsv: add support for dynamic frame pool in qsv_frames_derive_to 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: Haihao Xiang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: tPsOggit+NrV From: Haihao Xiang Allow the source is a dynamic frame pool Signed-off-by: Haihao Xiang --- libavutil/hwcontext_qsv.c | 61 ++++++++++++++++++++++++++++++++++----- 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c index 21ce4225bd..ceb5087b6b 100644 --- a/libavutil/hwcontext_qsv.c +++ b/libavutil/hwcontext_qsv.c @@ -1938,18 +1938,52 @@ static int qsv_transfer_data_to(AVHWFramesContext *ctx, AVFrame *dst, return 0; } -static int qsv_frames_derive_to(AVHWFramesContext *dst_ctx, - AVHWFramesContext *src_ctx, int flags) +static int qsv_dynamic_frames_derive_to(AVHWFramesContext *dst_ctx, + AVHWFramesContext *src_ctx, int flags) { QSVFramesContext *s = dst_ctx->internal->priv; AVQSVFramesContext *dst_hwctx = dst_ctx->hwctx; - int i; + mfxFrameSurface1 mfx_surf1; - if (src_ctx->initial_pool_size == 0) { - av_log(dst_ctx, AV_LOG_ERROR, "Only fixed-size pools can be " - "mapped to QSV frames.\n"); - return AVERROR(EINVAL); + switch (src_ctx->device_ctx->type) { +#if CONFIG_VAAPI + case AV_HWDEVICE_TYPE_VAAPI: + dst_hwctx->frame_type = MFX_MEMTYPE_VIDEO_MEMORY_DECODER_TARGET; + break; +#endif + +#if CONFIG_D3D11VA + case AV_HWDEVICE_TYPE_D3D11VA: + { + AVD3D11VAFramesContext *src_hwctx = src_ctx->hwctx; + + if (src_hwctx->BindFlags & D3D11_BIND_RENDER_TARGET) { + dst_hwctx->frame_type |= MFX_MEMTYPE_VIDEO_MEMORY_PROCESSOR_TARGET; + } else { + dst_hwctx->frame_type |= MFX_MEMTYPE_VIDEO_MEMORY_DECODER_TARGET; + } } + break; +#endif + + default: + return AVERROR(ENOSYS); + } + + memset(&mfx_surf1, 0, sizeof(mfx_surf1)); + qsv_init_surface(dst_ctx, &mfx_surf1); + s->frame_info = mfx_surf1.Info; + dst_hwctx->info = &s->frame_info; + dst_hwctx->nb_surfaces = 0; + return 0; +} + +static int qsv_fixed_frames_derive_to(AVHWFramesContext *dst_ctx, + AVHWFramesContext *src_ctx, int flags) +{ + QSVFramesContext *s = dst_ctx->internal->priv; + AVQSVFramesContext *dst_hwctx = dst_ctx->hwctx; + int i; switch (src_ctx->device_ctx->type) { #if CONFIG_VAAPI @@ -2041,6 +2075,19 @@ static int qsv_frames_derive_to(AVHWFramesContext *dst_ctx, return 0; } +static int qsv_frames_derive_to(AVHWFramesContext *dst_ctx, + AVHWFramesContext *src_ctx, int flags) +{ + if (src_ctx->initial_pool_size < 0) { + av_log(dst_ctx, AV_LOG_ERROR, "Invalid src frame pool. \n"); + return AVERROR(EINVAL); + } else if (src_ctx->initial_pool_size == 0) { + return qsv_dynamic_frames_derive_to(dst_ctx, src_ctx, flags); + } else { + return qsv_fixed_frames_derive_to(dst_ctx, src_ctx, flags); + } +} + static int qsv_map_to(AVHWFramesContext *dst_ctx, AVFrame *dst, const AVFrame *src, int flags) { From patchwork Wed Sep 6 06:00:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 43581 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4f16:b0:149:dfde:5c0a with SMTP id gi22csp2310734pzb; Tue, 5 Sep 2023 23:01:56 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGcP5SRZKGNYxo4k+9cUFEMableIG1CnJICaVBevbqIJTpcsbVcwCX04jqAb06bur8hLEct X-Received: by 2002:a17:906:5187:b0:9a1:edb0:2a89 with SMTP id y7-20020a170906518700b009a1edb02a89mr1420604ejk.9.1693980116543; Tue, 05 Sep 2023 23:01:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693980116; cv=none; d=google.com; s=arc-20160816; b=AjUFAe3nbRTdMUeEJ7vFBzUo/CwmFli0+RFzkYme9Z2QJpuv302LM3foJcA93VHhoj AHFaN2An/m6xzIqeF7a2rlC3rh823R1g5x41PqOkWzgrqqYfhiKQr+9gLvFkZwrWWrMM UXvS7eJJT5q2eVvaH7EtChcW8fnxYbkU4nLkPZAgBkUHyV5TvN/GReRS4+sqUGJ4z1BS 8KH5oxO757xDXr3RAToOBdR9EId7nUlFQID3kkACMp2m5vBZjtvFt4wYihwZu9FdM1jK RuBjWhcil1i+ELny43+w0eY5uepXbtcHSD+ZBxW+hLv7fHdA//rHZmB7mLMQGORodttU w7eA== 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 :message-id:date:to:from:dkim-signature:delivered-to; bh=33a0hMv6mPSmWSI3be8aXP9Dq84AFPfUvngiYFEDFPw=; fh=1kpmTRI1sW42eNCnNMby7VLIISQBX6KJuVYxOEG0t2A=; b=fgsIUtSChtlKzE0SVpovyuUwLyXbh6gOBpYp7sGoGn9sX/0XjmIAMtrQDFoQ83K8aR oFia9jwty2QGeSrnVQiW+h5hi0PPbmDF/p11ultRYjvNYxcNMIOZApN6WUNhwPi/Gs85 C+T5u92DKSQoGWNYeQwB/mZTO5s92ElNqn5nh2qhpt/YaoP6nWua5NsjnHvniYhfRsbY RyhcRz3Ql/uyh4kggwqOXjFZxE3c1h10dRSGi4SgSXnDVHZcpo058r/cMT6CZ9BYzxEs 6D5Pt/0K5M5bH/dSiLtJeXnudlZlpZnJf8ZWo/ddkU3nhQq3xmOv1Igpe9nDvpZZ6sOI zMqQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=jaqi1yeg; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id um15-20020a170906cf8f00b009888bb065eesi8707212ejb.60.2023.09.05.23.01.56; Tue, 05 Sep 2023 23:01:56 -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=@intel.com header.s=Intel header.b=jaqi1yeg; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9D1E968C7B7; Wed, 6 Sep 2023 09:01:31 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7771E68C79A for ; Wed, 6 Sep 2023 09:01:18 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1693980089; x=1725516089; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5taxzRfxk9JXRSo2nlFVW3euCDPbBCkJFGZ/RNvVP8M=; b=jaqi1yegz5TnUFMsPNzDbdIKS9QtCYAtx9clckbsWN6Y1iJv6lfUy+j6 fqFKNlh+Eu1dpuO6dD6awTUObrpRw95WvCMPqvSMZLzGydz8Cfw7SSyIA yPuwE5C1k42XOK0Fm/bWp2vqYln3iWZ+mgHgJQZwZY9PcwgytRnNEvizR rBLE8sgnjnk85tnjkew6deCJmcQBgAArY5lPvkwMfGv7/8YJhq67LtRZh p8QKKP1eu/68hmXgKqL0cY1Rw5Dl7K1qCvYfqRrBIRSBVz1/V65nbW6+j 6j108pR1iYKkgKyr9va43vLbuqaSIBahuSBnn4mJxU0Erhtt73vPcV7Nd g==; X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="374372413" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="374372413" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="734919022" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="734919022" Received: from xhh-dg264.sh.intel.com ([10.238.2.76]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:12 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Wed, 6 Sep 2023 14:00:43 +0800 Message-Id: <20230906060052.698620-4-haihao.xiang@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906060052.698620-1-haihao.xiang@intel.com> References: <20230906060052.698620-1-haihao.xiang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 04/13] lavu/hwcontext_qsv: add support for dynamic frame pool in qsv_map_to 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: Haihao Xiang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: MSZiWNBtC/VV From: Haihao Xiang Signed-off-by: Haihao Xiang --- libavutil/hwcontext_qsv.c | 131 +++++++++++++++++++++++++++++++++++++- 1 file changed, 129 insertions(+), 2 deletions(-) diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c index ceb5087b6b..d097f28654 100644 --- a/libavutil/hwcontext_qsv.c +++ b/libavutil/hwcontext_qsv.c @@ -2088,8 +2088,8 @@ static int qsv_frames_derive_to(AVHWFramesContext *dst_ctx, } } -static int qsv_map_to(AVHWFramesContext *dst_ctx, - AVFrame *dst, const AVFrame *src, int flags) +static int qsv_fixed_pool_map_to(AVHWFramesContext *dst_ctx, + AVFrame *dst, const AVFrame *src, int flags) { AVQSVFramesContext *hwctx = dst_ctx->hwctx; int i, err, index = -1; @@ -2148,6 +2148,133 @@ static int qsv_map_to(AVHWFramesContext *dst_ctx, return 0; } +static void qsv_dynamic_pool_unmap(AVHWFramesContext *ctx, HWMapDescriptor *hwmap) +{ + mfxFrameSurface1 *surfaces_internal = (mfxFrameSurface1 *)hwmap->priv; + mfxHDLPair *handle_pairs_internal = (mfxHDLPair *)surfaces_internal->Data.MemId; + AVHWFramesContext *src_ctx = (AVHWFramesContext *)ctx->internal->source_frames->data; + + switch (src_ctx->format) { +#if CONFIG_VAAPI + case AV_PIX_FMT_VAAPI: + { + av_freep(&handle_pairs_internal->first); + + break; + } +#endif + +#if CONFIG_D3D11VA + case AV_PIX_FMT_D3D11: + { + /* Do nothing */ + break; + } +#endif + default: + av_log(ctx, AV_LOG_ERROR, "Should not reach here. \n"); + break; + } + + av_freep(&handle_pairs_internal); + av_freep(&surfaces_internal); +} + +static int qsv_dynamic_pool_map_to(AVHWFramesContext *dst_ctx, + AVFrame *dst, const AVFrame *src, int flags) +{ + mfxFrameSurface1 *surfaces_internal = NULL; + mfxHDLPair *handle_pairs_internal = NULL; + int ret = 0; + + surfaces_internal = av_calloc(1, sizeof(*surfaces_internal)); + if (!surfaces_internal) { + ret = AVERROR(ENOMEM); + goto fail; + } + + handle_pairs_internal = av_calloc(1, sizeof(*handle_pairs_internal)); + if (!handle_pairs_internal) { + ret = AVERROR(ENOMEM); + goto fail; + } + + ret = qsv_init_surface(dst_ctx, surfaces_internal); + if (ret < 0) + goto fail; + + switch (src->format) { +#if CONFIG_VAAPI + case AV_PIX_FMT_VAAPI: + { + VASurfaceID *surface_id_internal; + + surface_id_internal = av_calloc(1, sizeof(*surface_id_internal)); + if (!surface_id_internal) { + ret =AVERROR(ENOMEM); + goto fail; + } + + *surface_id_internal = (VASurfaceID)(uintptr_t)src->data[3]; + handle_pairs_internal->first = (mfxHDL)surface_id_internal; + handle_pairs_internal->second = (mfxMemId)MFX_INFINITE; + + break; + } +#endif + +#if CONFIG_D3D11VA + case AV_PIX_FMT_D3D11: + { + AVHWFramesContext *src_ctx = (AVHWFramesContext*)src->hw_frames_ctx->data; + AVD3D11VAFramesContext *src_hwctx = src_ctx->hwctx; + + handle_pairs_internal->first = (mfxMemId)src->data[0]; + + if (src_hwctx->BindFlags & D3D11_BIND_RENDER_TARGET) { + handle_pairs_internal->second = (mfxMemId)MFX_INFINITE; + } else { + handle_pairs_internal->second = (mfxMemId)src->data[1]; + } + + break; + } +#endif + default: + ret = AVERROR(ENOSYS); + goto fail; + } + + surfaces_internal->Data.MemId = (mfxMemId)handle_pairs_internal; + + ret = ff_hwframe_map_create(dst->hw_frames_ctx, + dst, src, qsv_dynamic_pool_unmap, surfaces_internal); + if (ret) + goto fail; + + dst->width = src->width; + dst->height = src->height; + dst->data[3] = (uint8_t*)surfaces_internal; + + return 0; + +fail: + av_freep(&handle_pairs_internal); + av_freep(&surfaces_internal); + return ret; +} + +static int qsv_map_to(AVHWFramesContext *dst_ctx, + AVFrame *dst, const AVFrame *src, int flags) +{ + AVQSVFramesContext *hwctx = dst_ctx->hwctx; + + if (hwctx->nb_surfaces) + return qsv_fixed_pool_map_to(dst_ctx, dst, src, flags); + else + return qsv_dynamic_pool_map_to(dst_ctx, dst, src, flags); +} + static int qsv_frames_get_constraints(AVHWDeviceContext *ctx, const void *hwconfig, AVHWFramesConstraints *constraints) From patchwork Wed Sep 6 06:00:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 43582 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4f16:b0:149:dfde:5c0a with SMTP id gi22csp2310835pzb; Tue, 5 Sep 2023 23:02:06 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGhbj0Perud8q+07iAhVo5YOCaRR1CD55DHAPS9ICRt0kct9tqeJ2JgCYcL4YUipOTwDn/b X-Received: by 2002:a17:906:ee86:b0:9a1:da38:5691 with SMTP id wt6-20020a170906ee8600b009a1da385691mr1752371ejb.74.1693980126036; Tue, 05 Sep 2023 23:02:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693980126; cv=none; d=google.com; s=arc-20160816; b=Li/Pc+p0hQGoGereGXvKvMy8wKhUiKdbf0TQBbtRRW5BWQhREwkk+f21T9HlfkM4hL ui9ythIL+AOhnBdvp+Zq+JHQvd63gykLB5UHg2P/QReU1b8M/+VzMrWv3sgsZdTWGnKs zzgco3s1c3oGLwZafYNb1kdtx8O56qYMQFePFo1/2l3z6o9XQfv15Cfyi8edB08v+6xc nPWDRq+pAJrqcqRp2JG9Sz0wuD3LauMbxJ7bQDDGUAt+MUfI3wp14Sh/bpnBOFOqh9bt oHJkR9cNpcgjcDL3SAMBpEcsb5qJLH+l1Ye+tRVUwYf0Qi5DoAJEno2OlVV3k90us9eY SNQw== 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 :message-id:date:to:from:dkim-signature:delivered-to; bh=qFoSnEJglnS+Ph/mr8EdQP/WEhSRcfSDlSzMxDX5WNU=; fh=1kpmTRI1sW42eNCnNMby7VLIISQBX6KJuVYxOEG0t2A=; b=e8Umyj91AYvok7q1yyaeGLcsPEzluYdoyz6CcBA/D8WDcek3Vmb1kO9/7VfGglNzpK /GH3iRnD1BQedjgq7SiWGj4nIzA+KZ2BWBJ8B0GbXCL3eOCU8iW3JIg5Y9ECV5tYvDKn OkwicG3MZ0C7S2cDxVZ0kddl7kdBZd7cfd2PGEz2Yz6b+PocnsygGopocllDGb21v+/A DyzxknkcqUeFDv+eiJeL7h1mJKEWIA1HDppU7E50YSPMq7CTFPzKQSOB5g467SVPKKym mqSmkph0bKHvGRtFq9aT7yZvfFnFXQBW0g4FTs3DLwViKRSqtL1HjJYgs0NvrdQPmJWR 15Fw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=gZLZbKUD; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id fi16-20020a170906da1000b00992dce29d4csi8729334ejb.874.2023.09.05.23.02.05; Tue, 05 Sep 2023 23:02:05 -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=@intel.com header.s=Intel header.b=gZLZbKUD; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8CFCC68C7E3; Wed, 6 Sep 2023 09:01:32 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 909B368C76C for ; Wed, 6 Sep 2023 09:01:19 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1693980089; x=1725516089; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=bFBJo8YdeUZfPaLtQQ8pM7gJS7ljkXzsQKfuGbdZQio=; b=gZLZbKUDgFB2XtKfL9pJR47TtMUno7URWw29MfwOi1h5YGwFNW+Oew0t dXWViYiJHyUfhRLJZ+C8dzbm7wbLCMjiIPrWp3FbDaZ/09wO18dxsmuBa cXhG8dyNXGKERQwSjp72Df4MFGj8GzZpAQB+Se0BU0Ge8xQedpFWi1Vlh tXLn1qzEjbBuB7oFT14RrYbjVFG6toLG5tawhPpBLIg7c/XyexaJF0e9N cE4DAiQutl7z+pM/Sk5G0R2t++U8kyGZRbcTpxRSEXVaHdsOkhKcDm3L0 5H+uapDVRNmUD8AG93lCuA6JGTnO1QQgjo39r0YEe1pXVenS2bmU5c2du A==; X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="374372415" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="374372415" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:14 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="734919028" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="734919028" Received: from xhh-dg264.sh.intel.com ([10.238.2.76]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:13 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Wed, 6 Sep 2023 14:00:44 +0800 Message-Id: <20230906060052.698620-5-haihao.xiang@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906060052.698620-1-haihao.xiang@intel.com> References: <20230906060052.698620-1-haihao.xiang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 05/13] lavc/qsv: fix qsv_frame_get_hdl callback to support dynamic frame pools 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: Haihao Xiang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: sGpaiUTKxOrb From: Haihao Xiang Signed-off-by: Haihao Xiang --- libavcodec/qsv.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c index 7563625627..3f4b7b8193 100644 --- a/libavcodec/qsv.c +++ b/libavcodec/qsv.c @@ -987,9 +987,18 @@ static mfxStatus qsv_frame_unlock(mfxHDL pthis, mfxMemId mid, mfxFrameData *ptr) static mfxStatus qsv_frame_get_hdl(mfxHDL pthis, mfxMemId mid, mfxHDL *hdl) { - QSVMid *qsv_mid = (QSVMid*)mid; + QSVFramesContext *ctx = (QSVFramesContext *)pthis; + AVHWFramesContext *frames_ctx = (AVHWFramesContext*)ctx->hw_frames_ctx->data; + AVQSVFramesContext *frames_hwctx = frames_ctx->hwctx; mfxHDLPair *pair_dst = (mfxHDLPair*)hdl; - mfxHDLPair *pair_src = (mfxHDLPair*)qsv_mid->handle_pair; + mfxHDLPair *pair_src; + + if (frames_hwctx->nb_surfaces) { + QSVMid *qsv_mid = (QSVMid*)mid; + pair_src = (mfxHDLPair*)qsv_mid->handle_pair; + } else { + pair_src = (mfxHDLPair*)mid; + } pair_dst->first = pair_src->first; From patchwork Wed Sep 6 06:00:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 43583 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4f16:b0:149:dfde:5c0a with SMTP id gi22csp2310923pzb; Tue, 5 Sep 2023 23:02:15 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEMEAvCyVxKnt2KmyvGDe2x8SkJ2i1W+F0wFF+iTuskxnxk2GyRdwEOJ2+evu0DloWGM6Ue X-Received: by 2002:aa7:da52:0:b0:523:7192:6803 with SMTP id w18-20020aa7da52000000b0052371926803mr1420618eds.8.1693980135143; Tue, 05 Sep 2023 23:02:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693980135; cv=none; d=google.com; s=arc-20160816; b=edCNSRjKsjWloMMOGKrDZVuqaiQiP4RF/cBRXeqQk8yy1X4CSfUtLh6uhwDaitvaL0 r0ulcKXjuCaIW6wKXdo1rXGkXIswJetI8wK3Ie50Hxbb80L4cZ9qnzSckMZxH5AQHwHS YSYfsQ5nh4gOTm74fpB8TDq2R5lOtc6nd4idMIqXKsUZqi3GRBz/xAFk7uHAZsyQIviP AI4EBkPRWso6u5O13B1LN5WuHJSkSk2kVS376rHWjped/CIg0zL041XBq3p2HDA+UQUQ 5sdwgPURtKN3lFWfk5rrXzn/+R3QRNQ0j4HWfsI2vLnuwB9JT8o2boTg42thctwuAIdq UHpg== 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 :message-id:date:to:from:dkim-signature:delivered-to; bh=gNwApDcBLHuCachLQMnO0mQhD2GggXcik5Gwsx/0dwA=; fh=1kpmTRI1sW42eNCnNMby7VLIISQBX6KJuVYxOEG0t2A=; b=BKqvV7m/n6zwhPXZMFosntfjzCwts5WODwAZeoKLFMAUvzSllZvl+eI5XPRWOSugmo rcZr+6Iri4lE8fq2MTgCm8SqPan6nH0+IFNxKb4zPFusF8Ef3n6eccMTAGbeHoq3kCdt SYWOock7UcU6WNqeBYMF/OPXBpAMwQlr8utOpcN+jPDauv1n9xdjfIM/F+zPxk/B0MPB Ci0OkaktF8Y6O3BTY0KTIX+mrm2NRY89McguGEGzibRJhPzon9mTbD8CxauKETlznhzx lwufmHMTFhe5lZh3zW6c/eFrAswOoVelBiBKb3lRxfCCvjy6rg5I/3Ykj4MNsOZraUs6 msfA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=WiekWmKF; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id n13-20020aa7c44d000000b0052a4985b5afsi8802397edr.515.2023.09.05.23.02.14; Tue, 05 Sep 2023 23:02:15 -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=@intel.com header.s=Intel header.b=WiekWmKF; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9576068C809; Wed, 6 Sep 2023 09:01:33 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5A27D68C7B7 for ; Wed, 6 Sep 2023 09:01:21 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1693980089; x=1725516089; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=YNoPbVApmzZScvCO12QdPO/mOETB8h56wZ/FFGZEw7Q=; b=WiekWmKFE+hSOnncMkhQL7EuGnLP42bvjMAntucw2Fr//it/rGf+9x7D vOkGAWWAWMocAkA9TuX6UVku7rRaxF/DDkefeCZFBcfGz3AkVlCD0qU7s fQB8InjXlUB9DvlcNllJqGi+/jAjdI49GeOdY9pIzTxt7cmO6Br7OcfCS imM/jvDvkPQce11rUF2PMi7BVnxj8gjde9/9hZbawJAClAZYRZPwmO1Vu YXcbEiTbcNmzaoJlXUDjPw/OpK+6AOHxZiJEkL6A/du7NgjcgWhNFRDL6 Ap69YEKkax44iwTfYAZK+3hS37wMb1mAlSUx4VtURv+yHmLgwaNaGjc2a Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="374372424" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="374372424" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:16 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="734919036" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="734919036" Received: from xhh-dg264.sh.intel.com ([10.238.2.76]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:14 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Wed, 6 Sep 2023 14:00:45 +0800 Message-Id: <20230906060052.698620-6-haihao.xiang@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906060052.698620-1-haihao.xiang@intel.com> References: <20230906060052.698620-1-haihao.xiang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 06/13] lavc/qsv: set right mfxFrameInfo for frames in dynamic frame pools 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: Haihao Xiang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: P7VPHjijUlXX From: Haihao Xiang Signed-off-by: Haihao Xiang --- libavcodec/qsv.c | 4 ++-- libavcodec/qsvenc.c | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c index 3f4b7b8193..4ae697379f 100644 --- a/libavcodec/qsv.c +++ b/libavcodec/qsv.c @@ -839,7 +839,7 @@ static mfxStatus qsv_frame_alloc(mfxHDL pthis, mfxFrameAllocRequest *req, AVHWFramesContext *frames_ctx = (AVHWFramesContext*)ctx->hw_frames_ctx->data; AVQSVFramesContext *frames_hwctx = frames_ctx->hwctx; mfxFrameInfo *i = &req->Info; - mfxFrameInfo *i1 = &frames_hwctx->surfaces[0].Info; + mfxFrameInfo *i1 = frames_hwctx->nb_surfaces ? &frames_hwctx->surfaces[0].Info : frames_hwctx->info; if (i->Width > i1->Width || i->Height > i1->Height || i->FourCC != i1->FourCC || i->ChromaFormat != i1->ChromaFormat) { @@ -954,7 +954,7 @@ static mfxStatus qsv_frame_lock(mfxHDL pthis, mfxMemId mid, mfxFrameData *ptr) if (!qsv_mid->hw_frame->hw_frames_ctx) goto fail; - qsv_mid->surf.Info = hw_frames_hwctx->surfaces[0].Info; + qsv_mid->surf.Info = hw_frames_hwctx->nb_surfaces ? hw_frames_hwctx->surfaces[0].Info : *hw_frames_hwctx->info; qsv_mid->surf.Data.MemId = qsv_mid->handle_pair; /* map the data to the system memory */ diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index b3b7475b0f..72dc33c2e4 100644 --- a/libavcodec/qsvenc.c +++ b/libavcodec/qsvenc.c @@ -717,8 +717,9 @@ static int init_video_param_jpeg(AVCodecContext *avctx, QSVEncContext *q) if (avctx->hw_frames_ctx) { AVHWFramesContext *frames_ctx = (AVHWFramesContext *)avctx->hw_frames_ctx->data; AVQSVFramesContext *frames_hwctx = frames_ctx->hwctx; - q->param.mfx.FrameInfo.Width = frames_hwctx->surfaces[0].Info.Width; - q->param.mfx.FrameInfo.Height = frames_hwctx->surfaces[0].Info.Height; + mfxFrameInfo *info = frames_hwctx->nb_surfaces ? &frames_hwctx->surfaces[0].Info : frames_hwctx->info; + q->param.mfx.FrameInfo.Width = info->Width; + q->param.mfx.FrameInfo.Height = info->Height; } if (avctx->framerate.den > 0 && avctx->framerate.num > 0) { @@ -841,8 +842,9 @@ static int init_video_param(AVCodecContext *avctx, QSVEncContext *q) if (avctx->hw_frames_ctx) { AVHWFramesContext *frames_ctx = (AVHWFramesContext*)avctx->hw_frames_ctx->data; AVQSVFramesContext *frames_hwctx = frames_ctx->hwctx; - q->param.mfx.FrameInfo.Width = frames_hwctx->surfaces[0].Info.Width; - q->param.mfx.FrameInfo.Height = frames_hwctx->surfaces[0].Info.Height; + mfxFrameInfo *info = frames_hwctx->nb_surfaces ? &frames_hwctx->surfaces[0].Info : frames_hwctx->info; + q->param.mfx.FrameInfo.Width = info->Width; + q->param.mfx.FrameInfo.Height = info->Height; } if (avctx->framerate.den > 0 && avctx->framerate.num > 0) { From patchwork Wed Sep 6 06:00:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 43584 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4f16:b0:149:dfde:5c0a with SMTP id gi22csp2311028pzb; Tue, 5 Sep 2023 23:02:24 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGPkceE4UvoGNQTTew0fBw2padIRL1KjbzgpjXFcahEwRC4xDWTTSxtMeK7UyViDeLkCYun X-Received: by 2002:aa7:d805:0:b0:527:fa8d:d40b with SMTP id v5-20020aa7d805000000b00527fa8dd40bmr1365513edq.26.1693980144125; Tue, 05 Sep 2023 23:02:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693980144; cv=none; d=google.com; s=arc-20160816; b=PtKrLtRh/1sWh8MLQktP3VwrH2Aj5Bgh1W+RCKa1vAdxthWPVFBeObFhLpE6mR+BRR 2t2JOeRfibc5xABXosnlJc+vZlSCSNRhOdSa1mnm3vjbAlLvENlbyI688Jkz98gdSf4T Xeoya/b4gcFv2ik3Uh17S+Wqqftr7cdpHUsn4k/+xmnKp+XiUwJyxcNZlfseAblystgz QA//IE3Yr2gCiQmV2RLZ+pIUArkSeibLUXxajVA/mY6XtdCCSZEwNX8Geg1gBGjrbaAa spSWV8pQbpjP90/SkaY/arO6X1mL5kwi4VUK6iDbpK18+UeYpe+EoWSgxzWH+EgeB7Pt mKrg== 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 :message-id:date:to:from:dkim-signature:delivered-to; bh=/eczon3Mp1uJRGEZDbIspopplwI52gtbr/1MVNsYJdU=; fh=1kpmTRI1sW42eNCnNMby7VLIISQBX6KJuVYxOEG0t2A=; b=klZ6+xuwGf5usu5kQRH8ZPpNfufDdaBwxhWKH8kPYui5r1xZ2K8qPtUtcAqIASEI65 skpyjOKGjK5j8ZHmkhDKx7eRYnG9JLDn4IBGReGUQCpLVWYsEGJ/rGM24Cuo9FmcXJh9 sD9rggcIFFod4LA8jIkaTYYJ8KVISx8HKsejIDAmae0jSrmvQjQZo9Dc9ZMcUtJQu70O eAWwe42KGh+RIa15fopWysukEyKSnvNQlp6/bkIDLqnxKDOYa2xZQVzTVUpWv2y53yGg 9m4bARdJRDlLRyFEkQ0YWsVhTPcmxi9w+HuxuS74nxoUiBu2Z81DQ0PeN5C5NTJfGFf5 UR0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=T7nRYI41; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id s1-20020a056402164100b005232901160dsi8880196edx.485.2023.09.05.23.02.23; Tue, 05 Sep 2023 23:02:24 -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=@intel.com header.s=Intel header.b=T7nRYI41; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A0ACA68C846; Wed, 6 Sep 2023 09:01:34 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7EFDF68C7C0 for ; Wed, 6 Sep 2023 09:01:30 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1693980091; x=1725516091; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=/BC5wOjePpYmfBNNx6JH8q2EkKf03ziB97NQJuHurfQ=; b=T7nRYI41YOHDkahuFqySRfl+CokrOmfGmbzKI+Zh0FzPLgZDJ2mOtz7K 7A6NztRMGUmCpEo55X9NmrX7qwyTKAmqX3agLBits/DqZMxE5lgrfkouv y9R8EfKiYb0l9axQSCBSC5eGyMC8540h/AOmkTJMxo8BYdplTBbLi5xIJ Nol4CdwLsqC5ddX2HNi3m4nhk0sy9RGUhedeFdPhz8/zFzwE1UwbVC5Fs oJJGsVlB6wA6F4SFl5WOsiM/ZapfThNbBn+m5n5jcVvR1L7EnGqRc3U8m 40FagNbN8bPnL6srP5v9Gwjql55DG0Ok4Z5MXIb6m/hDiYQ1VqPbSIOHt w==; X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="374372432" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="374372432" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:17 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="734919043" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="734919043" Received: from xhh-dg264.sh.intel.com ([10.238.2.76]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:16 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Wed, 6 Sep 2023 14:00:46 +0800 Message-Id: <20230906060052.698620-7-haihao.xiang@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906060052.698620-1-haihao.xiang@intel.com> References: <20230906060052.698620-1-haihao.xiang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 07/13] lavc/qsv: needn't QSVMid array for frames in dynamic frame pools 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: Haihao Xiang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: qIR1WoCLgGsn From: Haihao Xiang Signed-off-by: Haihao Xiang --- libavcodec/qsv.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c index 4ae697379f..f8ef5a4ae5 100644 --- a/libavcodec/qsv.c +++ b/libavcodec/qsv.c @@ -841,6 +841,13 @@ static mfxStatus qsv_frame_alloc(mfxHDL pthis, mfxFrameAllocRequest *req, mfxFrameInfo *i = &req->Info; mfxFrameInfo *i1 = frames_hwctx->nb_surfaces ? &frames_hwctx->surfaces[0].Info : frames_hwctx->info; + if (!frames_ctx->initial_pool_size) { + av_log(ctx->logctx, AV_LOG_DEBUG, + "Dynamic frame pools, no frame is pre-allocated\n"); + + return MFX_ERR_NONE; + } + if (i->Width > i1->Width || i->Height > i1->Height || i->FourCC != i1->FourCC || i->ChromaFormat != i1->ChromaFormat) { av_log(ctx->logctx, AV_LOG_ERROR, "Mismatching surface properties in an " @@ -912,6 +919,9 @@ static mfxStatus qsv_frame_alloc(mfxHDL pthis, mfxFrameAllocRequest *req, static mfxStatus qsv_frame_free(mfxHDL pthis, mfxFrameAllocResponse *resp) { + if (!resp->mids) + return MFX_ERR_NONE; + av_buffer_unref((AVBufferRef**)&resp->mids[resp->NumFrameActual]); av_buffer_unref((AVBufferRef**)&resp->mids[resp->NumFrameActual + 1]); av_freep(&resp->mids); @@ -1112,14 +1122,18 @@ int ff_qsv_init_session_frames(AVCodecContext *avctx, mfxSession *psession, if (!opaque) { qsv_frames_ctx->logctx = avctx; + av_buffer_unref(&qsv_frames_ctx->mids_buf); + qsv_frames_ctx->mids = NULL; + qsv_frames_ctx->nb_mids = 0; /* allocate the memory ids for the external frames */ - av_buffer_unref(&qsv_frames_ctx->mids_buf); - qsv_frames_ctx->mids_buf = qsv_create_mids(qsv_frames_ctx->hw_frames_ctx); - if (!qsv_frames_ctx->mids_buf) - return AVERROR(ENOMEM); - qsv_frames_ctx->mids = (QSVMid*)qsv_frames_ctx->mids_buf->data; - qsv_frames_ctx->nb_mids = frames_hwctx->nb_surfaces; + if (frames_hwctx->nb_surfaces) { + qsv_frames_ctx->mids_buf = qsv_create_mids(qsv_frames_ctx->hw_frames_ctx); + if (!qsv_frames_ctx->mids_buf) + return AVERROR(ENOMEM); + qsv_frames_ctx->mids = (QSVMid*)qsv_frames_ctx->mids_buf->data; + qsv_frames_ctx->nb_mids = frames_hwctx->nb_surfaces; + } err = MFXVideoCORE_SetFrameAllocator(session, &frame_allocator); if (err != MFX_ERR_NONE) From patchwork Wed Sep 6 06:00:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 43577 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4f16:b0:149:dfde:5c0a with SMTP id gi22csp2311222pzb; Tue, 5 Sep 2023 23:02:42 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHebsJ6mVzdxEzOE0CChDeYF+2p7866ATv8sFvc0ZIAAwdl3CXlNNVbTqcafCU2lmBS/HzJ X-Received: by 2002:a05:6402:795:b0:523:c35:c209 with SMTP id d21-20020a056402079500b005230c35c209mr1370000edy.12.1693980162171; Tue, 05 Sep 2023 23:02:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693980162; cv=none; d=google.com; s=arc-20160816; b=lx353/qxnSVkW5T43rLzI0j5WJCRBsboNV4NYD7Xfdlk8MTTWTBoK9Oaz/iiylDBmO Sroinvbd5EcGCd4bv1Off3raxYdLeqGEzQ9Iv1b++kJsQdOe38cjU8HKdTu+1Y5oGTkZ fMt8OR4TjFe8fHasjdD/v7K6vpWe1Lfl25evoCHj/Wfc+6O1ImlYaNQccHOVoXegUUUi p0/5BwPvjnVcbUcXEbqA+RHKokQbXeEKqvgQw3p89di2uwWQJLPmq5EfoUOPvSucctbH sufmjScGPb4M6SQtAzq00B2MYVhSopr+IWHssxSlNHWHp0ZQFhjs4drMAzLUTP2nkrAH hrRA== 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 :message-id:date:to:from:dkim-signature:delivered-to; bh=gVDdnYmvwv9DYO9RE8ObPmeVYb83TcFGyStbpbFUMyg=; fh=1kpmTRI1sW42eNCnNMby7VLIISQBX6KJuVYxOEG0t2A=; b=O3BcB8vAhd1SQBXzIQcYRWwZmLCm5z9QMry3GwIUxurUsGHi+xPMNcp18N/dlZmLe2 i2nvlfnxYQo3KmlVlhcViRuvw04BPbT+Kj6T/BInySirdkHs8ikpsJbUEEi8ua5DXb3O ylGOXTxMs8p/moXeM+zd9IrTtxnxt/EIfadNWPkhrW9JVf/UQixJoSGGUEFuqPmzkI17 sHlWXwb204+H/A0z3Zls14ZOhqZphp8p/3GenqdUZJlBQ+NYOWdJBHvObCqKgbTylEJq 1Bl362UefuOkWzBSAYalRfzh3VfmQCEkhQwj/1aX7y4yNVTx+vXe7dTzBp7lV4kRxTPw ZtfA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=Fskqg52L; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l21-20020a056402345500b0052552d271c8si8643961edc.45.2023.09.05.23.02.41; Tue, 05 Sep 2023 23:02:42 -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=@intel.com header.s=Intel header.b=Fskqg52L; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9AC0968C76B; Wed, 6 Sep 2023 09:01:36 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9C7C368C7C1 for ; Wed, 6 Sep 2023 09:01:30 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1693980091; x=1725516091; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OoFe2aLGndxYWeSZg2jYOKwBvNsC8HFjDNAGhVpObYY=; b=Fskqg52Lhgd2XK31Ue3puqS8GPMleWuqd4RpN72by4VhBQI0EXl504EG oTO3adudk/BUwpRuB3NmugubJX1l/+BYimmuiN8s0dVL+5kl42gKIB62M GBqJUg89Md3V2gjDDbnVsB06I/wo82Lb2MmCICHMBj/b3wdVfnbbvTbiS HwnW0igJcJuYa5iKWXRmfVfsdmvjpoYKJhbCVa5PMi3jL1t5/7+Xn4+Oi O7UHqGzDfSRM829d7Ob/nJ8XbL8G19axXMgfPzZnxEzJsAd/pSpcOTJ2w cIism+rQ7ygsISYuSFacCylEHUzWkMgt8SkSTBjw2yoCyY0A2iJKprp9v w==; X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="374372439" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="374372439" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="734919054" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="734919054" Received: from xhh-dg264.sh.intel.com ([10.238.2.76]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:17 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Wed, 6 Sep 2023 14:00:47 +0800 Message-Id: <20230906060052.698620-8-haihao.xiang@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906060052.698620-1-haihao.xiang@intel.com> References: <20230906060052.698620-1-haihao.xiang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 08/13] lavc/qsvdec: require a dynamic frame pool if possible 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: Haihao Xiang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: pbI9P+9f4Nr8 From: Haihao Xiang Signed-off-by: Haihao Xiang --- libavcodec/qsvdec.c | 57 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 45 insertions(+), 12 deletions(-) diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index da700f25e9..5549df304a 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -42,6 +42,7 @@ #include "libavutil/imgutils.h" #include "libavutil/film_grain_params.h" #include "libavutil/mastering_display_metadata.h" +#include "libavutil/avassert.h" #include "avcodec.h" #include "codec_internal.h" @@ -67,6 +68,8 @@ static const AVRational mfx_tb = { 1, 90000 }; AV_NOPTS_VALUE : pts_tb.num ? \ av_rescale_q(mfx_pts, mfx_tb, pts_tb) : mfx_pts) +#define MFX_IMPL_VIA_MASK(impl) (0x0f00 & (impl)) + typedef struct QSVAsyncFrame { mfxSyncPoint *sync; QSVFrame *frame; @@ -76,6 +79,7 @@ typedef struct QSVContext { // the session used for decoding mfxSession session; mfxVersion ver; + mfxHandleType handle_type; // the session we allocated internally, in case the caller did not provide // one @@ -182,6 +186,7 @@ static int qsv_init_session(AVCodecContext *avctx, QSVContext *q, mfxSession ses AVBufferRef *hw_frames_ref, AVBufferRef *hw_device_ref) { int ret; + mfxIMPL impl; if (q->gpu_copy == MFX_GPUCOPY_ON && !(q->iopattern & MFX_IOPATTERN_OUT_SYSTEM_MEMORY)) { @@ -239,27 +244,52 @@ static int qsv_init_session(AVCodecContext *avctx, QSVContext *q, mfxSession ses q->session = q->internal_qs.session; } - if (MFXQueryVersion(q->session, &q->ver) != MFX_ERR_NONE) { - av_log(avctx, AV_LOG_ERROR, "Error querying the session version. \n"); - q->session = NULL; + if (MFXQueryIMPL(q->session, &impl) == MFX_ERR_NONE) { + switch (MFX_IMPL_VIA_MASK(impl)) { + case MFX_IMPL_VIA_VAAPI: + q->handle_type = MFX_HANDLE_VA_DISPLAY; + break; - if (q->internal_qs.session) { - MFXClose(q->internal_qs.session); - q->internal_qs.session = NULL; - } + case MFX_IMPL_VIA_D3D11: + q->handle_type = MFX_HANDLE_D3D11_DEVICE; + break; + + case MFX_IMPL_VIA_D3D9: + q->handle_type = MFX_HANDLE_D3D9_DEVICE_MANAGER; + break; - if (q->internal_qs.loader) { - MFXUnload(q->internal_qs.loader); - q->internal_qs.loader = NULL; + default: + av_assert0(!"should not reach here"); } + } else { + av_log(avctx, AV_LOG_ERROR, "Error querying the implementation. \n"); + goto fail; + } - return AVERROR_EXTERNAL; + if (MFXQueryVersion(q->session, &q->ver) != MFX_ERR_NONE) { + av_log(avctx, AV_LOG_ERROR, "Error querying the session version. \n"); + goto fail; } /* make sure the decoder is uninitialized */ MFXVideoDECODE_Close(q->session); return 0; + +fail: + q->session = NULL; + + if (q->internal_qs.session) { + MFXClose(q->internal_qs.session); + q->internal_qs.session = NULL; + } + + if (q->internal_qs.loader) { + MFXUnload(q->internal_qs.loader); + q->internal_qs.loader = NULL; + } + + return AVERROR_EXTERNAL; } static int qsv_decode_preinit(AVCodecContext *avctx, QSVContext *q, enum AVPixelFormat pix_fmt, mfxVideoParam *param) @@ -309,7 +339,10 @@ static int qsv_decode_preinit(AVCodecContext *avctx, QSVContext *q, enum AVPixel hwframes_ctx->height = FFALIGN(avctx->coded_height, 32); hwframes_ctx->format = AV_PIX_FMT_QSV; hwframes_ctx->sw_format = avctx->sw_pix_fmt; - hwframes_ctx->initial_pool_size = q->suggest_pool_size + 16 + avctx->extra_hw_frames; + if (QSV_RUNTIME_VERSION_ATLEAST(q->ver, 2, 9) && q->handle_type != MFX_HANDLE_D3D9_DEVICE_MANAGER) + hwframes_ctx->initial_pool_size = 0; + else + hwframes_ctx->initial_pool_size = q->suggest_pool_size + 16 + avctx->extra_hw_frames; frames_hwctx->frame_type = MFX_MEMTYPE_VIDEO_MEMORY_DECODER_TARGET; ret = av_hwframe_ctx_init(avctx->hw_frames_ctx); From patchwork Wed Sep 6 06:00:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 43585 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4f16:b0:149:dfde:5c0a with SMTP id gi22csp2311130pzb; Tue, 5 Sep 2023 23:02:33 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFRAoHK9XYnH2rnKdmcC3cLsSykgYDGNrLZoeMciohQo9Xd9w0KEKbIVm2+7lhmHdw23Hjs X-Received: by 2002:a17:907:2c4f:b0:99d:fc31:242f with SMTP id hf15-20020a1709072c4f00b0099dfc31242fmr1381830ejc.66.1693980153253; Tue, 05 Sep 2023 23:02:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693980153; cv=none; d=google.com; s=arc-20160816; b=FFJwAXjoOnex7k/pJUNowlJfGC5kp/W+lbePKGZrUuKMxHOAIb/BvvPHn0h26wkEv2 Wio/E3XaGYKuv8ZA6OGJwH9l+VmJa0OAvdW7zQHslLuVz7Fru37sxwgId4/3TfYilRdF DI4acdcfQD8nU4x61apIOPVfxWWllLtniuPGT46APIRuzzfA6xVgH4WrRiqOkS1IGLP/ gBCyGr15cc8yMxoGeoiIquaZpCLTfg/3jhehGIoB4Y1yYxTYcC/MwSE5mJ0SjHIJ0uj/ AMQlbKfq2Wmkw8ebXOtl/qEO31vlx5z8k2tJSuEB6NAgX3mYLuMt/WErqWtnoeuEgmkH dQCQ== 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 :message-id:date:to:from:dkim-signature:delivered-to; bh=3o2pU8FjfnLgRTfo3qcrCWKXMK9HXFBnzU74cJgyt3A=; fh=1kpmTRI1sW42eNCnNMby7VLIISQBX6KJuVYxOEG0t2A=; b=c24BTQgD0ApeHWFW8OleT4estfGKwd/ngpeUfCLao7f7Chshbl8pOsNkvv7KfGgBWS j1xLqPS9qSDR1ZoZCj0/hyIiDVf5dcmYSZVwHbfZRG1wa0eBqlRHXCUI6LOs+GNJIte1 MPJBItDRrJaqn3TbkUV3X0kVn/AUbySv5cT2YCnpRnwEVCuIHyQB6olqx7gb6vOkq3z3 F6mlG5Y8Y9/TV1Hifb4Cfr15Cuy6ETbjsdZhM08lnn3Xo6l1ZsZrZ4mTRmQIlkkZHxbp QuXp3IO5BLReucJUQOomgTGXy14420sVVEDfKCsyka08ReHkyaHXw9ahLwAJYcHLi/Ot qMbA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=ZEOqRSS2; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id i19-20020a0564020f1300b0052e1f352fd9si4397733eda.650.2023.09.05.23.02.32; Tue, 05 Sep 2023 23:02:33 -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=@intel.com header.s=Intel header.b=ZEOqRSS2; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 93AF468C3B8; Wed, 6 Sep 2023 09:01:35 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9CF4F68C7CB for ; Wed, 6 Sep 2023 09:01:30 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1693980091; x=1725516091; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=EjjhjehYIg/paTUgQquVzN6CR+0HvE7iW72CZlbyo9c=; b=ZEOqRSS2kipywusAfBjYCBKl6Ru8bt784Qy5oHVtwHTXicYkbfP9Yp3P 2Gw1rAZDRY8XENruEtLbJYPo0TbQYo7YYUkzNN83YjnvzoW3EZym/gpSb hwXSDYbS9HGCobNMUEfvn4ThfWoL7BeWUUnSqseBkrFCRBq90nCIfj9Eu 0jlGU92F1ozh2o5ZBsLzIjb5m9csUlcCVyXxo3Nee6X3RuR9orui4cgAn 9g/oiFRKmu+xfvVf2Bn1kzMP9xE+14cFGE2B9sy9o2fosnnnwyovTemAH u2pFMiVqcUHVhaW1Gchr1zjdkmr+wIR1fdNlZylkfuPJ8/bkFsbDJ3hin A==; X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="374372441" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="374372441" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="734919061" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="734919061" Received: from xhh-dg264.sh.intel.com ([10.238.2.76]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:18 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Wed, 6 Sep 2023 14:00:48 +0800 Message-Id: <20230906060052.698620-9-haihao.xiang@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906060052.698620-1-haihao.xiang@intel.com> References: <20230906060052.698620-1-haihao.xiang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 09/13] lavfi/qsvvpp: set right mfxFrameInfo for frames in dynamic frame pools 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: Haihao Xiang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: OX4ZUOi07l97 From: Haihao Xiang Signed-off-by: Haihao Xiang --- libavfilter/qsvvpp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavfilter/qsvvpp.c b/libavfilter/qsvvpp.c index 5cdba7d54a..d09140d89b 100644 --- a/libavfilter/qsvvpp.c +++ b/libavfilter/qsvvpp.c @@ -307,7 +307,7 @@ static int fill_frameinfo_by_link(mfxFrameInfo *frameinfo, AVFilterLink *link) frames_ctx = (AVHWFramesContext *)link->hw_frames_ctx->data; frames_hwctx = frames_ctx->hwctx; - *frameinfo = frames_hwctx->surfaces[0].Info; + *frameinfo = frames_hwctx->nb_surfaces ? frames_hwctx->surfaces[0].Info : *frames_hwctx->info; } else { pix_fmt = link->format; desc = av_pix_fmt_desc_get(pix_fmt); From patchwork Wed Sep 6 06:00:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 43587 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4f16:b0:149:dfde:5c0a with SMTP id gi22csp2311373pzb; Tue, 5 Sep 2023 23:03:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGhVFsDH7rEqY1SXv4UNWp1T4MW3UrYTWMUzcMPtUNqIFpXSyhu7Ph9oo7p7v3VwCa6Ys/L X-Received: by 2002:a17:906:20cb:b0:9a1:bee8:9252 with SMTP id c11-20020a17090620cb00b009a1bee89252mr1209830ejc.29.1693980180302; Tue, 05 Sep 2023 23:03:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693980180; cv=none; d=google.com; s=arc-20160816; b=af0rwVd0lsgLeKGjfxGIK1CYKgVfgT6z/KmPT58DvX3y8XjPYWLSG7zeNK/uNG0iuj WiZaPKwOwo+xB+f6BWwsc4YJEzSacSc5eq8h79E6oY3C8pfMGoftjrurUz52vOoasjx7 1+w0eEC+zdoQO+b3JoqTtRP4M8lrTeatxL0SS85HDv7C7YBhn7dvRrCD9ozR/EQ5svjS 8ksm25yMl4pCT3ceUEEFIBUXgav5BXUxNV/G+EyroHQyeAg5VvYXsc35x2GlDLHJh0Vo 1VkgiMMQJne4uWhH836TuoKcP0PYGZP5J/W4JSY/za+hin+7l7JlBmfqVEUZ2o+t0wUf U5mw== 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 :message-id:date:to:from:dkim-signature:delivered-to; bh=WBybTZRFqoLQcv9bLk7lLcjwdmfTcAkhG1AqUnMbOh4=; fh=1kpmTRI1sW42eNCnNMby7VLIISQBX6KJuVYxOEG0t2A=; b=qWaWB5c3DyjPpOZ97aYNeawgwFDlJra7ltTAMQ+ZdX8UECDA48lDikVXPhxYnce9N4 VStOqN+CtOCijjQXVAz05xvM8I0FSWp4GNiNbTuvF38L+T+8VJzAA7YoTbREEY95NFTA HhWY7ENCvE82rzeaprja2Zyzl4pOOJOvW83Tu2g4qf5yN3ryIRH64hlKz/49bkK39VnA sT163MwkXRrTcEx4XzRguyL1QkDy5+/I+WBFwV3QTKrHFyxhpnD1+HKUq4hD1LYW8vGd nc2zACjfFDCpQjU96xdh1YFu2RfoDXHayu0SQJNXsrsfmv89czE2OlG4i6X//j/RYvn5 KQew== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=Fb9wa0Bt; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w2-20020aa7cb42000000b005237a872472si8718293edt.37.2023.09.05.23.02.59; Tue, 05 Sep 2023 23:03:00 -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=@intel.com header.s=Intel header.b=Fb9wa0Bt; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 85F7768C87C; Wed, 6 Sep 2023 09:01:38 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 73B8C68C7F2 for ; Wed, 6 Sep 2023 09:01:32 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1693980092; x=1725516092; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=2g24ZbPUjpNpUIM43E6+1/ShO9eJe8ljY2VhpL17F+E=; b=Fb9wa0BtHZjeVpcPLPBxepuoePkldhjhhphXnTmLaKyVM+0QJ3v1bTmf ZwhNA79b7oH0bZaxNPy6GWIPb+pZj7dUIyAS8elvuvu/7b9Tpw83I4F43 NYPGMfdOvySoaY5yoCUxs8dvRVb2SXufMGm8aT6dBs2NLWRF0Pg4fbtJE ZlpFdW4xUrm6sGHSkGylm87t2XSrNDyJO0s0m6KkFdfei549p2ZojhWyC 4/9LW/f8ZfRRp5GT22dBZ1s6SPeOfXt4ZGCIvYlLhH3j6mp39R2UJhJ8n smZvTKQy4w7HYKvZVQ6AlYWrD/unlHz1C1GzXDYraCtw5WG3sFVTq6zZd Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="374372450" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="374372450" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:21 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="734919067" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="734919067" Received: from xhh-dg264.sh.intel.com ([10.238.2.76]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:20 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Wed, 6 Sep 2023 14:00:49 +0800 Message-Id: <20230906060052.698620-10-haihao.xiang@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906060052.698620-1-haihao.xiang@intel.com> References: <20230906060052.698620-1-haihao.xiang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 10/13] lavfi/qsvvpp: require a dynamic frame pool for output if possible 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: Haihao Xiang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 5A0nojGDaA8L From: Haihao Xiang Signed-off-by: Haihao Xiang --- libavfilter/qsvvpp.c | 52 ++++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/libavfilter/qsvvpp.c b/libavfilter/qsvvpp.c index d09140d89b..2c8e73e87d 100644 --- a/libavfilter/qsvvpp.c +++ b/libavfilter/qsvvpp.c @@ -603,6 +603,26 @@ static int init_vpp_session(AVFilterContext *avctx, QSVVPPContext *s) device_ctx = (AVHWDeviceContext *)device_ref->data; device_hwctx = device_ctx->hwctx; + /* extract the properties of the "master" session given to us */ + ret = MFXQueryIMPL(device_hwctx->session, &impl); + if (ret == MFX_ERR_NONE) + ret = MFXQueryVersion(device_hwctx->session, &ver); + if (ret != MFX_ERR_NONE) { + av_log(avctx, AV_LOG_ERROR, "Error querying the session attributes\n"); + return AVERROR_UNKNOWN; + } + + if (MFX_IMPL_VIA_VAAPI == MFX_IMPL_VIA_MASK(impl)) { + handle_type = MFX_HANDLE_VA_DISPLAY; + } else if (MFX_IMPL_VIA_D3D11 == MFX_IMPL_VIA_MASK(impl)) { + handle_type = MFX_HANDLE_D3D11_DEVICE; + } else if (MFX_IMPL_VIA_D3D9 == MFX_IMPL_VIA_MASK(impl)) { + handle_type = MFX_HANDLE_D3D9_DEVICE_MANAGER; + } else { + av_log(avctx, AV_LOG_ERROR, "Error unsupported handle type\n"); + return AVERROR_UNKNOWN; + } + if (outlink->format == AV_PIX_FMT_QSV) { AVHWFramesContext *out_frames_ctx; AVBufferRef *out_frames_ref = av_hwframe_ctx_alloc(device_ref); @@ -624,9 +644,15 @@ static int init_vpp_session(AVFilterContext *avctx, QSVVPPContext *s) out_frames_ctx->width = FFALIGN(outlink->w, 32); out_frames_ctx->height = FFALIGN(outlink->h, 32); out_frames_ctx->sw_format = s->out_sw_format; - out_frames_ctx->initial_pool_size = 64; - if (avctx->extra_hw_frames > 0) - out_frames_ctx->initial_pool_size += avctx->extra_hw_frames; + + if (QSV_RUNTIME_VERSION_ATLEAST(ver, 2, 9) && handle_type != MFX_HANDLE_D3D9_DEVICE_MANAGER) + out_frames_ctx->initial_pool_size = 0; + else { + out_frames_ctx->initial_pool_size = 64; + if (avctx->extra_hw_frames > 0) + out_frames_ctx->initial_pool_size += avctx->extra_hw_frames; + } + out_frames_hwctx->frame_type = s->out_mem_mode; ret = av_hwframe_ctx_init(out_frames_ref); @@ -652,26 +678,6 @@ static int init_vpp_session(AVFilterContext *avctx, QSVVPPContext *s) } else s->out_mem_mode = MFX_MEMTYPE_SYSTEM_MEMORY; - /* extract the properties of the "master" session given to us */ - ret = MFXQueryIMPL(device_hwctx->session, &impl); - if (ret == MFX_ERR_NONE) - ret = MFXQueryVersion(device_hwctx->session, &ver); - if (ret != MFX_ERR_NONE) { - av_log(avctx, AV_LOG_ERROR, "Error querying the session attributes\n"); - return AVERROR_UNKNOWN; - } - - if (MFX_IMPL_VIA_VAAPI == MFX_IMPL_VIA_MASK(impl)) { - handle_type = MFX_HANDLE_VA_DISPLAY; - } else if (MFX_IMPL_VIA_D3D11 == MFX_IMPL_VIA_MASK(impl)) { - handle_type = MFX_HANDLE_D3D11_DEVICE; - } else if (MFX_IMPL_VIA_D3D9 == MFX_IMPL_VIA_MASK(impl)) { - handle_type = MFX_HANDLE_D3D9_DEVICE_MANAGER; - } else { - av_log(avctx, AV_LOG_ERROR, "Error unsupported handle type\n"); - return AVERROR_UNKNOWN; - } - ret = MFXVideoCORE_GetHandle(device_hwctx->session, handle_type, &handle); if (ret < 0) return ff_qsvvpp_print_error(avctx, ret, "Error getting the session handle"); From patchwork Wed Sep 6 06:00:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 43588 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4f16:b0:149:dfde:5c0a with SMTP id gi22csp2311453pzb; Tue, 5 Sep 2023 23:03:09 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFhUAtDl7ULWl6UpxzBWJZu543Z7PVxFsOr7NGWHLaCgs+KhB/keaGL41yipcNyAPP2FpQw X-Received: by 2002:a17:906:76cd:b0:9a1:ab86:5f22 with SMTP id q13-20020a17090676cd00b009a1ab865f22mr1549945ejn.56.1693980189252; Tue, 05 Sep 2023 23:03:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693980189; cv=none; d=google.com; s=arc-20160816; b=JB0/Z2Rt1kpm31yFS0vfDCzmYHcfpnfHnPkxhg3k6v1ttriRYRsHajyXEwE8d1JFYh +0SkekTIW1U7aG5ceHXTpT9pULcXIqW4AumVm4ECJYlIv4HvLzsxPzcs5LRfx7NYC7wE ndHvLIpMdgd7VixFPEmA0inaBNOYvZT0SsAOTxkiubFgIm3YeMAz/MtsUa+tCECYlP8N 9EoMA+LSd9qskS7Dim1Ki7fm4qP0yUuB3W0kKL5wMYs1s7AJyUxPfUg+HMWlpc0ooCi5 TJzKnldf87jZqWCAv5go08fWQT8VnilCCtDUkBf2bNYqBvtPj2h9L7KomoEC/VeSwjGt y6kQ== 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 :message-id:date:to:from:dkim-signature:delivered-to; bh=6jTmsGlEFVsrP3v/GApMfrhIl45XYlkj8pWKiiLMHs8=; fh=1kpmTRI1sW42eNCnNMby7VLIISQBX6KJuVYxOEG0t2A=; b=t2jckVzfYcGN7Ea2q6niWiepPnvB/3vMdewfVEDuw/35U2oxpTbRQrrlHJJqWsLCVx 2RNHrTFK1HXIDCXaM15RwydCoE/PVqGWq/iQp+BjQlCCX/J9TeZApcJoo24PzKq3vl9W VPQz4sjMfrmrvT6yA15JOWM8tfqVrZqI66BypSI1roaqWShjAM2tJvEGRLPopEcpQc4U expg/dw1zRtb/u1jrKMQ6yhLQWUbyV+4jzmTqUY+fvih0YdptdwermB8NKq9s5E3wJyy SNhikzOrsEQbbRrSJR68EqUxZ+3Q4+Jzf6ugzVO1g69HZdmzg0nYv0DzXjvXYldzoNpM OuEA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=McNE5hSa; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id op13-20020a170906bced00b0099dfb8d5e77si8680694ejb.12.2023.09.05.23.03.08; Tue, 05 Sep 2023 23:03:09 -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=@intel.com header.s=Intel header.b=McNE5hSa; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 75CFA68C881; Wed, 6 Sep 2023 09:01:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 73D7E68C7F5 for ; Wed, 6 Sep 2023 09:01:32 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1693980092; x=1725516092; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DC/ItkVTfu4T7f+y7uSRmRgNfVTy1eOPugFZS3uAkho=; b=McNE5hSalNZ95urLNQyjCQGEct5XrzDiddkTe+BUer6ETLQVG98r06So qoXpFafSiedM+QllfqtlGZB3mAJbsKNeOagXaks/DOZFrcKgzxBDCtHWa OOjoA0bjDiGyQFhOMKLrsy3IeJsAw5gY9+l4D6P4OSl6P+rxZpXal7iBE rlxfluRvWKvBtAoAYJMWCu3gXWJq7xuFcrcbl7llEQqS6kBuq2vt9oNBB ql+6VuO8nmGx8u5MumdCMTjtBM9f4t/pMT5Jjx4hPw9hL1F/JXPX6GLUH 9grUPIuuz62GFwetp44ktj8nxnLF/QZwxW0pnT9Us/BOkvPyyJKb+tfKG g==; X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="374372457" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="374372457" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="734919075" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="734919075" Received: from xhh-dg264.sh.intel.com ([10.238.2.76]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:21 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Wed, 6 Sep 2023 14:00:50 +0800 Message-Id: <20230906060052.698620-11-haihao.xiang@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906060052.698620-1-haihao.xiang@intel.com> References: <20230906060052.698620-1-haihao.xiang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 11/13] lavu/hwcontext_vaapi: relax the requirement when using libva2 (VAAPI 1) 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: Haihao Xiang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: iJf/tkpiRHvR From: Haihao Xiang With libva2, the argument for render target list to vaCreateContext() is a hint, so we may use a dynamic frame pool. Signed-off-by: Haihao Xiang --- doc/APIchanges | 4 ++++ libavutil/hwcontext_vaapi.c | 2 +- libavutil/hwcontext_vaapi.h | 5 +++-- libavutil/version.h | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index 5fa9110c21..9e3184bc9a 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -2,6 +2,10 @@ The last version increases of all libraries were on 2023-02-09 API changes, most recent first: +2023-09-xx - xxxxxxxxxx - lavu 58.21.100 - hwcontext_vaapi.h + Modify the documentation to relax the constraint for dynamic + frames pool. + 2023-09-xx - xxxxxxxxxx - lavu 58.20.100 - hwcontext_qsv.h Add AVQSVFramesContext.info to support dynamic frame pools diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c index 558fed94c6..5ff24bb3ed 100644 --- a/libavutil/hwcontext_vaapi.c +++ b/libavutil/hwcontext_vaapi.c @@ -618,7 +618,7 @@ static int vaapi_frames_init(AVHWFramesContext *hwfc) } } else { // This pool allows dynamic sizing, and will not be usable as a - // render target. + // render target with libva. It can be used with libva2 avfc->nb_surfaces = 0; avfc->surface_ids = NULL; } diff --git a/libavutil/hwcontext_vaapi.h b/libavutil/hwcontext_vaapi.h index 0b2e071cb3..7badf38ec4 100644 --- a/libavutil/hwcontext_vaapi.h +++ b/libavutil/hwcontext_vaapi.h @@ -25,9 +25,10 @@ * @file * API-specific header for AV_HWDEVICE_TYPE_VAAPI. * - * Dynamic frame pools are supported, but note that any pool used as a render + * Dynamic frame pools are supported. Note that any pool used as a render * target is required to be of fixed size in order to be be usable as an - * argument to vaCreateContext(). + * argument to vaCreateContext() with libva. When libva2 (VAAPI 1) is used, + * a pool used as a render target can be dynamic. * * For user-allocated pools, AVHWFramesContext.pool must return AVBufferRefs * with the data pointer set to a VASurfaceID. diff --git a/libavutil/version.h b/libavutil/version.h index 605f85cd41..f1946b780f 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -79,7 +79,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 58 -#define LIBAVUTIL_VERSION_MINOR 20 +#define LIBAVUTIL_VERSION_MINOR 21 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ From patchwork Wed Sep 6 06:00:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 43586 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4f16:b0:149:dfde:5c0a with SMTP id gi22csp2311313pzb; Tue, 5 Sep 2023 23:02:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGpPVXcqJ0aw1QGPCMca/PtZcukfuIG/D0wVK5KZLb3gjgL/gngJX0nbpQZU1NCkebjBTpW X-Received: by 2002:a17:906:1d5:b0:9a1:649b:46f9 with SMTP id 21-20020a17090601d500b009a1649b46f9mr1230768ejj.74.1693980171392; Tue, 05 Sep 2023 23:02:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693980171; cv=none; d=google.com; s=arc-20160816; b=bsNy4e6qxnJlUt+ZEB7Zd/qLfYm2bh5NkZCj1FahsKFyGA7x1Euj2NSW7yHf4iONf3 ALQAwyzDF4bnJ5iO2U8/Kw2ZAfKbsFIFY+Y0BMpDEjMnqNvz2ln0eTKa+XSLQJ9JfpWU VBpy0ETjtZT5ULXPGh19eHLnxhCIMiM7v5Ul+ZF5ZawDWTw0f4H3dwJsUa8Coau75IZd GnETGBeGnedY8rICBslXcQlS+r4bjtogu6cogrskmFviv2OIXvtz4Sw5q7YLq58In4ZF Y/JpruDhjNQIPODGJcsyJvj6Emq/tofF75YJq5QRdwYHqFJTUgbDluP4FPXahIlGwnfU /xWQ== 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 :message-id:date:to:from:dkim-signature:delivered-to; bh=ZC3IYuyJGYGL8DDnqqiQo9scgOgAC135pHjHU2P82dg=; fh=1kpmTRI1sW42eNCnNMby7VLIISQBX6KJuVYxOEG0t2A=; b=YBaMGiGkFJfir/SmKxXC1uUXBTo5DklT3W+FJiuxq5ZzSxHYgT3TaGW0YVwXdfvwus zcCghvOSshVK6RqLW96yLjdZv+NCvSuqDVLgPE9tvHCb+H/WNjullPcvkjUHH6lBMAtS 29iREKaezDcyLVecirsw0sywcvMopRzVg7UppjmwZ9FUAF1QdhsD5xezT4mlBi9nOsk7 W6x0g6f3K0MqRaoewu5YEy8E8G+rN8xt2OQAq39TN16og4nh1tELANuo/OJnR9zAXhK/ zQjcQ3PETh+WB4ISu59O8DiH5V/XkpoZ3TOdS6QTzHV1DnN/hnnmApEknfte8KHh/QKr 1OqQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=JBu2XPew; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id d1-20020aa7d5c1000000b0052a4165d083si8275040eds.463.2023.09.05.23.02.50; Tue, 05 Sep 2023 23:02:51 -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=@intel.com header.s=Intel header.b=JBu2XPew; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7ECEC68C870; Wed, 6 Sep 2023 09:01:37 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 73AC068C7E6 for ; Wed, 6 Sep 2023 09:01:32 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1693980092; x=1725516092; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DGB9mNccMukIrSG378sNoXOK91rc700JfHTcIN/StUM=; b=JBu2XPewZkRzV4mHZn8XH/zlmd/UTe/Pp3nMvgdKGNIG9S0j0iUY9YLO cm4Ce0Hg2yTE6W6IOlsA1LBUw9GAmZTYEtxRqHAPQbv4xk5P1EL6u6dYO ibq2IRll5+3vJjRWYSouQzdcBtTlPtXYv/e+u52EM/qGWZcJPrL6HM4QA GUal1JWjlgK0idOsoQzGmzpR0Hn8hSJWhLnBjyeilQFbxF3fUAtCFZzb6 7Og86hlm7VpHMVben6C0wyP5wfolcYa3J1Y3o4s5GPZeXYDQICopL4jEu xFjFI8/GJjrcY3iOwzpm+wnbJsCQTVnNmhjXwNGNhDQMdGZMqPQzF1Lm0 g==; X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="374372462" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="374372462" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="734919089" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="734919089" Received: from xhh-dg264.sh.intel.com ([10.238.2.76]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:22 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Wed, 6 Sep 2023 14:00:51 +0800 Message-Id: <20230906060052.698620-12-haihao.xiang@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906060052.698620-1-haihao.xiang@intel.com> References: <20230906060052.698620-1-haihao.xiang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 12/13] lavc/vaapi_decode: use dynamic frame pool for output frames with libva2 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: Haihao Xiang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: y1soLn1jN2K/ From: Haihao Xiang This allows a downstream element stores more frames from VAAPI decoders and fixes error in get_buffer() $ ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -i input_100frames.mp4 \ -vf reverse -an -f null - ... [h264 @ 0x557a075a1400] get_buffer() failed [h264 @ 0x557a075a1400] thread_get_buffer() failed [h264 @ 0x557a075a1400] decode_slice_header error [h264 @ 0x557a075a1400] no frame! Signed-off-by: Haihao Xiang --- libavcodec/vaapi_decode.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/libavcodec/vaapi_decode.c b/libavcodec/vaapi_decode.c index dd55cbd6f1..c0a52c1d41 100644 --- a/libavcodec/vaapi_decode.c +++ b/libavcodec/vaapi_decode.c @@ -600,22 +600,26 @@ static int vaapi_decode_make_config(AVCodecContext *avctx, if (err < 0) goto fail; - frames->initial_pool_size = 1; - // Add per-codec number of surfaces used for storing reference frames. - switch (avctx->codec_id) { - case AV_CODEC_ID_H264: - case AV_CODEC_ID_HEVC: - case AV_CODEC_ID_AV1: - frames->initial_pool_size += 16; - break; - case AV_CODEC_ID_VP9: - frames->initial_pool_size += 8; - break; - case AV_CODEC_ID_VP8: - frames->initial_pool_size += 3; - break; - default: - frames->initial_pool_size += 2; + if (CONFIG_VAAPI_1) + frames->initial_pool_size = 0; + else { + frames->initial_pool_size = 1; + // Add per-codec number of surfaces used for storing reference frames. + switch (avctx->codec_id) { + case AV_CODEC_ID_H264: + case AV_CODEC_ID_HEVC: + case AV_CODEC_ID_AV1: + frames->initial_pool_size += 16; + break; + case AV_CODEC_ID_VP9: + frames->initial_pool_size += 8; + break; + case AV_CODEC_ID_VP8: + frames->initial_pool_size += 3; + break; + default: + frames->initial_pool_size += 2; + } } } From patchwork Wed Sep 6 06:00:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 43589 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4f16:b0:149:dfde:5c0a with SMTP id gi22csp2311544pzb; Tue, 5 Sep 2023 23:03:18 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEgpCcgNMaopJ72ZWF6ixydNAwBgWCqDnrGIWyb4LdydV7ptMUcgUJlW7uGtpOOaYtJSgot X-Received: by 2002:a17:906:5346:b0:99d:de25:89bb with SMTP id j6-20020a170906534600b0099dde2589bbmr1445706ejo.0.1693980198484; Tue, 05 Sep 2023 23:03:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693980198; cv=none; d=google.com; s=arc-20160816; b=Kd2SBxw81gJgbpgg/C2AktAnuyPSZSOQLey8Y5BXrjvV3rvt6f7hFuj3MMME7R5wIk P2d1s02VaJguG6hIFalzFB5wZm9hlD6TP8ZlaC3yaBz5ZlQF+RcAsTuDfY2fZx71Zyqh VIJPvTSaZZfw1XQhpNh2BRll+hWzHJJAjckkZfYBhp8xcTPJ5AGiAnYDECaNYW1YoQTS bpxTdoD08gnBPtqHHcP1EUa5H0qhKuqec257eFstZJwaTZykXqwf9KCq7jz7D5T53Iph xgaMiw8gNQgXErkMv8PrBg0OQYSF1llmO2hhLQVDU5ZYbCRKdOLi65Zbk8IEe8XJ1Xeg 2lWw== 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 :message-id:date:to:from:dkim-signature:delivered-to; bh=u7OhlVfAM67qJWHiWSRgTgHbEwH2VB7Ppy0xSCgfsgM=; fh=1kpmTRI1sW42eNCnNMby7VLIISQBX6KJuVYxOEG0t2A=; b=zU0LSfbj0bYeEedwNU9oSpLqGGlbaYBthSOJcaZT6GSe9PZmY18PovxsQFIRIxPWqY 8LNelP3b/1S7LjbdYp5SB739ZNsGWW+74Ig+Nh+rgS6zDD6RNk2qViNtB1nXDn4ChKcz jPR2BOM1AqQyNEQ55AHG7M83pWpth7DBDJMFChz9Tbcq2Gfqwokc9dzgZrZmkHiR5ASA mTGGq4EmLZlS5jDOE7sXwv4f4Pw74miDGlDK/rOejol4czSmnn900YmzGS+7Eyt3Dm16 UTdx2+gMClCIO46XoPoQbDtqJOEpiLnu8H+xkKsP4JRLyXkkdCGx+o6CVP6ZEx3rCJhc z7YA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b="Bv3O2/8b"; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id g24-20020a170906395800b0099bc0530efesi8854173eje.453.2023.09.05.23.03.18; Tue, 05 Sep 2023 23:03:18 -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=@intel.com header.s=Intel header.b="Bv3O2/8b"; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5359B68C888; Wed, 6 Sep 2023 09:01:40 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9587F68C80A for ; Wed, 6 Sep 2023 09:01:33 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1693980093; x=1725516093; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=UY7SPJZIHV3V4D4ZxplWAwEK9rHHV89VzDb9vqqvEog=; b=Bv3O2/8bG+mEFlS3xBUgJpiNZ/+JnXxIXNMsqDTGAEfqe+8FviR0KvLh 4n72tspUlkDjeD1kLnL/E28tixMra3xiFyvrwjf5VBoDZ2ssKxAktcH5t 81BoXokyII8Xydzw/q/AQ//zzdD2QW2AmIlEhKtZKCQvn9tYPmDUhhn7o lv/Kp/0TjM+u3hF9pYlSm5WRCq7A00YdAu2M5DeNx8xQTB8XEUvQAA21Z EWIJvewqXKfoK6ShF2VvpJbBdMuTbYlH8xpxI0SoEvoj+nx1IX2J2hke0 n1AQCcuN+YRHu+7fVg/y6vi4XuxEsBF8Ibf83AYmPkMgmWH+09OhgNpAw w==; X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="374372473" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="374372473" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10824"; a="734919106" X-IronPort-AV: E=Sophos;i="6.02,231,1688454000"; d="scan'208";a="734919106" Received: from xhh-dg264.sh.intel.com ([10.238.2.76]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Sep 2023 23:01:24 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Wed, 6 Sep 2023 14:00:52 +0800 Message-Id: <20230906060052.698620-13-haihao.xiang@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906060052.698620-1-haihao.xiang@intel.com> References: <20230906060052.698620-1-haihao.xiang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 13/13] lavfi/vaapi_vpp: use dynamic frame pool for output link with libva2 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: Haihao Xiang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: N62+4wyO0K4t From: Haihao Xiang This can avoid out of memory with vaapi filters since commit 5fa00b3. Example: $ ffmpeg -init_hw_device vaapi=hw:/dev/dri/renderD128 -hwaccel_output_format vaapi -hwaccel vaapi -i input.mp4 -vf 'scale_vaapi=w=720:h=480' -vframes 1 -f null - ... [vf#0:0 @ 0x55ffe793ba80] Error while filtering: Cannot allocate memory Signed-off-by: Haihao Xiang --- libavfilter/vaapi_vpp.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavfilter/vaapi_vpp.c b/libavfilter/vaapi_vpp.c index cf2592e068..818bc7d58a 100644 --- a/libavfilter/vaapi_vpp.c +++ b/libavfilter/vaapi_vpp.c @@ -199,7 +199,10 @@ int ff_vaapi_vpp_config_output(AVFilterLink *outlink) output_frames->width = ctx->output_width; output_frames->height = ctx->output_height; - output_frames->initial_pool_size = 4; + if (CONFIG_VAAPI_1) + output_frames->initial_pool_size = 0; + else + output_frames->initial_pool_size = 4; err = ff_filter_init_hw_frames(avctx, outlink, 10); if (err < 0)