From 8e3c7fa7990633f2f420fbfe9aa497e951643ac3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Sun, 23 Sep 2012 16:10:36 +0100 Subject: [PATCH] multipartmux: send stream-start event --- gst/multipart/multipartmux.c | 12 ++++++++++++ gst/multipart/multipartmux.h | 1 + 2 files changed, 13 insertions(+) diff --git a/gst/multipart/multipartmux.c b/gst/multipart/multipartmux.c index ef6d63f..a709f7d 100644 --- a/gst/multipart/multipartmux.c +++ b/gst/multipart/multipartmux.c @@ -33,6 +33,7 @@ * */ +/* FIXME: drop/merge tag events, or at least send them delayed after stream-start */ #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -398,6 +399,16 @@ gst_multipart_mux_collected (GstCollectPads * pads, GstMultipartMux * mux) GST_DEBUG_OBJECT (mux, "all pads are collected"); + if (mux->need_stream_start) { + gchar s_id[32]; + + /* stream-start (FIXME: create id based on input ids) */ + g_snprintf (s_id, sizeof (s_id), "multipartmux-%08x", g_random_int ()); + gst_pad_push_event (mux->srcpad, gst_event_new_stream_start (s_id)); + + mux->need_stream_start = FALSE; + } + /* queue buffers on all pads; find a buffer with the lowest timestamp */ best = gst_multipart_mux_queue_pads (mux); if (!best) @@ -604,6 +615,7 @@ gst_multipart_mux_change_state (GstElement * element, GstStateChange transition) multipart_mux->offset = 0; multipart_mux->negotiated = FALSE; multipart_mux->need_segment = TRUE; + multipart_mux->need_stream_start = TRUE; GST_DEBUG_OBJECT (multipart_mux, "starting collect pads"); gst_collect_pads_start (multipart_mux->collect); break; diff --git a/gst/multipart/multipartmux.h b/gst/multipart/multipartmux.h index d2711ac..7a17189 100644 --- a/gst/multipart/multipartmux.h +++ b/gst/multipart/multipartmux.h @@ -76,6 +76,7 @@ struct _GstMultipartMux gboolean negotiated; gboolean need_segment; + gboolean need_stream_start; }; struct _GstMultipartMuxClass -- 2.7.4