qtdemux: add support for DASH inband events
Section 5.10.3 (Inband Event Signalling) of the MPEG DASH specification defines a new box type "emsg" that is used to convey events. These events can be used to signal changes in the DASH stream, convey metadata or provide application specific information. One usage of these messages is to signal when a live DASH stream is ending or has ended.
As these events can be used for many purposes, when qtdemux finds an event, this MR modifies qtdemux to send these events upstream, downstream and as a message on the bus. This allows both elements and applications to listen to these events.
An MR to gst-plugins-bad causes dashdemux to react to the DASH defined events that signal end of stream and send a stream_group_done event. This is used rather than a simple EOS because dashdemux needs a way to differentiate between the end of one segment (which sends a normal EOS) and end of stream. The reason for doing this is because when playing a fragmented stream, there might not be anything in the MP4 fragment that indicates that a stream has finished. In that case, qtdemux needs a hint from an upstream element that the stream has finished.