aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2005-01-22 01:48:11 +0000
committerMichael Niedermayer <michaelni@gmx.at>2005-01-22 01:48:11 +0000
commitb4aea108ebe32a190e7f8ec6bddc1214a46c4456 (patch)
tree3b186b5b70dd23451d539b81829139970d7fa003 /libavformat
parent4cfbbbde4272d3216c0389df2111dfddabf65f1a (diff)
downloadffmpeg-b4aea108ebe32a190e7f8ec6bddc1214a46c4456.tar.gz
support discarding of uninterresting packets
Originally committed as revision 3858 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/avformat.h2
-rw-r--r--libavformat/avidec.c5
2 files changed, 7 insertions, 0 deletions
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 67a2166f8c..d4daa03c3a 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -227,6 +227,8 @@ typedef struct AVStream {
int pts_wrap_bits; /* number of bits in pts (used for wrapping control) */
/* ffmpeg.c private use */
int stream_copy; /* if TRUE, just copy stream */
+ int discard; ///< if 1, packets can be discarded at will and dont need to be demuxed
+ //FIXME move stuff to a flags field?
/* quality, as it has been removed from AVCodecContext and put in AVVideoFrame
* MN:dunno if thats the right place, for it */
float quality;
diff --git a/libavformat/avidec.c b/libavformat/avidec.c
index f394bfc3fa..d489ddfbaa 100644
--- a/libavformat/avidec.c
+++ b/libavformat/avidec.c
@@ -449,6 +449,11 @@ resync:
AVIStream *ast;
st = s->streams[n];
ast = st->priv_data;
+
+ if(st->discard){
+ url_fskip(pb, size);
+ goto resync;
+ }
if( ((ast->prefix_count<5 || sync+9 > i) && d[2]<128 && d[3]<128) ||
d[2]*256+d[3] == ast->prefix /*||