diff options
Diffstat (limited to 'src/xine-engine')
-rw-r--r-- | src/xine-engine/audio_out.c | 4 | ||||
-rw-r--r-- | src/xine-engine/buffer.h | 20 | ||||
-rw-r--r-- | src/xine-engine/demux.c | 16 | ||||
-rw-r--r-- | src/xine-engine/video_out.c | 4 | ||||
-rw-r--r-- | src/xine-engine/xine.c | 35 | ||||
-rw-r--r-- | src/xine-engine/xine_internal.h | 11 |
6 files changed, 34 insertions, 56 deletions
diff --git a/src/xine-engine/audio_out.c b/src/xine-engine/audio_out.c index adf87b658..4e88d9eee 100644 --- a/src/xine-engine/audio_out.c +++ b/src/xine-engine/audio_out.c @@ -17,7 +17,7 @@ * along with self program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: audio_out.c,v 1.178 2004/05/29 14:45:25 mroi Exp $ + * $Id: audio_out.c,v 1.179 2004/06/13 21:28:57 miguelfreitas Exp $ * * 22-8-2001 James imported some useful AC3 sections from the previous alsa driver. * (c) 2001 Andy Lo A Foe <andy@alsaplayer.org> @@ -1213,7 +1213,7 @@ int xine_get_next_audio_frame (xine_audio_port_t *this_gen, frame->sample_rate = this->input.rate; frame->num_channels = _x_ao_mode2channels (this->input.mode); frame->bits_per_sample = this->input.bits; - frame->pos_stream = out_buf->extra_info->input_pos; + frame->pos_stream = out_buf->extra_info->input_normpos; frame->pos_time = out_buf->extra_info->input_time; frame->data = (uint8_t *) out_buf->mem; diff --git a/src/xine-engine/buffer.h b/src/xine-engine/buffer.h index fa0087779..fa8f72348 100644 --- a/src/xine-engine/buffer.h +++ b/src/xine-engine/buffer.h @@ -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: buffer.h,v 1.137 2004/06/01 04:31:17 tmmm Exp $ + * $Id: buffer.h,v 1.138 2004/06/13 21:28:57 miguelfreitas Exp $ * * * contents: @@ -250,16 +250,18 @@ typedef struct extra_info_s extra_info_t; struct extra_info_s { - off_t input_pos; /* remember where this buf came from in the input source */ - off_t input_length; /* remember the length of the input source */ - int input_time;/* time offset in miliseconds from beginning of stream */ - uint32_t frame_number; /* number of current frame if known */ + int input_normpos; /* remember where this buf came from in + * the input source (0..65535). can be + * either time or offset based. */ + int input_time; /* time offset in miliseconds from + * beginning of stream */ + uint32_t frame_number; /* number of current frame if known */ - int seek_count; /* internal engine use */ - int64_t vpts; /* set on output layers only */ + int seek_count; /* internal engine use */ + int64_t vpts; /* set on output layers only */ - int invalid; /* do not use this extra info to update anything */ - int total_time; /* duration in miliseconds of the stream */ + int invalid; /* do not use this extra info to update anything */ + int total_time; /* duration in miliseconds of the stream */ }; diff --git a/src/xine-engine/demux.c b/src/xine-engine/demux.c index 6399c0776..d01e2a887 100644 --- a/src/xine-engine/demux.c +++ b/src/xine-engine/demux.c @@ -20,7 +20,7 @@ * Demuxer helper functions * hide some xine engine details from demuxers and reduce code duplication * - * $Id: demux.c,v 1.49 2004/05/16 21:45:24 jcdutton Exp $ + * $Id: demux.c,v 1.50 2004/06/13 21:28:57 miguelfreitas Exp $ */ @@ -483,7 +483,7 @@ int _x_action_pending (xine_stream_t *stream) { */ void _x_demux_send_data(fifo_buffer_t *fifo, uint8_t *data, int size, int64_t pts, uint32_t type, uint32_t decoder_flags, - off_t input_pos, off_t input_length, + int input_normpos, int input_time, int total_time, uint32_t frame_number) { buf_element_t *buf; @@ -510,8 +510,7 @@ void _x_demux_send_data(fifo_buffer_t *fifo, uint8_t *data, int size, buf->pts = pts; pts = 0; - buf->extra_info->input_pos = input_pos; - buf->extra_info->input_length = input_length; + buf->extra_info->input_normpos = input_normpos; buf->extra_info->input_time = input_time; buf->extra_info->total_time = total_time; buf->extra_info->frame_number = frame_number; @@ -529,9 +528,9 @@ void _x_demux_send_data(fifo_buffer_t *fifo, uint8_t *data, int size, */ int _x_demux_read_send_data(fifo_buffer_t *fifo, input_plugin_t *input, int size, int64_t pts, uint32_t type, - uint32_t decoder_flags, off_t input_pos, - off_t input_length, int input_time, - int total_time, uint32_t frame_number) { + uint32_t decoder_flags, off_t input_normpos, + int input_time, int total_time, + uint32_t frame_number) { buf_element_t *buf; decoder_flags |= BUF_FLAG_FRAME_START; @@ -558,8 +557,7 @@ int _x_demux_read_send_data(fifo_buffer_t *fifo, input_plugin_t *input, buf->pts = pts; pts = 0; - buf->extra_info->input_pos = input_pos; - buf->extra_info->input_length = input_length; + buf->extra_info->input_normpos = input_normpos; buf->extra_info->input_time = input_time; buf->extra_info->total_time = total_time; buf->extra_info->frame_number = frame_number; diff --git a/src/xine-engine/video_out.c b/src/xine-engine/video_out.c index f3a566934..8a9873f53 100644 --- a/src/xine-engine/video_out.c +++ b/src/xine-engine/video_out.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: video_out.c,v 1.197 2004/06/02 19:46:11 tmattern Exp $ + * $Id: video_out.c,v 1.198 2004/06/13 21:28:57 miguelfreitas Exp $ * * frame allocation / queuing / scheduling / output functions */ @@ -1169,7 +1169,7 @@ int xine_get_next_video_frame (xine_video_port_t *this_gen, frame->duration = img->duration; frame->width = img->width; frame->height = img->height; - frame->pos_stream = img->extra_info->input_pos; + frame->pos_stream = img->extra_info->input_normpos; frame->pos_time = img->extra_info->input_time; frame->aspect_ratio = img->ratio; frame->colorspace = img->format; diff --git a/src/xine-engine/xine.c b/src/xine-engine/xine.c index efc12a68d..adda44141 100644 --- a/src/xine-engine/xine.c +++ b/src/xine-engine/xine.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: xine.c,v 1.294 2004/06/02 19:46:10 tmattern Exp $ + * $Id: xine.c,v 1.295 2004/06/13 21:28:57 miguelfreitas Exp $ */ /* @@ -108,11 +108,8 @@ void _x_extra_info_reset( extra_info_t *extra_info ) { void _x_extra_info_merge( extra_info_t *dst, extra_info_t *src ) { if (!src->invalid) { - if( src->input_pos ) - dst->input_pos = src->input_pos; - - if( src->input_length ) - dst->input_length = src->input_length; + if( src->input_normpos ) + dst->input_normpos = src->input_normpos; if( src->input_time ) dst->input_time = src->input_time; @@ -1084,8 +1081,6 @@ static void __wait_first_frame (xine_stream_t *stream) { static int __play_internal (xine_stream_t *stream, int start_pos, int start_time) { - double share ; - off_t pos, len; int demux_status; int demux_thread_running; @@ -1127,20 +1122,10 @@ static int __play_internal (xine_stream_t *stream, int start_pos, int start_time /* * start/seek demux */ - if (start_pos) { - pthread_mutex_lock( &stream->current_extra_info_lock ); - len = stream->current_extra_info->input_length; - pthread_mutex_unlock( &stream->current_extra_info_lock ); - if ((len == 0) && stream->input_plugin) - len = stream->input_plugin->get_length (stream->input_plugin); - share = (double) start_pos / 65535; - pos = (off_t) (share * len) ; - } else - pos = 0; /* seek to new position (no data is sent to decoders yet) */ demux_status = stream->demux_plugin->seek (stream->demux_plugin, - pos, start_time, + start_pos, start_time, stream->demux_thread_running); if (stream->audio_out) @@ -1557,8 +1542,7 @@ void _x_select_spu_channel (xine_stream_t *stream, int channel) { static int __get_current_position (xine_stream_t *stream) { - off_t len; - double share; + int pos; pthread_mutex_lock (&stream->frontend_lock); @@ -1581,17 +1565,12 @@ static int __get_current_position (xine_stream_t *stream) { } pthread_mutex_lock( &stream->current_extra_info_lock ); - len = stream->current_extra_info->input_length; - share = (double) stream->current_extra_info->input_pos; + pos = stream->current_extra_info->input_normpos; pthread_mutex_unlock( &stream->current_extra_info_lock ); - if (len == 0) len = stream->input_plugin->get_length (stream->input_plugin); - share /= (double) len; - share *= 65536; - pthread_mutex_unlock (&stream->frontend_lock); - return (int) share; + return pos; } void _x_get_current_info (xine_stream_t *stream, extra_info_t *extra_info, int size) { diff --git a/src/xine-engine/xine_internal.h b/src/xine-engine/xine_internal.h index 01f5bf5ad..5c45168db 100644 --- a/src/xine-engine/xine_internal.h +++ b/src/xine-engine/xine_internal.h @@ -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: xine_internal.h,v 1.157 2004/05/29 14:45:25 mroi Exp $ + * $Id: xine_internal.h,v 1.158 2004/06/13 21:28:58 miguelfreitas Exp $ * */ @@ -400,15 +400,14 @@ int _x_action_pending (xine_stream_t *stream); void _x_demux_send_data(fifo_buffer_t *fifo, uint8_t *data, int size, int64_t pts, uint32_t type, uint32_t decoder_flags, - off_t input_pos, off_t input_length, - int input_time, int total_time, + int input_normpos, int input_time, int total_time, uint32_t frame_number); int _x_demux_read_send_data(fifo_buffer_t *fifo, input_plugin_t *input, int size, int64_t pts, uint32_t type, - uint32_t decoder_flags, off_t input_pos, - off_t input_length, int input_time, - int total_time, uint32_t frame_number); + uint32_t decoder_flags, off_t input_normpos, + int input_time, int total_time, + uint32_t frame_number); /* |