support discarding of uninterresting packets

Originally committed as revision 3858 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Michael Niedermayer 2005-01-22 01:48:11 +00:00
parent 4cfbbbde42
commit b4aea108eb
3 changed files with 11 additions and 0 deletions

View File

@ -2900,6 +2900,8 @@ static void opt_input_file(const char *filename)
//fprintf(stderr, "\nInput Audio channels: %d", enc->channels);
audio_channels = enc->channels;
audio_sample_rate = enc->sample_rate;
if(audio_disable)
ic->streams[i]->discard= 1;
break;
case CODEC_TYPE_VIDEO:
frame_height = enc->height;
@ -2933,6 +2935,8 @@ static void opt_input_file(const char *filename)
frame_rate_base = rfps_base;
enc->rate_emu = rate_emu;
if(video_disable)
ic->streams[i]->discard= 1;
break;
case CODEC_TYPE_DATA:
break;

View File

@ -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;

View File

@ -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 /*||