* silence is signalled by bus messages named
* `cutter`.
*
- * The message's structure contains two fields:
+ * The message's structure contains these fields:
*
* * #GstClockTime `timestamp`: the timestamp of the buffer that triggered the message.
+ * * #GstClockTime `stream-time`: the stream time of the buffer.
+ * * #GstClockTime `running-time`: the running time of the buffer.
* * gboolean `above`: %TRUE for begin of silence and %FALSE for end of silence.
*
* ## Example launch line
gst_pad_use_fixed_caps (filter->srcpad);
gst_element_add_pad (GST_ELEMENT (filter), filter->srcpad);
+ gst_segment_init (&filter->segment, GST_FORMAT_UNDEFINED);
+
filter->threshold_level = CUTTER_DEFAULT_THRESHOLD_LEVEL;
filter->threshold_length = CUTTER_DEFAULT_THRESHOLD_LENGTH;
filter->silent_run_length = 0 * GST_SECOND;
gst_cutter_message_new (GstCutter * c, gboolean above, GstClockTime timestamp)
{
GstStructure *s;
+ GstClockTime running_time, stream_time;
+
+ running_time = gst_segment_to_running_time (&c->segment, GST_FORMAT_TIME,
+ timestamp);
+ stream_time = gst_segment_to_stream_time (&c->segment, GST_FORMAT_TIME,
+ timestamp);
s = gst_structure_new ("cutter",
"above", G_TYPE_BOOLEAN, above,
- "timestamp", GST_TYPE_CLOCK_TIME, timestamp, NULL);
+ "timestamp", G_TYPE_UINT64, timestamp,
+ "stream-time", G_TYPE_UINT64, stream_time,
+ "running-time", G_TYPE_UINT64, running_time, NULL);
return gst_message_new_element (GST_OBJECT (c), s);
}
gst_event_unref (event);
break;
}
+ case GST_EVENT_SEGMENT:
+ {
+ const GstSegment *segment;
+
+ gst_event_parse_segment (event, &segment);
+ gst_segment_copy_into (segment, &filter->segment);
+ ret = gst_pad_event_default (pad, parent, event);
+ break;
+ }
default:
ret = gst_pad_event_default (pad, parent, event);
break;