summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarton Balint <cus@passwd.hu>2015-05-12 02:22:02 +0200
committerMichael Niedermayer <michaelni@gmx.at>2015-05-12 13:32:23 +0200
commit93cc5ca7ed14a9fa7e7ed3503743d95594466cd6 (patch)
treef3521c5cfffdbeb40ecda92365dbe8c1c4ec5a59
parent37efad4e5b6631ad902e8ae3d19e850037d22efb (diff)
lavf/img2dec: add option to disable pattern matching
Signed-off-by: Marton Balint <cus@passwd.hu> Reviewed-by: Stefano Sabatini <stefasab@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--doc/demuxers.texi4
-rw-r--r--libavformat/img2.h3
-rw-r--r--libavformat/img2dec.c9
-rw-r--r--libavformat/version.h2
4 files changed, 13 insertions, 5 deletions
diff --git a/doc/demuxers.texi b/doc/demuxers.texi
index 3f7c45e843..b7ddebb9a9 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
+@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 e4bcb26da8..f6b9dd9220 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 ba2911074b..0830f0073c 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 071fe5dcaf..e16d316286 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, \