[FFmpeg-devel] [PATCH] avformat/img2dec: do not interpret the filename by default if a IO context has been opened

wm4 nfxjfg at googlemail.com
Wed Jan 20 11:46:00 CET 2016


On Wed, 20 Jan 2016 11:21:44 +0100
Michael Niedermayer <michaelni at gmx.at> wrote:

> From: Michael Niedermayer <michael at niedermayer.cc>
> 
> With this, user applications which use custom IO and have set a IO context will not have
> their already opened IO context ignored and glob/seq being interpreted
> 
> Comments and tests from maintainers of user apps are welcome!

"image2" never worked for me with custom I/O for reasons I've never
further analyzed, and also I'm blacklisting it during probing.

> 
> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> ---
>  libavformat/img2.h    |    3 ++-
>  libavformat/img2dec.c |    9 ++++++++-
>  2 files changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/libavformat/img2.h b/libavformat/img2.h
> index deebcc3..0e5b374 100644
> --- a/libavformat/img2.h
> +++ b/libavformat/img2.h
> @@ -34,7 +34,8 @@ enum PatternType {
>      PT_GLOB_SEQUENCE,
>      PT_GLOB,
>      PT_SEQUENCE,
> -    PT_NONE
> +    PT_NONE,
> +    PT_DEFAULT
>  };
>  
>  typedef struct VideoDemuxData {
> diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c
> index db4b4b7..0c448dc 100644
> --- a/libavformat/img2dec.c
> +++ b/libavformat/img2dec.c
> @@ -225,6 +225,13 @@ int ff_img_read_header(AVFormatContext *s1)
>      }
>  
>      if (!s->is_pipe) {
> +        if (s->pattern_type == PT_DEFAULT) {
> +            if (s1->pb) {
> +                s->pattern_type = PT_NONE;
> +            } else
> +                s->pattern_type = PT_GLOB_SEQUENCE;
> +        }
> +
>          if (s->pattern_type == PT_GLOB_SEQUENCE) {
>          s->use_glob = is_glob(s->path);
>          if (s->use_glob) {
> @@ -557,7 +564,7 @@ const AVOption ff_img_options[] = {
>      { "framerate",    "set the video framerate",             OFFSET(framerate),    AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, 0,   DEC },
>      { "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_GLOB_SEQUENCE}, 0,       INT_MAX, DEC, "pattern_type"},
> +    { "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" },

The patch seems like a good idea.


More information about the ffmpeg-devel mailing list