GNOME Bugzilla – Bug 677619
[1.0] tag event names need to be fixed and standardised
Last modified: 2012-07-27 22:37:20 UTC
The tag event API was changed to work around a limitation of how sticky events work. We need to be able to keep multiple sticky taglists on a pad without merging them or replacing all the earlier ones. Reason, for example: a demuxer will typically extract "global" tags and send them in a separate taglist from per-stream tags. It is desirable to keep those separate to be able to tell which ones are in fact the global container tags and which are the per-stream tags. Sources may produce tags (e.g. cd-text from audiocdsrc); tag parsers may produce tags (id3demux, apedemux, icydemux); containers may produce tags; decoders may produce tags (though this is now mostly left to containers or parsers); codec parsers may produce tags (e.g. bitrate updates - even if those are arguable not tags). At the very least we need to make demuxers use different names for global container tags and per-stream tags, so both tags are maintained as sticky events on pads. Ideally we would find a neat solution to integrate this with stream ids (see bug #634407 comment 25), but it was deemed too ambitious for this cycle. But if anyone has any ideas... (perhaps a path-like ID of the stream topology, something like filesrc0/matroskademux0/audio00 would do the trick, could easily be implemented via a recursive query).
Maybe demuxername/streamname would be unique enough? Why would you need srcname there?
Any progress on this? gst_object_get_path_name() plus something to categorize tags ("stream", "global") should be enough, right?
Sebastian: yes, we just need to agree on something. Could tie in nicely with #634407, where we also just need to agree on something. Let's talk about it at GUADEC.
Created attachment 219747 [details] [review] event: Define two different tag event types (global and per-stream tags)
Created attachment 219748 [details] [review] event: Update for new tag event API
As discussed, let's do GstEventTagScope => GstTagScope and make it a property of GstTagList itself, and add a getter/setter for that (with stream scope the default).
commit 826a8d643df4ab32d19abb26ebec512981f8a653 Author: Sebastian Dröge <sebastian.droege@collabora.co.uk> Date: Fri Jul 27 23:52:12 2012 +0200 tag: Add a scope to taglists This specifies if a given taglist applies to the complete medium or only this specific stream. By default a taglist has a stream scope. Fixes bug #677619.