From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id D8C1D44960 for ; Mon, 31 Oct 2022 05:44:19 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 05EAE68BD8D; Mon, 31 Oct 2022 07:44:15 +0200 (EET) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AB38C68BD55 for ; Mon, 31 Oct 2022 07:44:07 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1667195052; x=1698731052; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=pU/YSXOe4FTwmQMrG3GmRJiDCH04/tXrJCQiCQJ8wzM=; b=JFOTt4sFvoU2aUQK2eP8ebR8HKnI5Cww16+5rrUkBcoetBMvmJeF6p1a s8cBMKqIc0+bibjf2aBqQriDKieq0e2s6F462DTxHwMb01Gpdq8WtOhIC +jUXBTgoM8mYY7pyzzZ/YmUPVT+MDdLx4pL1LNRgMf0NDsopphdlwyYVG AsY8L7ZqdHYfifZ7zP1RhwKsbf6wgqiK0MKdFt9PJe0qZN1xsSJycn69Z NSG1ZRqkdBlHaNmzx0WwWJCRcQ/DGEo+u+SwKc9KPa6+gqpH/CgFb+IHE jFNO11CMDoATUIyrjxwQ3ybn6A4p0DoETewBuGjx5lAivHBynw315fpFY g==; X-IronPort-AV: E=McAfee;i="6500,9779,10516"; a="289212152" X-IronPort-AV: E=Sophos;i="5.95,227,1661842800"; d="scan'208";a="289212152" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Oct 2022 22:43:56 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10516"; a="696883705" X-IronPort-AV: E=Sophos;i="5.95,227,1661842800"; d="scan'208";a="696883705" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga008.fm.intel.com with ESMTP; 30 Oct 2022 22:43:56 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Sun, 30 Oct 2022 22:43:56 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Sun, 30 Oct 2022 22:43:56 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.169) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Sun, 30 Oct 2022 22:43:56 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WArZiFTdxGFe8r0nhQd2b9j+LUKHWvamFMWJ3U1Ek9pZqHDTluUa5MskdREfNX3EOv7IHo6Ww2+7iS+96H0ax7rQbHvtxvYJ0HY39bU4nbH7Y4g7Y0Y69SnDpXD7Cr+guic5K3jXNhNtn7b/TY/mb9eEoa39dWmC3U8V4ujw+efQEAD1pjvtc2gPHY2B8ulS5KRgkRjCyrt31FNPRXiZ8mAmUhymPILVCWSFNKnRCuDGxHnsmCUSuZev7SlqgVnBKIFmkYRMaTjI9yRqnxtCH52xU+XFb0GB96y9euvkO3MEzTskJZT6jYamMmmRxTZLuntomryNk3VxjToAzLFUWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=pU/YSXOe4FTwmQMrG3GmRJiDCH04/tXrJCQiCQJ8wzM=; b=j1s1lKspX2ApmZSEsZ66UsCeu/PhEK9+ueEyqOc6EunECSVSCWPRfHAYbPVzmKfA4DH+qscn5SMbHH/+GatD53ob+HUIGmNgBdpuIIXIcaNFZxdjLJB7TdVN12N9lcR6fh9WCtF8balnSBEW/E2btSSlhqS4hValA2MepXRuH3MFPlhb/iJT8CRWih+8nRAyARIfgPyLKyeogWvEhlvv5bVPhAGLtr4Sxzq1fSSAzU5IVtQe0FyyXOP5btlyAPNkgU6MWpdxtDEZBLnEsSdMv05KvHdslkgUot8oIFZKz9PgblzjYQRrcZi4VLYt0Of1H9SjMzFz/Lkl0rh3C/lpMA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BN9PR11MB5515.namprd11.prod.outlook.com (2603:10b6:408:104::8) by MW4PR11MB7104.namprd11.prod.outlook.com (2603:10b6:303:22b::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.16; Mon, 31 Oct 2022 05:43:53 +0000 Received: from BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::8c4d:83ab:3e7a:3f23]) by BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::8c4d:83ab:3e7a:3f23%5]) with mapi id 15.20.5769.019; Mon, 31 Oct 2022 05:43:52 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH 09/11] avfilter/overlay_vaapi: enable expressions for overlay parameters Thread-Index: AQHY3JbzZ+MMdyaK2UCAQBka/Yb1Sq4oHlUA Date: Mon, 31 Oct 2022 05:43:52 +0000 Message-ID: References: <36ed7b96ebff22187d279617ed706d8a13ff8a28.1665399281.git.ffmpegagent@gmail.com> In-Reply-To: <36ed7b96ebff22187d279617ed706d8a13ff8a28.1665399281.git.ffmpegagent@gmail.com> Accept-Language: en-AS, zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.36.5-0ubuntu1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BN9PR11MB5515:EE_|MW4PR11MB7104:EE_ x-ms-office365-filtering-correlation-id: a30a1419-c45a-45b3-3e2b-08dabb02e49e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: eIHm8QHKXGTeTbw8HKjjUFYFuCqbyIiRnKXYNBbtQZnasTaOXyGgwEvBDWGz8qIiDdX5G2ebb41RGOl3FPZJdwwIaUKsYm0TzawFDniztUWsz0W0yFbkBHm4k/BeP0aEOamJbucd417vxKNSh4oOyyCdqeMJyilueNgvRddYHtu1QB4B7qXuqQhNYFlsRUe7l8ZJT+rgTL81oFxxw18UiDTIEAEKyPBNlxVYRtLpOH7nvKCagAxjaTM94a9i+V4SZQw7n65ZXAfevKXs5sFGzQJ+3QGV23U7wqPMCAZMOUIGCdFXfX0grgbrtEvcwZttGzctaCmQc5xqQnmvp349ZDD4iVv1ByDh55rzssPqBNkmaeOfDJ5jU7yg4eTj7bsE2IY7AIjC4SpI/oLbgqosCbhOWSMkcSCG4PNYRYZO9CPy9REk6Fmv0gyuextIeUSlsPhJWMR3RQyu2fz5Tlw0GArR1yyrC/n1HyJZ9Sy0SEuR57HKDiSxM5JnbwuP4Nh7akmsaleEo38hEUpgLm02ftJxsbE+vFuVbR+trdNms6Mt5VyV9kjVmcRwnCzEQetU4ONlx1wxAXyzD9dEbKfwXhjLPK9WkXnL3yw3lw3dGPMScZDj6dxrYAnpjmmZcyGmBuu4UgocgHxK+4jySWO732e9IHjfqC8CKuaIprvLzseQRUa7ubcGu/Fg6xI89ZtMDvjeXHPtGoZ/Ut5Swo0HoVAkL4aVep8TT6yMr+yjth/+Q45WBrDl87VPtg9+pN2N x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR11MB5515.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(346002)(396003)(366004)(39860400002)(136003)(376002)(451199015)(478600001)(122000001)(82960400001)(4001150100001)(71200400001)(83380400001)(2906002)(38100700002)(91956017)(76116006)(64756008)(66446008)(66476007)(66556008)(4326008)(66946007)(8676002)(38070700005)(2616005)(86362001)(6506007)(6486002)(186003)(41300700001)(6916009)(36756003)(316002)(6512007)(5660300002)(26005)(8936002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?M1VBVjIvelJnVk9IMisrQjZ3VmRwREZaOTV5VGhnVFVSOWd0YUE3UmRycUI0?= =?utf-8?B?ODJjcDltY0RBOWhITnd0UGFUZEdPZk0zbUdaeG1jOUc4dlN3R3BUMUxaSUpi?= =?utf-8?B?T3VuNDFmckppeE56MUlXZDduaE5ZR1h2ZHRaVi9kMVFWNGhFTEc4TXpzYzBa?= =?utf-8?B?VHVMSlFhUzZnRkxrZ3pDRDBsMGc2L0plRm9kWE1CNXRKMmJwcFRnOFY5YWQ5?= =?utf-8?B?OVk5dnU0Y3JXVWxGNXpvOUxnNFAzeGZvckFuU2ZLRzVOWjZucXdpYlFTWllT?= =?utf-8?B?RlkrcGRldzNKalQ1YllnRkRjeW92QmpKV0NqcHRkdmYrYUdaV1E2VExBY0hI?= =?utf-8?B?c0laOEZ3LzdWWWtJN0tYTUgzeFgwVTA1TGx1V0pZNFk0ME1tTDk5L2kxZ2to?= =?utf-8?B?U3UxRmRpK3lQL0lMSlBVSXgrVFNvOXJ4dGJ0TlBBMnQrTExBeERjcm5iSEJj?= =?utf-8?B?cm1zUUtnVUNvdXZHZVc2N29jUVZJOW1WRWJQMFRHT1hRS044SWV2eCtaZGp5?= =?utf-8?B?UmZoRno3djZYZGZwNWRYKzA4YStndUtQcUw0WjJLOWRCa2dYT2I3ZWtGeUsx?= =?utf-8?B?VVNtelFhR0pIQjJYNlR1TzVNVnFhbk5lcGJnTUZycVJSMkE5RU40N2oyOWpZ?= =?utf-8?B?WnNyYXZJelhvUFVZQkFhNjk3V2YrSkhwUEdCUGtrMEtXSHRjV2dwZ0JlTm9G?= =?utf-8?B?b01xRFRnNXY2cVdrWnhac3dPNTdjTEIyeEd3SE92eGd2U0pzRERxek9uUm1w?= =?utf-8?B?eGZ4WDlZS3FleHIxbCtlR1pCWU40aDRsSWF1dU1KSnFuL3VPcUJWVzM2Z25K?= =?utf-8?B?SGZYT2FwT2VieXVTTTBvcW16Y29XUVRkSnZnNTNjaVJpRW53ME8wTnZUQlVJ?= =?utf-8?B?YXI1Z041RmFZSktUaW9abnBaa3NaeiszZ09oWjZudHJUbmxreitqLzA2bWZ0?= =?utf-8?B?MkdPNmltMVlUNXd2UDA5S2ovQitCNWV0VWE4blFaakdoUDlxS0FEWkFmUjFs?= =?utf-8?B?VC9zeldqTmJRbW1rTEVPNkZUa2VCRlVobjJ6d25BOW9QREN2bnM0UDVxTVZs?= =?utf-8?B?Q0ttWC9Gc0FnT1ZVbU9GYWkzVnlWcklLSkY4YnFKYXpoamhuMnVQQ21UUjU4?= =?utf-8?B?UThmOEFWeXNYcnZ6YTdnN0dSSFpGNXAwR01Ob3NWVzlmZVp1VEZTSzM4RXZE?= =?utf-8?B?VWRFamQ3M016K1c4Q2lZMHBOZ2pYZ2hQN24vM0VnWnQ2NllSLzVzUmhFZXlO?= =?utf-8?B?R2FjNjRNRldIenNWODhZcUpOV1oxMnl6akp1UXQ5RTFVYXRxUVl2amUrbHY4?= =?utf-8?B?Z1VsT3MxMzl6Z0prOGpjVk9jNWRQZmE4VVh1ZnMrY3RONW9Qd0lOejRyZE13?= =?utf-8?B?SWQ5RDJ1SUQ2amo0Q1hGbUh2bzhlazBpeU5wS21LT3ZNTE9qbXI5Nm5qdk05?= =?utf-8?B?UERIMmtwaGlOMWdkcXV3T1ZjVkxXbjBwQm1uekxlV2QwaHhHSnFXczZ1M0dl?= =?utf-8?B?WTVSb3haUm5jWXdxUzZVQ2pTRmtZdk1RajJzNXhOejcyd2MyV3JyUEdVcVBt?= =?utf-8?B?WEkxWE90V3ZubHI0NEtCcXowaldSZlJPaTkvNGRoeHMwTG5wSC9sN1lydExw?= =?utf-8?B?OFF4UWMwTFpkeTZSMnM0M1IzZHpVcnNzakMxT01pY2NZRWZEMnBvTTJOTUt4?= =?utf-8?B?YURrVHpsS2x4Y2laV0E1OEN4TFRSVFdoeWdzajc3K2ZPR3U1NEl6RGZxRWk1?= =?utf-8?B?Q0tuZE1PVDFQN1VudWxzY082U0VwWittTzB4UldreStTWDN0aDM0RUo3a0pB?= =?utf-8?B?S3NyL0VMRCtNMUg1T09ybmVaSllmU08wQ2szanlrUGpRcFE0UEx3Mi9UZyts?= =?utf-8?B?WWk1K1lCN1hESVRtbWVNYk82RllZV3Z4OUoxdlZIeWgxcFlueHYvWGZ2WDQ2?= =?utf-8?B?UmJJaWhhZ2s1d2FlWXlkRjFwWDIvbzQrRDNOckE4Q3FhMjFZanRzOHBCZkpW?= =?utf-8?B?aEVOeWhOdys3Mno0MFAxTHZnTW9ZV1dTakowMFJaME84QzROeUh5T1lHZ25k?= =?utf-8?B?L2hoWVBBOHZlMk9iT3VjK0pLK0F6dDVLVzhiUzNFc0ViYXdUSlp4bzcxMStX?= =?utf-8?B?VG1OUXgxc0xQR2pySXRyOURvR0tWd1BTN1JGdXE0Qm4rbHlrSHpmYmtXU00x?= =?utf-8?B?Z2c9PQ==?= Content-ID: MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5515.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a30a1419-c45a-45b3-3e2b-08dabb02e49e X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Oct 2022 05:43:52.5781 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: IvwT4DFp+ZI+LDBYh4wf1J0j6HtV5oX2gVqupu1dkqXsD4i3XSARtr18xEZGLscDQAUUUM7Gotc5xh4dSdUXyw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR11MB7104 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH 09/11] avfilter/overlay_vaapi: enable expressions for overlay parameters 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: "softworkz@hotmail.com" Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: On Mon, 2022-10-10 at 10:54 +0000, softworkz wrote: > From: softworkz > > Signed-off-by: softworkz > --- > libavfilter/vf_overlay_vaapi.c | 141 +++++++++++++++++++++++++++++---- > 1 file changed, 127 insertions(+), 14 deletions(-) > > diff --git a/libavfilter/vf_overlay_vaapi.c b/libavfilter/vf_overlay_vaapi.c > index b2c254d9dd..7be7d52589 100644 > --- a/libavfilter/vf_overlay_vaapi.c > +++ b/libavfilter/vf_overlay_vaapi.c > @@ -27,19 +27,106 @@ > #include "formats.h" > #include "internal.h" > #include "vaapi_vpp.h" > +#include "libavutil/eval.h" > + > +enum var_name { > + VAR_MAIN_iW, VAR_MW, > + VAR_MAIN_iH, VAR_MH, > + VAR_OVERLAY_iW, > + VAR_OVERLAY_iH, It is better not to mix capital and lower-case letters here, (I have a patch to change the var_name in qsv) Thanks Haihao > + VAR_OVERLAY_X, VAR_OX, > + VAR_OVERLAY_Y, VAR_OY, > + VAR_OVERLAY_W, VAR_OW, > + VAR_OVERLAY_H, VAR_OH, > + VAR_VARS_NB > +}; > > typedef struct OverlayVAAPIContext { > VAAPIVPPContext vpp_ctx; /**< must be the first field */ > FFFrameSync fs; > - int overlay_ox; > - int overlay_oy; > - int overlay_ow; > - int overlay_oh; > + > + double var_values[VAR_VARS_NB]; > + char *overlay_ox; > + char *overlay_oy; > + char *overlay_ow; > + char *overlay_oh; > + int ox; > + int oy; > + int ow; > + int oh; > float alpha; > unsigned int blend_flags; > float blend_alpha; > } OverlayVAAPIContext; > > +static const char *const var_names[] = { > + "main_w", "W", /* input width of the main layer */ > + "main_h", "H", /* input height of the main layer */ > + "overlay_iw", /* input width of the overlay layer */ > + "overlay_ih", /* input height of the overlay layer */ > + "overlay_x", "x", /* x position of the overlay layer inside of main */ > + "overlay_y", "y", /* y position of the overlay layer inside of main */ > + "overlay_w", "w", /* output width of overlay layer */ > + "overlay_h", "h", /* output height of overlay layer */ > + NULL > +}; > + > +static int eval_expr(AVFilterContext *avctx) > +{ > + OverlayVAAPIContext *ctx = avctx->priv; > + double *var_values = ctx->var_values; > + int ret = 0; > + AVExpr *ox_expr = NULL, *oy_expr = NULL; > + AVExpr *ow_expr = NULL, *oh_expr = NULL; > + > +#define PARSE_EXPR(e, s) {\ > + ret = av_expr_parse(&(e), s, var_names, NULL, NULL, NULL, NULL, 0, ctx); > \ > + if (ret < 0) {\ > + av_log(ctx, AV_LOG_ERROR, "Error when parsing '%s'.\n", s);\ > + goto release;\ > + }\ > +} > + PARSE_EXPR(ox_expr, ctx->overlay_ox) > + PARSE_EXPR(oy_expr, ctx->overlay_oy) > + PARSE_EXPR(ow_expr, ctx->overlay_ow) > + PARSE_EXPR(oh_expr, ctx->overlay_oh) > +#undef PASS_EXPR > + > + var_values[VAR_OVERLAY_W] = > + var_values[VAR_OW] = av_expr_eval(ow_expr, var_values, NULL); > + var_values[VAR_OVERLAY_H] = > + var_values[VAR_OH] = av_expr_eval(oh_expr, var_values, NULL); > + > + /* calc again in case ow is relative to oh */ > + var_values[VAR_OVERLAY_W] = > + var_values[VAR_OW] = av_expr_eval(ow_expr, var_values, NULL); > + > + var_values[VAR_OVERLAY_X] = > + var_values[VAR_OX] = av_expr_eval(ox_expr, var_values, NULL); > + var_values[VAR_OVERLAY_Y] = > + var_values[VAR_OY] = av_expr_eval(oy_expr, var_values, NULL); > + > + /* calc again in case ox is relative to oy */ > + var_values[VAR_OVERLAY_X] = > + var_values[VAR_OX] = av_expr_eval(ox_expr, var_values, NULL); > + > + /* calc overlay_w and overlay_h again incase relative to ox,oy */ > + var_values[VAR_OVERLAY_W] = > + var_values[VAR_OW] = av_expr_eval(ow_expr, var_values, NULL); > + var_values[VAR_OVERLAY_H] = > + var_values[VAR_OH] = av_expr_eval(oh_expr, var_values, NULL); > + var_values[VAR_OVERLAY_W] = > + var_values[VAR_OW] = av_expr_eval(ow_expr, var_values, NULL); > + > +release: > + av_expr_free(ox_expr); > + av_expr_free(oy_expr); > + av_expr_free(ow_expr); > + av_expr_free(oh_expr); > + > + return ret; > +} > + > static int overlay_vaapi_build_filter_params(AVFilterContext *avctx) > { > VAAPIVPPContext *vpp_ctx = avctx->priv; > @@ -233,10 +320,10 @@ static int overlay_vaapi_blend(FFFrameSync *fs) > input_overlay->width, input_overlay->height, input_overlay- > >pts); > > overlay_region = (VARectangle) { > - .x = ctx->overlay_ox, > - .y = ctx->overlay_oy, > - .width = ctx->overlay_ow ? ctx->overlay_ow : input_overlay- > >width, > - .height = ctx->overlay_oh ? ctx->overlay_oh : input_overlay- > >height, > + .x = ctx->ox, > + .y = ctx->oy, > + .width = ctx->ow ? ctx->ow : input_overlay->width, > + .height = ctx->oh ? ctx->oh : input_overlay->height, > }; > > if (overlay_region.x + overlay_region.width > input_main->width || > @@ -289,10 +376,36 @@ static int have_alpha_planar(AVFilterLink *link) > return !!(desc->flags & AV_PIX_FMT_FLAG_ALPHA); > } > > +static int overlay_vaapi_config_input_main(AVFilterLink *inlink) > +{ > + AVFilterContext *avctx = inlink->dst; > + OverlayVAAPIContext *ctx = avctx->priv; > + > + ctx->var_values[VAR_MAIN_iW] = > + ctx->var_values[VAR_MW] = inlink->w; > + ctx->var_values[VAR_MAIN_iH] = > + ctx->var_values[VAR_MH] = inlink->h; > + > + return ff_vaapi_vpp_config_input(inlink); > +} > + > static int overlay_vaapi_config_input_overlay(AVFilterLink *inlink) > { > AVFilterContext *avctx = inlink->dst; > OverlayVAAPIContext *ctx = avctx->priv; > + int ret; > + > + ctx->var_values[VAR_OVERLAY_iW] = inlink->w; > + ctx->var_values[VAR_OVERLAY_iH] = inlink->h; > + > + ret = eval_expr(avctx); > + if (ret < 0) > + return ret; > + > + ctx->ox = (int)ctx->var_values[VAR_OX]; > + ctx->oy = (int)ctx->var_values[VAR_OY]; > + ctx->ow = (int)ctx->var_values[VAR_OW]; > + ctx->oh = (int)ctx->var_values[VAR_OH]; > > ctx->blend_flags = 0; > ctx->blend_alpha = 1.0f; > @@ -365,11 +478,11 @@ static av_cold void overlay_vaapi_uninit(AVFilterContext > *avctx) > #define OFFSET(x) offsetof(OverlayVAAPIContext, x) > #define FLAGS (AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_VIDEO_PARAM) > static const AVOption overlay_vaapi_options[] = { > - { "x", "Overlay x position", OFFSET(overlay_ox), > AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, .flags = FLAGS }, > - { "y", "Overlay y position", OFFSET(overlay_oy), > AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, .flags = FLAGS }, > - { "w", "Overlay width", OFFSET(overlay_ow), > AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, .flags = FLAGS }, > - { "h", "Overlay height", OFFSET(overlay_oh), > AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, .flags = FLAGS }, > - { "alpha", "Overlay global alpha", OFFSET(alpha), AV_OPT_TYPE_FLOAT, > { .dbl = 1.0 }, 0.0, 1.0, .flags = FLAGS }, > + { "x", "Overlay x position", OFFSET(overlay_ox), AV_OPT_TYPE_STRING, { > .str="0"}, 0, 255, .flags = FLAGS}, > + { "y", "Overlay y position", OFFSET(overlay_oy), AV_OPT_TYPE_STRING, { > .str="0"}, 0, 255, .flags = FLAGS}, > + { "w", "Overlay width", OFFSET(overlay_ow), AV_OPT_TYPE_STRING, { > .str="overlay_iw"}, 0, 255, .flags = FLAGS}, > + { "h", "Overlay height", OFFSET(overlay_oh), AV_OPT_TYPE_STRING, { > .str="overlay_ih*w/overlay_iw"}, 0, 255, .flags = FLAGS}, > + { "alpha", "Overlay global alpha", OFFSET(alpha), AV_OPT_TYPE_FLOAT, { > .dbl = 1.0 }, 0.0, 1.0, .flags = FLAGS }, > { "eof_action", "Action to take when encountering EOF from secondary > input ", > OFFSET(fs.opt_eof_action), AV_OPT_TYPE_INT, { .i64 = > EOF_ACTION_REPEAT }, > EOF_ACTION_REPEAT, EOF_ACTION_PASS, .flags = FLAGS, "eof_action" }, > @@ -387,7 +500,7 @@ static const AVFilterPad overlay_vaapi_inputs[] = { > { > .name = "main", > .type = AVMEDIA_TYPE_VIDEO, > - .config_props = &ff_vaapi_vpp_config_input, > + .config_props = overlay_vaapi_config_input_main, > }, > { > .name = "overlay", _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".