GNOME Bugzilla – Bug 732237
dashdemux: expose language tags
Last modified: 2014-08-19 19:12:01 UTC
Currently dashdemux parse various language properties contained in the AdaptationSet and ContentComponent nodes but does not send any language tags to downstream.
There are a few cases we need to deal with.
1) The lang property is set on the AdaptationSet node. Information can be forwarded downstream using a single tag (GST_TAG_LANGUAGE_CODE)
2) The lang property is not set on the AdaptationSet node but ContentComponents are present and have the lang property. In this case, we will need to find a way to forward downstream multiple lang tags corresponding to the streams contained in the fragments of this AdaptationSet.
Is it reasonable to use the GST_TAG_LANGUAGE_CODE tag with multiple value here ? Each index value corresponding to the real stream index ?
Or something like "stream-%d-language-code" makes more sense ?
Also we can only trust the order of appearance of the ContentComponent nodes to associate it a stream index.
On the qtdemux/[...] side, the tag event should be handled and the upstream tags stored globally.
For each output stream it should look at the proper language tag / value index, get the value, and push the tag to the stream tags.
The rest of the upstream tags will be pushed with the other global tags.
What do you think ?
Do you have an example of such manifests so I can take a look?
Here is a manifest where each adaptation set contains only one media component (stream) and the language property is set.
The language is also stored in the mp4 fragments.
Created attachment 279238 [details] [review]
WIP dashdemux: push language code tag
Language code tag is retrieved from the AdaptationSet language property.
TODO: language should also be retrieved from the ContentComponent if present.
(In reply to comment #2)
> Here is a manifest where each adaptation set contains only one media component
> (stream) and the language property is set.
> The language is also stored in the mp4 fragments.
Currently dashdemux exposes all those streams and using playbin you can select the audio stream that you want to play. The non active streams are deactivated at dashdemux and don't get any buffer downloaded to save network. If you activate it again the stream download is restarted.
Do you have a sample with the ContentComponents nodes?
(In reply to comment #3)
> Created an attachment (id=279238) [details] [review]
> WIP dashdemux: push language code tag
> Language code tag is retrieved from the AdaptationSet language property.
> TODO: language should also be retrieved from the ContentComponent if present.
Patch looks good, will do a full review once you handle contentcomponent on this on a subsequent patch.
Created attachment 279315 [details] [review]
dashdemux: push language code tag
Patch updated. Added a call to gst_tag_check_language_code.
ContentComponent entry can be found in one of the dash mpds here: http://rdmedia.bbc.co.uk/dash/ondemand/bbb/
Author: Thiago Santos <email@example.com>
Date: Tue Aug 19 16:01:58 2014 -0300
dashdemux: read language from ContentComponent node as a fallback
If the language is not specified in the AdaptationSet, use the ContentComponent
node to get it. We only get it if there is only a single ContentComponent as
it doesn't seem clear on what to do if there are multiple entries
Author: Matthieu Bouron <firstname.lastname@example.org>
Date: Wed Jun 25 15:55:32 2014 +0200
dashdemux: push language code tag
Language code tag is retrieved from the AdaptationSet language