[FFmpeg-devel] [PATCH] lavf/img2dec: add option to disable pattern matching
Stefano Sabatini
stefasab at gmail.com
Tue May 12 13:26:56 CEST 2015
On date Tuesday 2015-05-12 02:22:02 +0200, Marton Balint encoded:
> Signed-off-by: Marton Balint <cus at passwd.hu>
> ---
> doc/demuxers.texi | 4 ++++
> libavformat/img2.h | 3 ++-
> libavformat/img2dec.c | 9 ++++++---
> libavformat/version.h | 2 +-
> 4 files changed, 13 insertions(+), 5 deletions(-)
>
> diff --git a/doc/demuxers.texi b/doc/demuxers.texi
> index 3f7c45e..b7ddebb 100644
> --- a/doc/demuxers.texi
> +++ b/doc/demuxers.texi
> @@ -258,6 +258,10 @@ Select the pattern type used to interpret the provided filename.
>
> @var{pattern_type} accepts one of the following values.
> @table @option
> + at item none
> +Disable pattern matching, therefore the video will only contain the specified
> +image. You should use this option if you do not want to create sequences from
> +multiple images and your filenames may contain special pattern characters.
> @item sequence
> Select a sequence pattern type, used to specify a sequence of files
> indexed by sequential numbers.
> diff --git a/libavformat/img2.h b/libavformat/img2.h
> index e4bcb26..f6b9dd9 100644
> --- a/libavformat/img2.h
> +++ b/libavformat/img2.h
> @@ -33,7 +33,8 @@
> enum PatternType {
> PT_GLOB_SEQUENCE,
> PT_GLOB,
> - PT_SEQUENCE
> + PT_SEQUENCE,
> + PT_NONE
> };
>
> typedef struct VideoDemuxData {
> diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c
> index ba29110..0830f00 100644
> --- a/libavformat/img2dec.c
> +++ b/libavformat/img2dec.c
> @@ -177,7 +177,7 @@ static int img_read_probe(AVProbeData *p)
> int ff_img_read_header(AVFormatContext *s1)
> {
> VideoDemuxData *s = s1->priv_data;
> - int first_index, last_index;
> + int first_index = 1, last_index = 1;
> AVStream *st;
> enum AVPixelFormat pix_fmt = AV_PIX_FMT_NONE;
>
> @@ -282,7 +282,7 @@ int ff_img_read_header(AVFormatContext *s1)
> "is not supported by this libavformat build\n");
> return AVERROR(ENOSYS);
> #endif
> - } else if (s->pattern_type != PT_GLOB_SEQUENCE) {
> + } else if (s->pattern_type != PT_GLOB_SEQUENCE && s->pattern_type != PT_NONE) {
> av_log(s1, AV_LOG_ERROR,
> "Unknown value '%d' for pattern_type option\n", s->pattern_type);
> return AVERROR(EINVAL);
> @@ -377,7 +377,9 @@ int ff_img_read_packet(AVFormatContext *s1, AVPacket *pkt)
> }
> if (s->img_number > s->img_last)
> return AVERROR_EOF;
> - if (s->use_glob) {
> + if (s->pattern_type == PT_NONE) {
> + av_strlcpy(filename_bytes, s->path, sizeof(filename_bytes));
> + } else if (s->use_glob) {
> #if HAVE_GLOB
> filename = s->globstate.gl_pathv[s->img_number];
> #endif
> @@ -538,6 +540,7 @@ const AVOption ff_img_options[] = {
> { "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 },
> diff --git a/libavformat/version.h b/libavformat/version.h
> index 071fe5d..e16d316 100644
> --- a/libavformat/version.h
> +++ b/libavformat/version.h
> @@ -31,7 +31,7 @@
>
> #define LIBAVFORMAT_VERSION_MAJOR 56
> #define LIBAVFORMAT_VERSION_MINOR 33
> -#define LIBAVFORMAT_VERSION_MICRO 100
> +#define LIBAVFORMAT_VERSION_MICRO 101
>
> #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
> LIBAVFORMAT_VERSION_MINOR, \
LGTM.
--
FFmpeg = Fierce & Fostering Meaningless Portable Exuberant Giant
More information about the ffmpeg-devel
mailing list