tsdemux: Save custom event(HLSMedia info) when program is NULL
authorGilbok Lee <gilbok.lee@samsung.com>
Mon, 6 Sep 2021 04:52:58 +0000 (13:52 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Mon, 6 Sep 2021 04:57:45 +0000 (04:57 +0000)
Change-Id: Ida60c066ea5d069ccb7a64605317ee24805060bd

gst/mpegtsdemux/tsdemux.c
gst/mpegtsdemux/tsdemux.h

index edaed13..9431b1a 100644 (file)
@@ -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
index 420788c..8ba596e 100644 (file)
@@ -96,6 +96,7 @@ struct _GstTSDemux
 
 #ifdef TIZEN_FEATURE_TSDEMUX_LANG_TAG
   GstTagList *pending_language_tag;
+  GstEvent *pending_custom_event;
 #endif
 
   /* Full stream duration */