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 9318D4412E for ; Mon, 29 Aug 2022 00:41:18 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A71D56804FA; Mon, 29 Aug 2022 03:41:15 +0300 (EEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-oln040092074015.outbound.protection.outlook.com [40.92.74.15]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 41BBE68B413 for ; Mon, 29 Aug 2022 03:41:09 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IVtmNL1AmY1j9m3tRhFWt8wBFXniltMv30WgUstheoLRsDrtf6ukhOBJlZy9B0uL1DN1ZY3GwAs6IaymvXv6w5tRFr5Zwi1eQdcRJKud/bWyTHnkyQSAzxSSyZBy+FgaXoeMdUEsyqthL2+EJv6EpHOhlgS54IxVKEth/jQq3bVtj2t4K32As44S1CErEqsjk+eeaQRPorN2I5ev5y9uAvbTpfTd8ot+R6B/9aHMwuCTNSl3SJEGVAr8Pi5fxLDp8wRMRVqe9a7tOV5AkLr+xf0Br7CU/tdSWUGPWEC7+7ZON/Mg6f7kf9QfARi1iekNQgAmidBhwxR3TJLbxry5yw== 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=LfVusB11AXdgCq5YtEJJ7NTu7uu1W89GDXi89TkZqyA=; b=Nxk7JpKE0x/Npl3uPXC0rY1GRE+dj0R3hLyH2kR84YUaLi8xOUskxryoa9fzHL6PiJyAKdawYTY5dLayoFcH/UZ3mrAkdUlDR6W6RM7jBHVzYuyZWQVCeU9WFHEDl9HzKOYdBombWCRli+JNHOHFy0m6dI8On666cB3jHf3Y9hWLjZFHhbX9bU5myQnzz2H8MZLF8q2/dIlBQthO5bz7eRrTXa3VDVBRyshdDJ7n9V4jp3kRj7MuCgQHQvfpLjQEq+6xsM3ITwUTqR+ZvK+aL0GRUJHA2kdbUsQau+DLTqWzhfLB0uZDLdR+zCGeOhLk6vESEoNDdQ+rwKYQonPXHQ== 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=LfVusB11AXdgCq5YtEJJ7NTu7uu1W89GDXi89TkZqyA=; b=qM9DqkCGi5p9T8trp7gIfl+HK5wxqpUoWQY4wooYQuyAZKFThv5tcUnGvZmFH7Qz1K198W0Dw7sJmkaCSs9rnoCBZ+MEuSH8Dg7Br93T8oVJ82hjftG7rKohYYCWrVdv8qrMKKIDFfJ3swrfE3H7l/pJ2LxNoFRBeCR5RwjUh8bLTFGLuUN9rxZU7tlPEBuPezieJ8v58icmcy77jaurH7CKm9rXzRe2j80uVC8jg/NYCUezGYfaA0kkvlAtvUps68OXsPN+BuM8dtVE2eEfJgdvMxnsM33xp8kcdj8+GjYRABtHC8ox+w9p7O1VR/ZhwCxAT3fIpokbajn1c5mROw== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AS2P250MB0992.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:598::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.21; Mon, 29 Aug 2022 00:41:07 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::7d2a:d9d8:f384:4cee]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::7d2a:d9d8:f384:4cee%9]) with mapi id 15.20.5566.021; Mon, 29 Aug 2022 00:41:07 +0000 Message-ID: Date: Mon, 29 Aug 2022 02:41:04 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220829000244.71123-1-qyot27@gmail.com> <20220829000244.71123-4-qyot27@gmail.com> From: Andreas Rheinhardt In-Reply-To: <20220829000244.71123-4-qyot27@gmail.com> X-TMN: [1ppH1aAdv84CDo05dwlT1byHIroGBN2Q] X-ClientProxiedBy: FR0P281CA0054.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:48::16) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <1115db19-4bc7-9d2b-184c-8531b0694f01@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5af830c3-5480-457b-2317-08da89572906 X-MS-TrafficTypeDiagnostic: AS2P250MB0992:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XVX/vpbiq9WWC6XyfnVB3ERj2QSUA75FHHI4zuHuojUEmrWW9VrqYu3WBi+KJ3r7KUc5pLJx48Xs/7jlX9MTay/UUBmGxRCV7T1ueMySQgYInh131ThHm+/rPi2ZBNkEQS6JKHhgWcmK4cKvY9tTjcZWLIJa4c5m0Nas+ysDhqGNEuTh9q8igSlItZbVobXHPf/SuKLpg5q3yXi3+yvHqyKBsPoYd70qe/z7LoZ2LyEnmlp9i6rcr8x7vI1TYGqZk++letmpDWD/wqnPUEQ81jWXOenm5tWqJbnmSEvY6LVZOGDJ3XVHVxxcz7zYC+K/7L2igJmxEoeSKuDXqMmDPQxfwVflFso+7eASzdzTT078pc5CS6Cd1qtdUrue7Nyqhs/DTowbrrfxAE6biYHfC89X9Rx1TzGMLUhtRLy4rJX4XhUzs81HMPUYKns6b7u4IoCHpnWA7ZoZQUEgGAYmIHO8m+cKpPdMzfKun9415Sngw/V4kHorBka5tgNlUkah6RizhDbgHr6EINHMpqgcgOt55U5Wz4x5f7UoQwftOYWpuCPGlKA49B5QRyfGgAx/ywlm/KJ7gFsWqYqfVoCZZY5yWXqoREC/XBOGg5p2GFlF+vEKPGizb/n7x5TnvFVGX5m928KUzTnwrio/6xU5b53E/k4SQ1ZvzdnKSt1r4NmvREZEcLNAbqsrba8eUDbS X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UkxLZUx4RkYwY2EyZ1ZLR0RQQUo3VEZnTXFORzE1QnZsMDN0dm91WUhDT0hP?= =?utf-8?B?QlJMcGtIREg1Mmk4K3hkVkF4d3Z6bU8vaFJhKys3VlpoMEdnSVJTMzB5bWQx?= =?utf-8?B?SitJdnhqdW9SckhkUDFLQnhqTUpSTnVVNk1TN0I1Z0pWaEYyVGVNQ2FTLzR4?= =?utf-8?B?aytxVFZsdTdpQmlpOVRYTGhQZmZNdVNoWWw4OFhGaHhydDBtNm1Da2huMXBy?= =?utf-8?B?MlhVc05CY0lYY2RZZzFYK2R2M1I3aGZqNG5EY2lNSXBWVDBjOTZSc2d4RDd1?= =?utf-8?B?clpEZ3lsOXpqZFdkVEV5UXcwS2VNdmZpaVNFdE5hcEU3ODN5SXp2WHErbzI0?= =?utf-8?B?eEN3QnlCbVlPMUJuZGZBRUhYWEpORGlRTldDNGcwU3dRK3JmNmZrdVlrZUxi?= =?utf-8?B?a3ZnOFBEdmtRTUF1U0wrV0lvTjBzUytHV1Qrallub3BBL1ZNdkVReElncmEr?= =?utf-8?B?TzRCcnJRVUhCOEZLdEJHVCsvMmFyQThYRlRyT2c0MzNqTnZKeC9vZWRQQ0xi?= =?utf-8?B?clVtV2FrSlpOelBxdnY1VXgxMCtvQVZKeVZjM0Z1NXdmYVg0L3VzQkR3RTRS?= =?utf-8?B?a25MVWlzd2hzNEtiS2VNblVDOHdNaVl6ZDZIU0grY0hUQ2FpejFYTCttV0lF?= =?utf-8?B?VFA3ZllIWTlna1RmcTYycFZVSFU3T29HR2pxYy91UStudEVzaEttNmFaamZa?= =?utf-8?B?MG1lRitrQlArYnJvYkxncFBxR1lvbG5jWW5JVm9TQXBabWlBWDE2ODB3ZlFV?= =?utf-8?B?SkNhcDZGbFBNRlFLNFgvNEEvTXFGUXZnZVN5dmhTbmhMKy9lR0dEZFBkVVBB?= =?utf-8?B?c3VMR3E1aW1SUDRDdnVxcTdJWTU4VEtMaEh5UkMxcHBCbTRocFkzcnhYazNo?= =?utf-8?B?ckhJZDU4d09RNWNLOXRsQldEWk9rYkFyampXWExHMXVJK3pZaG8zWW52U1FM?= =?utf-8?B?b0dpSk5rMm5ESHlnVTJpQVY2NGhmOTdyTXBOVzcwS0tDSEZlOFdlMTVrVXNv?= =?utf-8?B?YitxWm1kT1EyTkcrSXZJSlF2Z1ErUkNSN3d2anZxZFZUekZvNHRIREwzZlZK?= =?utf-8?B?bkNsemxEVVN2TS9MS2dWVmJNQmN1TXUzTmlYaWJKZWhqNktOZzRWbWYvOUxs?= =?utf-8?B?eFBuaWZ4elZNVWlHQW9kTUVJYTRiZHZaU2RYYXh2M1dpYWN6ckV2YjdYbGFz?= =?utf-8?B?L24vZXN5bGtyOGYvY3lDZUViZUpPNVVyZ0RqbTAwWjVjNlRUdXJBUUpHMlNz?= =?utf-8?B?RU9QcWNKYUZxZ2p4NXVCbkJwaDBVQzJuTVVCd2Ixb1RYNCtKRWpiVHcxZWxW?= =?utf-8?B?eUJHd3lrY3JoNjF0ZWJNSUdmMkNWY1lKMmZCVmsxY21zcHVLOGdPOThyeVI1?= =?utf-8?B?YksxRG5DNHNNRmxTVXBLNHpSUU0vcGFDWVFncms2a2IvcnIwZG1QWCtjcTlo?= =?utf-8?B?aDhpYVRxQTJJdFJQOFZOb0Vzd1ZvTXo1MnZFaDBRYVAyTGN6Y0Z1YVpUSk1h?= =?utf-8?B?WXNWeWdhNDFyeWdCOCtCN0ZKMVJvTzJyU3A2VUJ3bGdBVlU2TWphckVJNS9h?= =?utf-8?B?cXl0TThCcW1qSDZ1bFV1RmFHRHVHTWxyZlZneHZITEdxQzM1Y2JnVUJJSUxa?= =?utf-8?B?alNjMDlIWXUyVWxlRC9FTTNhdVJvQmwwTndkTFBaTnJKdjhHSFBXWDNpYmJO?= =?utf-8?B?T1NVSWk2MEtBWTkzbUx5TjNFaFRtSjNCVWdHeVlmRk5JRmdxYU9SWmJwYkZa?= =?utf-8?Q?9+Ez3hJUF4Jr1fCDkA=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5af830c3-5480-457b-2317-08da89572906 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Aug 2022 00:41:07.1493 (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: AS2P250MB0992 Subject: Re: [FFmpeg-devel] [PATCH 3/9] avformat/avisynth: add read_frameprops option 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: Stephen Hutchinson: > Allows turning the reading of frame properties entirely on and off. > Defaults to reading frame properties. > > Signed-off-by: Stephen Hutchinson > --- > libavformat/avisynth.c | 355 +++++++++++++++++++++-------------------- > 1 file changed, 179 insertions(+), 176 deletions(-) > > diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c > index d503c7ed40..5d726d70a5 100644 > --- a/libavformat/avisynth.c > +++ b/libavformat/avisynth.c > @@ -103,6 +103,7 @@ typedef struct AviSynthContext { > int error; > > /* (de)activate reading frame properties */ > + int frameprops; > int frameprop_sar; > > /* Linked list pointers. */ > @@ -522,227 +523,228 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st) > frame = avs_library.avs_get_frame(avs->clip, 0); > avsmap = avs_library.avs_get_frame_props_ro(avs->env, frame); > > - /* Field order */ > - if(avs_library.avs_prop_get_type(avs->env, avsmap, "_FieldBased") == AVS_PROPTYPE_UNSET) { > - st->codecpar->field_order = AV_FIELD_UNKNOWN; > - } else { > - switch (avs_library.avs_prop_get_int(avs->env, avsmap, "_FieldBased", 0, &error)) { > - case 0: > - st->codecpar->field_order = AV_FIELD_PROGRESSIVE; > - break; > - case 1: > - st->codecpar->field_order = AV_FIELD_BB; > - break; > - case 2: > - st->codecpar->field_order = AV_FIELD_TT; > - break; > - default: > + if(avs->frameprops) { This will make frameprops a global on-off which overrides everything else even if some of the "else" stuff has been enabled explicitly. Worse yet, if you want to disable everything except exactly one field, you have to leave frameprops enabled and disable everything else explicitly. Why not use a bitfield (with AV_OPT_TYPE_FLAGS and AV_OPT_TYPE_CONST)? These properties certainly seem like a bitfield and the above would be easily achievable with it. > + /* Field order */ > + if(avs_library.avs_prop_get_type(avs->env, avsmap, "_FieldBased") == AVS_PROPTYPE_UNSET) { > st->codecpar->field_order = AV_FIELD_UNKNOWN; > + } else { > + switch (avs_library.avs_prop_get_int(avs->env, avsmap, "_FieldBased", 0, &error)) { > + case 0: > + st->codecpar->field_order = AV_FIELD_PROGRESSIVE; > + break; > + case 1: > + st->codecpar->field_order = AV_FIELD_BB; > + break; > + case 2: > + st->codecpar->field_order = AV_FIELD_TT; > + break; > + default: > + st->codecpar->field_order = AV_FIELD_UNKNOWN; > + } > } > - } > > - /* Color Range */ > - if(avs_library.avs_prop_get_type(avs->env, avsmap, "_ColorRange") == AVS_PROPTYPE_UNSET) { > - st->codecpar->color_range = AVCOL_RANGE_UNSPECIFIED; > - } else { > - switch (avs_library.avs_prop_get_int(avs->env, avsmap, "_ColorRange", 0, &error)) { > - case 0: > - st->codecpar->color_range = AVCOL_RANGE_JPEG; > - break; > - case 1: > - st->codecpar->color_range = AVCOL_RANGE_MPEG; > - break; > - default: > + /* Color Range */ > + if(avs_library.avs_prop_get_type(avs->env, avsmap, "_ColorRange") == AVS_PROPTYPE_UNSET) { > st->codecpar->color_range = AVCOL_RANGE_UNSPECIFIED; > + } else { > + switch (avs_library.avs_prop_get_int(avs->env, avsmap, "_ColorRange", 0, &error)) { > + case 0: > + st->codecpar->color_range = AVCOL_RANGE_JPEG; > + break; > + case 1: > + st->codecpar->color_range = AVCOL_RANGE_MPEG; > + break; > + default: > + st->codecpar->color_range = AVCOL_RANGE_UNSPECIFIED; > + } > } > - } > > - /* Color Primaries */ > - switch (avs_library.avs_prop_get_int(avs->env, avsmap, "_Primaries", 0, &error)) { > - case 1: > - st->codecpar->color_primaries = AVCOL_PRI_BT709; > - break; > - case 2: > - st->codecpar->color_primaries = AVCOL_PRI_UNSPECIFIED; > - break; > - case 4: > - st->codecpar->color_primaries = AVCOL_PRI_BT470M; > - break; > - case 5: > - st->codecpar->color_primaries = AVCOL_PRI_BT470BG; > - break; > - case 6: > - st->codecpar->color_primaries = AVCOL_PRI_SMPTE170M; > - break; > - case 7: > - st->codecpar->color_primaries = AVCOL_PRI_SMPTE240M; > - break; > - case 8: > - st->codecpar->color_primaries = AVCOL_PRI_FILM; > - break; > - case 9: > - st->codecpar->color_primaries = AVCOL_PRI_BT2020; > - break; > - case 10: > - st->codecpar->color_primaries = AVCOL_PRI_SMPTE428; > - break; > - case 11: > - st->codecpar->color_primaries = AVCOL_PRI_SMPTE431; > - break; > - case 12: > - st->codecpar->color_primaries = AVCOL_PRI_SMPTE432; > - break; > - case 22: > - st->codecpar->color_primaries = AVCOL_PRI_EBU3213; > - break; > - default: > - st->codecpar->color_primaries = AVCOL_PRI_UNSPECIFIED; > - } > - > - /* Color Transfer Characteristics */ > - switch (avs_library.avs_prop_get_int(avs->env, avsmap, "_Transfer", 0, &error)) { > - case 1: > - st->codecpar->color_trc = AVCOL_TRC_BT709; > - break; > - case 2: > - st->codecpar->color_trc = AVCOL_TRC_UNSPECIFIED; > - break; > - case 4: > - st->codecpar->color_trc = AVCOL_TRC_GAMMA22; > - break; > - case 5: > - st->codecpar->color_trc = AVCOL_TRC_GAMMA28; > - break; > - case 6: > - st->codecpar->color_trc = AVCOL_TRC_SMPTE170M; > - break; > - case 7: > - st->codecpar->color_trc = AVCOL_TRC_SMPTE240M; > - break; > - case 8: > - st->codecpar->color_trc = AVCOL_TRC_LINEAR; > - break; > - case 9: > - st->codecpar->color_trc = AVCOL_TRC_LOG; > - break; > - case 10: > - st->codecpar->color_trc = AVCOL_TRC_LOG_SQRT; > - break; > - case 11: > - st->codecpar->color_trc = AVCOL_TRC_IEC61966_2_4; > - break; > - case 12: > - st->codecpar->color_trc = AVCOL_TRC_BT1361_ECG; > - break; > - case 13: > - st->codecpar->color_trc = AVCOL_TRC_IEC61966_2_1; > - break; > - case 14: > - st->codecpar->color_trc = AVCOL_TRC_BT2020_10; > - break; > - case 15: > - st->codecpar->color_trc = AVCOL_TRC_BT2020_12; > - break; > - case 16: > - st->codecpar->color_trc = AVCOL_TRC_SMPTE2084; > - break; > - case 17: > - st->codecpar->color_trc = AVCOL_TRC_SMPTE428; > - break; > - case 18: > - st->codecpar->color_trc = AVCOL_TRC_ARIB_STD_B67; > - break; > - default: > - st->codecpar->color_trc = AVCOL_TRC_UNSPECIFIED; > - } > - > - /* Matrix coefficients */ > - if(avs_library.avs_prop_get_type(avs->env, avsmap, "_Matrix") == AVS_PROPTYPE_UNSET) { > - st->codecpar->color_space = AVCOL_SPC_UNSPECIFIED; > - } else { > - switch (avs_library.avs_prop_get_int(avs->env, avsmap, "_Matrix", 0, &error)) { > - case 0: > - st->codecpar->color_space = AVCOL_SPC_RGB; > - break; > + /* Color Primaries */ > + switch (avs_library.avs_prop_get_int(avs->env, avsmap, "_Primaries", 0, &error)) { > case 1: > - st->codecpar->color_space = AVCOL_SPC_BT709; > + st->codecpar->color_primaries = AVCOL_PRI_BT709; You reindent everything once in this patch and then in every switch/block once more when you add the relevant option. This is unnecessary; it also makes this patch harder to read. Just take a look at the above: It seems as if you were replacing setting color_space with color_primaries, but it is just the git diff algorithm trying to minimize the diff. For that reason the project policy states that reindentation should be done in a separate commit (one commit at the end of this patchset is enough). > break; > case 2: > - st->codecpar->color_space = AVCOL_SPC_UNSPECIFIED; > + st->codecpar->color_primaries = AVCOL_PRI_UNSPECIFIED; > break; > case 4: > - st->codecpar->color_space = AVCOL_SPC_FCC; > + st->codecpar->color_primaries = AVCOL_PRI_BT470M; > break; > case 5: > - st->codecpar->color_space = AVCOL_SPC_BT470BG; > + st->codecpar->color_primaries = AVCOL_PRI_BT470BG; > break; > case 6: > - st->codecpar->color_space = AVCOL_SPC_SMPTE170M; > + st->codecpar->color_primaries = AVCOL_PRI_SMPTE170M; > break; > case 7: > - st->codecpar->color_space = AVCOL_SPC_SMPTE240M; > + st->codecpar->color_primaries = AVCOL_PRI_SMPTE240M; > break; > case 8: > - st->codecpar->color_space = AVCOL_SPC_YCGCO; > + st->codecpar->color_primaries = AVCOL_PRI_FILM; > break; > case 9: > - st->codecpar->color_space = AVCOL_SPC_BT2020_NCL; > + st->codecpar->color_primaries = AVCOL_PRI_BT2020; > break; > case 10: > - st->codecpar->color_space = AVCOL_SPC_BT2020_CL; > + st->codecpar->color_primaries = AVCOL_PRI_SMPTE428; > break; > case 11: > - st->codecpar->color_space = AVCOL_SPC_SMPTE2085; > + st->codecpar->color_primaries = AVCOL_PRI_SMPTE431; > break; > case 12: > - st->codecpar->color_space = AVCOL_SPC_CHROMA_DERIVED_NCL; > + st->codecpar->color_primaries = AVCOL_PRI_SMPTE432; > break; > - case 13: > - st->codecpar->color_space = AVCOL_SPC_CHROMA_DERIVED_CL; > - break; > - case 14: > - st->codecpar->color_space = AVCOL_SPC_ICTCP; > + case 22: > + st->codecpar->color_primaries = AVCOL_PRI_EBU3213; > break; > default: > - st->codecpar->color_space = AVCOL_SPC_UNSPECIFIED; > + st->codecpar->color_primaries = AVCOL_PRI_UNSPECIFIED; > } > - } > > - /* Chroma Location */ > - if(avs_library.avs_prop_get_type(avs->env, avsmap, "_ChromaLocation") == AVS_PROPTYPE_UNSET) { > - st->codecpar->chroma_location = AVCHROMA_LOC_UNSPECIFIED; > - } else { > - switch (avs_library.avs_prop_get_int(avs->env, avsmap, "_ChromaLocation", 0, &error)) { > - case 0: > - st->codecpar->chroma_location = AVCHROMA_LOC_LEFT; > - break; > + /* Color Transfer Characteristics */ > + switch (avs_library.avs_prop_get_int(avs->env, avsmap, "_Transfer", 0, &error)) { > case 1: > - st->codecpar->chroma_location = AVCHROMA_LOC_CENTER; > + st->codecpar->color_trc = AVCOL_TRC_BT709; > break; > case 2: > - st->codecpar->chroma_location = AVCHROMA_LOC_TOPLEFT; > - break; > - case 3: > - st->codecpar->chroma_location = AVCHROMA_LOC_TOP; > + st->codecpar->color_trc = AVCOL_TRC_UNSPECIFIED; > break; > case 4: > - st->codecpar->chroma_location = AVCHROMA_LOC_BOTTOMLEFT; > + st->codecpar->color_trc = AVCOL_TRC_GAMMA22; > break; > case 5: > - st->codecpar->chroma_location = AVCHROMA_LOC_BOTTOM; > + st->codecpar->color_trc = AVCOL_TRC_GAMMA28; > + break; > + case 6: > + st->codecpar->color_trc = AVCOL_TRC_SMPTE170M; > + break; > + case 7: > + st->codecpar->color_trc = AVCOL_TRC_SMPTE240M; > + break; > + case 8: > + st->codecpar->color_trc = AVCOL_TRC_LINEAR; > + break; > + case 9: > + st->codecpar->color_trc = AVCOL_TRC_LOG; > + break; > + case 10: > + st->codecpar->color_trc = AVCOL_TRC_LOG_SQRT; > + break; > + case 11: > + st->codecpar->color_trc = AVCOL_TRC_IEC61966_2_4; > + break; > + case 12: > + st->codecpar->color_trc = AVCOL_TRC_BT1361_ECG; > + break; > + case 13: > + st->codecpar->color_trc = AVCOL_TRC_IEC61966_2_1; > + break; > + case 14: > + st->codecpar->color_trc = AVCOL_TRC_BT2020_10; > + break; > + case 15: > + st->codecpar->color_trc = AVCOL_TRC_BT2020_12; > + break; > + case 16: > + st->codecpar->color_trc = AVCOL_TRC_SMPTE2084; > + break; > + case 17: > + st->codecpar->color_trc = AVCOL_TRC_SMPTE428; > + break; > + case 18: > + st->codecpar->color_trc = AVCOL_TRC_ARIB_STD_B67; > break; > default: > + st->codecpar->color_trc = AVCOL_TRC_UNSPECIFIED; > + } > + > + /* Matrix coefficients */ > + if(avs_library.avs_prop_get_type(avs->env, avsmap, "_Matrix") == AVS_PROPTYPE_UNSET) { > + st->codecpar->color_space = AVCOL_SPC_UNSPECIFIED; > + } else { > + switch (avs_library.avs_prop_get_int(avs->env, avsmap, "_Matrix", 0, &error)) { > + case 0: > + st->codecpar->color_space = AVCOL_SPC_RGB; > + break; > + case 1: > + st->codecpar->color_space = AVCOL_SPC_BT709; > + break; > + case 2: > + st->codecpar->color_space = AVCOL_SPC_UNSPECIFIED; > + break; > + case 4: > + st->codecpar->color_space = AVCOL_SPC_FCC; > + break; > + case 5: > + st->codecpar->color_space = AVCOL_SPC_BT470BG; > + break; > + case 6: > + st->codecpar->color_space = AVCOL_SPC_SMPTE170M; > + break; > + case 7: > + st->codecpar->color_space = AVCOL_SPC_SMPTE240M; > + break; > + case 8: > + st->codecpar->color_space = AVCOL_SPC_YCGCO; > + break; > + case 9: > + st->codecpar->color_space = AVCOL_SPC_BT2020_NCL; > + break; > + case 10: > + st->codecpar->color_space = AVCOL_SPC_BT2020_CL; > + break; > + case 11: > + st->codecpar->color_space = AVCOL_SPC_SMPTE2085; > + break; > + case 12: > + st->codecpar->color_space = AVCOL_SPC_CHROMA_DERIVED_NCL; > + break; > + case 13: > + st->codecpar->color_space = AVCOL_SPC_CHROMA_DERIVED_CL; > + break; > + case 14: > + st->codecpar->color_space = AVCOL_SPC_ICTCP; > + break; > + default: > + st->codecpar->color_space = AVCOL_SPC_UNSPECIFIED; > + } > + } > + > + /* Chroma Location */ > + if(avs_library.avs_prop_get_type(avs->env, avsmap, "_ChromaLocation") == AVS_PROPTYPE_UNSET) { > st->codecpar->chroma_location = AVCHROMA_LOC_UNSPECIFIED; > + } else { > + switch (avs_library.avs_prop_get_int(avs->env, avsmap, "_ChromaLocation", 0, &error)) { > + case 0: > + st->codecpar->chroma_location = AVCHROMA_LOC_LEFT; > + break; > + case 1: > + st->codecpar->chroma_location = AVCHROMA_LOC_CENTER; > + break; > + case 2: > + st->codecpar->chroma_location = AVCHROMA_LOC_TOPLEFT; > + break; > + case 3: > + st->codecpar->chroma_location = AVCHROMA_LOC_TOP; > + break; > + case 4: > + st->codecpar->chroma_location = AVCHROMA_LOC_BOTTOMLEFT; > + break; > + case 5: > + st->codecpar->chroma_location = AVCHROMA_LOC_BOTTOM; > + break; > + default: > + st->codecpar->chroma_location = AVCHROMA_LOC_UNSPECIFIED; > + } > } > - } > > - /* Sample aspect ratio */ > - if (avs->frameprop_sar) { > - sar_num = avs_library.avs_prop_get_int(avs->env, avsmap, "_SARNum", 0, &error); > - sar_den = avs_library.avs_prop_get_int(avs->env, avsmap, "_SARDen", 0, &error); > - st->sample_aspect_ratio = (AVRational){ sar_num, sar_den }; > + /* Sample aspect ratio */ > + if (avs->frameprop_sar) { > + sar_num = avs_library.avs_prop_get_int(avs->env, avsmap, "_SARNum", 0, &error); > + sar_den = avs_library.avs_prop_get_int(avs->env, avsmap, "_SARDen", 0, &error); > + st->sample_aspect_ratio = (AVRational){ sar_num, sar_den }; > + } > } > - > avs_library.avs_release_video_frame(frame); > } else { > st->codecpar->field_order = AV_FIELD_UNKNOWN; > @@ -1149,6 +1151,7 @@ static int avisynth_read_seek(AVFormatContext *s, int stream_index, > > #define OFFSET(x) offsetof(AviSynthContext, x) > static const AVOption avisynth_options[] = { > + { "read_frameprops", "Read frame properties from script (AviSynth+ v3.7.1+).", OFFSET(frameprops), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, > { "read_frameprop_sar", "Read SAR from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_sar), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, > { NULL }, > }; _______________________________________________ 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".