diff --git a/ChangeLog b/ChangeLog index d9211093f7..0960be59b5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-03-07 Zaheer Abbas Merali <zaheerabbas at merali dot org> + + * plugins/elements/gstidentity.c: (gst_identity_check_perfect): + Only post bus message at max, once per buffer received. + 2007-03-07 Wim Taymans <wim@fluendo.com> * docs/design/Makefile.am: diff --git a/plugins/elements/gstidentity.c b/plugins/elements/gstidentity.c index eb1ed6329a..0af5920c6b 100644 --- a/plugins/elements/gstidentity.c +++ b/plugins/elements/gstidentity.c @@ -311,6 +311,7 @@ static void gst_identity_check_perfect (GstIdentity * identity, GstBuffer * buf) { GstClockTime timestamp; + gboolean posted_bus_message = FALSE; timestamp = GST_BUFFER_TIMESTAMP (buf); @@ -361,6 +362,7 @@ gst_identity_check_perfect (GstIdentity * identity, GstBuffer * buf) GST_BUFFER_DURATION (buf), "cur-offset", G_TYPE_UINT64, GST_BUFFER_OFFSET (buf), "cur-offset-end", G_TYPE_UINT64, GST_BUFFER_OFFSET_END (buf), NULL))); + posted_bus_message = TRUE; } offset = GST_BUFFER_OFFSET (buf); @@ -369,17 +371,19 @@ gst_identity_check_perfect (GstIdentity * identity, GstBuffer * buf) "Buffer not data-contiguous with previous one: " "prev offset_end %" G_GINT64_FORMAT ", new offset %" G_GINT64_FORMAT, identity->prev_offset_end, offset); - gst_element_post_message (GST_ELEMENT (identity), - gst_message_new_element (GST_OBJECT (identity), - gst_structure_new ("imperfect", "prev-timestamp", G_TYPE_UINT64, - identity->prev_timestamp, "prev-duration", G_TYPE_UINT64, - identity->prev_duration, "prev-offset", G_TYPE_UINT64, - identity->prev_offset, "prev-offset-end", G_TYPE_UINT64, - identity->prev_offset_end, "cur-timestamp", G_TYPE_UINT64, - timestamp, "cur-duration", G_TYPE_UINT64, - GST_BUFFER_DURATION (buf), "cur-offset", G_TYPE_UINT64, - GST_BUFFER_OFFSET (buf), "cur-offset-end", G_TYPE_UINT64, - GST_BUFFER_OFFSET_END (buf), NULL))); + if (!posted_bus_message) { + gst_element_post_message (GST_ELEMENT (identity), + gst_message_new_element (GST_OBJECT (identity), + gst_structure_new ("imperfect", "prev-timestamp", + G_TYPE_UINT64, identity->prev_timestamp, "prev-duration", + G_TYPE_UINT64, identity->prev_duration, "prev-offset", + G_TYPE_UINT64, identity->prev_offset, "prev-offset-end", + G_TYPE_UINT64, identity->prev_offset_end, "cur-timestamp", + G_TYPE_UINT64, timestamp, "cur-duration", G_TYPE_UINT64, + GST_BUFFER_DURATION (buf), "cur-offset", G_TYPE_UINT64, + GST_BUFFER_OFFSET (buf), "cur-offset-end", G_TYPE_UINT64, + GST_BUFFER_OFFSET_END (buf), NULL))); + } } } else { GST_DEBUG_OBJECT (identity, "can't check time-contiguity, no timestamp "