From patchwork Mon Aug 29 00:02:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hutchinson X-Patchwork-Id: 37537 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp1633587pzh; Sun, 28 Aug 2022 17:03:11 -0700 (PDT) X-Google-Smtp-Source: AA6agR4vaph6V+8WXtROOlEoMrE0I3tJeRCB01XWPdVjnOyMwNX31NeMUqpS3RfATOah+3Jd0BJs X-Received: by 2002:a17:907:7fa7:b0:731:51b4:5020 with SMTP id qk39-20020a1709077fa700b0073151b45020mr11447346ejc.352.1661731391543; Sun, 28 Aug 2022 17:03:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661731391; cv=none; d=google.com; s=arc-20160816; b=IgVJkOQfncFNinwnVhduWZ4E5kLU2Sj3PQrp/a5P5oRK6yO5Zx8PILO848+XmlnAeL 1gXsEbVfHr37fgl7er4dmP3YFs5UghhMpCBJAGOr3ekQGChTNofMz3h02DgMGQ2ZCeQH j6CFypLRyv8/H51nW1rfckh0is0Di09QlhYAO8JN+DcI4Oupxbtl8jmn90hzQyQmMmJm YFdzuibe8qWZtJ0rn1uwADeM65pU2xVKFQdfVGi1KMiPmZQDfk1C5d5K3bwqxQkVoOm1 Qi0ZgebkGcfcSg/nYlNKEUj8d8cIr1T48d2pH5DFxAFDxd6E7D6yIF4Xp6F5ANZKIEz5 ae4g== 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=PpF2DDRqrWTlf2Ykk12copVcm8OnyQKZNuXM41whonU=; b=OZD+2xF3uTMORF6dTlbFD8kiZDTogk/K3wuPfxoaL6qK4lrqr+dssjTnvCRx9SJmXI Lf2RcjZE4VmA0IYzv8IM/uKI/qdy2m+j61Z8OUIIyjItjR5MVbq1ESa7XV0Fe6R4ivjz Q2OPV9VkkU8OqPobDmTspq6LdU/RLGz8eeGMAKvnMy+HfuNKVqKqFa4TiNeW6BA8wPB8 s+5aO+XuH+egDp1MHBAdhBS/NK+Hk/TCw8SsLiryYZZHksTx0HZKmC471uyM4bCusrgU IbZjk7/FBFkw5UT9QN0iEzLcxU9pZXRhdD59WXITzbdsdTGJp7xrEXVPq0KVyrM8yNxB 3g4g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=NA8uG1vw; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id t4-20020a508d44000000b0043e6a16bca1si5217698edt.475.2022.08.28.17.03.11; Sun, 28 Aug 2022 17:03:11 -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=@gmail.com header.s=20210112 header.b=NA8uG1vw; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4392D68B9A8; Mon, 29 Aug 2022 03:03:01 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vs1-f49.google.com (mail-vs1-f49.google.com [209.85.217.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2F66768B991 for ; Mon, 29 Aug 2022 03:02:53 +0300 (EEST) Received: by mail-vs1-f49.google.com with SMTP id i12so47811vsr.10 for ; Sun, 28 Aug 2022 17:02:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=lfgQi2Q3ObjTXVXyiT0Lv05D+I7ABe8JW12ewRgMWEE=; b=NA8uG1vwG2IJiWGt46bcFiAGHzHO9drC5x7j7CGl5Gf6DZZp8z0m0XudZmnvWA8/tK bOe3FSr7oVbkNmpktHttH3z6dk2GspBNTwjSru9JoEn/GS1jvbrk+L645xpC973q6OAu qcy9ynH5DSc3g9XbnSUaJSaXXuvORue4Qtz8W1H6DP+40PdTGsOMX+sBbhwlMvBdUxJp EenwulijFaH4fDjBx00bbXHI3BkvVr12mlw7+rILk2LsVk5xcHeSXzqD2RLEaQemOMQA 6JTCMfWFgZMwFORHrqRYkuMsKhT9K2tRkB55D51B2iX5/uffsBDb47hYwJBrP8FNO0vm nWVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=lfgQi2Q3ObjTXVXyiT0Lv05D+I7ABe8JW12ewRgMWEE=; b=8FloWMtN6NQwikoKOD4CSK6Tyh6X0TZDlT2syvJyXGJXoyEoyTDRi0wKpWGekUsZn2 xbLSWl0fwROKWSo8QIgc8xZ/WEybNNB1esTPrfwavhnGARL05fkRNIdme7Aamcs/goDV o8OfyeGaZsVKSoP10UBMA6ZK1Pc4CubP0bRAsREW+7cyShbNEvxgW+kPgPC10k4NpYlX A3vuNelV0SGWYV9gQ/IOfFSDI82he+3JfZ59zV/8r0Rn+QxkZxrgGG8HdlK8wxbc5CQp BtGaWtcv4DHFCdcSj2OPsJnX+Psd7/9AA4F4O4NaSixDfmazi9MEgqPu2qxVR0WWPCQ8 JMlg== X-Gm-Message-State: ACgBeo3IIONQR9gTHPR/u67tpjtbSC/uWoRRjHtedhHXKU01WBHTLiBJ FfYSmLoSxO/yPzWEr3m/NYX1z69Fbj83uA== X-Received: by 2002:a67:b706:0:b0:38a:ca3f:c609 with SMTP id h6-20020a67b706000000b0038aca3fc609mr2397642vsf.56.1661731371502; Sun, 28 Aug 2022 17:02:51 -0700 (PDT) Received: from cappuccino.. (075-115-109-114.inf.spectrum.com. [75.115.109.114]) by smtp.gmail.com with ESMTPSA id z5-20020ab05645000000b0039f07e29623sm1382804uaa.4.2022.08.28.17.02.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Aug 2022 17:02:51 -0700 (PDT) From: Stephen Hutchinson To: ffmpeg-devel@ffmpeg.org Date: Sun, 28 Aug 2022 20:02:36 -0400 Message-Id: <20220829000244.71123-2-qyot27@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220829000244.71123-1-qyot27@gmail.com> References: <20220829000244.71123-1-qyot27@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/9] avformat/avisynth: read _SARNum/_SARDen from frame properties 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: Stephen Hutchinson Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 0YpcdNLZtppO Initialized to 1:1, but if the script sets these properties, it will be set to those instead (0:0 disables it, apparently). Signed-off-by: Stephen Hutchinson --- libavformat/avisynth.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c index 3d9fa2be50..d978e6ec40 100644 --- a/libavformat/avisynth.c +++ b/libavformat/avisynth.c @@ -251,6 +251,8 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st) AVS_VideoFrame *frame; int error; int planar = 0; // 0: packed, 1: YUV, 2: Y8, 3: Planar RGB, 4: YUVA, 5: Planar RGBA + int sar_num = 1; + int sar_den = 1; st->codecpar->codec_type = AVMEDIA_TYPE_VIDEO; st->codecpar->codec_id = AV_CODEC_ID_RAWVIDEO; @@ -728,6 +730,12 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st) st->codecpar->chroma_location = AVCHROMA_LOC_UNSPECIFIED; } } + + /* Sample aspect ratio */ + 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; From patchwork Mon Aug 29 00:02:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hutchinson X-Patchwork-Id: 37538 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp1633664pzh; Sun, 28 Aug 2022 17:03:19 -0700 (PDT) X-Google-Smtp-Source: AA6agR7zyECbvfrzJqscZqwKsVmt863PGdJdIuLl4FJSP7vMlA0X2RIoj4u/kttuKhhZjRFI57G9 X-Received: by 2002:a17:907:9484:b0:73c:37bb:c4d7 with SMTP id dm4-20020a170907948400b0073c37bbc4d7mr12276220ejc.748.1661731399402; Sun, 28 Aug 2022 17:03:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661731399; cv=none; d=google.com; s=arc-20160816; b=Hfxom8By82egFI/x7QKUIhsk7wS3LllFvXduTkyRV47hYLRLi7SiFcmoyDescF6V4G RsReCJ42uMWLqkYEcum0U/rWqX44+20MiSgNGCKsOL3lmN2eWzoyA8MjBxqqNy4WF9RJ tPkOstqEP3nnckAVHWfILr+rT7KgRv7t6ibB64AyT7RW6daHemj560lSfKWUeum/6idr weURw4mXrQICiP9Yb7481SrQfkS3gDIA9epmoG2HOW6pWfht4FwTHovbuv0Aissb/2Wv cCssqUiiXv//Au0K6AuVsQO0mj8qTOi9M5vtjsm8osEG6p36hw65zwz/9uR4QNdixXA9 X51Q== 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=ViBoTfArEp/ir6lBdDXcHSpI5NLTVbyHlh83sSP+V7A=; b=iaLIfQmNc86EqRPSJNMJAcjNlbYb23+VkBdSlJLsRHiI+MRMGbSVhRffObmZlD+m9e 6L0mGxh4nJjK310OOecwlLFyasa9cyU1hkUQKK1sh2t3zWv7R0IXQMbY3/WpErbQtBox lkjAiHxu3Q0FijcEFn5hYkrWzZDlt7ypWnQXPOHaM7at3xUj2O60TTzzvKE9qH1IdkAv H+9CEMBkBEo4cdtAw0Gkv9NpvklTe/0iwhIOIvAHCF1YHGo4ttqbtL9qZ8hXbxLL5lOd /FwUkyGcYXakskAPv4wv6y9BkOQzcUs8lIE7nY5lmnJ7XusrdNfF+A9l26/A3V06psX5 Whpw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=FqVwPQTM; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id r26-20020a50c01a000000b00446d0b01815si4744740edb.338.2022.08.28.17.03.19; Sun, 28 Aug 2022 17:03:19 -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=@gmail.com header.s=20210112 header.b=FqVwPQTM; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3B1BD68B8BD; Mon, 29 Aug 2022 03:03:02 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vs1-f52.google.com (mail-vs1-f52.google.com [209.85.217.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 289BD68B7D5 for ; Mon, 29 Aug 2022 03:02:55 +0300 (EEST) Received: by mail-vs1-f52.google.com with SMTP id j6so906131vsr.0 for ; Sun, 28 Aug 2022 17:02:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=ElJDvJQ8KM2aXaB2kw92aGESe+K9Bc0cc0AzYZLCJSs=; b=FqVwPQTM1fht03AhE5UU9pwx0A7RdShkpw+JvWuHsSeRZ1VdeT9sd1Uuw3Nmz5jM0T 4NyToStX+lm+gpfYDHZRBbqKTJsMNADHB0+g6QSDiRPpvQjNThPOOuL97irhIGG+ZwrX Z/qZBEp+ZXPHXzEwC8hpUUscAcNjVKYAuRoa9Ww56rVy2fxKI5z4l63Ndj9P1XDfmtIS g1YddEdU0+SCO0bAP2wsZ1bIuTS+PypKpjr6KREeitdBYw7SSQtkwfBCR0jwCauBoG4l nmhZCya1IDWilsheKrM9u6+BUCkKI7hjExk+elz9ZjcKDjbz7mE5q3Ypo8QDoJepsQYH 61tA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=ElJDvJQ8KM2aXaB2kw92aGESe+K9Bc0cc0AzYZLCJSs=; b=W8VoigCi6fH92/ENIU1bYCBuRqKvi1isWG7QuQVBgJT9FFS4lexeDbeWSyvW7/eqnS GUQk8kzSmtwJ8G07czNWYYgP55pVqiZZnuxtJ9zJhoQN+vvQf1YR9u82L/wtHYK2uudd XO3qmJ0JfZ0d7/r/z+rhh7Bljdtgz/6nAai8124oWknHD6lWfp56xir9NB/6cRxXGoAA pPoxPD6uShKJQzbCCya1CaPBIjXoN8ymBw5R3fewhw4uyFMkNpFu8mIQ30kdMUa8SLGx ATts8LXkjTqZkuNWnKV43Dye4AwZbwqajqh/nk3sFgkWKwlzIqkQGFLYCQ9ap6VjEo66 4kqg== X-Gm-Message-State: ACgBeo3uzwaaJkTxpcDP30W/P8fpLGV9iVuMn4rfGxb6f1+zPadCQxTd 7AfUxuNTQC0InThYFX1KDYVvwTut5YxDvw== X-Received: by 2002:a67:ea58:0:b0:38f:d89a:e4b3 with SMTP id r24-20020a67ea58000000b0038fd89ae4b3mr2526190vso.51.1661731373410; Sun, 28 Aug 2022 17:02:53 -0700 (PDT) Received: from cappuccino.. (075-115-109-114.inf.spectrum.com. [75.115.109.114]) by smtp.gmail.com with ESMTPSA id z5-20020ab05645000000b0039f07e29623sm1382804uaa.4.2022.08.28.17.02.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Aug 2022 17:02:52 -0700 (PDT) From: Stephen Hutchinson To: ffmpeg-devel@ffmpeg.org Date: Sun, 28 Aug 2022 20:02:37 -0400 Message-Id: <20220829000244.71123-3-qyot27@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220829000244.71123-1-qyot27@gmail.com> References: <20220829000244.71123-1-qyot27@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/9] avformat/avisynth: add read_frameprop_sar 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 Cc: Stephen Hutchinson Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: VDqYkY85m3sP Because SAR is much more likely to be negatively affected by operations made in-script, given that resizing is probably far more common than the sort of color manipulation involved in most of the other frame properties, the safest option is to disable reading it by default, allowing users to opt in. Signed-off-by: Stephen Hutchinson --- libavformat/avisynth.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c index d978e6ec40..d503c7ed40 100644 --- a/libavformat/avisynth.c +++ b/libavformat/avisynth.c @@ -21,6 +21,7 @@ #include "libavutil/attributes.h" #include "libavutil/internal.h" +#include "libavutil/opt.h" #include "libavcodec/internal.h" @@ -86,6 +87,7 @@ typedef struct AviSynthLibrary { } AviSynthLibrary; typedef struct AviSynthContext { + const AVClass *class; AVS_ScriptEnvironment *env; AVS_Clip *clip; const AVS_VideoInfo *vi; @@ -100,6 +102,9 @@ typedef struct AviSynthContext { int error; + /* (de)activate reading frame properties */ + int frameprop_sar; + /* Linked list pointers. */ struct AviSynthContext *next; } AviSynthContext; @@ -732,9 +737,11 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st) } /* Sample aspect ratio */ - 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 }; + 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 { @@ -1140,6 +1147,19 @@ static int avisynth_read_seek(AVFormatContext *s, int stream_index, return 0; } +#define OFFSET(x) offsetof(AviSynthContext, x) +static const AVOption avisynth_options[] = { + { "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 }, +}; + +static const AVClass avisynth_demuxer_class = { + .class_name = "AviSynth demuxer", + .item_name = av_default_item_name, + .option = avisynth_options, + .version = LIBAVUTIL_VERSION_INT, +}; + const AVInputFormat ff_avisynth_demuxer = { .name = "avisynth", .long_name = NULL_IF_CONFIG_SMALL("AviSynth script"), @@ -1149,4 +1169,5 @@ const AVInputFormat ff_avisynth_demuxer = { .read_close = avisynth_read_close, .read_seek = avisynth_read_seek, .extensions = "avs", + .priv_class = &avisynth_demuxer_class, }; From patchwork Mon Aug 29 00:02:38 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hutchinson X-Patchwork-Id: 37539 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp1633720pzh; Sun, 28 Aug 2022 17:03:28 -0700 (PDT) X-Google-Smtp-Source: AA6agR6EmqsF+BMmI1S4+p+vTidSPTT9wsXvNyJEHE9hR5QjOW15hJ6RyecwOK3lRbhBnTAcjHxX X-Received: by 2002:a50:ec07:0:b0:447:ee9d:effc with SMTP id g7-20020a50ec07000000b00447ee9deffcmr9832976edr.245.1661731408136; Sun, 28 Aug 2022 17:03:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661731408; cv=none; d=google.com; s=arc-20160816; b=NEfBMhOc1Ze7E8qcN2BW5KmwTg8wUF7FQPMPOMHSAjDU+iZXxOvgivjjmXJXQ7QZWC EkLTrfN8Msj8Ln2yQRMgbTFHEbsVZKqrm+DqVrQGmcMsL6Jo3/zl7JyIpdHw7eFiBMd3 e6T4ehoeVu+GBnKaFGTGG2gxK10Fr6B08LGTpaZeTMS45D780KWKz0Z9HWX0uwec+YG+ Iz/Tl2Yj6PTl3D5ZyUlmAPULzRXozo3BtaLyVg5PHQvQ2EAAzmgQVRGeOXAYv6vWAUn0 ZHv0Uvs3PYh1B0x7HP/Hhmq46cGCfLAp29+oWgTbt1mSNfyo4E9eirWxxk1ArX5FuU2K 02YQ== 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=2Pz1eewwXBJhXjStF3U+cKYsE+iOx8fGyU/GZwhJ0yg=; b=HrQl3C+hJkngSuZMLHvWKD6d5XsU7Bl9EaDAQfnGFi8XNU7QRtuYSqVYKcOAVEtZPi l9U6g7lqT9c30ptMJ8qPawiGil4f/+qSckkWEqlt8WI8EtZEzF+vMQGRK2PYWrMMje+3 04nMc2f8GNnx0CLU9NbuyrFl2D2GqzCE7mXyk1xBT+OyABdQARmo3y0s94kYwHhUSo1n NU1b504fq5NvjXWsXkoawu/wHlMwAKrgA//5wSw50M8VSEj8eWZ0RXueX220P+pmwF4v IqGPeZB1t0bbceXp5ldgEkfidcCxp2K/AcaefkUBuW//ACZSdiT0Nj+uTcdXMcxUdHlx z/Pw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=XE7zf3bk; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id hg4-20020a1709072cc400b0073d615565fesi4893845ejc.494.2022.08.28.17.03.27; Sun, 28 Aug 2022 17:03:28 -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=@gmail.com header.s=20210112 header.b=XE7zf3bk; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 34BD668B556; Mon, 29 Aug 2022 03:03:03 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vs1-f41.google.com (mail-vs1-f41.google.com [209.85.217.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 98A1168B99F for ; Mon, 29 Aug 2022 03:02:56 +0300 (EEST) Received: by mail-vs1-f41.google.com with SMTP id m66so6818192vsm.12 for ; Sun, 28 Aug 2022 17:02:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=qYyWAFXU8mWo49UvLvlOMHlWWA0nTivep3/0vCPgKMM=; b=XE7zf3bkmQKFLK4XULxAhX0BCoXid59VawlsbJtNy201Piz82h29MT7ljrTPjNzisb fcgY9T9tevbBAtvpvXFecV1fgsIdQgSCAF0GYrilwNMcJnLOieE+B6C97jM3AjQCwuFp rPAvfL9I0R5yt90xdNacxOa6RYVpALzMxdx1ZZl9p6ZQJy3/e/TUnGqmsA2qd+TJSFYK 1EDVTS1ND5P8lFrd1pLlU8nnxawbrUMSMNlFzmLJtkQnVhKWV0btaUi+RjwIyvHsTzmT k7JDYW6fNEzvy65aSIQX8kXxVn0Blh5Hfp9z4sal4jRI9tN+era6vOTXcVGT2WgrxtL+ bGfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=qYyWAFXU8mWo49UvLvlOMHlWWA0nTivep3/0vCPgKMM=; b=74WDiYVd+80Hi3MgqO/717okejfrRfU2UIS8ITe1b3Llja8RQ0vPYCV9toV4m1Wjsh /8d/6ntFEUlJUExobGs9SePUA/pZsC460hEMJ3YJYc+Jv5wXHfc+cxGEMav1SG/JFPJX U9TlDyxvMII/fJQKGw97usnOXj/M8NSmKsMiRfAKcpKKU7ycM0tW3X1D3T1duDpeKAr5 sdFk0LXUtY4oQEwVRyM+948I6xlx7uoLKL9qrt8ovv95GhtfpTIXu+OuQr42N13be4/s m/eGM8INX67Po+sy8VPY52N8GtcXaOcSp9q1n1ev/14B9ieFRD4Va0j+LtD6EooyHlUO 9csQ== X-Gm-Message-State: ACgBeo3dovJ9tqZVE8Ft+4GKOXnYGIT6XbYe7b9iFBtlrUwtcoylskgg SX8OigMQ7tekP4At0Owrbaa1qBLAkTtn5A== X-Received: by 2002:a05:6102:21a8:b0:390:9b63:25a5 with SMTP id i8-20020a05610221a800b003909b6325a5mr2841505vsb.56.1661731374916; Sun, 28 Aug 2022 17:02:54 -0700 (PDT) Received: from cappuccino.. (075-115-109-114.inf.spectrum.com. [75.115.109.114]) by smtp.gmail.com with ESMTPSA id z5-20020ab05645000000b0039f07e29623sm1382804uaa.4.2022.08.28.17.02.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Aug 2022 17:02:54 -0700 (PDT) From: Stephen Hutchinson To: ffmpeg-devel@ffmpeg.org Date: Sun, 28 Aug 2022 20:02:38 -0400 Message-Id: <20220829000244.71123-4-qyot27@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220829000244.71123-1-qyot27@gmail.com> References: <20220829000244.71123-1-qyot27@gmail.com> MIME-Version: 1.0 Subject: [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 Cc: Stephen Hutchinson Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ClAasLlTskqr 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) { + /* 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; 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 }, }; From patchwork Mon Aug 29 00:02:39 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hutchinson X-Patchwork-Id: 37540 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp1633784pzh; Sun, 28 Aug 2022 17:03:37 -0700 (PDT) X-Google-Smtp-Source: AA6agR68lhM5ypna5N6jBxPQCICJgo5dY3/80x4p93F4MBqCsm3+WJ83kbo6PjAnejeoS/ah8/xv X-Received: by 2002:a05:6402:5201:b0:448:7b26:b94f with SMTP id s1-20020a056402520100b004487b26b94fmr1487886edd.119.1661731417524; Sun, 28 Aug 2022 17:03:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661731417; cv=none; d=google.com; s=arc-20160816; b=En3D+O1Fg91SKxq9XoO3cqBayj3K7MSGGxo6n7yCnxWKdidvTY7GrVnDSxkQn+4xJB IpmSCf1FCZsTyLdQcVk3/bjOEF6pCxV9uX62wpQMRD6m6n4VtMlgtQ56LtU/O5mtPNTu 5zaCIITCdQz0NDb0hVqXGdpTqzADF8BNM8efVj9h/5DSyQ2NnuUpMQFkZxMq2lBn5jum Q34D2wCVtrt58p3hyfcbsje9enDG63Nx5Flbel+4eN6dvoNqYWHxNhr87/BxcNEdRFBE MUDkjqwp8LjNpUfJq8kBeKDZEfnFDgCIKphOKKauRL+Ab/75LZmYDZcV/K+dwf6uHKAs 1+eQ== 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=HEezKmLiFhLuc8XF09qVm0bre9OjbwiXgTnk7ANZWdE=; b=NLvmOweOFSs5W7VGhFNntTXZsSmeWfHLl8M4rSBBB/gmG0F6yvhbYYQXDViEjkcLsH DqaKfn2YLnXyfF2SoIq48INU2AdspSEBN+OBY0GLs8Y32Wq+zUYl5MbRCJ63lP8wzD3+ 7HCPs5KuJMfPN5tZZfXoqywfE8uW5DBdynWY4IqMSUZB8oXQfqelTjndX63SANGPoYAD WR9fWOO8oOzUXiSqNkwSlT+43hMeCtZIZYc+WRQj2vl6ohnDn1YUoy07hDbKfP9EY98B 9FTnIU8/xdAeNIs9kU7YpUAmTIbA9gFFrzrPCOcnn1oUDTDjA5SeBH/3gk/jG11S9GIx uGfg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=U52cvHJC; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id dr17-20020a170907721100b0073dd6670bb7si5380668ejc.175.2022.08.28.17.03.37; Sun, 28 Aug 2022 17:03:37 -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=@gmail.com header.s=20210112 header.b=U52cvHJC; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4172068B9DB; Mon, 29 Aug 2022 03:03:05 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vk1-f173.google.com (mail-vk1-f173.google.com [209.85.221.173]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 44AD768B9C9 for ; Mon, 29 Aug 2022 03:02:58 +0300 (EEST) Received: by mail-vk1-f173.google.com with SMTP id i129so3069175vke.3 for ; Sun, 28 Aug 2022 17:02:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=IIMPa/UJzQ46/gDbr3S6uX+/yDZXSptYHON1ZSoni90=; b=U52cvHJCzRvKfcSp55yQKcPzhj7TWsvSkGWebw4JtrCYIStuSy+Q/xrklm/gL5Omvo /cFIM19po2flec2lpr79VrYom7iF0W/0Se0t9TJiVhVjgWK1Ti+BNoOWMC4mEU2zPZ7a qOWIngsBWwYWBtIUmtJKGsRLNVbiSTYgFif51YfTsLAM+5tQlV+WA+/PQSTMBe6ZD994 UFXppG2xF1qzAmyFv2JE154hpvQAsgdtpm4LjOeCBnXHP4cdtsIaxpAxnBVSAoagJ88A 2ixCKshAdoSl2cSMnHgO2m2atEU8OO7pAcoKyfJiiny+YbPfl5yOjLRQwp0450Yv9eVU fYaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=IIMPa/UJzQ46/gDbr3S6uX+/yDZXSptYHON1ZSoni90=; b=Pv6IqDjjrdi9CBUtg67c/Sgnu2uLVoxDmCCXXHITEORZr1nUUUIsNcUqnzGyzA8O/6 oqwbICPKuYwOX4r4PxcHtiPrfqfJtt33/kA8eqjb5TViGdAtiaeBzqSrzk08FhI6z8iQ xMJv0/h+1PVkKmbhqpJjA43GU/KeZQqg8wT7Er3cGcI5sL8X9SLB89NN/yDgzNzkWxn6 e491p8iS398D5zZ5xRSMnGNgRdcrFSTG+g5V0TehinxSkp8VCd/yuWADmv2uKikErMKA RitGZ+KcZCJLHdxtsU95emfGygf/DheB4hlj5s9a8EiZ5uTocamrkxKlf4HppVpiHbJj mSgw== X-Gm-Message-State: ACgBeo1o8WezWPL06WmfHJ+11mIl2NXHUYxk0H1A32SPoD5RF5Laka0d nnUT+UZGPAfONAH9jQvJrdoy2JnGKh7pEg== X-Received: by 2002:a1f:2749:0:b0:393:b7ad:c976 with SMTP id n70-20020a1f2749000000b00393b7adc976mr1909219vkn.30.1661731376290; Sun, 28 Aug 2022 17:02:56 -0700 (PDT) Received: from cappuccino.. (075-115-109-114.inf.spectrum.com. [75.115.109.114]) by smtp.gmail.com with ESMTPSA id z5-20020ab05645000000b0039f07e29623sm1382804uaa.4.2022.08.28.17.02.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Aug 2022 17:02:55 -0700 (PDT) From: Stephen Hutchinson To: ffmpeg-devel@ffmpeg.org Date: Sun, 28 Aug 2022 20:02:39 -0400 Message-Id: <20220829000244.71123-5-qyot27@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220829000244.71123-1-qyot27@gmail.com> References: <20220829000244.71123-1-qyot27@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/9] avformat/avisynth: add read_frameprop_field_order 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 Cc: Stephen Hutchinson Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: I9cXU5DPUWLC Signed-off-by: Stephen Hutchinson --- libavformat/avisynth.c | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c index 5d726d70a5..c76b50421c 100644 --- a/libavformat/avisynth.c +++ b/libavformat/avisynth.c @@ -104,6 +104,7 @@ typedef struct AviSynthContext { /* (de)activate reading frame properties */ int frameprops; + int frameprop_field_order; int frameprop_sar; /* Linked list pointers. */ @@ -525,21 +526,23 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st) if(avs->frameprops) { /* 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->frameprop_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; + } } } @@ -1152,6 +1155,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_field_order", "Read field order from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_field_order), 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 }, }; From patchwork Mon Aug 29 00:02:40 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hutchinson X-Patchwork-Id: 37541 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp1633838pzh; Sun, 28 Aug 2022 17:03:46 -0700 (PDT) X-Google-Smtp-Source: AA6agR62rsVwGLk1aGIdv3PJCRzGfuu7esErxLm9fWTatuPpGLrtlNR0EDDo+ORZOAWbu3S2wVEn X-Received: by 2002:a05:6402:294c:b0:446:fb0:723b with SMTP id ed12-20020a056402294c00b004460fb0723bmr14839108edb.258.1661731426718; Sun, 28 Aug 2022 17:03:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661731426; cv=none; d=google.com; s=arc-20160816; b=lqVCwllAfa/axhdCi4goqpI/7EfiPvXoB9XLdwZDgWpUE1GEUGOx2TCJj1Ri+nhRZi Dl745lQewc87ADU/vfs3g/17TI74LFca+g+B4zYReBjRklNB/Gq3gSOxfkjAPh+pfTVd upLYw/ClyW1jlSfcK5mlCT42pkjMRYlEaxGMmCN+LMZ0El266uLAW2of/Blw+UB2nSos TWS4yppsVNU7bDAAaKnZ5GhWMrr1wJwRYsPDPQrheWv+/t2CY417qVnaHdzMNUkYqiO9 q2Ax8sgb5/uC2iUqyY+fwTyYvnE/kh89bR40DTBH7uhEESG0qRI1E2r4BfxluiPntngg eXFA== 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=TEfMT9hTLWTPps7f0550xfrPViCmEL4W1l9nC59NkQ4=; b=AUXD1S4w8Gmlr7Woqdp79CGlx8gqp6zLCBQ8N4RoPpcR7RtSOijJcOEctzk6cXExAd l3ecctE3wReNP7+y6HCvbGozD/JxHsVyd5ApOaUBSGA7yYkvFM/lzX0lkdTwz1LM2dWT QKzz4z2kZjuK2PwVZLdCoD3/+wV5o5vL5L+VR1KH9ilHnx8ImgDO4l+om49kUkbvhmNF 3XLriaSUBim/DtuuoYohFJfBpcI7udMsoC+VaQ5OUmrJpF7r3uOSwFjb8EkIoJ6VThKn XRPxT3EwD9XqNwkpEaLMix0dBdAb+ckKogoWkwfMBjAgQYqxRm0gJplIbBfoYxE3WEPo ShCA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=he7f4A0L; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id nc40-20020a1709071c2800b00732f83f9a17si5267526ejc.349.2022.08.28.17.03.46; Sun, 28 Aug 2022 17:03: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=@gmail.com header.s=20210112 header.b=he7f4A0L; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 43BD468B9CD; Mon, 29 Aug 2022 03:03:07 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vs1-f51.google.com (mail-vs1-f51.google.com [209.85.217.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6488368B9C4 for ; Mon, 29 Aug 2022 03:02:59 +0300 (EEST) Received: by mail-vs1-f51.google.com with SMTP id f185so2039962vsc.4 for ; Sun, 28 Aug 2022 17:02:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=GQJAwDPOrGlnvY02DUpj6b3/VAEhNwKPhM/hIw6vocc=; b=he7f4A0LbnHE59g1+bhpN85MQ64HiJaYbyUAqneoKFuhrk00i3zH8lwT3j0Q1coG/I QN83M8UmWtMoOeAI8PXVQf1htVu3qmCLQcWDKh48aTKWZBoRQ6ifB0Cs7W6VFP7zTThW iejgPfGnJw4AANILX+R/Cvonh4HvIGGB4HrmPansHwqc9KFBz1/abwMPmlgYdUZQHpSb zOsg8Rb7qizm7kjl6tyVT4lgY3mkmXffWbDUmRljaQLjfuVk95Sz6eR1InTJ1IfLogqO 3CvrmVLgrZO1KiAv9nHYZfT6BGjyKcdwcpSUD/LyxkeDgUfLNc7/OVS5aKvgVzoDRi57 NDLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=GQJAwDPOrGlnvY02DUpj6b3/VAEhNwKPhM/hIw6vocc=; b=0vQIF0xQu/cxZOKiDhnjni54zLqb3ZmQ5i2CndAKROVZW8ulh6dby3RVL6Lg1WJbEA oeTgatfp4uMF/Oe6xD6LQHOyvPfpi042DyxcQ5a7sQnMxSCrtwMTQ6m3dMD9CuZNe2TY meagPN7NY4sf58OMG6r75HtzfR/1+FtwCf2e03h6A9KIooY5rfiL2vQYN9gwUmSy04m2 71xIWG06FJfW3pcWuYeYGrplhFQoCEIbq2Uafw0/Yb4mxirGvNxmpp4yCucPx514Rw1r AzZatXVi5yz2l/wmGoQ9TIpcctZh+ISCy5ehsjHsZlYcUVMjH2ROws2qmTkO+tW430nV aHaA== X-Gm-Message-State: ACgBeo04f7XEK5LGkmkibnCl9aOIhRm8zdqKMcf8pPvCazIidiuEUi2n oXB0I2s7G/6rIHqAAkLyaJDQnT1AvhP7eQ== X-Received: by 2002:a67:d582:0:b0:390:d6dd:5612 with SMTP id m2-20020a67d582000000b00390d6dd5612mr1254243vsj.78.1661731377758; Sun, 28 Aug 2022 17:02:57 -0700 (PDT) Received: from cappuccino.. (075-115-109-114.inf.spectrum.com. [75.115.109.114]) by smtp.gmail.com with ESMTPSA id z5-20020ab05645000000b0039f07e29623sm1382804uaa.4.2022.08.28.17.02.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Aug 2022 17:02:57 -0700 (PDT) From: Stephen Hutchinson To: ffmpeg-devel@ffmpeg.org Date: Sun, 28 Aug 2022 20:02:40 -0400 Message-Id: <20220829000244.71123-6-qyot27@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220829000244.71123-1-qyot27@gmail.com> References: <20220829000244.71123-1-qyot27@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 5/9] avformat/avisynth: add read_frameprop_range 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 Cc: Stephen Hutchinson Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: O+a3RpCkwQRF Signed-off-by: Stephen Hutchinson --- libavformat/avisynth.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c index c76b50421c..65d8448e89 100644 --- a/libavformat/avisynth.c +++ b/libavformat/avisynth.c @@ -105,6 +105,7 @@ typedef struct AviSynthContext { /* (de)activate reading frame properties */ int frameprops; int frameprop_field_order; + int frameprop_range; int frameprop_sar; /* Linked list pointers. */ @@ -547,18 +548,20 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st) } /* 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: + if(avs->frameprop_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; + } } } @@ -1156,6 +1159,7 @@ static int avisynth_read_seek(AVFormatContext *s, int stream_index, 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_field_order", "Read field order from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_field_order), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, + { "read_frameprop_range", "Read color range from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_range), 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 }, }; From patchwork Mon Aug 29 00:02:41 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hutchinson X-Patchwork-Id: 37542 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp1633902pzh; Sun, 28 Aug 2022 17:03:55 -0700 (PDT) X-Google-Smtp-Source: AA6agR5lJpCSHVenYrODScK3KUM8So39NwNDT9R9ymC0ed7JKsdPqxMlIKYbk3SxfBVZvKsMYU1F X-Received: by 2002:a17:906:8a74:b0:73d:d6bd:660b with SMTP id hy20-20020a1709068a7400b0073dd6bd660bmr11085544ejc.200.1661731435570; Sun, 28 Aug 2022 17:03:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661731435; cv=none; d=google.com; s=arc-20160816; b=wo2/Y7ePS/cjKooRogTEUEIUiYXjkjGUBUyVibn4wsgrV5Pqv5Pz2ORacP99j7D0yG 1fr78bzCaV6fjO2q8hfxGphHuHhSjN54znWLqNQAwkiXnfaNerDEaGqobmiheqWgUt+c 0yW1I6hi+9fMiEG3UrcQoOLgsLQzNF+o0u6vC0LXCqlKBBndKzcIvBkd3bBZoHyodOux gi6+Ba8X3Ih/dzPUqIYy56JZukgoZbj7RiKnmRcCoiuoMLk+3FnQuHkLjZI0ObSmXq3F FT4qUDoozE4qJyUdlUUDaoTn8Kt/WMkDNSG8YZVqkhrOU+Un+aa7mdV9SgxScI8e3p6k N24g== 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=nFc1G9Lzg5Kgs62nW1+chC+dIzESVwTiw4ugtwu3knw=; b=SQyBZm1ekZs83If4MPU8gqqEzY6RnWRycEOqyIM/A+vv5353th5y0mzX+Y84u5ojfO aV+tHTLI8xzdejm9jObBduQABYgESvkwXRVlWsgj8izTE6dwyS3iXKuEC3B0UQvrWH0t tXEPFhEkI2X6WDCJwulDMiWz2o5vdqoyppw6nljMluLWMLv2uJYBcBGFwTEbOw/q/WYG kzhoJDFbOj5vNpyLk+seU1GKuOX/zsLHGn1wyYbUdCnypdhuYfGtYO1cfGUyoM1YNQ0O F20Y6Z3WECNTZv5kujH+gIm9RBZyau6COtW9tNwUDJATQW6DypN9WCBZRLlmQj1Hxu5V DYHg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=I+IeG9Hq; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id rh16-20020a17090720f000b007418427c7b4si1307108ejb.293.2022.08.28.17.03.55; Sun, 28 Aug 2022 17:03:55 -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=@gmail.com header.s=20210112 header.b=I+IeG9Hq; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5224068B93E; Mon, 29 Aug 2022 03:03:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vs1-f43.google.com (mail-vs1-f43.google.com [209.85.217.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BC29168B9CD for ; Mon, 29 Aug 2022 03:03:00 +0300 (EEST) Received: by mail-vs1-f43.google.com with SMTP id f185so2039989vsc.4 for ; Sun, 28 Aug 2022 17:03:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=m9I3uAr5KKOxq3EJIyTCsaUu6NrDcIuo1iLlZax9nZk=; b=I+IeG9Hq3PXPSu2FQXxVL7aduTVGTbgQw3QQfhfRYOuFFnNll1CtasWYg0cbpjK3yW d8QC8986jYDH5Ezz5gxQtxp2pP3xEqUozeopxD4ZlSAy4asX4yHVCOZwFCbrTEv+kxUZ hp6yQfFUwrzDVv5wkxn2WBnFMLAqNz4+Pcjwl0o1udxa4f7iigJYXjec5XCbIVcyE7Eq UrhrY5CD50ockGLP404EhUWBx3LNaq8kOAIVP96u2Cwo4dA6iOp9dFI9ynGC4+YdG8DV yR8hKx86SUCWrm3N7Sz5xG12S6uPurog4NbRbD0hvgpkRHRl4+nWXzC/aDQG/1AlmA3j yl0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=m9I3uAr5KKOxq3EJIyTCsaUu6NrDcIuo1iLlZax9nZk=; b=iGp4bNYMnh3dB8PO3eOWLxuXviWTx+vBpwlsH7NtUETFd3U2yClJtMdl39nuwY/Gjx 5XYCNmxS9lyK664a53MzNu1B1ti2QzHYKPeoWcaQh1DZ/Y7Xn6iOimzFSiJhHka9BnM2 hV4zdIL216Sd/q0nz2ILENHwhBY0kEVyuxG4edalAQGbBwlGWqF0POZaGUMVjnvlinDo tuFPecpPftoKwrr1gYWTwp85vHlZvtkSaTrYOdAfMu16qq41VLyk9dv/aMOLZrsICZxI Lo2e2iIdF38MJjiVeraEhsYkFn8xZqmabM6ZwgpMRkV3Km6Hl7muMlwG2ZmDQ0qWURcs +kAQ== X-Gm-Message-State: ACgBeo1NwPpUBmxag0fublHEzRCjd+4W8ZoxLLiS1kP/GWwGSNPlpfe8 XJrAmvIhx2ZxyS0clyFPRV5zRiZVKHOusg== X-Received: by 2002:a05:6102:22d0:b0:390:d593:98f1 with SMTP id a16-20020a05610222d000b00390d59398f1mr1447943vsh.83.1661731379056; Sun, 28 Aug 2022 17:02:59 -0700 (PDT) Received: from cappuccino.. (075-115-109-114.inf.spectrum.com. [75.115.109.114]) by smtp.gmail.com with ESMTPSA id z5-20020ab05645000000b0039f07e29623sm1382804uaa.4.2022.08.28.17.02.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Aug 2022 17:02:58 -0700 (PDT) From: Stephen Hutchinson To: ffmpeg-devel@ffmpeg.org Date: Sun, 28 Aug 2022 20:02:41 -0400 Message-Id: <20220829000244.71123-7-qyot27@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220829000244.71123-1-qyot27@gmail.com> References: <20220829000244.71123-1-qyot27@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 6/9] avformat/avisynth: add read_frameprop_primaries 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 Cc: Stephen Hutchinson Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 6+e+EVNPbFPx Signed-off-by: Stephen Hutchinson --- libavformat/avisynth.c | 82 ++++++++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 39 deletions(-) diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c index 65d8448e89..945ce0e245 100644 --- a/libavformat/avisynth.c +++ b/libavformat/avisynth.c @@ -106,6 +106,7 @@ typedef struct AviSynthContext { int frameprops; int frameprop_field_order; int frameprop_range; + int frameprop_primaries; int frameprop_sar; /* Linked list pointers. */ @@ -566,45 +567,47 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st) } /* 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; + if(avs->frameprop_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 */ @@ -1160,6 +1163,7 @@ 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_field_order", "Read field order from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_field_order), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, { "read_frameprop_range", "Read color range from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_range), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, + { "read_frameprop_primaries", "Read color primaries from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_primaries), 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 }, }; From patchwork Mon Aug 29 00:02:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hutchinson X-Patchwork-Id: 37543 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp1633970pzh; Sun, 28 Aug 2022 17:04:04 -0700 (PDT) X-Google-Smtp-Source: AA6agR7RH+9WR0GRwMuePGgOTnsIBMiKXM/843XYK+NOeTM2y8e+t0+ZuBtRgIvwB/8t4xgYW8xN X-Received: by 2002:a05:6402:51ce:b0:43e:74bc:dce with SMTP id r14-20020a05640251ce00b0043e74bc0dcemr14942132edd.225.1661731444319; Sun, 28 Aug 2022 17:04:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661731444; cv=none; d=google.com; s=arc-20160816; b=KXUZK+G3GAc3H0G9Wdyglt5MlRvuK7lfCQ/qFVwpgpwOxtOUNMxzErBzJjSHIq4VO4 QNxnioij0WVUPSpFIO58k3cLoRy3eh1AhWx8I07BdvlJnHn/A8zeWl44P0g6y5wAwn9p kaLZBqG9+wA4r5OGb4uKsqTKDQNhZP6ztlsDRjv7Jvd9EKUU34+pwSogmtTYPVRXEzHD 3qYnZOCf3U0ebIJ0KAMbzqsZe6+TvNUyNrpEJEfNJZs2bD2PzJUXUykKSz4KnKOyUF9h 1KHeJUEHHDVZghz2xMJsF/BvNZW6zkfyZBHeMSBVzq42VsNPhmzLzypw+fY2ziES6ewK /Vhg== 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=PKRuCUZDlDnYvbwaA8ZqD8zvCyaQnRHoJTwBNkTslwE=; b=UR+XxdmQBCEleZYLTeFnjPvdtVDD4K3FA9lv/jT051Z/5Kh2it6/2sL05bprDzJVcQ atSDq+eI9/lmcFxLDZ5xzaph4wuusTC/mt84ER7RI769Zux7+AxiGB4Nt4d439FIb8Ec a74ma8Ge6w19kUe/f+Gr8RIZoA2QS0VLHRbW6An5szzzbFJE0ErQlwTRSgQNeyJhTNxY LmFmOJsOtnS1z4mwLbOygOk/I/99a4C4bNs0SPL8mw8iSgE77CJzIi55eth0R/GVP7bo I0IC0TB/yJMHn0BnWbA4S/N/bF0rSbYZg54Pst12TPDp8oe47WdIY6b6waZqBe9L4A+I J1vw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=avQ18ypy; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id m6-20020a056402510600b00447c220a3desi6814854edd.167.2022.08.28.17.04.04; Sun, 28 Aug 2022 17:04:04 -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=@gmail.com header.s=20210112 header.b=avQ18ypy; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3DD3468BA38; Mon, 29 Aug 2022 03:03:09 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vs1-f43.google.com (mail-vs1-f43.google.com [209.85.217.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E746868B9DC for ; Mon, 29 Aug 2022 03:03:01 +0300 (EEST) Received: by mail-vs1-f43.google.com with SMTP id m66so6818305vsm.12 for ; Sun, 28 Aug 2022 17:03:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=VYbQQ7o0/mld4qFpPjX8hrrnIhstZpCqpF5ZMEtrbHc=; b=avQ18ypyUE/+U/oPj9EymGixgkFcmVH3IfMA7lxGrD7b/ARbCkxbh+EkeNA9pmV5Pl 7lTJ/+dI8gEjLSxfyQjT4E44fXDzlIB41/nkdVDmNHYrt2btDRBIX1iqpPRCCFQ1G5U0 I+3fW7PTlo3sfjuQXT28A2SZ/KCKANfD1xys7eoCVdILOcsGRtz2ipMFCB5ASWQR8dkg QCMCyjSBPu18tJ9Kv9z5wm0CJW13yP+7c8H0CliYhlxSrfDM9r1WdP6wQgjlJxa8pY7e ss6YAiU2pHn6RHIz9Y7tB9lrzU/k1xv6DvWW13i4b13R8ELULU64BtZdFx0CXjp/voCg 1j0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=VYbQQ7o0/mld4qFpPjX8hrrnIhstZpCqpF5ZMEtrbHc=; b=eg03/psMIx87ZHoUsLWLGBg1JUoN1Tkhco9Upc2DRgiyJpz0qPq/e/nCQ8lYsaJU3h u15247RaBCujMyx2pT+8xfwGHGg3ReoIyMT10VJPB08TKjG35X7A42IhsLHoHWJ7kmEg mj/o7wKrj/MyX9GbbX3TMNkjQeYFbglWfOczUMCWv+LoNQawatS6dxnMNj2mAWZD5tUx ScEkFGfK32N9eZp38tqp7ASo7BhK4keNx5giur+NK18j63D6UNglnSUUqUQ0W7wP58af 9ytLaA9PKoGxKZO5n39Srf5VR8N1oOYqzF6A7yhNjHC3OpV4OCvm88Rw6+ku65r1UUMk OcIg== X-Gm-Message-State: ACgBeo2K7j4TyT4gaE9QO07JauCxJVc569lkQ7XzdYd6gznhGAFfYgSR /l+OqnmInB+9kITRtS+M3sjhcedNuQRIOw== X-Received: by 2002:a67:e15e:0:b0:390:d7ec:b5ef with SMTP id o30-20020a67e15e000000b00390d7ecb5efmr1039909vsl.66.1661731380367; Sun, 28 Aug 2022 17:03:00 -0700 (PDT) Received: from cappuccino.. (075-115-109-114.inf.spectrum.com. [75.115.109.114]) by smtp.gmail.com with ESMTPSA id z5-20020ab05645000000b0039f07e29623sm1382804uaa.4.2022.08.28.17.02.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Aug 2022 17:02:59 -0700 (PDT) From: Stephen Hutchinson To: ffmpeg-devel@ffmpeg.org Date: Sun, 28 Aug 2022 20:02:42 -0400 Message-Id: <20220829000244.71123-8-qyot27@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220829000244.71123-1-qyot27@gmail.com> References: <20220829000244.71123-1-qyot27@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 7/9] avformat/avisynth: add read_frameprop_transfer 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 Cc: Stephen Hutchinson Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: OkDbqtRGQ6dO Signed-off-by: Stephen Hutchinson --- libavformat/avisynth.c | 112 +++++++++++++++++++++-------------------- 1 file changed, 58 insertions(+), 54 deletions(-) diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c index 945ce0e245..ff4435758e 100644 --- a/libavformat/avisynth.c +++ b/libavformat/avisynth.c @@ -107,6 +107,7 @@ typedef struct AviSynthContext { int frameprop_field_order; int frameprop_range; int frameprop_primaries; + int frameprop_transfer; int frameprop_sar; /* Linked list pointers. */ @@ -611,60 +612,62 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st) } /* 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; + if(avs->frameprop_transfer) { + 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 */ @@ -1164,6 +1167,7 @@ static const AVOption avisynth_options[] = { { "read_frameprop_field_order", "Read field order from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_field_order), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, { "read_frameprop_range", "Read color range from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_range), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, { "read_frameprop_primaries", "Read color primaries from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_primaries), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, + { "read_frameprop_transfer", "Read color transfer characteristics from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_transfer), 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 }, }; From patchwork Mon Aug 29 00:02:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hutchinson X-Patchwork-Id: 37544 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp1634061pzh; Sun, 28 Aug 2022 17:04:13 -0700 (PDT) X-Google-Smtp-Source: AA6agR4qGQ48XF1AlRtUlBuMJffxKrjs1AmKEpV8r9t4kftwOHIwnYXWHJg73wAy7khP+e859D1O X-Received: by 2002:a17:907:2bd1:b0:73d:d154:8e42 with SMTP id gv17-20020a1709072bd100b0073dd1548e42mr11265263ejc.585.1661731453705; Sun, 28 Aug 2022 17:04:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661731453; cv=none; d=google.com; s=arc-20160816; b=mrYiWFTDE2FAv1jT1bsZrv1I7OxOgrHbXw3HkLC4B2p4+bWcHXgRPFCFDusK7/wkgI sziUS1rTTXDdwvqZ1OwFh4MOg2rngOtHBK2oD9GjHJcoIpfvOE3wIwfOPXGgEc+2jHdb ptemwK974A9Aj+b8bwg0hIho4bEzD4j7H6FuqvOfvnwmH/h9zupOmC2nReSFuc8rry/U C+o0xObn0kogcUOvvx1AwDxPUPneeasKGGJH8g64RDxwLDiWxQviAR3VvfxBTUzhrg/J PZXo2dx80kSwgq8M7A3303pr+Eaj8W6M8yOZDYST9qgC+xBl7eXIzZCdqGt3UqnocfvF 1cLA== 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=wGBotSi5FCeAVuBKGL3094A6OBRu+mF/KRWBMnkIBEI=; b=pkvO1nh3GVPR/da922x6YIowLygPf5ePC/4TK5T5gSVfT/W5ZK5lGvdHX4cV2paVCQ lSrQYFXRZcIppKrkMKviT5qm4+n5ljbBctUktCxd4Mc+sAj1i3HlfEpwrtwPvoACMrtq lGa2IteAXNE7zX+Kzio/Rbq5o5nSt2h1BqaEGRQVEXCD/BTv3RRgs1vTo5cyybFd0TY4 YSJDNt0iIEXU0hxuInLI9cpMBgHBetNGDCT7n3oWQnis1b4GlVW9mQuu3Hr8xhMnaA0j SvbCAQKfmyra911m33uWf0Rr4+oxecnnylh7KQhXQUYycbflHpGImRqkcVNzppfwxVUQ xV5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=o16RhWzF; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id o19-20020a170906975300b0073c5d9b3440si5791822ejy.781.2022.08.28.17.04.12; Sun, 28 Aug 2022 17:04:13 -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=@gmail.com header.s=20210112 header.b=o16RhWzF; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3E46468B9CA; Mon, 29 Aug 2022 03:03:10 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vs1-f54.google.com (mail-vs1-f54.google.com [209.85.217.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5E9CB68B9DC for ; Mon, 29 Aug 2022 03:03:03 +0300 (EEST) Received: by mail-vs1-f54.google.com with SMTP id k2so6825884vsk.8 for ; Sun, 28 Aug 2022 17:03:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=Is2VhFfI3JHAaUgSPfiE6sivllDapo+h9kArqLJam/U=; b=o16RhWzFdynau72rM2znBd0nAfLk4nBL3yAHwMHIUQEwaMSkx+X19lombEwQbWwk2f li96CsxG24yfsc6dFyOGgg5eF6AA+eSCFXyQBjb6OviBLl+JnRLgXr9R0j93JLLdI420 yd1DvGkcCi9DGaMoj8eLNRTMBhYXCp3B1ABAuBGZJ4QxYdaOWyGWddZ1kbaMj7vt4Lgn E7VPK6WdQHCWv6pl2AMzlTcZ55c075ZEN1YX43dSAZwn7q+fgO4+b8KyHVQmFixAMPL1 I3dPvPJ/H918DbLRokif3UAHcShnb9KIjvSpXfcdVt97YtP9xKjNBqj6t7seau4JZv9U wSSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=Is2VhFfI3JHAaUgSPfiE6sivllDapo+h9kArqLJam/U=; b=T4F9pSX428hnZu4hAj81fo9jtrvxw1j/ZAYKRidoUahLDUNx/hpzKpf7JDPAgCt8xO Yd1TpLp9MfgGGht+oAUiUvw8MMMnqGZIekNDIaXDShHCHIwFD1RaPUqW5d9isAws0mIC xrwCL9eRKykbSAUAzb22ULweXK5XQKP9WVAl4RNOb0gCT38xrWaeozVtI1Fph0rLKish v8VqBuS+8O7j1+FbucSRT9h5vzSinJ6lBR63WAdC3do0NkyLmWTbkLTcHBEOa7EsveUX Om+hNDVOj1BqIcOQgyxteNyNLTALKwETPgHrv1kqkzO1H+rCePxkN/ku9jMNmHtYid8h QtLQ== X-Gm-Message-State: ACgBeo3Mo4gV/l9JYuAPuv7ausr/v7+2BQOe1ZxNM3wAhxWrSoHK6HMX qvJpt1Ap89/vghpBlQqALngCpMUly4UXKA== X-Received: by 2002:a05:6102:943:b0:388:95b3:ae31 with SMTP id a3-20020a056102094300b0038895b3ae31mr2740312vsi.48.1661731381680; Sun, 28 Aug 2022 17:03:01 -0700 (PDT) Received: from cappuccino.. (075-115-109-114.inf.spectrum.com. [75.115.109.114]) by smtp.gmail.com with ESMTPSA id z5-20020ab05645000000b0039f07e29623sm1382804uaa.4.2022.08.28.17.03.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Aug 2022 17:03:01 -0700 (PDT) From: Stephen Hutchinson To: ffmpeg-devel@ffmpeg.org Date: Sun, 28 Aug 2022 20:02:43 -0400 Message-Id: <20220829000244.71123-9-qyot27@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220829000244.71123-1-qyot27@gmail.com> References: <20220829000244.71123-1-qyot27@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 8/9] avformat/avisynth: add read_frameprop_matrix 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 Cc: Stephen Hutchinson Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: G0eDRZV/PRbz Signed-off-by: Stephen Hutchinson --- libavformat/avisynth.c | 98 ++++++++++++++++++++++-------------------- 1 file changed, 51 insertions(+), 47 deletions(-) diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c index ff4435758e..99173a8d51 100644 --- a/libavformat/avisynth.c +++ b/libavformat/avisynth.c @@ -108,6 +108,7 @@ typedef struct AviSynthContext { int frameprop_range; int frameprop_primaries; int frameprop_transfer; + int frameprop_matrix; int frameprop_sar; /* Linked list pointers. */ @@ -671,54 +672,56 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st) } /* 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: + if(avs->frameprop_matrix) { + 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; + } } } @@ -1168,6 +1171,7 @@ static const AVOption avisynth_options[] = { { "read_frameprop_range", "Read color range from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_range), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, { "read_frameprop_primaries", "Read color primaries from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_primaries), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, { "read_frameprop_transfer", "Read color transfer characteristics from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_transfer), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, + { "read_frameprop_matrix", "Read matrix coefficients from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_matrix), 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 }, }; From patchwork Mon Aug 29 00:02:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hutchinson X-Patchwork-Id: 37545 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp1634136pzh; Sun, 28 Aug 2022 17:04:21 -0700 (PDT) X-Google-Smtp-Source: AA6agR5GAufe79jsM2TnxrESXu6LAJx81hxVFhVWREDvNi/dqZeGEaE9HKIWw6vebMkZh+K0X6KY X-Received: by 2002:a17:907:1c89:b0:734:d05c:582e with SMTP id nb9-20020a1709071c8900b00734d05c582emr11975490ejc.282.1661731461762; Sun, 28 Aug 2022 17:04:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661731461; cv=none; d=google.com; s=arc-20160816; b=afV0p79uizED4LRW9ZfiIEJxHNvijuepW/WmJDPFsTwTi1PVKQSUnv+pDWdzRAX0TG PQP1flK3Y8KMZLmmspmMc/V1T4UxGXanhx89URKE0fhu3VKSRdk9AphcYZ/axe7Fq8J6 JiSG5uQHJa+Sdx9flnHffT98S9Cij7N399SqYxlSDQ3YaQqv0SDutDXq9xH8tOFkckQW zpWNTgSq8ZT/YeqUVx5Y7gunGjkScHO7Awz1xNgHf5wR5hhcAqI5EG5AK8wHMcuPwhrb mNCt50/ZAM9xgKw62r9bkQwDUnYFqZ06ojjoaHFg2Wv7Msy0Ty7qRZKsDxIh/YtQZTrR Wmeg== 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=hJpO4rQtVH6On6+cz2s/B19qPzH4gKaDayBqzCGjJlw=; b=q0SoOtvrMcpg4el/TvgXFArlZUKnKiZFDgggpz8EWbyFUhhTtUDquDc/a0VmTKkUTN vEh/RaKTnQY6d/BC2E2azPmyePCX0hsaHhDJE8JxjFmmPE73rJKqKJpCG8fCGXt93UVM P8GuxCgB22+OIRrH+tfa4kT3QyZHcZURJqwYbhmLwi9pAJg0ENk5iowyATblYDorGgkZ ECPjhyBFR/Mik8m1yya4jacMVZtPOdNZwPszqqZbL8Zl3R4d3m89WNkw6vGTKdUowm2A 3KHL/WoyiziDUftBvx7CKhekGJvEJPYQnwP3TdQIhuJGsaTbHJ9chU2VdyN9jMQIzoeV M6yQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=qIYy6q4e; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id p2-20020a50cd82000000b00445cdd8f83fsi2523265edi.334.2022.08.28.17.04.21; Sun, 28 Aug 2022 17:04:21 -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=@gmail.com header.s=20210112 header.b=qIYy6q4e; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 23DFA68BA0C; Mon, 29 Aug 2022 03:03:11 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vk1-f173.google.com (mail-vk1-f173.google.com [209.85.221.173]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CA6DB68B9DC for ; Mon, 29 Aug 2022 03:03:03 +0300 (EEST) Received: by mail-vk1-f173.google.com with SMTP id i129so3069239vke.3 for ; Sun, 28 Aug 2022 17:03:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=MbFKUZkGpIY2eSDrqEXFVKpNw73Jkm8HETINaFaNPTE=; b=qIYy6q4eYnIin9VC7R+QK7fDt8X4/ydA5Jw0brbEaHKeCCnwtb2ChRu1d1rhtDL5Vt N/xI5/EN0gzUktG1in6ct+QscXS4sKCMT0+5EnDgW/DmbO+cCbHxNi+JWPWsHhALSZkl 3yTADghvpJNFe+4ErMn0TtQtBrL+/EyoqhkkYBXD9RU0DXGaaSZ/q+ZYkPoD7hBt3Qbc L21NynZyiSXbSWobguX5fwVdjwm740eJgYVksui+EPkQoMiotWB4+CACIktV34qUyZzv hswdsMNW9puW7DZNLNWIorkG2vIc4gqqVNNeWpvFCBz2LQJgbDFqCXLmVh/xZ5U7GOsk 9fuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=MbFKUZkGpIY2eSDrqEXFVKpNw73Jkm8HETINaFaNPTE=; b=Hz34cc+64IFctSohWI214WCSbhZ+p3xtiVpXZlV3Ekdv2EjxB8DKgHLF0RKlIKKCt2 b5VhUUKqLrQjplusDzoBbQlzxxB4jseuRSRWs4F6QwzBmmODW4z/vBpvTdrKDym8cejx ck1ji/3+QiXI5ZWCf7lxu5MvAFuPL7+zS8cT4dD6akEehlfOw1FqDRW4V/m70Zsj/aB6 gkhHinOxlPCwq9bJ/Cya8Ue+EVUS7Vi6SRPbi4Ydpv1wZzH64c6JZr0TLcQmv229UGag 8j++kTaSS0H6KxNx89Phi1tKhitwbxwmEThTg2Ce63gBf4sHtXVKkJ1Sxn0n1G6HDBU6 iWTQ== X-Gm-Message-State: ACgBeo0hwRMLtau5cRh8U2Riv9L/rDra3JdmHId5yGmZJ9XZVvtcXQgk 5OivezYPIY2ZXFy38fbXJnn1eTVuCqs2kw== X-Received: by 2002:a1f:e343:0:b0:393:c4dd:d8ac with SMTP id a64-20020a1fe343000000b00393c4ddd8acmr1767120vkh.30.1661731383041; Sun, 28 Aug 2022 17:03:03 -0700 (PDT) Received: from cappuccino.. (075-115-109-114.inf.spectrum.com. [75.115.109.114]) by smtp.gmail.com with ESMTPSA id z5-20020ab05645000000b0039f07e29623sm1382804uaa.4.2022.08.28.17.03.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Aug 2022 17:03:02 -0700 (PDT) From: Stephen Hutchinson To: ffmpeg-devel@ffmpeg.org Date: Sun, 28 Aug 2022 20:02:44 -0400 Message-Id: <20220829000244.71123-10-qyot27@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220829000244.71123-1-qyot27@gmail.com> References: <20220829000244.71123-1-qyot27@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 9/9] avformat/avisynth: add read_frameprop_chroma_location 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 Cc: Stephen Hutchinson Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: oUCTUnOuowXI Signed-off-by: Stephen Hutchinson --- libavformat/avisynth.c | 50 +++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c index 99173a8d51..4e7395c22b 100644 --- a/libavformat/avisynth.c +++ b/libavformat/avisynth.c @@ -109,6 +109,7 @@ typedef struct AviSynthContext { int frameprop_primaries; int frameprop_transfer; int frameprop_matrix; + int frameprop_chroma_location; int frameprop_sar; /* Linked list pointers. */ @@ -726,30 +727,32 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st) } /* 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: + if(avs->frameprop_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; + } } } @@ -1172,6 +1175,7 @@ static const AVOption avisynth_options[] = { { "read_frameprop_primaries", "Read color primaries from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_primaries), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, { "read_frameprop_transfer", "Read color transfer characteristics from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_transfer), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, { "read_frameprop_matrix", "Read matrix coefficients from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_matrix), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, + { "read_frameprop_chroma_location", "Read chroma location from script's frame properties (AviSynth+ v3.7.1+).", OFFSET(frameprop_chroma_location), 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 }, };