From: The M. M. M. <tm...@us...> - 2002-10-31 02:23:01
|
Update of /cvsroot/xine/xine-lib/src/demuxers In directory usw-pr-cvs1:/tmp/cvs-serv27399 Modified Files: demux_wc3movie.c Log Message: pts variable shuffle Index: demux_wc3movie.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/demuxers/demux_wc3movie.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- demux_wc3movie.c 28 Oct 2002 03:24:43 -0000 1.21 +++ demux_wc3movie.c 31 Oct 2002 02:22:58 -0000 1.22 @@ -101,6 +101,8 @@ off_t data_start; off_t data_size; + int64_t video_pts; + char last_mrl[1024]; } demux_mve_t; @@ -156,7 +158,6 @@ buf_element_t *buf = NULL; int64_t text_pts = 0; int64_t audio_pts = 0; - int64_t video_pts = 0; unsigned char preamble[PREAMBLE_SIZE]; unsigned int chunk_tag; unsigned int chunk_size; @@ -184,7 +185,7 @@ if (this->seek_flag) { /* reset pts */ - video_pts = 0; + this->video_pts = 0; xine_demux_control_newpts(this->stream, 0, BUF_FLAG_SEEK); this->seek_flag = 0; @@ -224,7 +225,7 @@ } else if (chunk_tag == AUDI_TAG) { - audio_pts = video_pts - WC3_PTS_INC; + audio_pts = this->video_pts - WC3_PTS_INC; while (chunk_size) { buf = this->audio_fifo->buffer_pool_alloc (this->audio_fifo); @@ -260,8 +261,8 @@ buf->type = BUF_VIDEO_WC3; buf->input_pos = current_file_pos; buf->input_length = this->data_size; - buf->input_time = video_pts / 90000; - buf->pts = video_pts; + buf->input_time = this->video_pts / 90000; + buf->pts = this->video_pts; if (chunk_size > buf->max_size) buf->size = buf->max_size; @@ -281,11 +282,11 @@ this->video_fifo->put (this->video_fifo, buf); } - video_pts += WC3_PTS_INC; + this->video_pts += WC3_PTS_INC; } else if (chunk_tag == TEXT_TAG) { - text_pts = video_pts - WC3_PTS_INC; + text_pts = this->video_pts - WC3_PTS_INC; /* unhandled thus far */ this->input->seek(this->input, chunk_size, SEEK_CUR); @@ -499,10 +500,12 @@ } - /* note the data start offset right */ + /* note the data start offset */ this->data_start = this->input->get_current_pos(this->input); this->data_size = this->input->get_length(this->input) - this->data_start; + + this->video_pts = 0; return 1; } |