From 62d603f78e2dfc7c6b13a87514e7f81c4bc77dba Mon Sep 17 00:00:00 2001 From: Gilbok Lee Date: Mon, 6 Sep 2021 13:52:58 +0900 Subject: [PATCH] tsdemux: Save custom event(HLSMedia info) when program is NULL Change-Id: Ida60c066ea5d069ccb7a64605317ee24805060bd --- gst/mpegtsdemux/tsdemux.c | 22 ++++++++++++++++++++++ gst/mpegtsdemux/tsdemux.h | 1 + 2 files changed, 23 insertions(+) diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c index edaed130f..9431b1a4c 100644 --- a/gst/mpegtsdemux/tsdemux.c +++ b/gst/mpegtsdemux/tsdemux.c @@ -447,6 +447,11 @@ gst_ts_demux_reset (MpegTSBase * base) demux->global_tags = NULL; } #ifdef TIZEN_FEATURE_TSDEMUX_LANG_TAG + if (demux->pending_custom_event) { + gst_event_unref (demux->pending_custom_event); + demux->pending_custom_event = NULL; + } + if (demux->pending_language_tag) { gst_tag_list_unref (demux->pending_language_tag); demux->pending_language_tag = NULL; @@ -1024,6 +1029,15 @@ push_event (MpegTSBase * base, GstEvent * event) g_free (tag); } } + + if (GST_EVENT_TYPE (event) == GST_EVENT_TAG) { + const GstStructure *st = gst_event_get_structure (event); + if (gst_structure_has_name (st, "GstHLSMedia")) { + if (demux->pending_custom_event) + gst_event_unref (demux->pending_custom_event); + demux->pending_custom_event = gst_event_ref (event); + } + } #endif gst_event_unref (event); return early_ret; @@ -2848,6 +2862,14 @@ push_new_segment: gst_event_new_tag (gst_tag_list_ref (demux->global_tags))); } +#ifdef TIZEN_FEATURE_TSDEMUX_LANG_TAG + if (demux->pending_custom_event) { + GST_DEBUG_OBJECT (stream->pad, "Pushing custom event"); + gst_pad_push_event (stream->pad, demux->pending_custom_event); + demux->pending_custom_event = NULL; + } +#endif + /* Push pending tags */ if (stream->taglist) { #ifdef TIZEN_FEATURE_TSDEMUX_LANG_TAG diff --git a/gst/mpegtsdemux/tsdemux.h b/gst/mpegtsdemux/tsdemux.h index 420788c96..8ba596ee5 100644 --- a/gst/mpegtsdemux/tsdemux.h +++ b/gst/mpegtsdemux/tsdemux.h @@ -96,6 +96,7 @@ struct _GstTSDemux #ifdef TIZEN_FEATURE_TSDEMUX_LANG_TAG GstTagList *pending_language_tag; + GstEvent *pending_custom_event; #endif /* Full stream duration */ -- 2.34.1