After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 677619 - [1.0] tag event names need to be fixed and standardised
[1.0] tag event names need to be fixed and standardised
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gstreamer (core)
0.11.x
Other Linux
: Normal blocker
: 0.11.x
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2012-06-07 11:19 UTC by Tim-Philipp Müller
Modified: 2012-07-27 22:37 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
event: Define two different tag event types (global and per-stream tags) (4.58 KB, patch)
2012-07-27 16:59 UTC, Sebastian Dröge (slomo)
rejected Details | Review
event: Update for new tag event API (7.14 KB, patch)
2012-07-27 16:59 UTC, Sebastian Dröge (slomo)
rejected Details | Review

Description Tim-Philipp Müller 2012-06-07 11:19:49 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).
Comment 1 Matej Knopp 2012-06-10 20:48:39 UTC
Maybe demuxername/streamname would be unique enough? Why would you need srcname there?
Comment 2 Sebastian Dröge (slomo) 2012-07-24 18:53:21 UTC
Any progress on this? gst_object_get_path_name() plus something to categorize tags ("stream", "global") should be enough, right?
Comment 3 Tim-Philipp Müller 2012-07-24 19:02:42 UTC
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.
Comment 4 Sebastian Dröge (slomo) 2012-07-27 16:59:47 UTC
Created attachment 219747 [details] [review]
event: Define two different tag event types (global and per-stream tags)
Comment 5 Sebastian Dröge (slomo) 2012-07-27 16:59:51 UTC
Created attachment 219748 [details] [review]
event: Update for new tag event API
Comment 6 Tim-Philipp Müller 2012-07-27 21:30:04 UTC
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).
Comment 7 Sebastian Dröge (slomo) 2012-07-27 22:37:20 UTC
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.