diff options
author | Michael Olbrich <m.olbrich@pengutronix.de> | 2013-10-14 16:14:42 +0200 |
---|---|---|
committer | Olivier CrĂȘte <olivier.crete@collabora.com> | 2014-06-03 14:59:30 -0400 |
commit | c9ae275c7275e45fdfb4e1c33a7e319de473e0dc (patch) | |
tree | f172119b964536faa73df497830b32a1819bc113 /gst | |
parent | dac4816823b8cf7eae60b13c3d3ac732464a4e38 (diff) | |
download | gstreamer-plugins-bad-c9ae275c7275e45fdfb4e1c33a7e319de473e0dc.tar.gz |
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
Diffstat (limited to 'gst')
-rw-r--r-- | gst/liveadder/liveadder.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/gst/liveadder/liveadder.c b/gst/liveadder/liveadder.c index eed3f738f..1c3b7a0e0 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; } |