* [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
* 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
* [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
* 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
* [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 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