GESTrack * track);
static OutputChain *new_output_chain_for_track (GESTimelinePipeline * self,
GESTrack * track);
+static gboolean play_sink_multiple_seeks_send_event (GstElement * element,
+ GstEvent * event);
static void
ges_timeline_pipeline_dispose (GObject * object)
static void
ges_timeline_pipeline_init (GESTimelinePipeline * self)
{
+ GstElementClass *playsinkclass;
+
GST_INFO_OBJECT (self, "Creating new 'playsink'");
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
GES_TYPE_TIMELINE_PIPELINE, GESTimelinePipelinePrivate);
if (G_UNLIKELY (self->priv->encodebin == NULL))
goto no_encodebin;
+ /* TODO : Remove this hack once we depend on gst-p-base 0.10.37 */
+ /* HACK : Intercept events going through playsink */
+ playsinkclass = GST_ELEMENT_GET_CLASS (self->priv->playsink);
+ /* Replace playsink's GstBin::send_event with our own */
+ playsinkclass->send_event = play_sink_multiple_seeks_send_event;
+
ges_timeline_pipeline_set_mode (self, DEFAULT_TIMELINE_MODE);
return;
{
g_object_set (self->priv->playsink, "audio-sink", sink, NULL);
};
+
+
+static gboolean
+play_sink_multiple_seeks_send_event (GstElement * element, GstEvent * event)
+{
+ GstElementClass *klass = GST_ELEMENT_GET_CLASS (element);
+
+ GST_DEBUG ("%s", GST_EVENT_TYPE_NAME (event));
+
+ return
+ GST_ELEMENT_CLASS (g_type_class_peek_parent (klass))->send_event (element,
+ event);
+}