summaryrefslogtreecommitdiff
path: root/src/xine-engine/metronom.h
diff options
context:
space:
mode:
authorGuenter Bartsch <guenter@users.sourceforge.net>2002-03-11 12:31:24 +0000
committerGuenter Bartsch <guenter@users.sourceforge.net>2002-03-11 12:31:24 +0000
commitface806c1ee187c1efbaa88313c955b9947948db (patch)
tree974813b717201ac54afa760bac32a69f1a42addc /src/xine-engine/metronom.h
parent36a843032b4e28aa294ce0795fd96d76c57e3304 (diff)
downloadxine-lib-face806c1ee187c1efbaa88313c955b9947948db.tar.gz
xine-lib-face806c1ee187c1efbaa88313c955b9947948db.tar.bz2
metronom and demuxers should work again (although not all demuxers are fully updated at this point). demux_qt can handle compressed audio, but is still unfinished.
Yes, this _is_ the big metronom update, metronom now depends on disc_off information in discontinuities. CVS patchset: 1554 CVS date: 2002/03/11 12:31:24
Diffstat (limited to 'src/xine-engine/metronom.h')
-rw-r--r--src/xine-engine/metronom.h37
1 files changed, 14 insertions, 23 deletions
diff --git a/src/xine-engine/metronom.h b/src/xine-engine/metronom.h
index dd0cd703d..5ad28dcb2 100644
--- a/src/xine-engine/metronom.h
+++ b/src/xine-engine/metronom.h
@@ -1,7 +1,7 @@
/*
* Copyright (C) 2000-2002 the xine project
*
- * This file is part of xine, a unix video player.
+ * This file is part of xine, a free video player.
*
* xine is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -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: metronom.h,v 1.20 2002/03/10 21:16:15 miguelfreitas Exp $
+ * $Id: metronom.h,v 1.21 2002/03/11 12:31:26 guenter Exp $
*
* metronom: general pts => virtual calculation/assoc
*
@@ -58,8 +58,7 @@ typedef struct scr_plugin_s scr_plugin_t;
struct metronom_s {
/*
- * Pointer to current xine object. We use a void pointer to avoid type declaration clash.
- * Ugly but working.
+ * pointer to current xine object. a void pointer is used to avoid type declaration clash.
*/
void *xine;
@@ -90,7 +89,6 @@ struct metronom_s {
*
* parameter pts : pts for audio data if known, 0 otherwise
* nsamples : number of samples delivered
- * scr : system clock reference, may be 0 or == pts if unknown
*
* return value: virtual pts for audio data
*
@@ -100,21 +98,19 @@ struct metronom_s {
*/
int64_t (*got_audio_samples) (metronom_t *this, int64_t pts,
- int nsamples, int64_t scr);
+ int nsamples);
/*
* called by SPU decoder whenever a packet is delivered to it
*
* parameter pts : pts for SPU packet if known, 0 otherwise
- * scr : system clock reference, may be 0 or == pts if unknown
*
* return value: virtual pts for SPU packet
* (this is the only pts to vpts function that cannot update the wrap_offset
* due to the lack of regularity on spu packets)
*/
- int64_t (*got_spu_packet) (metronom_t *this, int64_t pts, int64_t duration,
- int64_t scr);
+ int64_t (*got_spu_packet) (metronom_t *this, int64_t pts, int64_t duration);
/*
* tell metronom about discontinuities.
@@ -136,8 +132,11 @@ struct metronom_s {
* whenever we get a new pts we can calculate the new xxx_wrap_offset)
*
*/
- void (*expect_audio_discontinuity) (metronom_t *this);
- void (*expect_video_discontinuity) (metronom_t *this, int starting);
+ void (*expect_audio_discontinuity) (metronom_t *this, int64_t disc_off);
+ void (*expect_video_discontinuity) (metronom_t *this, int64_t disc_off);
+
+ void (*audio_stream_start) (metronom_t *this);
+ void (*video_stream_start) (metronom_t *this);
/*
* manually correct audio <-> video sync
@@ -203,21 +202,16 @@ struct metronom_s {
int64_t pts_per_smpls;
- int64_t audio_pts_delta;
-
int64_t video_vpts;
int64_t spu_vpts;
int64_t audio_vpts;
- int64_t video_wrap_offset;
- int64_t audio_wrap_offset;
- int wrap_diff_counter;
+ int64_t vpts_offset;
+ int64_t next_vpts_offset;
- int64_t last_video_pts;
- int64_t video_drift;
+ int in_discontinuity;
- int64_t last_audio_pts;
- int num_audio_samples_guessed;
+ int64_t video_drift;
int64_t av_offset;
@@ -228,10 +222,7 @@ struct metronom_s {
pthread_mutex_t lock;
int have_audio;
- int video_starting;
- int video_discontinuity;
int video_discontinuity_count;
- int audio_discontinuity;
int audio_discontinuity_count;
pthread_cond_t video_discontinuity_reached;
pthread_cond_t audio_discontinuity_reached;