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 BF2D744F66 for ; Thu, 12 Jan 2023 04:01:12 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5CFB168BD62; Thu, 12 Jan 2023 06:01:10 +0200 (EET) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01olkn2033.outbound.protection.outlook.com [40.92.65.33]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 02F9A68BD08 for ; Thu, 12 Jan 2023 06:01:03 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MyBA5ZgTLkiSy4hgD4wVH8r5JMOBE7Ag7vCMp2BYgfPlIkuf94cwPFFeq5K9v3Mebzchcu2s3lmOSh6CPdH0GEPxlWwr85ffIPG7zaQkb14FNcuuoqkpbAGQQBBCjUC00VKR80uMJqr8DTxgU7FPbSkoZ4Hh+lOewTNrJgJheSmKKIlWETPFDVbK0YrFK91Ghpkk0j7CGzXKSIxNcZ7Bw7MPhVSY3d3zWgARcNstjZF2M1BO3LGnOUcOkBkyRoekYW9OTWmSPylEBWvsBW79NSFPi5w2LpaqcnPJWYUubIvYKrgkCMCs8zUWRtHxYtDK0Rk4O6kvmwTTQ+/h8SNXPQ== 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=/T1pel3KwGEMpuWkEST2BVEtguUuLcgYJaVriztVcyg=; b=atEq3kL5nCwe0R7wTYn5EX4QcGu4HN9GJu2ARoWio1HtPvEnAc6XpjVJpVmNjKM+yFkmzsk8VnaQ49GH/IXKbO7cUf8B3AVKmculrDfKg4nZtS/5UoDpv9DBKy8du5euLa7mcYfXEQldsNP4Bnd/quIBE/TJY0Gf/GFQZWt0P03DdiN6076qqMf0I3b7YlxzXz5OsDHdc6KHfOnfm8Fl4LVb33IxIV/4iIwhq7BrUvtYMnqje+ZHHt8FMKDMCXJi1IM2qjc2t3n/DDvWoSlCRMrbvT8E1ukPvgzqABr04wf647Begdp9krVhtm+RVfAVMkfTHlnX1G5XpAYnmWRNeg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/T1pel3KwGEMpuWkEST2BVEtguUuLcgYJaVriztVcyg=; b=cSQs3iq/CHaR/a43lnd/+EaScwxv/f8gWZjKduDbJk0sRFKPahckKQ0tJI0aUAMxixrcqGZ6Ew1fpVEWUl9JMvcns5y8rv0V1H2xLM6hVcj+4C92xsUexBEou3aA8evLKa7PplGTPe+yeunqlPdBPFfcJFl5z/4NHKXTaDwlnM9xycBRu92y12KiSWMi5cXKfsVMgZQTENfdnji3wGZASamUsSh/7MqVscedf724YAX3zmK5Jybqj8YxkNqwdkUDmdcQgyMno56yNo9aN/a+08qN3qTQ6iE2NpnAKWJIBiusYQkUdmQYyJmRfBlDqIBFZKHvMNEN00l2xMQ3tXSnEg== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AS4P250MB0920.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:58c::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.12; Thu, 12 Jan 2023 04:01:02 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::c37:cabe:316a:60b2]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::c37:cabe:316a:60b2%4]) with mapi id 15.20.6002.012; Thu, 12 Jan 2023 04:01:02 +0000 Message-ID: Date: Thu, 12 Jan 2023 05:01:31 +0100 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20230109071210.1829699-1-haihao.xiang@intel.com> <20230109071210.1829699-2-haihao.xiang@intel.com> From: Andreas Rheinhardt In-Reply-To: <20230109071210.1829699-2-haihao.xiang@intel.com> X-TMN: [SrPoMbRumFj8U25AsYKUGLB1pjtre3sH] X-ClientProxiedBy: FR2P281CA0145.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:98::17) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AS4P250MB0920:EE_ X-MS-Office365-Filtering-Correlation-Id: 86320f18-d63d-4441-54c4-08daf4519ed4 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NCJK7UPiYJHuLWZv3e0U92djBuExKkLdZw1xlg4IixGx0r0h50BsgGV5IRdxrb63oT6Z/Xpw+SAHlSSqGUTrbOuQ/57lxbyoK5wqs9yhIhHSfmVMTTbtvvZjsxuxOzqgQNdfS4ndLQ5w2/XhUrn7AmUEcrlF/K+QKOF6TkxZRSVznec5gBADIiqcVWYYdosaDXlE00WYVnuEZ9+r32yVMETgB/rgvImoPrs9UvJ++k253KXTnPEllXm06hQ9XdDhfzPi52eNXOC4yuya7WHvqnbDCSqakxVZKln7a74I5yY1y8pzwH1hp0c/zNfe9bfq3GirdcR1oWF+L/jgBxwg0UqYH7+sxkcnoIw5YfIhNmXwbO4jLSo9n2NB6FvzGI10eNIvgdN2XRfdpyCT5Tcx15TrwwvO/8l+HqK1qCGqKDJ1seu/zVsTamNeWrNsHHP6ylb8saQm/++aVfMp5rLJ3k+tYpzOhmN5ZkrfZInYRdHmdaD64ERsprHIYw7LewOXbpwIC8eIbNzUxDe2SUzZGmV1yUHWLs/FMqNt5napwCdgI/rK+tAfuopRipvKJqSBL3Kn8Yl6WipXquY0urOLh+jB8KpF1b9hUzFY90QxNKouSR4cO6ChXx5MxulfgUYmVLhLRVqiIUQcTeFEkKaPoprTuR/6CS7fHXztdyIxVW4= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MldDZHIrekZIbFRRSFkrUDhydE9PK0JEYkpJai83OU9ld3hXNDdhcExFY29W?= =?utf-8?B?MUNRWGowdjdQMnB3YWhDbW9rOWVsYnNCTkUzRWx4TjFnRk56d2tIc282TGxj?= =?utf-8?B?WFhYR2gxVnQzT0tNaXRGL1kreWdpdzBuWDBqYnJIQW80VFdNdTZlSHJkeThB?= =?utf-8?B?MnVDN3NWdTNaazR5cHB3dWpWM2VjOG1lbkhKU3M3SDFDdEFDUXYxVGVpYjJR?= =?utf-8?B?eDZwS0xKVU94cTkxTXYrQUJ2NDBCdXZDdmFvWVpjaVJqNmVvK2sxMk9QY0VZ?= =?utf-8?B?em1pakFVT3dhMlJPUWFuVEtzZHR4N2k5VGRSdE83MkdibXI2SXlCM3pETElm?= =?utf-8?B?emUyVlVaV3FERDdFeFpVdGNiblp5eHJLdGNWYjJJQUN1cCtyV3J3d21Qclp0?= =?utf-8?B?VkRPYXdERERLeHRYQTRuN2plWEtRTk5NQVA4M1hmUS9qNjUrcEQ0QUkrT2l4?= =?utf-8?B?eDVINW00UlZ0Q3VySkdRM1VvZ0dheG4zRThJeGVOdkt6QlZselUwT1B0ek9N?= =?utf-8?B?cUMwNXkra2NXTHpzRGZUTEpXV3poVUlJeWJWenJ5SzRDUmNVZzVrN09iMm10?= =?utf-8?B?STBtdWk5VTUwZDVxbjJNSjRETHlBS1I5QklDU3JRekdrVStCYTV6T1FDVXdW?= =?utf-8?B?TU0zS2lVWjlvU3QxTXNnM08vREwyTDRMenFKTVRDMlZoQ2FNU1hDYkliaFEx?= =?utf-8?B?V1JjTGNvQnhVbW1waE03Y0dHaXJZckFidzBod3A3Yyt2d2FBblVaelRTVXJ2?= =?utf-8?B?UHBid0E1OHQ0Zlo5V0Q2b2U3ZXh1Y0pzWW0wMExYRkp3MVYyTjdqL3I2N2la?= =?utf-8?B?T292ZDdpbFZXZzBGNDdCMWhPN2pscjJoVGZWT2N4Kys3UDRJeUxBaTNZdlU5?= =?utf-8?B?bUZrZ2l6YVM4RVFoT1BJSWlZc1NlZlo5emc5Sy91clFTVjkra0UvNHJPbDFW?= =?utf-8?B?TzhNUTYyYjM4UnhEdmJWeGtiZEVoNnlhS1R1QmN6b0hzWkVXbUM2a2pya2E4?= =?utf-8?B?UVllMWtJZmRab05pQnNLZVErR1dLMXduMlVGWW5OK0xwclZNNFhJbkY2NzRy?= =?utf-8?B?QkZSeThjbnQ3WGIvNFVDMHZ6QWhKajFtWTRQVlJaVUR3am9QWDRCSm0xNVFT?= =?utf-8?B?SURPQTMrSW5LTEVNcXRUVnlRaWFCSVVlUUlrdkFhdXo5d3B0dkNValpRRVhB?= =?utf-8?B?dGlMVTBBUVdFU1pydDk5eVFrRzdFcFAzVlVmb1E4dklqWHdrQTFVU3RaVTNJ?= =?utf-8?B?WHg3OFNYMFBWa2xjQ05haSttWWxSVUJvcCs2dDNxTmlLbnpxK0dxY1RsQWNW?= =?utf-8?B?cWJJUUNhd1dQbHQzTE9CYS9GamFwbUMwaUtsSEFwbys5ejlRM2VGb0tXQ2JU?= =?utf-8?B?WTI5LzY4eUwxeGdnT2JSc2RWOElDNFNHNENGcC9jcnVubEJHdGdNL2NLUlNo?= =?utf-8?B?bFEyeDRFRlIyeEFtcHFDS1lIbFF0SmZoeUJIcDhyMDlEbTFzT1gzNG15VGxC?= =?utf-8?B?N1BxRk03RmNuWitoTUp4K1JLN2hzcWFmenR3SkFkeTAybkJCbURrYlFsUjJB?= =?utf-8?B?dDJ1MVMvV0QvOFkwUHlsQXdOM0UyTjhTOFp5MVFXczlsR1BYZlNVT2hQNWtj?= =?utf-8?B?RVkwQXVOdVMzWU05cHlGdXNJYzhXVXNsd1Z0UlBvZ1VkSGxGTGQxZ1JpQjFZ?= =?utf-8?B?ZXcvVGRCN1ZTYlM0TGtEYno0T3VNM3l2eE9yR21jeTF5ZXp6eTZUWW51UTV1?= =?utf-8?Q?k6xnWjf0M9NoLjI//8=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 86320f18-d63d-4441-54c4-08daf4519ed4 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2023 04:01:02.2308 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4P250MB0920 Subject: Re: [FFmpeg-devel] [PATCH 2/8] lavfi/vf_vpp_qsv: handle NULL pointer when evaluating an expression 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 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: Xiang, Haihao: > From: Haihao Xiang > > This patch provides default value if the expression is NULL. > > This is in preparation for reusing the code for other QSV filters. > > Signed-off-by: Haihao Xiang > --- > libavfilter/vf_vpp_qsv.c | 36 ++++++++++++++++++++---------------- > 1 file changed, 20 insertions(+), 16 deletions(-) > > diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c > index 8d4227f841..3a0a395732 100644 > --- a/libavfilter/vf_vpp_qsv.c > +++ b/libavfilter/vf_vpp_qsv.c > @@ -172,14 +172,19 @@ enum var_name { > static int eval_expr(AVFilterContext *ctx) > { > #define PASS_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 passing '%s'.\n", s);\ > - goto release;\ > + if (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 passing '%s'.\n", s); \ > + goto release; \ > + } \ > }\ > } > -#define CALC_EXPR(e, v, i) {\ > - i = v = av_expr_eval(e, var_values, NULL); \ > +#define CALC_EXPR(e, v, i, d) {\ > + if (e)\ > + i = v = av_expr_eval(e, var_values, NULL); \ > + else\ > + i = v = d;\ > } > VPPContext *vpp = ctx->priv; > double var_values[VAR_VARS_NB] = { NAN }; > @@ -209,30 +214,29 @@ static int eval_expr(AVFilterContext *ctx) > var_values[VAR_DAR] = var_values[VAR_A] * var_values[VAR_SAR]; > > /* crop params */ > - CALC_EXPR(cw_expr, var_values[VAR_CW], vpp->crop_w); > - CALC_EXPR(ch_expr, var_values[VAR_CH], vpp->crop_h); > + CALC_EXPR(cw_expr, var_values[VAR_CW], vpp->crop_w, var_values[VAR_IW]); > + CALC_EXPR(ch_expr, var_values[VAR_CH], vpp->crop_h, var_values[VAR_IH]); > > /* calc again in case cw is relative to ch */ > - CALC_EXPR(cw_expr, var_values[VAR_CW], vpp->crop_w); > + CALC_EXPR(cw_expr, var_values[VAR_CW], vpp->crop_w, var_values[VAR_IW]); > > CALC_EXPR(w_expr, > var_values[VAR_OUT_W] = var_values[VAR_OW] = var_values[VAR_W], > - vpp->out_width); > + vpp->out_width, var_values[VAR_CW]); > CALC_EXPR(h_expr, > var_values[VAR_OUT_H] = var_values[VAR_OH] = var_values[VAR_H], > - vpp->out_height); > + vpp->out_height, var_values[VAR_CH]); > > /* calc again in case ow is relative to oh */ > CALC_EXPR(w_expr, > var_values[VAR_OUT_W] = var_values[VAR_OW] = var_values[VAR_W], > - vpp->out_width); > + vpp->out_width, var_values[VAR_CW]); > > - > - CALC_EXPR(cx_expr, var_values[VAR_CX], vpp->crop_x); > - CALC_EXPR(cy_expr, var_values[VAR_CY], vpp->crop_y); > + CALC_EXPR(cx_expr, var_values[VAR_CX], vpp->crop_x, (var_values[VAR_IW] - var_values[VAR_OW]) / 2); > + CALC_EXPR(cy_expr, var_values[VAR_CY], vpp->crop_y, (var_values[VAR_IH] - var_values[VAR_OH]) / 2); > > /* calc again in case cx is relative to cy */ > - CALC_EXPR(cx_expr, var_values[VAR_CX], vpp->crop_x); > + CALC_EXPR(cx_expr, var_values[VAR_CX], vpp->crop_x, (var_values[VAR_IW] - var_values[VAR_OW]) / 2); > > if ((vpp->crop_w != var_values[VAR_IW]) || (vpp->crop_h != var_values[VAR_IH])) > vpp->use_crop = 1; Does this add runtime checks to cases where there are not necessary? - Andreas _______________________________________________ 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".