Re: [FFmpeg-devel] [PATCH]lavf/img2dec: Split img2 and img2pipe options
On 10-02-2019 11:31 PM, Carl Eugen Hoyos wrote: 2019-02-10 18:44 GMT+01:00, Michael Niedermayer : On Sat, Feb 09, 2019 at 01:58:06PM +0100, Carl Eugen Hoyos wrote: Hi! Currently if the "loop" option gets specified for -f image2pipe, there is no indication for the user that the option will not work, patch attached. Please comment, Carl Eugen img2dec.c | 33 - 1 file changed, 20 insertions(+), 13 deletions(-) eb41db12f922fc0780a808df6d8f832620ef9d65 0001-lavf-img2dec-Split-img2-and-img2pipe-options.patch From 21b11da9af5166e4bda7398a471a1e1a49352ac3 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Sat, 9 Feb 2019 13:49:51 +0100 Subject: [PATCH] lavf/img2dec: Split img2 and img2pipe options. --- libavformat/img2dec.c | 33 - 1 file changed, 20 insertions(+), 13 deletions(-) this breaks -loop ./ffmpeg -loop 1 -i ~/fatesamples/png1/lena-rgb24.png -t 1 test.avi I moved the option that is obviously needed for the auto-detecting demuxers. The original issue was that the image2pipe demuxer happily accepts "loop" but ignores it - confusing users, I suggest to keep ignoring it and print a warning for is_pipe && loop in read_header. Gyan ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH]lavf/img2dec: Split img2 and img2pipe options
2019-02-10 18:44 GMT+01:00, Michael Niedermayer : > On Sat, Feb 09, 2019 at 01:58:06PM +0100, Carl Eugen Hoyos wrote: >> Hi! >> >> Currently if the "loop" option gets specified for -f image2pipe, there is >> no indication for the user that the option will not work, patch attached. >> >> Please comment, Carl Eugen > >> img2dec.c | 33 - >> 1 file changed, 20 insertions(+), 13 deletions(-) >> eb41db12f922fc0780a808df6d8f832620ef9d65 >> 0001-lavf-img2dec-Split-img2-and-img2pipe-options.patch >> From 21b11da9af5166e4bda7398a471a1e1a49352ac3 Mon Sep 17 00:00:00 2001 >> From: Carl Eugen Hoyos >> Date: Sat, 9 Feb 2019 13:49:51 +0100 >> Subject: [PATCH] lavf/img2dec: Split img2 and img2pipe options. >> >> --- >> libavformat/img2dec.c | 33 - >> 1 file changed, 20 insertions(+), 13 deletions(-) > > this breaks -loop > > ./ffmpeg -loop 1 -i ~/fatesamples/png1/lena-rgb24.png -t 1 test.avi I moved the option that is obviously needed for the auto-detecting demuxers. The original issue was that the image2pipe demuxer happily accepts "loop" but ignores it - confusing users, I wonder if the only solution is to split the options between image2pipe and the auto-detecting demuxers or if there is another solution (or if both patches should be reverted). Sorry, Carl Eugen ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH]lavf/img2dec: Split img2 and img2pipe options
On Sat, Feb 09, 2019 at 01:58:06PM +0100, Carl Eugen Hoyos wrote: > Hi! > > Currently if the "loop" option gets specified for -f image2pipe, there is > no indication for the user that the option will not work, patch attached. > > Please comment, Carl Eugen > img2dec.c | 33 - > 1 file changed, 20 insertions(+), 13 deletions(-) > eb41db12f922fc0780a808df6d8f832620ef9d65 > 0001-lavf-img2dec-Split-img2-and-img2pipe-options.patch > From 21b11da9af5166e4bda7398a471a1e1a49352ac3 Mon Sep 17 00:00:00 2001 > From: Carl Eugen Hoyos > Date: Sat, 9 Feb 2019 13:49:51 +0100 > Subject: [PATCH] lavf/img2dec: Split img2 and img2pipe options. > > --- > libavformat/img2dec.c | 33 - > 1 file changed, 20 insertions(+), 13 deletions(-) this breaks -loop ./ffmpeg -loop 1 -i ~/fatesamples/png1/lena-rgb24.png -t 1 test.avi [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Observe your enemies, for they first find out your faults. -- Antisthenes signature.asc Description: PGP signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH]lavf/img2dec: Split img2 and img2pipe options
2019-02-10 1:55 GMT+01:00, Jan Ekström : > On Sat, Feb 9, 2019 at 2:58 PM Carl Eugen Hoyos wrote: >> >> Hi! >> >> Currently if the "loop" option gets specified for -f image2pipe, there is >> no indication for the user that the option will not work, patch attached. >> >> Please comment, Carl Eugen > > Seems like a good idea. > > The reason for the pipe version's AVOption structure to be outside of > the if is the IMAGEAUTO_DEMUXER macro, so I guess unless we like > really long #ifs then this is as good as it gets. An alternative is to move the options into the IMAGEAUTO_DEMUXER macro but I did not see an advantage. > Quickly checked and it seems like generally the separation of options > seems correct... but I'm not sure about "ts_from_file" . The filename > variable will probably be full of \0s at the point where stat() is > called, as it's only set to something else under "!s->is_pipe" branch > in the beginning of the function if I'm seeing correctly - thus making > this option effectively unusable under the _pipe demuxers? Definitely, I left ts_from_file where it was and pushed. Thank you, Carl Eugen ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH]lavf/img2dec: Split img2 and img2pipe options
On Sat, Feb 9, 2019 at 2:58 PM Carl Eugen Hoyos wrote: > > Hi! > > Currently if the "loop" option gets specified for -f image2pipe, there is > no indication for the user that the option will not work, patch attached. > > Please comment, Carl Eugen Seems like a good idea. The reason for the pipe version's AVOption structure to be outside of the if is the IMAGEAUTO_DEMUXER macro, so I guess unless we like really long #ifs then this is as good as it gets. Quickly checked and it seems like generally the separation of options seems correct... but I'm not sure about "ts_from_file" . The filename variable will probably be full of \0s at the point where stat() is called, as it's only set to something else under "!s->is_pipe" branch in the beginning of the function if I'm seeing correctly - thus making this option effectively unusable under the _pipe demuxers? Jan ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH]lavf/img2dec: Split img2 and img2pipe options
Hi! Currently if the "loop" option gets specified for -f image2pipe, there is no indication for the user that the option will not work, patch attached. Please comment, Carl Eugen From 21b11da9af5166e4bda7398a471a1e1a49352ac3 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Sat, 9 Feb 2019 13:49:51 +0100 Subject: [PATCH] lavf/img2dec: Split img2 and img2pipe options. --- libavformat/img2dec.c | 33 - 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c index e82b1df..c1568c1 100644 --- a/libavformat/img2dec.c +++ b/libavformat/img2dec.c @@ -564,29 +564,29 @@ static int img_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp #define OFFSET(x) offsetof(VideoDemuxData, x) #define DEC AV_OPT_FLAG_DECODING_PARAM +#define COMMON_OPTIONS \ +{ "framerate","set the video framerate", OFFSET(framerate),AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, INT_MAX, DEC }, \ +{ "pixel_format", "set video pixel format", OFFSET(pixel_format), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC }, \ +{ "video_size", "set video size", OFFSET(width),AV_OPT_TYPE_IMAGE_SIZE, {.str = NULL}, 0, 0, DEC }, \ +{ "ts_from_file", "set frame timestamp from file's one", OFFSET(ts_from_file), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 2, DEC, "ts_type" }, \ +{ "none", "none", 0, AV_OPT_TYPE_CONST,{.i64 = 0 }, 0, 2, DEC, "ts_type" }, \ +{ "sec", "second precision", 0, AV_OPT_TYPE_CONST,{.i64 = 1 }, 0, 2, DEC, "ts_type" }, \ +{ "ns", "nano second precision", 0, AV_OPT_TYPE_CONST,{.i64 = 2 }, 0, 2, DEC, "ts_type" }, + +#if CONFIG_IMAGE2_DEMUXER const AVOption ff_img_options[] = { -{ "framerate","set the video framerate", OFFSET(framerate),AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, INT_MAX, DEC }, +COMMON_OPTIONS { "loop", "force loop over input file sequence", OFFSET(loop), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, DEC }, - { "pattern_type", "set pattern type",OFFSET(pattern_type), AV_OPT_TYPE_INT,{.i64=PT_DEFAULT}, 0, INT_MAX, DEC, "pattern_type"}, { "glob_sequence","select glob/sequence pattern type", 0, AV_OPT_TYPE_CONST, {.i64=PT_GLOB_SEQUENCE}, INT_MIN, INT_MAX, DEC, "pattern_type" }, { "glob", "select glob pattern type",0, AV_OPT_TYPE_CONST, {.i64=PT_GLOB }, INT_MIN, INT_MAX, DEC, "pattern_type" }, { "sequence", "select sequence pattern type",0, AV_OPT_TYPE_CONST, {.i64=PT_SEQUENCE }, INT_MIN, INT_MAX, DEC, "pattern_type" }, { "none", "disable pattern matching",0, AV_OPT_TYPE_CONST, {.i64=PT_NONE }, INT_MIN, INT_MAX, DEC, "pattern_type" }, - -{ "pixel_format", "set video pixel format", OFFSET(pixel_format), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC }, { "start_number", "set first number in the sequence",OFFSET(start_number), AV_OPT_TYPE_INT,{.i64 = 0 }, INT_MIN, INT_MAX, DEC }, { "start_number_range", "set range for looking at the first sequence number", OFFSET(start_number_range), AV_OPT_TYPE_INT, {.i64 = 5}, 1, INT_MAX, DEC }, -{ "video_size", "set video size", OFFSET(width),AV_OPT_TYPE_IMAGE_SIZE, {.str = NULL}, 0, 0, DEC }, -{ "frame_size", "force frame size in bytes", OFFSET(frame_size), AV_OPT_TYPE_INT,{.i64 = 0 }, 0, INT_MAX, DEC }, -{ "ts_from_file", "set frame timestamp from file's one", OFFSET(ts_from_file), AV_OPT_TYPE_INT,{.i64 = 0 }, 0, 2, DEC, "ts_type" }, -{ "none", "none", 0, AV_OPT_TYPE_CONST,{.i64 = 0 }, 0, 2, DEC, "ts_type" }, -{ "sec", "second precision", 0, AV_OPT_TYPE_CONST,{.i64 = 1 }, 0, 2, DEC, "ts_type" }, -{ "ns", "nano second precision", 0, AV_OPT_TYPE_CONST,{.i64 = 2 }, 0, 2, DEC, "ts_type" }, { NULL }, }; -#if CONFIG_IMAGE2_DEMUXER static const AVClass img2_class = { .class_name = "image2 demuxer", .item_name = av_default_item_name, @@ -606,11 +606,18 @@ AVInputFormat ff_image2_demuxer = { .priv_class = _class, }; #endif + +const AVOption ff_img2pipe_options[] = { +COMMON_OPTIONS +{ "frame_size", "force frame size in bytes", OFFSET(frame_size), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, INT_MAX, DEC }, +{ NULL }, +}; + #if CONFIG_IMAGE2PIPE_DEMUXER static const AVClass img2pipe_class = { .class_name = "image2pipe demuxer", .item_name = av_default_item_name, -.option = ff_img_options, +.option = ff_img2pipe_options, .version= LIBAVUTIL_VERSION_INT, }; AVInputFormat ff_image2pipe_demuxer = { @@ -1023,7 +1030,7 @@ static int gif_probe(AVProbeData *p) static const AVClass imgname ## _class = {\ .class_name =