From c9ae275c7275e45fdfb4e1c33a7e319de473e0dc Mon Sep 17 00:00:00 2001 From: Michael Olbrich Date: Mon, 14 Oct 2013 16:14:42 +0200 Subject: [PATCH] liveadder: handle gap buffer flag Remove GAP flag unless both sides have gap data, ignore incoming data if it is gap data. https://bugzilla.gnome.org/show_bug.cgi?id=722397 --- gst/liveadder/liveadder.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/gst/liveadder/liveadder.c b/gst/liveadder/liveadder.c index eed3f73..1c3b7a0 100644 --- a/gst/liveadder/liveadder.c +++ b/gst/liveadder/liveadder.c @@ -1114,15 +1114,18 @@ gst_live_live_adder_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) mix_duration = mix_end - mix_start; - gst_buffer_map (oldbuffer, &oldmap, GST_MAP_WRITE); - gst_buffer_map (buffer, &map, GST_MAP_READ); - adder->func (oldmap.data + - gst_live_adder_length_from_duration (adder, old_skip), - map.data + - gst_live_adder_length_from_duration (adder, skip), - gst_live_adder_length_from_duration (adder, mix_duration)); - gst_buffer_unmap (oldbuffer, &oldmap); - gst_buffer_unmap (buffer, &map); + if (!GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_GAP)) { + GST_BUFFER_FLAG_UNSET (oldbuffer, GST_BUFFER_FLAG_GAP); + gst_buffer_map (oldbuffer, &oldmap, GST_MAP_WRITE); + gst_buffer_map (buffer, &map, GST_MAP_READ); + adder->func (oldmap.data + + gst_live_adder_length_from_duration (adder, old_skip), + map.data + + gst_live_adder_length_from_duration (adder, skip), + gst_live_adder_length_from_duration (adder, mix_duration)); + gst_buffer_unmap (oldbuffer, &oldmap); + gst_buffer_unmap (buffer, &map); + } skip += mix_duration; } -- 2.7.4