diff options
author | arpi_esp <arpi_esp@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-04-15 03:40:37 +0000 |
---|---|---|
committer | arpi_esp <arpi_esp@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-04-15 03:40:37 +0000 |
commit | 2ba092874905669f0f8e8fda1b043c73e50db716 (patch) | |
tree | f6fb6813964153e16bad3a110c330a3f57ca7f5f /demux_avi.c | |
parent | 4eca33639f3d69767e15c92b35fc7387453ae126 (diff) | |
download | mpv-2ba092874905669f0f8e8fda1b043c73e50db716.tar.bz2 mpv-2ba092874905669f0f8e8fda1b043c73e50db716.tar.xz |
new stream selection code
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@427 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'demux_avi.c')
-rw-r--r-- | demux_avi.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/demux_avi.c b/demux_avi.c index 9a847fec23..3a1b564f4c 100644 --- a/demux_avi.c +++ b/demux_avi.c @@ -17,8 +17,32 @@ static inline int avi_stream_id(unsigned int id){ // Select ds from ID static inline demux_stream_t* demux_avi_select_stream(demuxer_t *demux,unsigned int id){ int stream_id=avi_stream_id(id); - if(stream_id==demux->audio->id) return demux->audio; - if(stream_id==demux->video->id) return demux->video; + +// printf("demux_avi_select_stream(%d) {a:%d/v:%d}\n",stream_id, +// demux->audio->id,demux->video->id); + + if(demux->video->id==-1) + if(avi_header.v_streams[stream_id]) + demux->video->id=stream_id; + + if(demux->audio->id==-1) + if(avi_header.a_streams[stream_id]) + demux->audio->id=stream_id; + + if(stream_id==demux->audio->id){ + if(!demux->audio->sh){ + demux->audio->sh=avi_header.a_streams[stream_id]; + if(verbose) printf("Auto-selected AVI audio ID = %d\n",demux->audio->id); + } + return demux->audio; + } + if(stream_id==demux->video->id){ + if(!demux->video->sh){ + demux->video->sh=avi_header.v_streams[stream_id]; + if(verbose) printf("Auto-selected AVI video ID = %d\n",demux->video->id); + } + return demux->video; + } if(id!=mmioFOURCC('J','U','N','K')){ // unknown if(verbose>=2) printf("Unknown chunk: %.4s (%X)\n",&id,id); |