summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Roitzsch <mroi@users.sourceforge.net>2002-12-13 16:47:41 +0000
committerMichael Roitzsch <mroi@users.sourceforge.net>2002-12-13 16:47:41 +0000
commitc4df8ab780dbdf4a5e4fcaf8d5b7fe8dd2e0cabc (patch)
treebd5fbbcf5eeade62f5de370aa1cde0d2cb426ab7
parent532ad6ab98e75a6022513938aedb39949f872208 (diff)
downloadxine-lib-c4df8ab780dbdf4a5e4fcaf8d5b7fe8dd2e0cabc.tar.gz
xine-lib-c4df8ab780dbdf4a5e4fcaf8d5b7fe8dd2e0cabc.tar.bz2
metronom fix/improvement/simplification:
do not align audio and video vpts on discontinuity, this finally makes multiangle DVDs play smooth with my DXR3 CVS patchset: 3508 CVS date: 2002/12/13 16:47:41
-rw-r--r--src/xine-engine/metronom.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/src/xine-engine/metronom.c b/src/xine-engine/metronom.c
index d362cf8be..0a0e3e037 100644
--- a/src/xine-engine/metronom.c
+++ b/src/xine-engine/metronom.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: metronom.c,v 1.105 2002/11/30 22:09:42 miguelfreitas Exp $
+ * $Id: metronom.c,v 1.106 2002/12/13 16:47:41 mroi Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -47,7 +47,6 @@
#define PREBUFFER_PTS_OFFSET 30000
#define VIDEO_DRIFT_TOLERANCE 45000
#define AUDIO_DRIFT_TOLERANCE 45000
-#define AV_DIFF_TOLERANCE 45000
/*#define OLD_DRIFT_CORRECTION 1*/
@@ -301,20 +300,15 @@ static void metronom_handle_video_discontinuity (metronom_t *this, int type,
pthread_cond_wait (&this->audio_discontinuity_reached, &this->lock);
}
-
- if (this->video_vpts < this->audio_vpts) {
- this->video_vpts = this->audio_vpts;
- printf ("metronom: video vpts adjusted to %lld\n", this->video_vpts);
- } else {
- this->audio_vpts = this->video_vpts;
- printf ("metronom: audio vpts adjusted to %lld\n", this->audio_vpts);
- }
}
if ( this->video_vpts < this->clock->get_current_time(this->clock) ) {
this->video_vpts = PREBUFFER_PTS_OFFSET + this->clock->get_current_time(this->clock);
- this->audio_vpts = this->video_vpts;
- printf ("metronom: vpts adjusted with prebuffer to %lld\n", this->video_vpts);
+ printf ("metronom: video vpts adjusted with prebuffer to %lld\n", this->video_vpts);
+ }
+ if ( this->audio_vpts < this->clock->get_current_time(this->clock) ) {
+ this->audio_vpts = PREBUFFER_PTS_OFFSET + this->clock->get_current_time(this->clock);
+ printf ("metronom: audio vpts adjusted with prebuffer to %lld\n", this->audio_vpts);
}
#ifdef LOG
@@ -326,7 +320,10 @@ static void metronom_handle_video_discontinuity (metronom_t *this, int type,
#ifdef LOG
printf ("metronom: DISC_STREAMSTART\n");
#endif
- this->vpts_offset = this->video_vpts;
+ if (this->video_vpts > this->audio_vpts)
+ this->vpts_offset = this->audio_vpts = this->video_vpts;
+ else
+ this->vpts_offset = this->video_vpts = this->audio_vpts;
this->force_audio_jump = 1;
this->force_video_jump = 1;
this->video_drift = 0;