fix: dash_roles add role=description for DVS audio per DASH-IF-IOP-v4.3 (#1054)
Fixes support for description role for audio DVS tracks as per spec.
This commit is contained in:
parent
b9d477b969
commit
dc0395291a
|
@ -12,5 +12,5 @@ DASH specific stream descriptor fields
|
||||||
|
|
||||||
Optional semicolon separated list of values for DASH Role element. The
|
Optional semicolon separated list of values for DASH Role element. The
|
||||||
value should be one of: **caption**, **subtitle**, **main**, **alternate**,
|
value should be one of: **caption**, **subtitle**, **main**, **alternate**,
|
||||||
**supplementary**, **commentary** and **dub**. See DASH (ISO/IEC 23009-1)
|
**supplementary**, **commentary**, **description** and **dub**. See
|
||||||
specification for details.
|
DASH (ISO/IEC 23009-1) specification for details.
|
||||||
|
|
|
@ -114,8 +114,8 @@ const char kUsage[] =
|
||||||
" in the format: scheme_id_uri=value.\n"
|
" in the format: scheme_id_uri=value.\n"
|
||||||
" - dash_roles (roles): Optional semicolon separated list of values for\n"
|
" - dash_roles (roles): Optional semicolon separated list of values for\n"
|
||||||
" DASH Role elements. The value should be one of: caption, subtitle,\n"
|
" DASH Role elements. The value should be one of: caption, subtitle,\n"
|
||||||
" main, alternate, supplementary, commentary and dub. See DASH\n"
|
" main, alternate, supplementary, commentary, description and dub. See\n"
|
||||||
" (ISO/IEC 23009-1) specification for details.\n";
|
" DASH (ISO/IEC 23009-1) specification for details.\n";
|
||||||
|
|
||||||
// Labels for parameters in RawKey key info.
|
// Labels for parameters in RawKey key info.
|
||||||
const char kDrmLabelLabel[] = "label";
|
const char kDrmLabelLabel[] = "label";
|
||||||
|
@ -565,7 +565,7 @@ int PackagerMain(int argc, char** argv) {
|
||||||
#if defined(OS_WIN)
|
#if defined(OS_WIN)
|
||||||
// Windows wmain, which converts wide character arguments to UTF-8.
|
// Windows wmain, which converts wide character arguments to UTF-8.
|
||||||
int wmain(int argc, wchar_t* argv[], wchar_t* envp[]) {
|
int wmain(int argc, wchar_t* argv[], wchar_t* envp[]) {
|
||||||
std::unique_ptr<char* [], std::function<void(char**)>> utf8_argv(
|
std::unique_ptr<char*[], std::function<void(char**)>> utf8_argv(
|
||||||
new char*[argc], [argc](char** utf8_args) {
|
new char*[argc], [argc](char** utf8_args) {
|
||||||
// TODO(tinskip): This leaks, but if this code is enabled, it crashes.
|
// TODO(tinskip): This leaks, but if this code is enabled, it crashes.
|
||||||
// Figure out why. I suspect gflags does something funny with the
|
// Figure out why. I suspect gflags does something funny with the
|
||||||
|
|
|
@ -709,7 +709,7 @@ class PackagerFunctionalTest(PackagerAppTest):
|
||||||
self._GetStream(
|
self._GetStream(
|
||||||
'audio',
|
'audio',
|
||||||
dash_accessibilities='urn:tva:metadata:cs:AudioPurposeCS:2007=1',
|
dash_accessibilities='urn:tva:metadata:cs:AudioPurposeCS:2007=1',
|
||||||
dash_roles='alternate'),
|
dash_roles='description'),
|
||||||
self._GetStream('video'),
|
self._GetStream('video'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
</AdaptationSet>
|
</AdaptationSet>
|
||||||
<AdaptationSet id="1" contentType="audio" subsegmentAlignment="true">
|
<AdaptationSet id="1" contentType="audio" subsegmentAlignment="true">
|
||||||
<Accessibility schemeIdUri="urn:tva:metadata:cs:AudioPurposeCS:2007" value="1"/>
|
<Accessibility schemeIdUri="urn:tva:metadata:cs:AudioPurposeCS:2007" value="1"/>
|
||||||
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="alternate"/>
|
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="description"/>
|
||||||
<Representation id="1" bandwidth="133334" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
<Representation id="1" bandwidth="133334" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||||
|
|
|
@ -54,6 +54,8 @@ std::string RoleToText(AdaptationSet::Role role) {
|
||||||
return "commentary";
|
return "commentary";
|
||||||
case AdaptationSet::kRoleDub:
|
case AdaptationSet::kRoleDub:
|
||||||
return "dub";
|
return "dub";
|
||||||
|
case AdaptationSet::kRoleDescription:
|
||||||
|
return "description";
|
||||||
default:
|
default:
|
||||||
return "unknown";
|
return "unknown";
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,8 @@ class AdaptationSet {
|
||||||
kRoleAlternate,
|
kRoleAlternate,
|
||||||
kRoleSupplementary,
|
kRoleSupplementary,
|
||||||
kRoleCommentary,
|
kRoleCommentary,
|
||||||
kRoleDub
|
kRoleDub,
|
||||||
|
kRoleDescription
|
||||||
};
|
};
|
||||||
|
|
||||||
virtual ~AdaptationSet();
|
virtual ~AdaptationSet();
|
||||||
|
|
|
@ -57,6 +57,8 @@ AdaptationSet::Role RoleFromString(const std::string& role_str) {
|
||||||
return AdaptationSet::Role::kRoleCommentary;
|
return AdaptationSet::Role::kRoleCommentary;
|
||||||
if (role_str == "dub")
|
if (role_str == "dub")
|
||||||
return AdaptationSet::Role::kRoleDub;
|
return AdaptationSet::Role::kRoleDub;
|
||||||
|
if (role_str == "description")
|
||||||
|
return AdaptationSet::Role::kRoleDescription;
|
||||||
return AdaptationSet::Role::kRoleUnknown;
|
return AdaptationSet::Role::kRoleUnknown;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue