Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH 0/3 v2] avisynth: add user-selectable flags
@ 2022-08-31  0:23 Stephen Hutchinson
  2022-08-31  0:23 ` [FFmpeg-devel] [PATCH 1/3 v2] avformat/avisynth: read _SARNum/_SARDen from frame properties Stephen Hutchinson
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Stephen Hutchinson @ 2022-08-31  0:23 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Stephen Hutchinson

The reading of frame properties from the script can now be toggled
on and off per-property or as a whole, using the avisynth_flags
option.

The ability to read _SARNum/_SARDen properties has been added,
but is kept off by default because it poses more of a risk of a
user accidentally getting it wrong than the already existing properties
do, which is what prompted adding the ability to switch frame property
reading on and off.

Stephen Hutchinson (3):
  avformat/avisynth: read _SARNum/_SARDen from frame properties
  avformat/avisynth: implement avisynth_flags option
  avformat/avisynth: reindent

 libavformat/avisynth.c | 386 ++++++++++++++++++++++++-----------------
 1 file changed, 223 insertions(+), 163 deletions(-)

-- 
2.34.1

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [FFmpeg-devel] [PATCH 1/3 v2] avformat/avisynth: read _SARNum/_SARDen from frame properties
  2022-08-31  0:23 [FFmpeg-devel] [PATCH 0/3 v2] avisynth: add user-selectable flags Stephen Hutchinson
@ 2022-08-31  0:23 ` Stephen Hutchinson
  2022-09-04 19:08   ` Stephen Hutchinson
  2022-08-31  0:23 ` [FFmpeg-devel] [PATCH 2/3 v2] avformat/avisynth: implement avisynth_flags option Stephen Hutchinson
  2022-08-31  0:23 ` [FFmpeg-devel] [PATCH 3/3 v2] avformat/avisynth: reindent Stephen Hutchinson
  2 siblings, 1 reply; 7+ messages in thread
From: Stephen Hutchinson @ 2022-08-31  0:23 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Stephen Hutchinson

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 <qyot27@gmail.com>
---
 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;
-- 
2.34.1

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [FFmpeg-devel] [PATCH 2/3 v2] avformat/avisynth: implement avisynth_flags option
  2022-08-31  0:23 [FFmpeg-devel] [PATCH 0/3 v2] avisynth: add user-selectable flags Stephen Hutchinson
  2022-08-31  0:23 ` [FFmpeg-devel] [PATCH 1/3 v2] avformat/avisynth: read _SARNum/_SARDen from frame properties Stephen Hutchinson
@ 2022-08-31  0:23 ` Stephen Hutchinson
  2022-09-04 19:08   ` Stephen Hutchinson
  2022-08-31  0:23 ` [FFmpeg-devel] [PATCH 3/3 v2] avformat/avisynth: reindent Stephen Hutchinson
  2 siblings, 1 reply; 7+ messages in thread
From: Stephen Hutchinson @ 2022-08-31  0:23 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Stephen Hutchinson

Signed-off-by: Stephen Hutchinson <qyot27@gmail.com>
---
 libavformat/avisynth.c | 52 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c
index d978e6ec40..7bb2977383 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"
 
@@ -85,7 +86,18 @@ typedef struct AviSynthLibrary {
 #undef AVSC_DECLARE_FUNC
 } AviSynthLibrary;
 
+typedef enum AviSynthFlags {
+    AVISYNTH_FRAMEPROP_FIELD_ORDER = (1 << 0),
+    AVISYNTH_FRAMEPROP_RANGE = (1 << 1),
+    AVISYNTH_FRAMEPROP_PRIMARIES = (1 << 2),
+    AVISYNTH_FRAMEPROP_TRANSFER = (1 << 3),
+    AVISYNTH_FRAMEPROP_MATRIX = (1 << 4),
+    AVISYNTH_FRAMEPROP_CHROMA_LOCATION = (1 << 5),
+    AVISYNTH_FRAMEPROP_SAR = (1 << 6),
+} AviSynthFlags;
+
 typedef struct AviSynthContext {
+    const AVClass *class;
     AVS_ScriptEnvironment *env;
     AVS_Clip *clip;
     const AVS_VideoInfo *vi;
@@ -100,6 +112,8 @@ typedef struct AviSynthContext {
 
     int error;
 
+    uint32_t flags;
+
     /* Linked list pointers. */
     struct AviSynthContext *next;
 } AviSynthContext;
@@ -518,6 +532,7 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st)
         avsmap = avs_library.avs_get_frame_props_ro(avs->env, frame);
 
         /* Field order */
+        if(avs->flags & AVISYNTH_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 {
@@ -535,8 +550,10 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st)
                 st->codecpar->field_order = AV_FIELD_UNKNOWN;
             }
         }
+        }
 
         /* Color Range */
+        if(avs->flags & AVISYNTH_FRAMEPROP_RANGE) {
         if(avs_library.avs_prop_get_type(avs->env, avsmap, "_ColorRange") == AVS_PROPTYPE_UNSET) {
             st->codecpar->color_range = AVCOL_RANGE_UNSPECIFIED;
         } else {
@@ -551,8 +568,10 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st)
                 st->codecpar->color_range = AVCOL_RANGE_UNSPECIFIED;
             }
         }
+        }
 
         /* Color Primaries */
+        if(avs->flags & AVISYNTH_FRAMEPROP_PRIMARIES) {
         switch (avs_library.avs_prop_get_int(avs->env, avsmap, "_Primaries", 0, &error)) {
         case 1:
             st->codecpar->color_primaries = AVCOL_PRI_BT709;
@@ -593,8 +612,10 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st)
         default:
             st->codecpar->color_primaries = AVCOL_PRI_UNSPECIFIED;
         }
+        }
 
         /* Color Transfer Characteristics */
+        if(avs->flags & AVISYNTH_FRAMEPROP_TRANSFER) {
         switch (avs_library.avs_prop_get_int(avs->env, avsmap, "_Transfer", 0, &error)) {
         case 1:
             st->codecpar->color_trc = AVCOL_TRC_BT709;
@@ -650,8 +671,10 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st)
         default:
             st->codecpar->color_trc = AVCOL_TRC_UNSPECIFIED;
         }
+        }
 
         /* Matrix coefficients */
+        if(avs->flags & AVISYNTH_FRAMEPROP_MATRIX) {
         if(avs_library.avs_prop_get_type(avs->env, avsmap, "_Matrix") == AVS_PROPTYPE_UNSET) {
             st->codecpar->color_space = AVCOL_SPC_UNSPECIFIED;
         } else {
@@ -702,8 +725,10 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st)
                 st->codecpar->color_space = AVCOL_SPC_UNSPECIFIED;
             }
         }
+        }
 
         /* Chroma Location */
+        if(avs->flags & AVISYNTH_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 {
@@ -730,11 +755,14 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st)
                 st->codecpar->chroma_location = AVCHROMA_LOC_UNSPECIFIED;
             }
         }
+        }
 
         /* Sample aspect ratio */
+        if(avs->flags & AVISYNTH_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 +1168,29 @@ static int avisynth_read_seek(AVFormatContext *s, int stream_index,
     return 0;
 }
 
+#define AVISYNTH_FRAMEPROP_DEFAULT AVISYNTH_FRAMEPROP_FIELD_ORDER | AVISYNTH_FRAMEPROP_RANGE | \
+                                   AVISYNTH_FRAMEPROP_PRIMARIES | AVISYNTH_FRAMEPROP_TRANSFER | \
+                                   AVISYNTH_FRAMEPROP_MATRIX | AVISYNTH_FRAMEPROP_CHROMA_LOCATION
+#define OFFSET(x) offsetof(AviSynthContext, x)
+static const AVOption avisynth_options[] = {
+    { "avisynth_flags", "set flags related to reading frame properties from script (AviSynth+ v3.7.1 or higher)", OFFSET(flags), AV_OPT_TYPE_FLAGS, {.i64 = AVISYNTH_FRAMEPROP_DEFAULT}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM, "flags" },
+    { "field_order", "read field order", 0, AV_OPT_TYPE_CONST, {.i64 = AVISYNTH_FRAMEPROP_FIELD_ORDER}, 0, 1, AV_OPT_FLAG_DECODING_PARAM, "flags" },
+    { "range", "read color range", 0, AV_OPT_TYPE_CONST, {.i64 = AVISYNTH_FRAMEPROP_RANGE}, 0, 1, AV_OPT_FLAG_DECODING_PARAM, "flags" },
+    { "primaries", "read color primaries", 0, AV_OPT_TYPE_CONST, {.i64 = AVISYNTH_FRAMEPROP_PRIMARIES}, 0, 1, AV_OPT_FLAG_DECODING_PARAM, "flags" },
+    { "transfer", "read color transfer characteristics", 0, AV_OPT_TYPE_CONST, {.i64 = AVISYNTH_FRAMEPROP_TRANSFER}, 0, 1, AV_OPT_FLAG_DECODING_PARAM, "flags" },
+    { "matrix", "read matrix coefficients", 0, AV_OPT_TYPE_CONST, {.i64 = AVISYNTH_FRAMEPROP_MATRIX}, 0, 1, AV_OPT_FLAG_DECODING_PARAM, "flags" },
+    { "chroma_location", "read chroma location", 0, AV_OPT_TYPE_CONST, {.i64 = AVISYNTH_FRAMEPROP_CHROMA_LOCATION}, 0, 1, AV_OPT_FLAG_DECODING_PARAM, "flags" },
+    { "sar", "read sample aspect ratio", 0, AV_OPT_TYPE_CONST, {.i64 = AVISYNTH_FRAMEPROP_SAR}, 0, 1, AV_OPT_FLAG_DECODING_PARAM, "flags" },
+    { 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 +1200,5 @@ const AVInputFormat ff_avisynth_demuxer = {
     .read_close     = avisynth_read_close,
     .read_seek      = avisynth_read_seek,
     .extensions     = "avs",
+    .priv_class     = &avisynth_demuxer_class,
 };
-- 
2.34.1

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [FFmpeg-devel] [PATCH 3/3 v2] avformat/avisynth: reindent
  2022-08-31  0:23 [FFmpeg-devel] [PATCH 0/3 v2] avisynth: add user-selectable flags Stephen Hutchinson
  2022-08-31  0:23 ` [FFmpeg-devel] [PATCH 1/3 v2] avformat/avisynth: read _SARNum/_SARDen from frame properties Stephen Hutchinson
  2022-08-31  0:23 ` [FFmpeg-devel] [PATCH 2/3 v2] avformat/avisynth: implement avisynth_flags option Stephen Hutchinson
@ 2022-08-31  0:23 ` Stephen Hutchinson
  2022-09-04 19:08   ` Stephen Hutchinson
  2 siblings, 1 reply; 7+ messages in thread
From: Stephen Hutchinson @ 2022-08-31  0:23 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Stephen Hutchinson

Signed-off-by: Stephen Hutchinson <qyot27@gmail.com>
---
 libavformat/avisynth.c | 348 ++++++++++++++++++++---------------------
 1 file changed, 174 insertions(+), 174 deletions(-)

diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c
index 7bb2977383..b426ac343e 100644
--- a/libavformat/avisynth.c
+++ b/libavformat/avisynth.c
@@ -533,235 +533,235 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st)
 
         /* Field order */
         if(avs->flags & AVISYNTH_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:
+            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->flags & AVISYNTH_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:
+            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 */
         if(avs->flags & AVISYNTH_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;
-        }
+            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 */
         if(avs->flags & AVISYNTH_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 */
-        if(avs->flags & AVISYNTH_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;
+            switch (avs_library.avs_prop_get_int(avs->env, avsmap, "_Transfer", 0, &error)) {
             case 1:
-                st->codecpar->color_space = AVCOL_SPC_BT709;
+                st->codecpar->color_trc = AVCOL_TRC_BT709;
                 break;
             case 2:
-                st->codecpar->color_space = AVCOL_SPC_UNSPECIFIED;
+                st->codecpar->color_trc = AVCOL_TRC_UNSPECIFIED;
                 break;
             case 4:
-                st->codecpar->color_space = AVCOL_SPC_FCC;
+                st->codecpar->color_trc = AVCOL_TRC_GAMMA22;
                 break;
             case 5:
-                st->codecpar->color_space = AVCOL_SPC_BT470BG;
+                st->codecpar->color_trc = AVCOL_TRC_GAMMA28;
                 break;
             case 6:
-                st->codecpar->color_space = AVCOL_SPC_SMPTE170M;
+                st->codecpar->color_trc = AVCOL_TRC_SMPTE170M;
                 break;
             case 7:
-                st->codecpar->color_space = AVCOL_SPC_SMPTE240M;
+                st->codecpar->color_trc = AVCOL_TRC_SMPTE240M;
                 break;
             case 8:
-                st->codecpar->color_space = AVCOL_SPC_YCGCO;
+                st->codecpar->color_trc = AVCOL_TRC_LINEAR;
                 break;
             case 9:
-                st->codecpar->color_space = AVCOL_SPC_BT2020_NCL;
+                st->codecpar->color_trc = AVCOL_TRC_LOG;
                 break;
             case 10:
-                st->codecpar->color_space = AVCOL_SPC_BT2020_CL;
+                st->codecpar->color_trc = AVCOL_TRC_LOG_SQRT;
                 break;
             case 11:
-                st->codecpar->color_space = AVCOL_SPC_SMPTE2085;
+                st->codecpar->color_trc = AVCOL_TRC_IEC61966_2_4;
                 break;
             case 12:
-                st->codecpar->color_space = AVCOL_SPC_CHROMA_DERIVED_NCL;
+                st->codecpar->color_trc = AVCOL_TRC_BT1361_ECG;
                 break;
             case 13:
-                st->codecpar->color_space = AVCOL_SPC_CHROMA_DERIVED_CL;
+                st->codecpar->color_trc = AVCOL_TRC_IEC61966_2_1;
                 break;
             case 14:
-                st->codecpar->color_space = AVCOL_SPC_ICTCP;
+                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_space = AVCOL_SPC_UNSPECIFIED;
+                st->codecpar->color_trc = AVCOL_TRC_UNSPECIFIED;
             }
         }
+
+        /* Matrix coefficients */
+        if(avs->flags & AVISYNTH_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;
+                }
+            }
         }
 
         /* Chroma Location */
         if(avs->flags & AVISYNTH_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:
+            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->flags & AVISYNTH_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 };
+            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);
-- 
2.34.1

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [FFmpeg-devel] [PATCH 1/3 v2] avformat/avisynth: read _SARNum/_SARDen from frame properties
  2022-08-31  0:23 ` [FFmpeg-devel] [PATCH 1/3 v2] avformat/avisynth: read _SARNum/_SARDen from frame properties Stephen Hutchinson
@ 2022-09-04 19:08   ` Stephen Hutchinson
  0 siblings, 0 replies; 7+ messages in thread
From: Stephen Hutchinson @ 2022-09-04 19:08 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

On 8/30/22 8:23 PM, Stephen Hutchinson wrote:
> 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 <qyot27@gmail.com>
> ---
>   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;

Pushed.
_______________________________________________
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".

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [FFmpeg-devel] [PATCH 2/3 v2] avformat/avisynth: implement avisynth_flags option
  2022-08-31  0:23 ` [FFmpeg-devel] [PATCH 2/3 v2] avformat/avisynth: implement avisynth_flags option Stephen Hutchinson
@ 2022-09-04 19:08   ` Stephen Hutchinson
  0 siblings, 0 replies; 7+ messages in thread
From: Stephen Hutchinson @ 2022-09-04 19:08 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

On 8/30/22 8:23 PM, Stephen Hutchinson wrote:
> Signed-off-by: Stephen Hutchinson <qyot27@gmail.com>
> ---
>   libavformat/avisynth.c | 52 ++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 52 insertions(+)
> 
> diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c
> index d978e6ec40..7bb2977383 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"
>   
> @@ -85,7 +86,18 @@ typedef struct AviSynthLibrary {
>   #undef AVSC_DECLARE_FUNC
>   } AviSynthLibrary;
>   
> +typedef enum AviSynthFlags {
> +    AVISYNTH_FRAMEPROP_FIELD_ORDER = (1 << 0),
> +    AVISYNTH_FRAMEPROP_RANGE = (1 << 1),
> +    AVISYNTH_FRAMEPROP_PRIMARIES = (1 << 2),
> +    AVISYNTH_FRAMEPROP_TRANSFER = (1 << 3),
> +    AVISYNTH_FRAMEPROP_MATRIX = (1 << 4),
> +    AVISYNTH_FRAMEPROP_CHROMA_LOCATION = (1 << 5),
> +    AVISYNTH_FRAMEPROP_SAR = (1 << 6),
> +} AviSynthFlags;
> +
>   typedef struct AviSynthContext {
> +    const AVClass *class;
>       AVS_ScriptEnvironment *env;
>       AVS_Clip *clip;
>       const AVS_VideoInfo *vi;
> @@ -100,6 +112,8 @@ typedef struct AviSynthContext {
>   
>       int error;
>   
> +    uint32_t flags;
> +
>       /* Linked list pointers. */
>       struct AviSynthContext *next;
>   } AviSynthContext;
> @@ -518,6 +532,7 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st)
>           avsmap = avs_library.avs_get_frame_props_ro(avs->env, frame);
>   
>           /* Field order */
> +        if(avs->flags & AVISYNTH_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 {
> @@ -535,8 +550,10 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st)
>                   st->codecpar->field_order = AV_FIELD_UNKNOWN;
>               }
>           }
> +        }
>   
>           /* Color Range */
> +        if(avs->flags & AVISYNTH_FRAMEPROP_RANGE) {
>           if(avs_library.avs_prop_get_type(avs->env, avsmap, "_ColorRange") == AVS_PROPTYPE_UNSET) {
>               st->codecpar->color_range = AVCOL_RANGE_UNSPECIFIED;
>           } else {
> @@ -551,8 +568,10 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st)
>                   st->codecpar->color_range = AVCOL_RANGE_UNSPECIFIED;
>               }
>           }
> +        }
>   
>           /* Color Primaries */
> +        if(avs->flags & AVISYNTH_FRAMEPROP_PRIMARIES) {
>           switch (avs_library.avs_prop_get_int(avs->env, avsmap, "_Primaries", 0, &error)) {
>           case 1:
>               st->codecpar->color_primaries = AVCOL_PRI_BT709;
> @@ -593,8 +612,10 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st)
>           default:
>               st->codecpar->color_primaries = AVCOL_PRI_UNSPECIFIED;
>           }
> +        }
>   
>           /* Color Transfer Characteristics */
> +        if(avs->flags & AVISYNTH_FRAMEPROP_TRANSFER) {
>           switch (avs_library.avs_prop_get_int(avs->env, avsmap, "_Transfer", 0, &error)) {
>           case 1:
>               st->codecpar->color_trc = AVCOL_TRC_BT709;
> @@ -650,8 +671,10 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st)
>           default:
>               st->codecpar->color_trc = AVCOL_TRC_UNSPECIFIED;
>           }
> +        }
>   
>           /* Matrix coefficients */
> +        if(avs->flags & AVISYNTH_FRAMEPROP_MATRIX) {
>           if(avs_library.avs_prop_get_type(avs->env, avsmap, "_Matrix") == AVS_PROPTYPE_UNSET) {
>               st->codecpar->color_space = AVCOL_SPC_UNSPECIFIED;
>           } else {
> @@ -702,8 +725,10 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st)
>                   st->codecpar->color_space = AVCOL_SPC_UNSPECIFIED;
>               }
>           }
> +        }
>   
>           /* Chroma Location */
> +        if(avs->flags & AVISYNTH_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 {
> @@ -730,11 +755,14 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st)
>                   st->codecpar->chroma_location = AVCHROMA_LOC_UNSPECIFIED;
>               }
>           }
> +        }
>   
>           /* Sample aspect ratio */
> +        if(avs->flags & AVISYNTH_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 +1168,29 @@ static int avisynth_read_seek(AVFormatContext *s, int stream_index,
>       return 0;
>   }
>   
> +#define AVISYNTH_FRAMEPROP_DEFAULT AVISYNTH_FRAMEPROP_FIELD_ORDER | AVISYNTH_FRAMEPROP_RANGE | \
> +                                   AVISYNTH_FRAMEPROP_PRIMARIES | AVISYNTH_FRAMEPROP_TRANSFER | \
> +                                   AVISYNTH_FRAMEPROP_MATRIX | AVISYNTH_FRAMEPROP_CHROMA_LOCATION
> +#define OFFSET(x) offsetof(AviSynthContext, x)
> +static const AVOption avisynth_options[] = {
> +    { "avisynth_flags", "set flags related to reading frame properties from script (AviSynth+ v3.7.1 or higher)", OFFSET(flags), AV_OPT_TYPE_FLAGS, {.i64 = AVISYNTH_FRAMEPROP_DEFAULT}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM, "flags" },
> +    { "field_order", "read field order", 0, AV_OPT_TYPE_CONST, {.i64 = AVISYNTH_FRAMEPROP_FIELD_ORDER}, 0, 1, AV_OPT_FLAG_DECODING_PARAM, "flags" },
> +    { "range", "read color range", 0, AV_OPT_TYPE_CONST, {.i64 = AVISYNTH_FRAMEPROP_RANGE}, 0, 1, AV_OPT_FLAG_DECODING_PARAM, "flags" },
> +    { "primaries", "read color primaries", 0, AV_OPT_TYPE_CONST, {.i64 = AVISYNTH_FRAMEPROP_PRIMARIES}, 0, 1, AV_OPT_FLAG_DECODING_PARAM, "flags" },
> +    { "transfer", "read color transfer characteristics", 0, AV_OPT_TYPE_CONST, {.i64 = AVISYNTH_FRAMEPROP_TRANSFER}, 0, 1, AV_OPT_FLAG_DECODING_PARAM, "flags" },
> +    { "matrix", "read matrix coefficients", 0, AV_OPT_TYPE_CONST, {.i64 = AVISYNTH_FRAMEPROP_MATRIX}, 0, 1, AV_OPT_FLAG_DECODING_PARAM, "flags" },
> +    { "chroma_location", "read chroma location", 0, AV_OPT_TYPE_CONST, {.i64 = AVISYNTH_FRAMEPROP_CHROMA_LOCATION}, 0, 1, AV_OPT_FLAG_DECODING_PARAM, "flags" },
> +    { "sar", "read sample aspect ratio", 0, AV_OPT_TYPE_CONST, {.i64 = AVISYNTH_FRAMEPROP_SAR}, 0, 1, AV_OPT_FLAG_DECODING_PARAM, "flags" },
> +    { 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 +1200,5 @@ const AVInputFormat ff_avisynth_demuxer = {
>       .read_close     = avisynth_read_close,
>       .read_seek      = avisynth_read_seek,
>       .extensions     = "avs",
> +    .priv_class     = &avisynth_demuxer_class,
>   };

Pushed.
_______________________________________________
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".

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [FFmpeg-devel] [PATCH 3/3 v2] avformat/avisynth: reindent
  2022-08-31  0:23 ` [FFmpeg-devel] [PATCH 3/3 v2] avformat/avisynth: reindent Stephen Hutchinson
@ 2022-09-04 19:08   ` Stephen Hutchinson
  0 siblings, 0 replies; 7+ messages in thread
From: Stephen Hutchinson @ 2022-09-04 19:08 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

On 8/30/22 8:23 PM, Stephen Hutchinson wrote:
> Signed-off-by: Stephen Hutchinson <qyot27@gmail.com>
> ---
>   libavformat/avisynth.c | 348 ++++++++++++++++++++---------------------
>   1 file changed, 174 insertions(+), 174 deletions(-)
> 
> diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c
> index 7bb2977383..b426ac343e 100644
> --- a/libavformat/avisynth.c
> +++ b/libavformat/avisynth.c
> @@ -533,235 +533,235 @@ static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st)
>   
>           /* Field order */
>           if(avs->flags & AVISYNTH_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:
> +            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->flags & AVISYNTH_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:
> +            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 */
>           if(avs->flags & AVISYNTH_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;
> -        }
> +            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 */
>           if(avs->flags & AVISYNTH_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 */
> -        if(avs->flags & AVISYNTH_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;
> +            switch (avs_library.avs_prop_get_int(avs->env, avsmap, "_Transfer", 0, &error)) {
>               case 1:
> -                st->codecpar->color_space = AVCOL_SPC_BT709;
> +                st->codecpar->color_trc = AVCOL_TRC_BT709;
>                   break;
>               case 2:
> -                st->codecpar->color_space = AVCOL_SPC_UNSPECIFIED;
> +                st->codecpar->color_trc = AVCOL_TRC_UNSPECIFIED;
>                   break;
>               case 4:
> -                st->codecpar->color_space = AVCOL_SPC_FCC;
> +                st->codecpar->color_trc = AVCOL_TRC_GAMMA22;
>                   break;
>               case 5:
> -                st->codecpar->color_space = AVCOL_SPC_BT470BG;
> +                st->codecpar->color_trc = AVCOL_TRC_GAMMA28;
>                   break;
>               case 6:
> -                st->codecpar->color_space = AVCOL_SPC_SMPTE170M;
> +                st->codecpar->color_trc = AVCOL_TRC_SMPTE170M;
>                   break;
>               case 7:
> -                st->codecpar->color_space = AVCOL_SPC_SMPTE240M;
> +                st->codecpar->color_trc = AVCOL_TRC_SMPTE240M;
>                   break;
>               case 8:
> -                st->codecpar->color_space = AVCOL_SPC_YCGCO;
> +                st->codecpar->color_trc = AVCOL_TRC_LINEAR;
>                   break;
>               case 9:
> -                st->codecpar->color_space = AVCOL_SPC_BT2020_NCL;
> +                st->codecpar->color_trc = AVCOL_TRC_LOG;
>                   break;
>               case 10:
> -                st->codecpar->color_space = AVCOL_SPC_BT2020_CL;
> +                st->codecpar->color_trc = AVCOL_TRC_LOG_SQRT;
>                   break;
>               case 11:
> -                st->codecpar->color_space = AVCOL_SPC_SMPTE2085;
> +                st->codecpar->color_trc = AVCOL_TRC_IEC61966_2_4;
>                   break;
>               case 12:
> -                st->codecpar->color_space = AVCOL_SPC_CHROMA_DERIVED_NCL;
> +                st->codecpar->color_trc = AVCOL_TRC_BT1361_ECG;
>                   break;
>               case 13:
> -                st->codecpar->color_space = AVCOL_SPC_CHROMA_DERIVED_CL;
> +                st->codecpar->color_trc = AVCOL_TRC_IEC61966_2_1;
>                   break;
>               case 14:
> -                st->codecpar->color_space = AVCOL_SPC_ICTCP;
> +                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_space = AVCOL_SPC_UNSPECIFIED;
> +                st->codecpar->color_trc = AVCOL_TRC_UNSPECIFIED;
>               }
>           }
> +
> +        /* Matrix coefficients */
> +        if(avs->flags & AVISYNTH_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;
> +                }
> +            }
>           }
>   
>           /* Chroma Location */
>           if(avs->flags & AVISYNTH_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:
> +            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->flags & AVISYNTH_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 };
> +            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);

Pushed.
_______________________________________________
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".

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-09-04 19:09 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-31  0:23 [FFmpeg-devel] [PATCH 0/3 v2] avisynth: add user-selectable flags Stephen Hutchinson
2022-08-31  0:23 ` [FFmpeg-devel] [PATCH 1/3 v2] avformat/avisynth: read _SARNum/_SARDen from frame properties Stephen Hutchinson
2022-09-04 19:08   ` Stephen Hutchinson
2022-08-31  0:23 ` [FFmpeg-devel] [PATCH 2/3 v2] avformat/avisynth: implement avisynth_flags option Stephen Hutchinson
2022-09-04 19:08   ` Stephen Hutchinson
2022-08-31  0:23 ` [FFmpeg-devel] [PATCH 3/3 v2] avformat/avisynth: reindent Stephen Hutchinson
2022-09-04 19:08   ` Stephen Hutchinson

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git