gst_event_new_toc (GstToc * toc, gboolean updated)
{
GstStructure *toc_struct;
+ GQuark id;
g_return_val_if_fail (toc != NULL, NULL);
GST_CAT_INFO (GST_CAT_EVENT, "creating toc event");
- toc_struct = gst_structure_new_id (GST_QUARK (EVENT_TOC),
+ /* need different structure names so sticky_multi event stuff on pads
+ * works, i.e. both TOC events are kept around */
+ if (gst_toc_get_scope (toc) == GST_TOC_SCOPE_GLOBAL)
+ id = GST_QUARK (EVENT_TOC_GLOBAL);
+ else
+ id = GST_QUARK (EVENT_TOC_CURRENT);
+
+ toc_struct = gst_structure_new_id (id,
GST_QUARK (TOC), GST_TYPE_TOC, toc,
GST_QUARK (UPDATED), G_TYPE_BOOLEAN, updated, NULL);
GST_EVENT_BUFFERSIZE = GST_EVENT_MAKE_TYPE (90, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY)),
GST_EVENT_SINK_MESSAGE = GST_EVENT_MAKE_TYPE (100, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY) | FLAG(STICKY_MULTI)),
GST_EVENT_EOS = GST_EVENT_MAKE_TYPE (110, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY)),
- GST_EVENT_TOC = GST_EVENT_MAKE_TYPE (120, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY)),
+ GST_EVENT_TOC = GST_EVENT_MAKE_TYPE (120, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY) | FLAG(STICKY_MULTI)),
/* non-sticky downstream serialized */
GST_EVENT_SEGMENT_DONE = GST_EVENT_MAKE_TYPE (150, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)),
GST_ELEMENT_METADATA_AUTHOR, "toc", "toc-entry", "updated", "extend-uid",
"uid", "tags", "sub-entries", "info", "GstMessageTag", "GstEventTag",
"GstMessageResetTime",
- "GstMessageToc", "GstEventToc", "GstEventSegmentDone"
+ "GstMessageToc", "GstEventTocGlobal", "GstEventTocCurrent",
+ "GstEventSegmentDone"
};
GQuark _priv_gst_quark_table[GST_QUARK_MAX];
GST_QUARK_EVENT_TAG = 154,
GST_QUARK_MESSAGE_RESET_TIME = 155,
GST_QUARK_MESSAGE_TOC = 156,
- GST_QUARK_EVENT_TOC = 157,
- GST_QUARK_EVENT_SEGMENT_DONE = 158,
- GST_QUARK_MAX = 159
+ GST_QUARK_EVENT_TOC_GLOBAL = 157,
+ GST_QUARK_EVENT_TOC_CURRENT = 158,
+ GST_QUARK_EVENT_SEGMENT_DONE = 159,
+ GST_QUARK_MAX = 160
} GstQuarkId;
extern GQuark _priv_gst_quark_table[GST_QUARK_MAX];