From 7912d9becd1893d132f6f69af4875c726c40dc63 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 25 Feb 2003 21:34:10 +0000 Subject: Forward events. Original commit message from CVS: Forward events. --- gst/smpte/gstsmpte.c | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) (limited to 'gst') diff --git a/gst/smpte/gstsmpte.c b/gst/smpte/gstsmpte.c index c28f16a6..3a7d2f4e 100644 --- a/gst/smpte/gstsmpte.c +++ b/gst/smpte/gstsmpte.c @@ -318,20 +318,30 @@ gst_smpte_loop (GstElement *element) ts = smpte->position * GST_SECOND / smpte->fps; - if (GST_PAD_IS_USABLE (smpte->sinkpad1)) { + while (GST_PAD_IS_USABLE (smpte->sinkpad1) && in1 == NULL) { in1 = gst_pad_pull (smpte->sinkpad1); - ts = GST_BUFFER_TIMESTAMP (in1); + if (GST_IS_EVENT (in1)) { + gst_pad_push (smpte->srcpad, in1); + in1 = NULL; + } + else + ts = GST_BUFFER_TIMESTAMP (in1); } - else { + if (GST_PAD_IS_USABLE (smpte->sinkpad2) && in2 == NULL) { + in2 = gst_pad_pull (smpte->sinkpad2); + if (GST_IS_EVENT (in2)) { + gst_pad_push (smpte->srcpad, in2); + in2 = NULL; + } + else + ts = GST_BUFFER_TIMESTAMP (in2); + } + + if (in1 == NULL) { in1 = gst_buffer_new_and_alloc (smpte->width * smpte->height * 3); fill_i420 (GST_BUFFER_DATA (in1), smpte->width, smpte->height, 7); } - - if (GST_PAD_IS_USABLE (smpte->sinkpad2)) { - in2 = gst_pad_pull (smpte->sinkpad2); - ts = GST_BUFFER_TIMESTAMP (in2); - } - else { + if (in2 == NULL) { in2 = gst_buffer_new_and_alloc (smpte->width * smpte->height * 3); fill_i420 (GST_BUFFER_DATA (in2), smpte->width, smpte->height, 0); } -- cgit v1.2.1