From 2c00106c2b07d38ec90cc9906aef2437df6f1ad7 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michaelni@gmx.at>
Date: Tue, 5 Sep 2006 19:23:32 +0000
Subject: [PATCH] ignore index parameter to ignore the ODML index in avi

Originally committed as revision 6177 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 ffmpeg.c               | 5 -----
 libavformat/avformat.h | 1 +
 libavformat/avidec.c   | 2 +-
 libavformat/utils.c    | 3 +++
 4 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/ffmpeg.c b/ffmpeg.c
index 1bc63ac4d07..6f4fcb2c14d 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -162,7 +162,6 @@ static int frame_skip_factor= 0;
 static int frame_skip_exp= 0;
 static int loop_input = 0;
 static int loop_output = AVFMT_NOOUTPUTLOOP;
-static int genpts = 0;
 static int qp_hist = 0;
 
 static int gop_size = 12;
@@ -2816,9 +2815,6 @@ static void opt_input_file(const char *filename)
 
     ic->loop_input = loop_input;
 
-    if(genpts)
-        ic->flags|= AVFMT_FLAG_GENPTS;
-
     /* If not enough info to get the stream parameters, we decode the
        first frames to get it. (used in mpeg case for example) */
     ret = av_find_stream_info(ic);
@@ -4080,7 +4076,6 @@ const OptionDef options[] = {
     { "skip_factor", OPT_INT | HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)&frame_skip_factor}, "frame skip factor", "factor" },
     { "skip_exp", OPT_INT | HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)&frame_skip_exp}, "frame skip exponent", "exponent" },
     { "newvideo", OPT_VIDEO, {(void*)opt_new_video_stream}, "add a new video stream to the current output stream" },
-    { "genpts", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, { (void *)&genpts }, "generate pts" },
     { "qphist", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, { (void *)&qp_hist }, "show QP histogram" },
 
     /* audio options */
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index ad16898cf46..ff6166ab04f 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -342,6 +342,7 @@ typedef struct AVFormatContext {
 
     int flags;
 #define AVFMT_FLAG_GENPTS       0x0001 ///< generate pts if missing even if it requires parsing future frames
+#define AVFMT_FLAG_IGNIDX       0x0002 ///< ignore index
 
     int loop_input;
     /* decoding: size of data to probe; encoding unused */
diff --git a/libavformat/avidec.c b/libavformat/avidec.c
index 8744be685a8..0e03365edeb 100644
--- a/libavformat/avidec.c
+++ b/libavformat/avidec.c
@@ -456,7 +456,7 @@ static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap)
             break;
         case MKTAG('i', 'n', 'd', 'x'):
             i= url_ftell(pb);
-            if(!url_is_streamed(pb)){
+            if(!url_is_streamed(pb) && !(s->flags & AVFMT_FLAG_IGNIDX)){
                 read_braindead_odml_indx(s, 0);
             }
             url_fseek(pb, i+size, SEEK_SET);
diff --git a/libavformat/utils.c b/libavformat/utils.c
index dfb7cb88a6a..ea447c1fa7e 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -466,6 +466,9 @@ static const char* format_to_name(void* ptr)
 
 static const AVOption options[]={
 {"probesize", NULL, OFFSET(probesize), FF_OPT_TYPE_INT, DEFAULT, 32, INT_MAX, D},
+{"fflags", NULL, OFFSET(flags), FF_OPT_TYPE_FLAGS, DEFAULT, INT_MIN, INT_MAX, D, "fflags"},
+{"ignidx", "ignore index", 0, FF_OPT_TYPE_CONST, AVFMT_FLAG_IGNIDX, INT_MIN, INT_MAX, D, "fflags"},
+{"genpts", "generate pts", 0, FF_OPT_TYPE_CONST, AVFMT_FLAG_GENPTS, INT_MIN, INT_MAX, D, "fflags"},
 {NULL},
 };
 
-- 
GitLab