From: The M. M. M. <tm...@us...> - 2002-10-01 03:52:56
|
Update of /cvsroot/xine/xine-lib/src/demuxers In directory usw-pr-cvs1:/tmp/cvs-serv9504 Modified Files: demux_qt.c Log Message: err...bring back ability for QT demuxer to play from start, and fix temporal position reporting Index: demux_qt.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/demuxers/demux_qt.c,v retrieving revision 1.89 retrieving revision 1.90 diff -u -r1.89 -r1.90 --- demux_qt.c 30 Sep 2002 01:16:15 -0000 1.89 +++ demux_qt.c 1 Oct 2002 03:52:53 -0000 1.90 @@ -1600,7 +1600,7 @@ while (remaining_sample_bytes) { buf = this->audio_fifo->buffer_pool_alloc (this->audio_fifo); buf->type = this->qt->audio_type; - buf->input_pos = this->qt->frames[i].offset; + buf->input_pos = this->qt->frames[i].offset - this->data_start; buf->input_length = this->data_size; buf->input_time = this->qt->frames[i].pts / 90000; buf->pts = this->qt->frames[i].pts; @@ -1685,7 +1685,7 @@ this->data_size = this->qt->frames[this->qt->frame_count - 1].offset + this->qt->frames[this->qt->frame_count - 1].size - - this->data_size; + this->data_start; this->bih.biWidth = this->qt->video_width; this->bih.biHeight = this->qt->video_height; @@ -1943,10 +1943,11 @@ } /* search back in the table for the nearest keyframe */ - while (best_index--) { + while (best_index) { if (this->qt->frames[best_index].keyframe) { break; } + best_index--; } /* not done yet; now that the nearest keyframe has been found, seek @@ -1954,11 +1955,12 @@ * that of the keyframe */ this->waiting_for_keyframe = 1; keyframe_pts = this->qt->frames[best_index].pts; - while (best_index--) { + while (best_index) { if ((this->qt->frames[best_index].type == MEDIA_AUDIO) && (this->qt->frames[best_index].pts < keyframe_pts)) { break; } + best_index--; } this->current_frame = best_index; |