GESTimelinePipeline: new functions to search/create OutputChain
authorEdward Hervey <edward.hervey@collabora.co.uk>
Tue, 20 Apr 2010 10:57:53 +0000 (12:57 +0200)
committerEdward Hervey <edward.hervey@collabora.co.uk>
Tue, 20 Apr 2010 11:47:07 +0000 (13:47 +0200)
ges/ges-timeline-pipeline.c

index 0a97c0e..29a8e98 100644 (file)
@@ -36,7 +36,7 @@
 
 typedef struct
 {
-  GESTimelinePipeline *pipeline;
+  GESTrack *track;
   GstElement *tee;
   GstPad *srcpad;               /* Timeline source pad */
   GstPad *playsinkpad;
@@ -48,6 +48,10 @@ G_DEFINE_TYPE (GESTimelinePipeline, ges_timeline_pipeline, GST_TYPE_PIPELINE);
 static GstStateChangeReturn ges_timeline_pipeline_change_state (GstElement *
     element, GstStateChange transition);
 
+static OutputChain *get_output_chain_for_track (GESTimelinePipeline * self,
+    GESTrack * track);
+static OutputChain *new_output_chain_for_track (GESTimelinePipeline * self,
+    GESTrack * track);
 
 static void
 ges_timeline_pipeline_finalize (GObject * object)
@@ -138,6 +142,31 @@ done:
   return ret;
 }
 
+static OutputChain *
+new_output_chain_for_track (GESTimelinePipeline * self, GESTrack * track)
+{
+  OutputChain *chain;
+
+  chain = g_new0 (OutputChain, 1);
+  chain->track = track;
+
+  return chain;
+}
+
+static OutputChain *
+get_output_chain_for_track (GESTimelinePipeline * self, GESTrack * track)
+{
+  GList *tmp;
+
+  for (tmp = self->chains; tmp; tmp = tmp->next) {
+    OutputChain *chain = (OutputChain *) tmp->data;
+    if (chain->track == track)
+      return chain;
+  }
+
+  return NULL;
+}
+
 /* Fetches a ocmpatible pad on the target element which isn't already
  * linked */
 static GstPad *