From e84c7f02b4a8ff402c463ee5175cd4c4d78dcbd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 9 Jul 2010 17:15:35 +0200 Subject: [PATCH] baseaudiosrc: Post clock-provide and clock-lost messages when going from/to PLAYING --- gst-libs/gst/audio/gstbaseaudiosrc.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gst-libs/gst/audio/gstbaseaudiosrc.c b/gst-libs/gst/audio/gstbaseaudiosrc.c index df365b8533..468402c3a9 100644 --- a/gst-libs/gst/audio/gstbaseaudiosrc.c +++ b/gst-libs/gst/audio/gstbaseaudiosrc.c @@ -1080,9 +1080,28 @@ gst_base_audio_src_change_state (GstElement * element, case GST_STATE_CHANGE_PAUSED_TO_PLAYING: GST_DEBUG_OBJECT (src, "PAUSED->PLAYING"); gst_ring_buffer_may_start (src->ringbuffer, TRUE); + + /* Only post clock-provide messages if this is the clock that + * we've created. If the subclass has overriden it the subclass + * should post this messages whenever necessary */ + if (src->clock && GST_IS_AUDIO_CLOCK (src->clock) && + GST_AUDIO_CLOCK_CAST (src->clock)->func == + (GstAudioClockGetTimeFunc) gst_base_audio_src_get_time) + gst_element_post_message (element, + gst_message_new_clock_provide (GST_OBJECT_CAST (element), + src->clock, TRUE)); break; case GST_STATE_CHANGE_PLAYING_TO_PAUSED: GST_DEBUG_OBJECT (src, "PLAYING->PAUSED"); + /* Only post clock-lost messages if this is the clock that + * we've created. If the subclass has overriden it the subclass + * should post this messages whenever necessary */ + if (src->clock && GST_IS_AUDIO_CLOCK (src->clock) && + GST_AUDIO_CLOCK_CAST (src->clock)->func == + (GstAudioClockGetTimeFunc) gst_base_audio_src_get_time) + gst_element_post_message (element, + gst_message_new_clock_lost (GST_OBJECT_CAST (element), src->clock)); + gst_ring_buffer_may_start (src->ringbuffer, FALSE); gst_ring_buffer_pause (src->ringbuffer); break;