summaryrefslogtreecommitdiff
path: root/src/xine-engine
diff options
context:
space:
mode:
Diffstat (limited to 'src/xine-engine')
-rw-r--r--src/xine-engine/audio_out.c4
-rw-r--r--src/xine-engine/buffer.h20
-rw-r--r--src/xine-engine/demux.c16
-rw-r--r--src/xine-engine/video_out.c4
-rw-r--r--src/xine-engine/xine.c35
-rw-r--r--src/xine-engine/xine_internal.h11
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);
/*