mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Use role flags in DefaultTrackNameProvider.
Also make combination of language and role flags the default over the label, as it's more readable and auto-translated into other languages. PiperOrigin-RevId: 240801070
This commit is contained in:
parent
28ea31cd4c
commit
32924e3f17
2 changed files with 44 additions and 13 deletions
|
|
@ -39,15 +39,17 @@ public class DefaultTrackNameProvider implements TrackNameProvider {
|
||||||
String trackName;
|
String trackName;
|
||||||
int trackType = inferPrimaryTrackType(format);
|
int trackType = inferPrimaryTrackType(format);
|
||||||
if (trackType == C.TRACK_TYPE_VIDEO) {
|
if (trackType == C.TRACK_TYPE_VIDEO) {
|
||||||
trackName = joinWithSeparator(buildResolutionString(format), buildBitrateString(format));
|
trackName =
|
||||||
|
joinWithSeparator(
|
||||||
|
buildRoleString(format), buildResolutionString(format), buildBitrateString(format));
|
||||||
} else if (trackType == C.TRACK_TYPE_AUDIO) {
|
} else if (trackType == C.TRACK_TYPE_AUDIO) {
|
||||||
trackName =
|
trackName =
|
||||||
joinWithSeparator(
|
joinWithSeparator(
|
||||||
buildLabelString(format),
|
buildLanguageOrLabelString(format),
|
||||||
buildAudioChannelString(format),
|
buildAudioChannelString(format),
|
||||||
buildBitrateString(format));
|
buildBitrateString(format));
|
||||||
} else {
|
} else {
|
||||||
trackName = buildLabelString(format);
|
trackName = buildLanguageOrLabelString(format);
|
||||||
}
|
}
|
||||||
return trackName.length() == 0 ? resources.getString(R.string.exo_track_unknown) : trackName;
|
return trackName.length() == 0 ? resources.getString(R.string.exo_track_unknown) : trackName;
|
||||||
}
|
}
|
||||||
|
|
@ -87,22 +89,43 @@ public class DefaultTrackNameProvider implements TrackNameProvider {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String buildLabelString(Format format) {
|
private String buildLanguageOrLabelString(Format format) {
|
||||||
if (!TextUtils.isEmpty(format.label)) {
|
String languageAndRole =
|
||||||
return format.label;
|
joinWithSeparator(buildLanguageString(format), buildRoleString(format));
|
||||||
}
|
return TextUtils.isEmpty(languageAndRole) ? buildLabelString(format) : languageAndRole;
|
||||||
// Fall back to using the language.
|
|
||||||
String language = format.language;
|
|
||||||
return TextUtils.isEmpty(language) || C.LANGUAGE_UNDETERMINED.equals(language)
|
|
||||||
? ""
|
|
||||||
: buildLanguageString(language);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String buildLanguageString(String language) {
|
private String buildLabelString(Format format) {
|
||||||
|
return TextUtils.isEmpty(format.label) ? "" : format.label;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildLanguageString(Format format) {
|
||||||
|
String language = format.language;
|
||||||
|
if (TextUtils.isEmpty(language) || C.LANGUAGE_UNDETERMINED.equals(language)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
Locale locale = Util.SDK_INT >= 21 ? Locale.forLanguageTag(language) : new Locale(language);
|
Locale locale = Util.SDK_INT >= 21 ? Locale.forLanguageTag(language) : new Locale(language);
|
||||||
return locale.getDisplayName();
|
return locale.getDisplayName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildRoleString(Format format) {
|
||||||
|
String roles = "";
|
||||||
|
if ((format.roleFlags & C.ROLE_FLAG_ALTERNATE) != 0) {
|
||||||
|
roles = resources.getString(R.string.exo_track_role_alternate);
|
||||||
|
}
|
||||||
|
if ((format.roleFlags & C.ROLE_FLAG_SUPPLEMENTARY) != 0) {
|
||||||
|
roles = joinWithSeparator(roles, resources.getString(R.string.exo_track_role_supplementary));
|
||||||
|
}
|
||||||
|
if ((format.roleFlags & C.ROLE_FLAG_COMMENTARY) != 0) {
|
||||||
|
roles = joinWithSeparator(roles, resources.getString(R.string.exo_track_role_commentary));
|
||||||
|
}
|
||||||
|
if ((format.roleFlags & (C.ROLE_FLAG_CAPTION | C.ROLE_FLAG_DESCRIBES_MUSIC_AND_SOUND)) != 0) {
|
||||||
|
roles =
|
||||||
|
joinWithSeparator(roles, resources.getString(R.string.exo_track_role_closed_captions));
|
||||||
|
}
|
||||||
|
return roles;
|
||||||
|
}
|
||||||
|
|
||||||
private String joinWithSeparator(String... items) {
|
private String joinWithSeparator(String... items) {
|
||||||
String itemList = "";
|
String itemList = "";
|
||||||
for (String item : items) {
|
for (String item : items) {
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,14 @@
|
||||||
<string name="exo_track_surround_5_point_1">5.1 surround sound</string>
|
<string name="exo_track_surround_5_point_1">5.1 surround sound</string>
|
||||||
<!-- Describes a 7.1 (https://en.wikipedia.org/wiki/7.1_surround_sound) audio track. [CHAR LIMIT=40] -->
|
<!-- Describes a 7.1 (https://en.wikipedia.org/wiki/7.1_surround_sound) audio track. [CHAR LIMIT=40] -->
|
||||||
<string name="exo_track_surround_7_point_1">7.1 surround sound</string>
|
<string name="exo_track_surround_7_point_1">7.1 surround sound</string>
|
||||||
|
<!-- Describes an alternate track, e.g. a video recorded from a different viewpoint. [CHAR LIMIT=40] -->
|
||||||
|
<string name="exo_track_role_alternate">Alternate</string>
|
||||||
|
<!-- Describes a supplementary track. [CHAR LIMIT=40] -->
|
||||||
|
<string name="exo_track_role_supplementary">Supplementary</string>
|
||||||
|
<!-- Describes a track containing commentary. [CHAR LIMIT=40] -->
|
||||||
|
<string name="exo_track_role_commentary">Commentary</string>
|
||||||
|
<!-- Describes a track with closed captions. [CHAR LIMIT=40] -->
|
||||||
|
<string name="exo_track_role_closed_captions">CC</string>
|
||||||
<!-- Describes the bitrate of a media track in Megabits (https://en.wikipedia.org/wiki/Megabit) per second. [CHAR LIMIT=20] -->
|
<!-- Describes the bitrate of a media track in Megabits (https://en.wikipedia.org/wiki/Megabit) per second. [CHAR LIMIT=20] -->
|
||||||
<string name="exo_track_bitrate"><xliff:g id="bitrate" example="5.2">%1$.2f</xliff:g> Mbps</string>
|
<string name="exo_track_bitrate"><xliff:g id="bitrate" example="5.2">%1$.2f</xliff:g> Mbps</string>
|
||||||
<!-- Defines a way of appending an item to a list of items. For example appending "banana" to "apple, pear" to get "apple, pear, banana". Note: the command separator will appear between all consecutive list items, so do not use an equivalent of 'and'. [CHAR LIMIT=40] -->
|
<!-- Defines a way of appending an item to a list of items. For example appending "banana" to "apple, pear" to get "apple, pear, banana". Note: the command separator will appear between all consecutive list items, so do not use an equivalent of 'and'. [CHAR LIMIT=40] -->
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue