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 7B031429D3 for ; Mon, 10 Jan 2022 18:22:29 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2189668AE7A; Mon, 10 Jan 2022 20:22:27 +0200 (EET) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2058.outbound.protection.outlook.com [40.92.90.58]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EF8B768AD39 for ; Mon, 10 Jan 2022 20:22:20 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a5Xiq+ZlyhdVBY51yQVLWJib+LxzOaN9/ApGFUL5qN1sd0F4xZlV8dnh+Uo5nnV6T1YqnhZv3TQu17vuDddOdCT/UcJimyV9oRZSVuQS9PPYzo3KzgTHjGO7eVQeKvXbK+48qBg3G7tWbkUYIUZAslrZfgcEC+F/qDl24Jf0W0EI9+qCzAv/CPPy7SM/bzABf4b0i4F4x0uLQVzNSgDYdRBElHz628/cxBq/mf8IqRljcdDeauQTKfhhaY+qW5PYwNW9r4/x+8suQ2aAVKHYdjxvOBWdV9EESujqhMSM17I/N1DcbrgIur89GsULU6YtY5dbkpICxBbUJABnYCk1QA== 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=RhGMPyG/74EuVT/B07nMqItbtHwYf4cZDthqn4DK7vQ=; b=WAHMEAMtq/3Vq5hO/4xLYp5as9ofKzYCxpgl/KkQ8K6qbKFiXdeD1YlFleaCziCGnTJNENxURBZFxOcIbzYbKaz0hiAiv3m6yP3dw7bEtDyHGB6pX7qZrL8U2YGPL1fzy6BgH9uOSUdVyMxEDEwiqbRCAZLCICxxdakF48aQgIOPhYje9KjhUSr1kuIV/sENnELIvaDze3+D8lBEqN82LVe29Lg1XUnaWl1PKA7SMInDE/z2iVCAt7Ve3MVPMgKA1g16nknocrzg3Bxs+grnFUpGJf7sq9bze98jlbWipl9oeVKShbNFQ3eCedvRBDxDjig/Jz7Hy7q72eY3U3JERw== 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=RhGMPyG/74EuVT/B07nMqItbtHwYf4cZDthqn4DK7vQ=; b=OTTW7w5oxzdKG1k7M9J6cdnb1eRa0Y4813k2+ChV3sKydaln3Qz45Pb3jAVdrR2Nsz61rxSLlyNK1tToVqiWAHRrKvKXYsD4OR5nI3YaPhr8LWmVqQ1ggu8kwj4WVtwl9GPEN3N4jRhf8n0ge+45/Q/xzymoydLWE4DiVOsWS08mrmLNAn2ATiNovwxgRRp6tNBKnYTL664YaThMNiZeLnQ1ZzXmCl0WraQeJOrP6mY8XpVikX+5GDIFzrAA6aCiqFqr/eHk9X2e1j5pesJjUYWfW6rZhPhfV2rAdmitFFoP//7rIE+AIfW4txwY4pTR8hd3asD9H8eEaHOpzGsv7g== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM5PR03MB3011.eurprd03.prod.outlook.com (2603:10a6:206:17::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4867.7; Mon, 10 Jan 2022 18:22:19 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::19fc:be9f:2c9c:53f5]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::19fc:be9f:2c9c:53f5%9]) with mapi id 15.20.4867.012; Mon, 10 Jan 2022 18:22:19 +0000 Message-ID: Date: Mon, 10 Jan 2022 19:22:18 +0100 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: From: Andreas Rheinhardt In-Reply-To: X-TMN: [NYdWYN73rFbnWBiNd5Hu858EFFsB+DMw] X-ClientProxiedBy: AM5PR0701CA0066.eurprd07.prod.outlook.com (2603:10a6:203:2::28) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 15d8ba5d-30af-499d-acdd-08d9d466234e X-MS-TrafficTypeDiagnostic: AM5PR03MB3011:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: a0Pa6Eym3KUDIb2aene1BLLasWf+IQm5ronHjbmWiiJSB5vEEF41tbSVk+dxpbEaBH8QIO3+HltxuYdRDxUmDFnTPDm+a3120IjjV6TZQNyxs77nnFdpkUwWClEpNHhZrcjRdNmlfU5y9NCI8QfjGGALEZS5kJtsUq2hVbUSieG/6s9zzg7ST7Stlzc+Y/t5ybzldlod92xjqr2ohUPjAvhA+Il9eVyqNDey+82gGvsJ3mb2sDvt7GVpyk+QctbBik7XrDsErl5SpwQgenxb4hwG0qHOpyuQza8V58qDJP5MTk54ffVMQISRnKvZIkwdm2CpymsOyk5sqdcIKpipD/PQ8G+6IRc6kY7QPiSj64JO/S3fuc1jbzmyLErUqKy/CPTKAnVz+OmpEbo4Ln4HZ09ynWWT2DnxFgxXliR9/TpLiGBy+sF5ssRA8AHzfW7qi+V6AvGR4E+A7OLoyNcu7x39u1+5zNeoD9c5Tdssvhs/tWjMp2xnt7Ry/r07MmhZNE5rkliL2XZTMkSFAzaXwWyLRDhgMPJHciUep0vrVZ9GO4RRZmb8DQA7omjeBiuDDOXlL0CYrhW2vXjJU6pq5w== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ejRjaGlYK3dDYzQ4QUZ2U3luYTczM1hSZk1acnpSNHY2RVhQdU11eG4ydmVP?= =?utf-8?B?d1JGT0l2R3lCejZPc3ordUNLNkZia0pSZm8yalc5VmhQdThQTDBHMUY1R1dh?= =?utf-8?B?WCtoemRCZllNTlJNeFJYbmRBckNRZEtQYWcrTDROUW8vaFpid2NjbkVTeVk5?= =?utf-8?B?K1pIVGx5N3JPMmtlUHI3ZmJGZFRlRktoVDEzN2xiaWFiOW1KQVRrazB2U1l0?= =?utf-8?B?dVo5N1ZJQnVYN2FmU0ErSGZuZ0ZEc1JubzNOcDY0VThtbGoxVUtMMEhUWU1s?= =?utf-8?B?U3FFZlI0NjFpWS9KcnN1Sm1Hczk2SzJGcXRCcnBmQWcyTDQzNWw0SEt3Mngz?= =?utf-8?B?TVc2YlF1M1F0WVRraXBOSW5nTDdvSUxta255NUNnb1Bhdjh0NTlaWDRnMStR?= =?utf-8?B?QjJoc0xxaGRjWFhNYm5lSUI4cXVsak52NXBxdVFzcmdjRE04aC9vZzJZWlR4?= =?utf-8?B?VzlBODNEUWdNeXVZeXJxei9ZNHRGOXRUV2xFV0FvSVl1Z2g0by8vR0hKWnFL?= =?utf-8?B?aHR6eUcxVkRFRHpjQkpuRUN3ZU9TWndGSVpadmxwTUVJeWJsYm0ySnJ2VHQw?= =?utf-8?B?ZUNkQytzRU1Ia3RHam9WTE9FaXRzOHZ4NUxJS2FKNU5Gc01zNmIrMDY0eDg0?= =?utf-8?B?dzdhYW41bGZ3Tm5mMmdTajVFMmNQU1B1R2VPWFEzaktUOTR6Rzg4MnkvNTJw?= =?utf-8?B?dWJidmJRWVJhQTNlOFRyVjFHQnZIMmhjallERWErMjFIbkZuclZCRjhTNEZQ?= =?utf-8?B?V0RtRFhPVFZQMWx2LzZQeDhhaWc2anZua3NXN2lMbzlGZHpJRVdnNEZkSW9W?= =?utf-8?B?Nk5YS0U1cWdwMHUwbXpjYWxkQVRNaW1lWmhSMUV3R2MvdVRsM2hKY2Z2QjMy?= =?utf-8?B?OUZMWUZMMHJGaTdSS2h1bkFRNDFzRnNoOW8za0dwb1BQYmt2RzIxSEtlUmtM?= =?utf-8?B?ZHBrVDhtVmZFNTFLN0ZmdVVqWkt1NnNEY2Q5ckJtMkZHb3dGT3RBcTNleFFY?= =?utf-8?B?OGJvNUpVeXRjcFlVWlFyOXJreEtzbit6bU5BamhjZHV5VG5yd25nZTFjbHVZ?= =?utf-8?B?ZkhtanlBRmlmRFJadkt3ODJrUlVKc0VOWDVMeVU3T1dScDFiRWlZbjRmZCty?= =?utf-8?B?MXFpYnJMdkF1cXlTalRmUXE2bnBYNmROeGhOWGNENUh4OU1XekVBVjFGTHRS?= =?utf-8?B?dEc5RVdvN3dvWGVPTDFMb2VSZ2k5b3ExQUxXbnN0N2FBc0JjcWllK2pIMTRz?= =?utf-8?B?REtYT25WV2NQSXRFL0k0cUVCS2xOWnpEUEl2aDhDVUJIZC9idz09?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 15d8ba5d-30af-499d-acdd-08d9d466234e X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2022 18:22:19.5778 (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: AM5PR03MB3011 Subject: Re: [FFmpeg-devel] [PATCH] avfilter/vf_libvmaf: update filter for libvmaf v2.0.0 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: Kyle Swanson: > Hi, > > On Sun, Jan 2, 2022 at 9:21 PM Andreas Rheinhardt > wrote: >>> >>> static const AVOption libvmaf_options[] = { >>> - {"model_path", "Set the model to be used for computing vmaf.", OFFSET(model_path), AV_OPT_TYPE_STRING, {.str="/usr/local/share/model/vmaf_v0.6.1.pkl"}, 0, 1, FLAGS}, >>> - {"log_path", "Set the file path to be used to store logs.", OFFSET(log_path), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS}, >>> - {"log_fmt", "Set the format of the log (csv, json or xml).", OFFSET(log_fmt), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS}, >>> - {"enable_transform", "Enables transform for computing vmaf.", OFFSET(enable_transform), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS}, >>> - {"phone_model", "Invokes the phone model that will generate higher VMAF scores.", OFFSET(phone_model), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS}, >>> - {"psnr", "Enables computing psnr along with vmaf.", OFFSET(psnr), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS}, >>> - {"ssim", "Enables computing ssim along with vmaf.", OFFSET(ssim), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS}, >>> - {"ms_ssim", "Enables computing ms-ssim along with vmaf.", OFFSET(ms_ssim), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS}, >>> - {"pool", "Set the pool method to be used for computing vmaf.", OFFSET(pool), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS}, >>> + {"model", "Set the model to be used for computing vmaf.", OFFSET(model_cfg), AV_OPT_TYPE_STRING, {.str="version=vmaf_v0.6.1"}, 0, 1, FLAGS}, >>> + {"feature", "Set the feature to be used for computing vmaf.", OFFSET(feature_cfg), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS}, >>> + {"log_path", "Set the file path to be used to write log.", OFFSET(log_path), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS}, >>> + {"log_fmt", "Set the format of the log (csv, json, xml, or sub).", OFFSET(log_fmt), AV_OPT_TYPE_STRING, {.str="xml"}, 0, 1, FLAGS}, >>> {"n_threads", "Set number of threads to be used when computing vmaf.", OFFSET(n_threads), AV_OPT_TYPE_INT, {.i64=0}, 0, UINT_MAX, FLAGS}, >>> {"n_subsample", "Set interval for frame subsampling used when computing vmaf.", OFFSET(n_subsample), AV_OPT_TYPE_INT, {.i64=1}, 1, UINT_MAX, FLAGS}, >>> - {"enable_conf_interval", "Enables confidence interval.", OFFSET(enable_conf_interval), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS}, >>> { NULL } >>> }; >> >> You are removing lots of options; removing options is only permissible >> during a major break and even then the options need to have been >> deprecated before that. > > Good point, thanks. New patch attached. No more missing options, > everything that should be deprecated has been marked as deprecated and > appropriate fallback behavior implemented. > > +static AVDictionary **delimited_dict_parse(char *str, unsigned *cnt) > { > - LIBVMAFContext *s = (LIBVMAFContext *) ctx; > - compute_vmaf_score(s); > - if (!s->error) { > - av_log(ctx, AV_LOG_INFO, "VMAF score: %f\n",s->vmaf_score); > - } else { > - pthread_mutex_lock(&s->lock); > - pthread_cond_signal(&s->cond); > - pthread_mutex_unlock(&s->lock); > + int err = 0; > + if (!str) > + return NULL; > + > + *cnt = 1; > + for (char *p = str; *p; p++) { > + if (*p == '|') > + (*cnt)++; > } > - pthread_exit(NULL); > + > + AVDictionary **dict = av_calloc(*cnt, sizeof(*dict)); > + if (!dict) > + goto fail; > + > + char *str_copy = av_strdup(str); > + if (!str_copy) > + goto fail; > + > + char *saveptr = NULL; > + for (unsigned i = 0; i < *cnt; i++) { > + char *s = av_strtok(i == 0 ? str_copy : NULL, "|", &saveptr); > + err = av_dict_parse_string(&dict[i], s, "=", ":", 0); > + if (err) > + goto fail; > + } > + > + av_free(str_copy); > + return dict; > + > +fail: > + if (dict) { > + for (unsigned i = 0; i < *cnt; i++) { > + if (dict[i]) > + av_dict_free(&dict[i]); > + } > + av_free(dict); > + } > + > + av_free(str_copy); > + *cnt = 0; > return NULL; > } 1. FFmpeg uses the ancient C90 rule that only allows variable declarations at the beginning of a block (before all statements). You should actually have received a compiler warning because of the above code (unless you use Clang, which claims to support this type of warning, yet doesn't). 2. You jump over the initializion of str_copy if the dict allocation fails and consequently you free an uninitialized string. - 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".