diff options
author | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2002-04-07 12:09:38 +0000 |
---|---|---|
committer | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2002-04-07 12:09:38 +0000 |
commit | a9792bf33ed79c9ec40cb8a391c3f8434e42acd2 (patch) | |
tree | 93012f4a3b6e041bb6ad4935b636d7f8dd4fac54 | |
parent | eb5dd4849586bdd496d7a03657f5cf924e6822c0 (diff) | |
download | xine-lib-a9792bf33ed79c9ec40cb8a391c3f8434e42acd2.tar.gz xine-lib-a9792bf33ed79c9ec40cb8a391c3f8434e42acd2.tar.bz2 |
fix bug where metronom_got_audio_samples() is called before
in_discontinuity was set.
CVS patchset: 1693
CVS date: 2002/04/07 12:09:38
-rw-r--r-- | src/xine-engine/metronom.c | 15 | ||||
-rw-r--r-- | src/xine-engine/metronom.h | 3 |
2 files changed, 16 insertions, 2 deletions
diff --git a/src/xine-engine/metronom.c b/src/xine-engine/metronom.c index e660815e6..5e00d273d 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.78 2002/04/01 12:09:10 miguelfreitas Exp $ + * $Id: metronom.c,v 1.79 2002/04/07 12:09:38 miguelfreitas Exp $ */ #ifdef HAVE_CONFIG_H @@ -325,6 +325,10 @@ static void metronom_handle_video_discontinuity (metronom_t *this, int type, this->in_discontinuity = 30; break; } + + this->discontinuity_handled_count++; + pthread_cond_signal (&this->video_discontinuity_reached); + pthread_mutex_unlock (&this->lock); } @@ -436,6 +440,14 @@ static void metronom_handle_audio_discontinuity (metronom_t *this, int type, } /* next_vpts_offset, in_discontinuity is handled in expect_video_discontinuity */ + while ( this->audio_discontinuity_count > + this->discontinuity_handled_count ) { + + printf ("metronom: waiting for in_discontinuity update #%d\n", + this->audio_discontinuity_count); + + pthread_cond_wait (&this->video_discontinuity_reached, &this->lock); + } this->audio_samples = 0; this->audio_drift_step = 0; @@ -699,6 +711,7 @@ metronom_t * metronom_init (int have_audio, void *xine) { this->video_drift = 0; this->video_drift_step = 0; this->video_discontinuity_count = 0; + this->discontinuity_handled_count = 0; pthread_cond_init (&this->video_discontinuity_reached, NULL); /* initialize audio stuff */ diff --git a/src/xine-engine/metronom.h b/src/xine-engine/metronom.h index f470eb00e..4fb0c7667 100644 --- a/src/xine-engine/metronom.h +++ b/src/xine-engine/metronom.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: metronom.h,v 1.28 2002/04/01 12:09:10 miguelfreitas Exp $ + * $Id: metronom.h,v 1.29 2002/04/07 12:09:38 miguelfreitas Exp $ * * metronom: general pts => virtual calculation/assoc * @@ -232,6 +232,7 @@ struct metronom_s { int have_audio; int video_discontinuity_count; int audio_discontinuity_count; + int discontinuity_handled_count; pthread_cond_t video_discontinuity_reached; pthread_cond_t audio_discontinuity_reached; pthread_cond_t cancel; |