diff options
author | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2002-05-20 16:58:02 +0000 |
---|---|---|
committer | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2002-05-20 16:58:02 +0000 |
commit | f21031711ce3524cc9480fedf3e6103df831ed28 (patch) | |
tree | 4f7319be85b0b5a41a4ec2ee66dc9ee8b98a1d6e | |
parent | f3efa8fc811f73b65a9c36ff33582a9f0900359d (diff) | |
download | xine-lib-f21031711ce3524cc9480fedf3e6103df831ed28.tar.gz xine-lib-f21031711ce3524cc9480fedf3e6103df831ed28.tar.bz2 |
- check for keyframes past start_pos
- fix qt demux loop deadlock
CVS patchset: 1913
CVS date: 2002/05/20 16:58:02
-rw-r--r-- | src/demuxers/demux_avi.c | 12 | ||||
-rw-r--r-- | src/demuxers/demux_qt.c | 6 |
2 files changed, 9 insertions, 9 deletions
diff --git a/src/demuxers/demux_avi.c b/src/demuxers/demux_avi.c index 93a871618..053a6d891 100644 --- a/src/demuxers/demux_avi.c +++ b/src/demuxers/demux_avi.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: demux_avi.c,v 1.86 2002/05/20 03:15:45 miguelfreitas Exp $ + * $Id: demux_avi.c,v 1.87 2002/05/20 16:58:02 miguelfreitas Exp $ * * demultiplexer for avi streams * @@ -351,14 +351,12 @@ static long audio_pos_stopper(demux_avi_t *this, void *data) static long start_pos_stopper(demux_avi_t *this, void *data) { off_t start_pos = *(off_t *)data; + long maxframe = this->avi->video_idx.video_frames - 1; - if (this->avi->video_idx.video_frames > 0) { - long maxframe = this->avi->video_idx.video_frames - 1; - video_index_entry_t *vie = - &(this->avi->video_idx.vindex[maxframe]); - if ( vie->pos >= start_pos ) { + while( maxframe >= 0 && this->avi->video_idx.vindex[maxframe].pos >= start_pos ) { + if ( this->avi->video_idx.vindex[maxframe].flags & AVIIF_KEYFRAME ) return 1; - } + maxframe--; } return -1; } diff --git a/src/demuxers/demux_qt.c b/src/demuxers/demux_qt.c index d7a354c90..46e2dce82 100644 --- a/src/demuxers/demux_qt.c +++ b/src/demuxers/demux_qt.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: demux_qt.c,v 1.30 2002/05/16 21:45:10 f1rmb Exp $ + * $Id: demux_qt.c,v 1.31 2002/05/20 16:58:02 miguelfreitas Exp $ * * demultiplexer for mpeg-4 system (aka quicktime) streams, based on: * @@ -3790,8 +3790,10 @@ static void *demux_qt_loop (void *this_gen) { /* main demuxer loop */ while(this->status == DEMUX_OK) { - if (idx >= this->num_index_entries) + if (idx >= this->num_index_entries) { + this->status = DEMUX_FINISHED; break; + } is_audio = (this->index[idx].type & BUF_MAJOR_MASK) == BUF_AUDIO_BASE; |