From a5a793f8b6845b5dbefd3e7cd0ce41e5c9cb1e9c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Piotrek=20Brzezi=C5=84ski?= Date: Wed, 21 Jul 2021 19:31:53 +0200 Subject: [PATCH] clip: Copy trackelement's metadata upon splitting Part-of: --- ges/ges-clip.c | 5 +++++ tests/check/ges/clip.c | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/ges/ges-clip.c b/ges/ges-clip.c index fbd4f47..1b297b3 100644 --- a/ges/ges-clip.c +++ b/ges/ges-clip.c @@ -3480,6 +3480,7 @@ ges_clip_split_full (GESClip * clip, guint64 position, GError ** error) GESTrackElement *copy, *orig = tmp->data; GESTrack *track = ges_track_element_get_track (orig); GESAutoTransition *trans; + gchar *meta; copy = ges_clip_copy_track_element_into (new_object, orig, new_inpoint); @@ -3490,6 +3491,10 @@ ges_clip_split_full (GESClip * clip, guint64 position, GError ** error) g_hash_table_insert (track_for_copy, gst_object_ref (copy), gst_object_ref (track)); + meta = ges_meta_container_metas_to_string (GES_META_CONTAINER (orig)); + ges_meta_container_add_metas_from_string (GES_META_CONTAINER (copy), meta); + g_free (meta); + trans = timeline ? ges_timeline_get_auto_transition_at_edge (timeline, orig, GES_EDGE_END) : NULL; diff --git a/tests/check/ges/clip.c b/tests/check/ges/clip.c index cabb3e2..f2a9d23 100644 --- a/tests/check/ges/clip.c +++ b/tests/check/ges/clip.c @@ -475,6 +475,7 @@ GST_START_TEST (test_split_object) *splittrackelement; guint32 priority1, priority2, effect_priority1, effect_priority2; guint selection_called = 0; + const gchar *meta; ges_init (); @@ -502,6 +503,9 @@ GST_START_TEST (test_split_object) fail_unless (trackelement1 != NULL); fail_unless (GES_TIMELINE_ELEMENT_PARENT (trackelement1) == GES_TIMELINE_ELEMENT (clip)); + ges_meta_container_set_string (GES_META_CONTAINER (trackelement1), "test_key", + "test_value"); + trackelement2 = GES_CONTAINER_CHILDREN (clip)->next->data; fail_unless (trackelement2 != NULL); fail_unless (GES_TIMELINE_ELEMENT_PARENT (trackelement2) == @@ -633,6 +637,9 @@ GST_START_TEST (test_split_object) assert_equals_int (GES_TIMELINE_ELEMENT_PRIORITY (splittrackelement), priority1 + 3); fail_unless (GES_TIMELINE_ELEMENT_PRIORITY (trackelement1) == priority2); + meta = ges_meta_container_get_string (GES_META_CONTAINER (splittrackelement), + "test_key"); + fail_unless_equals_string (meta, "test_value"); fail_unless (splittrackelement != trackelement1); fail_unless (splittrackelement != trackelement2); -- 2.7.4