gstreamer1.0-plugins-base: Do not change EOS event to GAP event

-Sending EOS event instead of GAP event as GAP event has error if A/V have the different duration.

-Stop sending second track EOS event when returing failure after sending the first track EOS.
 Fixed by ignoring the return error.

(From OE-Core master rev: 36dfa24b2a4318b7abe6ab54b64e6c011b8e1e0f)

(From OE-Core rev: 6a8d2055421cb6c82203654eabd67e87ae99fee6)

Signed-off-by: Yuqing Zhu <b54851@freescale.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Yuqing Zhu
2015-08-10 11:41:38 +08:00
committed by Richard Purdie
parent 0c925855f7
commit 86625d2a59
3 changed files with 82 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
commit f9536544f5ad182b4f78d0143d1daa45dd64e624
Author: Song Bing <b06498@freescale.com>
Date: Thu Oct 9 17:37:43 2014 +0800
[gststreamsynchronizer] send EOS event insterd of GAP event as GAP
event has issue when A/V have different duration.
send EOS event insterd of GAP event as GAP event has issue when A/V have different duration.
Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=736655]
Signed-off-by: Song Bing <b06498@freescale.com>
diff --git a/gst/playback/gststreamsynchronizer.c b/gst/playback/gststreamsynchronizer.c
index 3e17c55..ff42d72 100644
--- a/gst/playback/gststreamsynchronizer.c
+++ b/gst/playback/gststreamsynchronizer.c
@@ -488,19 +488,24 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent,
}
g_slist_free (pads);
} else {
- /* if EOS, but no data has passed, then send EOS event */
+ /* if EOS, but no data has passed, then send something to replace EOS
+ * for preroll purposes */
if (!seen_data) {
- GstEvent *gap_event;
+ GstEvent *eos_event;
- gap_event = gst_event_new_eos ();
- ret = gst_pad_push_event (srcpad, gap_event);
+ /* FIXME: change to EOS event as GAP event has issue when A/V have
+ * different duration */
+ eos_event = gst_event_new_eos ();
+ ret = gst_pad_push_event (srcpad, eos_event);
} else {
- GstEvent *gap_event;
+ GstEvent *eos_event;
/* FIXME: Also send a GAP event to let audio sinks start their
* clock in case they did not have enough data yet */
- gap_event = gst_event_new_gap (timestamp, GST_CLOCK_TIME_NONE);
- ret = gst_pad_push_event (srcpad, gap_event);
+ /* FIXME: change to EOS event as GAP event has issue when A/V have
+ * different duration */
+ eos_event = gst_event_new_eos ();
+ ret = gst_pad_push_event (srcpad, eos_event);
}
}
gst_object_unref (srcpad);

View File

@@ -0,0 +1,31 @@
commit 3f7052aac5e0118a9a9e09fff2f65091be448972
Author: Song Bing <b06498@freescale.com>
Date: Thu Oct 23 13:35:13 2014 +0800
[streamsynchronizer] One stream can finish playback.
As changed GAP event EOS event, so EOS will send more times, which will
cause send function return error.
Streamsynchronizer will dont send second track EOS event if send the
first track EOS return fail. Fixed by ignore the return error.
Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=736655]
Signed-off-by: Song Bing b06498@freescale.com
diff --git a/gst/playback/gststreamsynchronizer.c b/gst/playback/gststreamsynchronizer.c
index ff42d72..d1732c3 100644
--- a/gst/playback/gststreamsynchronizer.c
+++ b/gst/playback/gststreamsynchronizer.c
@@ -482,7 +482,10 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent,
while (epad) {
pad = epad->data;
GST_DEBUG_OBJECT (pad, "Pushing EOS");
- ret = ret && gst_pad_push_event (pad, gst_event_new_eos ());
+ /* FIXME: remove error check as GAP changed to EOS will send EOS
+ * more times, which will cause return error and then don't send
+ * EOS event to following tracks. */
+ gst_pad_push_event (pad, gst_event_new_eos ());
gst_object_unref (pad);
epad = g_slist_next (epad);
}

View File

@@ -15,6 +15,8 @@ SRC_URI += "file://do-not-change-eos-event-to-gap-event-if.patch \
file://0001-video-frame-Don-t-ref-buffers-twice-when-mapping.patch \
file://0003-videofilter-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch \
file://videoencoder-Keep-sticky-events-around-when-doing-a-soft-.patch \
file://do-not-change-eos-event-to-gap-event2.patch \
file://do-not-change-eos-event-to-gap-event3.patch \
"
SRC_URI[md5sum] = "357165af625c0ca353ab47c5d843920e"