GNOME Bugzilla – Bug 655106
Tagsetting interface doesn't work
Last modified: 2011-10-07 16:22:27 UTC
Created attachment 192442 [details] encodebin + tags Added code to Transmageddon for setting the TAG_APPLICATION_NAME tag when creating files. Seems to be ignored or overridden in the actual pipeline. Attached small simple testapp showing the problem. In the resulting file the 'Writing application' tag doesn't end up as Transmageddon instead the incoming application name is preserved.
Hmm default merge mode should be GST_TAG_MERGE_KEEP, to not override tags you set with tags from events. Although I recall that elements had got that wrong and I fixed it in several of them. Just had a quick look at qtmux and it looks correct though. Also qtmux does not set TAG_APPLICATION_NAME. Whats the value you find in the tags actually?
Using the 'mediainfo' application I can see this tag : Writing application : Xiph.Org libVorbis I 20100325 (Everywhere)
Is that from the source file or the resulting file. It is weird those as neither of the contain vorbis audio. btw. gst-launch -t playbin2 uri=... would should which element emits the tags.
It is from the source file, as I wrote in the initial bug report it seems to keep the original tag instead of writing my new one. The input file is a Ogg file.
"Xiph.Org libVorbis I 20100325 (Everywhere)" is the "vendor tag" of the encoding library, it would be different from a user settable tag, such as ENCODER, which would typically be something like "ffmpeg2theora". Something somewhere confuses the two.
I filed https://bugzilla.gnome.org/show_bug.cgi?id=656034 which fixes a mismatch for ENCODER (which doesn't mean quite the same thing for gstreamer and Ogg). I'm thinking that maybe it's mediainfo which doesn't report right. What are the tags like with Stefan's command line ? If it sees both encoder and application-name, it might choose to give precedence to encoder to show the user.
Checking output based on Stefans suggestion, the tag that is set is the 'encoder' tag. Does GStreamer not match TAG_APPLICATION_NAME to encoder in Quicktime (and should it?) gst-launch-0.10 -t playbin2 uri=file:///home/cschalle/Videos/asupertest-155555-06102011.mov Setting pipeline to PAUSED ... Pipeline is PREROLLING ... FOUND TAG : found by element "qtdemux0". video codec: H.264 / AVC bitrate: 1830274 language code: en FOUND TAG : found by element "qtdemux0". audio codec: MPEG-4 AAC audio maximum bitrate: 194660 bitrate: 112000 language code: en FOUND TAG : found by element "qtdemux0". datetime: 2011-10-06 15:55:55 (UTC +1h) encoder: Xiph.Org libVorbis I 20100325 (Everywhere) application name: Transmageddon transcoder container format: Quicktime FOUND TAG : found by element "faad0". audio codec: MPEG-4 AAC FOUND TAG : found by element "aacparse0". minimum bitrate: 135056 FOUND TAG : found by element "aacparse0". minimum bitrate: 131610 FOUND TAG : found by element "aacparse0". minimum bitrate: 125409 FOUND TAG : found by element "aacparse0". minimum bitrate: 124375 FOUND TAG : found by element "aacparse0". minimum bitrate: 120585 FOUND TAG : found by element "aacparse0". minimum bitrate: 111628 Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstPulseSinkClock FOUND TAG : found by element "aacparse0". minimum bitrate: 108871 FOUND TAG : found by element "aacparse0". minimum bitrate: 108527
actually looking at the output again I see that it got a tag called 'application name' which is correctly set to 'Transmageddon transcoder' I will try to file a bug against mediainfo. Closing this a Notabug.
Just in case someone ever Googles this, I did add GST_TAG_ENCODER to the list of tags I set, and that did update the 'encoder' value in Quicktime. One could argue that having a single 'encoder' value is a bit useless in a format that can have multiple streams in multiple formats.
> One could argue that having a single 'encoder' value is > a bit useless in a format that can have multiple streams > in multiple formats. Yes, that's a limitation of the tag setting API really (or lack of a some other API that allows you to use GstTagSetter on each individual stream).