From 256ab3ed9d1b77e3a6d5dbb46b760908d1eceed4 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Tue, 23 Feb 2010 17:09:53 +0000 Subject: [PATCH] Dont modify wanted_stream. Originally committed as revision 22007 to svn://svn.ffmpeg.org/ffmpeg/trunk --- ffplay.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/ffplay.c b/ffplay.c index 0fec035773..f79e3acb04 100644 --- a/ffplay.c +++ b/ffplay.c @@ -1980,6 +1980,7 @@ static int decode_thread(void *arg) AVFormatContext *ic; int err, i, ret; int st_index[CODEC_TYPE_NB]; + int st_count[CODEC_TYPE_NB]={0}; AVPacket pkt1, *pkt = &pkt1; AVFormatParameters params, *ap = ¶ms; int eof=0; @@ -2045,18 +2046,20 @@ static int decode_thread(void *arg) for(i = 0; i < ic->nb_streams; i++) { AVCodecContext *avctx = ic->streams[i]->codec; ic->streams[i]->discard = AVDISCARD_ALL; + if(avctx->codec_type >= (unsigned)CODEC_TYPE_NB) + exit(1); + if(st_count[avctx->codec_type]++ != wanted_stream[avctx->codec_type] && wanted_stream[avctx->codec_type] >= 0) + continue; + switch(avctx->codec_type) { case CODEC_TYPE_AUDIO: - if (wanted_stream[CODEC_TYPE_AUDIO]-- >= 0 && !audio_disable) + if (!audio_disable) st_index[CODEC_TYPE_AUDIO] = i; break; case CODEC_TYPE_VIDEO: - if (wanted_stream[CODEC_TYPE_VIDEO]-- >= 0 && !video_disable) - st_index[CODEC_TYPE_VIDEO] = i; - break; case CODEC_TYPE_SUBTITLE: - if (wanted_stream[CODEC_TYPE_SUBTITLE]-- >= 0 && !video_disable) - st_index[CODEC_TYPE_SUBTITLE] = i; + if (!video_disable) + st_index[avctx->codec_type] = i; break; default: break;