From b752eea81892a971bbb6a585c2a97fd3555dd8d1 Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Wed, 13 Aug 2014 13:15:02 +0200 Subject: [PATCH] timeline: Add a method to retrieve a pad from a track It allows user to easily get the proxied pad from a track. API: + ges_timeline_get_pad_for_track --- docs/libs/ges-sections.txt | 1 + ges/ges-timeline.c | 33 +++++++++++++++++++++++++++++++++ ges/ges-timeline.h | 1 + 3 files changed, 35 insertions(+) diff --git a/docs/libs/ges-sections.txt b/docs/libs/ges-sections.txt index c2ac4aa8b1..68a328dc9a 100644 --- a/docs/libs/ges-sections.txt +++ b/docs/libs/ges-sections.txt @@ -363,6 +363,7 @@ ges_timeline_is_updating ges_timeline_get_tracks ges_timeline_get_layers ges_timeline_get_track_for_pad +ges_timeline_get_pad_for_track ges_timeline_get_duration ges_timeline_get_project ges_timeline_get_auto_transition diff --git a/ges/ges-timeline.c b/ges/ges-timeline.c index ec605a44da..37c0f41fea 100644 --- a/ges/ges-timeline.c +++ b/ges/ges-timeline.c @@ -2961,6 +2961,39 @@ ges_timeline_get_track_for_pad (GESTimeline * timeline, GstPad * pad) return NULL; } +/** + * ges_timeline_get_pad_for_track: + * @timeline: The #GESTimeline + * @track: The #GESTrack + * + * Search the #GstPad corresponding to the given @timeline's @track. + * + * Returns: (transfer none): The corresponding #GstPad if it is found, + * or %NULL if there is an error. + */ + +GstPad * +ges_timeline_get_pad_for_track (GESTimeline * timeline, GESTrack * track) +{ + GList *tmp; + + LOCK_DYN (timeline); + for (tmp = timeline->priv->priv_tracks; tmp; tmp = g_list_next (tmp)) { + TrackPrivate *tr_priv = (TrackPrivate *) tmp->data; + + if (track == tr_priv->track) { + if (tr_priv->ghostpad) + gst_object_ref (tr_priv->ghostpad); + + UNLOCK_DYN (timeline); + return tr_priv->ghostpad; + } + } + UNLOCK_DYN (timeline); + + return NULL; +} + /** * ges_timeline_get_tracks: * @timeline: a #GESTimeline diff --git a/ges/ges-timeline.h b/ges/ges-timeline.h index 80ddea6579..f1d2bf811d 100644 --- a/ges/ges-timeline.h +++ b/ges/ges-timeline.h @@ -114,6 +114,7 @@ gboolean ges_timeline_add_track (GESTimeline *timeline, GESTrack *track); gboolean ges_timeline_remove_track (GESTimeline *timeline, GESTrack *track); GESTrack * ges_timeline_get_track_for_pad (GESTimeline *timeline, GstPad *pad); +GstPad * ges_timeline_get_pad_for_track (GESTimeline * timeline, GESTrack *track); GList *ges_timeline_get_tracks (GESTimeline *timeline); gboolean ges_timeline_commit (GESTimeline * timeline);