mirror of
https://github.com/samsonjs/media.git
synced 2026-04-01 10:35:48 +00:00
Fixes according to the code review
This commit is contained in:
parent
854419962a
commit
d7c2519a5d
9 changed files with 126 additions and 110 deletions
|
|
@ -977,7 +977,10 @@ public final class C {
|
|||
public static final int NETWORK_TYPE_OTHER = 8;
|
||||
|
||||
/**
|
||||
* Adaptation set's role and accessibility descriptor value.
|
||||
* Track role flags. Possible values are {@link #ROLE_FLAGS_MAIN}, {@link #ROLE_FLAGS_ALTERNATE},
|
||||
* {@link #ROLE_FLAGS_SUPPLEMENTARY}, {@link #ROLE_FLAGS_COMMENTARY}, {@link #ROLE_FLAGS_DUB},
|
||||
* {@link #ROLE_FLAGS_EMERGENCY}, {@link #ROLE_FLAGS_CAPTION}, {@link #ROLE_FLAGS_SIGN},
|
||||
* {@link #ROLE_FLAGS_ENHANCED_AUDIO_INTELLIGIBILITY}, {@link #ROLE_FLAGS_DESCRIPTION}.
|
||||
*/
|
||||
@Documented
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public final class Format implements Parcelable {
|
|||
/** Track selection flags. **/
|
||||
@C.SelectionFlags
|
||||
public final int selectionFlags;
|
||||
/** Track role and accessibility descriptor values. **/
|
||||
/** Track role flags. **/
|
||||
@C.RoleFlags
|
||||
public final int roleFlags;
|
||||
/**
|
||||
|
|
@ -234,9 +234,9 @@ public final class Format implements Parcelable {
|
|||
/* encoderDelay= */ NO_VALUE,
|
||||
/* encoderPadding= */ NO_VALUE,
|
||||
selectionFlags,
|
||||
roleFlags,
|
||||
/* language= */ null,
|
||||
/* accessibilityChannel= */ NO_VALUE,
|
||||
roleFlags,
|
||||
OFFSET_SAMPLE_RELATIVE,
|
||||
initializationData,
|
||||
/* drmInitData= */ null,
|
||||
|
|
@ -338,9 +338,9 @@ public final class Format implements Parcelable {
|
|||
/* encoderDelay= */ NO_VALUE,
|
||||
/* encoderPadding= */ NO_VALUE,
|
||||
/* selectionFlags= */ 0,
|
||||
/* roleFlags= */ 0,
|
||||
/* language= */ null,
|
||||
/* accessibilityChannel= */ NO_VALUE,
|
||||
/* roleFlags= */ 0,
|
||||
OFFSET_SAMPLE_RELATIVE,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
|
|
@ -360,8 +360,8 @@ public final class Format implements Parcelable {
|
|||
int sampleRate,
|
||||
@Nullable List<byte[]> initializationData,
|
||||
@C.SelectionFlags int selectionFlags,
|
||||
@Nullable String language,
|
||||
@C.RoleFlags int roleFlags) {
|
||||
@C.RoleFlags int roleFlags,
|
||||
@Nullable String language) {
|
||||
return createAudioContainerFormat(
|
||||
id,
|
||||
/* label= */ null,
|
||||
|
|
@ -373,8 +373,8 @@ public final class Format implements Parcelable {
|
|||
sampleRate,
|
||||
initializationData,
|
||||
selectionFlags,
|
||||
language,
|
||||
roleFlags);
|
||||
roleFlags,
|
||||
language);
|
||||
}
|
||||
|
||||
public static Format createAudioContainerFormat(
|
||||
|
|
@ -388,8 +388,8 @@ public final class Format implements Parcelable {
|
|||
int sampleRate,
|
||||
@Nullable List<byte[]> initializationData,
|
||||
@C.SelectionFlags int selectionFlags,
|
||||
@Nullable String language,
|
||||
@C.RoleFlags int roleFlags) {
|
||||
@C.RoleFlags int roleFlags,
|
||||
@Nullable String language) {
|
||||
return new Format(
|
||||
id,
|
||||
label,
|
||||
|
|
@ -412,9 +412,9 @@ public final class Format implements Parcelable {
|
|||
/* encoderDelay= */ NO_VALUE,
|
||||
/* encoderPadding= */ NO_VALUE,
|
||||
selectionFlags,
|
||||
roleFlags,
|
||||
language,
|
||||
/* accessibilityChannel= */ NO_VALUE,
|
||||
roleFlags,
|
||||
OFFSET_SAMPLE_RELATIVE,
|
||||
initializationData,
|
||||
/* drmInitData= */ null,
|
||||
|
|
@ -517,9 +517,9 @@ public final class Format implements Parcelable {
|
|||
encoderDelay,
|
||||
encoderPadding,
|
||||
selectionFlags,
|
||||
/* roleFlags= */ 0,
|
||||
language,
|
||||
/* accessibilityChannel= */ NO_VALUE,
|
||||
/* roleFlags= */ 0,
|
||||
OFFSET_SAMPLE_RELATIVE,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
|
|
@ -565,9 +565,9 @@ public final class Format implements Parcelable {
|
|||
codecs,
|
||||
bitrate,
|
||||
selectionFlags,
|
||||
/* roleFlags= */ 0,
|
||||
language,
|
||||
/* accessibilityChannel= */ NO_VALUE,
|
||||
/* roleFlags= */ 0);
|
||||
/* accessibilityChannel= */ NO_VALUE);
|
||||
}
|
||||
|
||||
public static Format createTextContainerFormat(
|
||||
|
|
@ -578,9 +578,9 @@ public final class Format implements Parcelable {
|
|||
@Nullable String codecs,
|
||||
int bitrate,
|
||||
@C.SelectionFlags int selectionFlags,
|
||||
@C.RoleFlags int roleFlags,
|
||||
@Nullable String language,
|
||||
int accessibilityChannel,
|
||||
@C.RoleFlags int roleFlags) {
|
||||
int accessibilityChannel) {
|
||||
return new Format(
|
||||
id,
|
||||
label,
|
||||
|
|
@ -603,9 +603,9 @@ public final class Format implements Parcelable {
|
|||
/* encoderDelay= */ NO_VALUE,
|
||||
/* encoderPadding= */ NO_VALUE,
|
||||
selectionFlags,
|
||||
roleFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
roleFlags,
|
||||
OFFSET_SAMPLE_RELATIVE,
|
||||
/* initializationData= */ null,
|
||||
/* drmInitData= */ null,
|
||||
|
|
@ -716,9 +716,9 @@ public final class Format implements Parcelable {
|
|||
/* encoderDelay= */ NO_VALUE,
|
||||
/* encoderPadding= */ NO_VALUE,
|
||||
selectionFlags,
|
||||
/* roleFlags= */ 0,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
/* roleFlags= */ 0,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
|
|
@ -758,9 +758,9 @@ public final class Format implements Parcelable {
|
|||
/* encoderDelay= */ NO_VALUE,
|
||||
/* encoderPadding= */ NO_VALUE,
|
||||
selectionFlags,
|
||||
/* roleFlags= */ 0,
|
||||
language,
|
||||
/* accessibilityChannel= */ NO_VALUE,
|
||||
/* roleFlags= */ 0,
|
||||
OFFSET_SAMPLE_RELATIVE,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
|
|
@ -777,6 +777,7 @@ public final class Format implements Parcelable {
|
|||
@Nullable String codecs,
|
||||
int bitrate,
|
||||
@C.SelectionFlags int selectionFlags,
|
||||
@C.RoleFlags int roleFlags,
|
||||
@Nullable String language) {
|
||||
return createContainerFormat(
|
||||
id,
|
||||
|
|
@ -786,6 +787,7 @@ public final class Format implements Parcelable {
|
|||
codecs,
|
||||
bitrate,
|
||||
selectionFlags,
|
||||
roleFlags,
|
||||
language);
|
||||
}
|
||||
|
||||
|
|
@ -797,6 +799,7 @@ public final class Format implements Parcelable {
|
|||
@Nullable String codecs,
|
||||
int bitrate,
|
||||
@C.SelectionFlags int selectionFlags,
|
||||
@C.RoleFlags int roleFlags,
|
||||
@Nullable String language) {
|
||||
return new Format(
|
||||
id,
|
||||
|
|
@ -820,9 +823,9 @@ public final class Format implements Parcelable {
|
|||
/* encoderDelay= */ NO_VALUE,
|
||||
/* encoderPadding= */ NO_VALUE,
|
||||
selectionFlags,
|
||||
roleFlags,
|
||||
language,
|
||||
/* accessibilityChannel= */ NO_VALUE,
|
||||
/* roleFlags= */ 0,
|
||||
OFFSET_SAMPLE_RELATIVE,
|
||||
/* initializationData= */ null,
|
||||
/* drmInitData= */ null,
|
||||
|
|
@ -853,9 +856,9 @@ public final class Format implements Parcelable {
|
|||
/* encoderDelay= */ NO_VALUE,
|
||||
/* encoderPadding= */ NO_VALUE,
|
||||
/* selectionFlags= */ 0,
|
||||
/* roleFlags= */ 0,
|
||||
/* language= */ null,
|
||||
/* accessibilityChannel= */ NO_VALUE,
|
||||
/* roleFlags= */ 0,
|
||||
subsampleOffsetUs,
|
||||
/* initializationData= */ null,
|
||||
/* drmInitData= */ null,
|
||||
|
|
@ -890,9 +893,9 @@ public final class Format implements Parcelable {
|
|||
/* encoderDelay= */ NO_VALUE,
|
||||
/* encoderPadding= */ NO_VALUE,
|
||||
/* selectionFlags= */ 0,
|
||||
/* roleFlags= */ 0,
|
||||
/* language= */ null,
|
||||
/* accessibilityChannel= */ NO_VALUE,
|
||||
/* roleFlags= */ 0,
|
||||
OFFSET_SAMPLE_RELATIVE,
|
||||
/* initializationData= */ null,
|
||||
drmInitData,
|
||||
|
|
@ -921,9 +924,9 @@ public final class Format implements Parcelable {
|
|||
int encoderDelay,
|
||||
int encoderPadding,
|
||||
@C.SelectionFlags int selectionFlags,
|
||||
@C.RoleFlags int roleFlags,
|
||||
@Nullable String language,
|
||||
int accessibilityChannel,
|
||||
@C.RoleFlags int roleFlags,
|
||||
long subsampleOffsetUs,
|
||||
@Nullable List<byte[]> initializationData,
|
||||
@Nullable DrmInitData drmInitData,
|
||||
|
|
@ -950,9 +953,9 @@ public final class Format implements Parcelable {
|
|||
this.encoderDelay = encoderDelay == Format.NO_VALUE ? 0 : encoderDelay;
|
||||
this.encoderPadding = encoderPadding == Format.NO_VALUE ? 0 : encoderPadding;
|
||||
this.selectionFlags = selectionFlags;
|
||||
this.roleFlags = roleFlags;
|
||||
this.language = Util.normalizeLanguageCode(language);
|
||||
this.accessibilityChannel = accessibilityChannel;
|
||||
this.roleFlags = roleFlags;
|
||||
this.subsampleOffsetUs = subsampleOffsetUs;
|
||||
this.initializationData =
|
||||
initializationData == null ? Collections.emptyList() : initializationData;
|
||||
|
|
@ -984,9 +987,9 @@ public final class Format implements Parcelable {
|
|||
encoderDelay = in.readInt();
|
||||
encoderPadding = in.readInt();
|
||||
selectionFlags = in.readInt();
|
||||
roleFlags = in.readInt();
|
||||
language = in.readString();
|
||||
accessibilityChannel = in.readInt();
|
||||
roleFlags = in.readInt();
|
||||
subsampleOffsetUs = in.readLong();
|
||||
int initializationDataSize = in.readInt();
|
||||
initializationData = new ArrayList<>(initializationDataSize);
|
||||
|
|
@ -1020,9 +1023,9 @@ public final class Format implements Parcelable {
|
|||
encoderDelay,
|
||||
encoderPadding,
|
||||
selectionFlags,
|
||||
roleFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
roleFlags,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
|
|
@ -1052,9 +1055,9 @@ public final class Format implements Parcelable {
|
|||
encoderDelay,
|
||||
encoderPadding,
|
||||
selectionFlags,
|
||||
roleFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
roleFlags,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
|
|
@ -1093,9 +1096,9 @@ public final class Format implements Parcelable {
|
|||
encoderDelay,
|
||||
encoderPadding,
|
||||
selectionFlags,
|
||||
roleFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
roleFlags,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
|
|
@ -1165,9 +1168,9 @@ public final class Format implements Parcelable {
|
|||
encoderDelay,
|
||||
encoderPadding,
|
||||
selectionFlags,
|
||||
roleFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
roleFlags,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
|
|
@ -1197,9 +1200,9 @@ public final class Format implements Parcelable {
|
|||
encoderDelay,
|
||||
encoderPadding,
|
||||
selectionFlags,
|
||||
roleFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
roleFlags,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
|
|
@ -1229,9 +1232,9 @@ public final class Format implements Parcelable {
|
|||
encoderDelay,
|
||||
encoderPadding,
|
||||
selectionFlags,
|
||||
roleFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
roleFlags,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
|
|
@ -1261,9 +1264,9 @@ public final class Format implements Parcelable {
|
|||
encoderDelay,
|
||||
encoderPadding,
|
||||
selectionFlags,
|
||||
roleFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
roleFlags,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
|
|
@ -1293,9 +1296,9 @@ public final class Format implements Parcelable {
|
|||
encoderDelay,
|
||||
encoderPadding,
|
||||
selectionFlags,
|
||||
roleFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
roleFlags,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
|
|
@ -1325,9 +1328,9 @@ public final class Format implements Parcelable {
|
|||
encoderDelay,
|
||||
encoderPadding,
|
||||
selectionFlags,
|
||||
roleFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
roleFlags,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
|
|
@ -1357,9 +1360,9 @@ public final class Format implements Parcelable {
|
|||
encoderDelay,
|
||||
encoderPadding,
|
||||
selectionFlags,
|
||||
roleFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
roleFlags,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
|
|
@ -1465,11 +1468,11 @@ public final class Format implements Parcelable {
|
|||
&& encoderPadding == other.encoderPadding
|
||||
&& subsampleOffsetUs == other.subsampleOffsetUs
|
||||
&& selectionFlags == other.selectionFlags
|
||||
&& roleFlags == other.roleFlags
|
||||
&& Util.areEqual(id, other.id)
|
||||
&& Util.areEqual(label, other.label)
|
||||
&& Util.areEqual(language, other.language)
|
||||
&& accessibilityChannel == other.accessibilityChannel
|
||||
&& roleFlags == other.roleFlags
|
||||
&& Util.areEqual(containerMimeType, other.containerMimeType)
|
||||
&& Util.areEqual(sampleMimeType, other.sampleMimeType)
|
||||
&& Util.areEqual(codecs, other.codecs)
|
||||
|
|
@ -1569,9 +1572,9 @@ public final class Format implements Parcelable {
|
|||
dest.writeInt(encoderDelay);
|
||||
dest.writeInt(encoderPadding);
|
||||
dest.writeInt(selectionFlags);
|
||||
dest.writeInt(roleFlags);
|
||||
dest.writeString(language);
|
||||
dest.writeInt(accessibilityChannel);
|
||||
dest.writeInt(roleFlags);
|
||||
dest.writeLong(subsampleOffsetUs);
|
||||
int initializationDataSize = initializationData.size();
|
||||
dest.writeInt(initializationDataSize);
|
||||
|
|
|
|||
|
|
@ -279,7 +279,6 @@ public class DashManifestParser extends DefaultHandler
|
|||
ArrayList<Descriptor> roleDescriptors = new ArrayList<>();
|
||||
ArrayList<Descriptor> supplementalProperties = new ArrayList<>();
|
||||
List<RepresentationInfo> representationInfos = new ArrayList<>();
|
||||
@C.SelectionFlags int selectionFlags = 0;
|
||||
|
||||
boolean seenFirstBaseUrl = false;
|
||||
do {
|
||||
|
|
@ -301,9 +300,7 @@ public class DashManifestParser extends DefaultHandler
|
|||
language = checkLanguageConsistency(language, xpp.getAttributeValue(null, "lang"));
|
||||
contentType = checkContentTypeConsistency(contentType, parseContentType(xpp));
|
||||
} else if (XmlPullParserUtil.isStartTag(xpp, "Role")) {
|
||||
Descriptor descriptor = parseDescriptor(xpp, "Role");
|
||||
selectionFlags |= parseSelectionFlags(descriptor);
|
||||
roleDescriptors.add(descriptor);
|
||||
roleDescriptors.add(parseDescriptor(xpp, "Role"));
|
||||
} else if (XmlPullParserUtil.isStartTag(xpp, "AudioChannelConfiguration")) {
|
||||
audioChannels = parseAudioChannelConfiguration(xpp);
|
||||
} else if (XmlPullParserUtil.isStartTag(xpp, "Accessibility")) {
|
||||
|
|
@ -324,7 +321,6 @@ public class DashManifestParser extends DefaultHandler
|
|||
audioChannels,
|
||||
audioSamplingRate,
|
||||
language,
|
||||
selectionFlags,
|
||||
roleDescriptors,
|
||||
accessibilityDescriptors,
|
||||
segmentBase);
|
||||
|
|
@ -494,7 +490,6 @@ public class DashManifestParser extends DefaultHandler
|
|||
int adaptationSetAudioChannels,
|
||||
int adaptationSetAudioSamplingRate,
|
||||
String adaptationSetLanguage,
|
||||
@C.SelectionFlags int adaptationSetSelectionFlags,
|
||||
List<Descriptor> adaptationSetRoleDescriptors,
|
||||
List<Descriptor> adaptationSetAccessibilityDescriptors,
|
||||
SegmentBase segmentBase)
|
||||
|
|
@ -559,7 +554,6 @@ public class DashManifestParser extends DefaultHandler
|
|||
audioSamplingRate,
|
||||
bandwidth,
|
||||
adaptationSetLanguage,
|
||||
adaptationSetSelectionFlags,
|
||||
adaptationSetRoleDescriptors,
|
||||
adaptationSetAccessibilityDescriptors,
|
||||
codecs,
|
||||
|
|
@ -581,16 +575,16 @@ public class DashManifestParser extends DefaultHandler
|
|||
int audioSamplingRate,
|
||||
int bitrate,
|
||||
String language,
|
||||
@C.SelectionFlags int selectionFlags,
|
||||
List<Descriptor> roleDescriptors,
|
||||
List<Descriptor> accessibilityDescriptors,
|
||||
String codecs,
|
||||
List<Descriptor> supplementalProperties) {
|
||||
String sampleMimeType = getSampleMimeType(containerMimeType, codecs);
|
||||
@C.SelectionFlags int selectionFlags = parseSelection(roleDescriptors);
|
||||
@C.RoleFlags int role = parseRole(roleDescriptors);
|
||||
@C.RoleFlags int accessibility = parseAccessibility(accessibilityDescriptors);
|
||||
@C.RoleFlags int roleFlags = role | accessibility;
|
||||
if (sampleMimeType != null) {
|
||||
@C.RoleFlags int role = parseRole(roleDescriptors);
|
||||
@C.RoleFlags int accessibility = parseAccessibility(accessibilityDescriptors);
|
||||
@C.RoleFlags int roleFlags = role | accessibility;
|
||||
if (MimeTypes.AUDIO_E_AC3.equals(sampleMimeType)) {
|
||||
sampleMimeType = parseEac3SupplementalProperties(supplementalProperties);
|
||||
}
|
||||
|
|
@ -620,8 +614,8 @@ public class DashManifestParser extends DefaultHandler
|
|||
audioSamplingRate,
|
||||
/* initializationData= */ null,
|
||||
selectionFlags,
|
||||
language,
|
||||
roleFlags);
|
||||
roleFlags,
|
||||
language);
|
||||
} else if (mimeTypeIsRawText(sampleMimeType)) {
|
||||
int accessibilityChannel;
|
||||
if (MimeTypes.APPLICATION_CEA608.equals(sampleMimeType)) {
|
||||
|
|
@ -639,13 +633,21 @@ public class DashManifestParser extends DefaultHandler
|
|||
codecs,
|
||||
bitrate,
|
||||
selectionFlags,
|
||||
roleFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
roleFlags);
|
||||
accessibilityChannel);
|
||||
}
|
||||
}
|
||||
return Format.createContainerFormat(
|
||||
id, label, containerMimeType, sampleMimeType, codecs, bitrate, selectionFlags, language);
|
||||
id,
|
||||
label,
|
||||
containerMimeType,
|
||||
sampleMimeType,
|
||||
codecs,
|
||||
bitrate,
|
||||
selectionFlags,
|
||||
roleFlags,
|
||||
language);
|
||||
}
|
||||
|
||||
protected Representation buildRepresentation(
|
||||
|
|
@ -1061,9 +1063,16 @@ public class DashManifestParser extends DefaultHandler
|
|||
|
||||
// Selection flag parsing.
|
||||
|
||||
protected int parseSelectionFlags(Descriptor roleDescriptor) {
|
||||
return "urn:mpeg:dash:role:2011".equals(roleDescriptor.schemeIdUri)
|
||||
&& "main".equals(roleDescriptor.value) ? C.SELECTION_FLAG_DEFAULT : 0;
|
||||
protected int parseSelection(List<Descriptor> roleDescriptors) {
|
||||
for (int i = 0; i < roleDescriptors.size(); i++) {
|
||||
Descriptor descriptor = roleDescriptors.get(i);
|
||||
if ("urn:mpeg:dash:role:2011".equalsIgnoreCase(descriptor.schemeIdUri)
|
||||
&& "main".equals(descriptor.value)) {
|
||||
return C.SELECTION_FLAG_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Role and Accessibility parsing.
|
||||
|
|
@ -1072,7 +1081,7 @@ public class DashManifestParser extends DefaultHandler
|
|||
@C.RoleFlags int result = 0;
|
||||
for (int i = 0; i < roleDescriptors.size(); i++) {
|
||||
Descriptor descriptor = roleDescriptors.get(i);
|
||||
if ("urn:mpeg:dash:role:2011".equalsIgnoreCase(descriptor.schemeIdUri) && descriptor.value != null) {
|
||||
if ("urn:mpeg:dash:role:2011".equalsIgnoreCase(descriptor.schemeIdUri)) {
|
||||
result |= parseRoleSchemeValue(descriptor.value);
|
||||
}
|
||||
}
|
||||
|
|
@ -1083,68 +1092,63 @@ public class DashManifestParser extends DefaultHandler
|
|||
@C.RoleFlags int result = 0;
|
||||
for (int i = 0; i < accessibilityDescriptors.size(); i++) {
|
||||
Descriptor descriptor = accessibilityDescriptors.get(i);
|
||||
if ("urn:mpeg:dash:role:2011".equalsIgnoreCase(descriptor.schemeIdUri) && descriptor.value != null) {
|
||||
if ("urn:mpeg:dash:role:2011".equalsIgnoreCase(descriptor.schemeIdUri)) {
|
||||
result |= parseRoleSchemeValue(descriptor.value);
|
||||
}
|
||||
if ("urn:tva:metadata:cs:AudioPurposeCS:2007".equalsIgnoreCase(descriptor.schemeIdUri) &&
|
||||
descriptor.value != null) {
|
||||
switch (descriptor.value){
|
||||
case "1": // Audio description for the visually impaired
|
||||
result |= C.ROLE_FLAGS_DESCRIPTION;
|
||||
break;
|
||||
case "2": // Audio description for the hard of hearing
|
||||
result |= C.ROLE_FLAGS_ENHANCED_AUDIO_INTELLIGIBILITY;
|
||||
break;
|
||||
case "3": // Supplemental commentary
|
||||
result |= C.ROLE_FLAGS_SUPPLEMENTARY;
|
||||
break;
|
||||
case "4": // Director's commentary
|
||||
result |= C.ROLE_FLAGS_COMMENTARY;
|
||||
break;
|
||||
case "6": // Main programme audio
|
||||
result |= C.ROLE_FLAGS_MAIN;
|
||||
break;
|
||||
}
|
||||
} else if ("urn:tva:metadata:cs:AudioPurposeCS:2007".equalsIgnoreCase(descriptor.schemeIdUri)) {
|
||||
result |= parseAudioPurposeValue(descriptor.value);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
protected @C.RoleFlags int parseRoleSchemeValue(String value){
|
||||
@C.RoleFlags int result = 0;
|
||||
protected @C.RoleFlags int parseRoleSchemeValue(String value) {
|
||||
if (value == null) {
|
||||
return 0;
|
||||
}
|
||||
switch (value) {
|
||||
case "main":
|
||||
result |= C.ROLE_FLAGS_MAIN;
|
||||
break;
|
||||
return C.ROLE_FLAGS_MAIN;
|
||||
case "alternate":
|
||||
result |= C.ROLE_FLAGS_ALTERNATE;
|
||||
break;
|
||||
return C.ROLE_FLAGS_ALTERNATE;
|
||||
case "supplementary":
|
||||
result |= C.ROLE_FLAGS_SUPPLEMENTARY;
|
||||
break;
|
||||
return C.ROLE_FLAGS_SUPPLEMENTARY;
|
||||
case "commentary":
|
||||
result |= C.ROLE_FLAGS_COMMENTARY;
|
||||
break;
|
||||
return C.ROLE_FLAGS_COMMENTARY;
|
||||
case "dub":
|
||||
result |= C.ROLE_FLAGS_DUB;
|
||||
break;
|
||||
return C.ROLE_FLAGS_DUB;
|
||||
case "emergency":
|
||||
result |= C.ROLE_FLAGS_EMERGENCY;
|
||||
break;
|
||||
return C.ROLE_FLAGS_EMERGENCY;
|
||||
case "caption":
|
||||
result |= C.ROLE_FLAGS_CAPTION;
|
||||
break;
|
||||
return C.ROLE_FLAGS_CAPTION;
|
||||
case "sign":
|
||||
result |= C.ROLE_FLAGS_SIGN;
|
||||
break;
|
||||
return C.ROLE_FLAGS_SIGN;
|
||||
case "description":
|
||||
result |= C.ROLE_FLAGS_DESCRIPTION;
|
||||
break;
|
||||
return C.ROLE_FLAGS_DESCRIPTION;
|
||||
case "enhanced-audio-intelligibility":
|
||||
result |= C.ROLE_FLAGS_ENHANCED_AUDIO_INTELLIGIBILITY;
|
||||
break;
|
||||
return C.ROLE_FLAGS_ENHANCED_AUDIO_INTELLIGIBILITY;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
protected @C.RoleFlags int parseAudioPurposeValue(String value) {
|
||||
if (value == null) {
|
||||
return 0;
|
||||
}
|
||||
switch (value) {
|
||||
case "1": // Audio description for the visually impaired
|
||||
return C.ROLE_FLAGS_DESCRIPTION;
|
||||
case "2": // Audio description for the hard of hearing
|
||||
return C.ROLE_FLAGS_ENHANCED_AUDIO_INTELLIGIBILITY;
|
||||
case "3": // Supplemental commentary
|
||||
return C.ROLE_FLAGS_SUPPLEMENTARY;
|
||||
case "4": // Director's commentary
|
||||
return C.ROLE_FLAGS_COMMENTARY;
|
||||
case "6": // Main programme audio
|
||||
return C.ROLE_FLAGS_MAIN;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
// Utility methods.
|
||||
|
|
|
|||
|
|
@ -193,6 +193,7 @@ public final class DashMediaPeriodTest {
|
|||
/* codecs= */ null,
|
||||
bitrate,
|
||||
/* selectionFlags= */ 0,
|
||||
/* roleFlags= */ 0,
|
||||
/* language= */ null);
|
||||
}
|
||||
|
||||
|
|
@ -207,6 +208,7 @@ public final class DashMediaPeriodTest {
|
|||
/* codecs= */ null,
|
||||
bitrate,
|
||||
/* selectionFlags= */ 0,
|
||||
/* roleFlags= */ 0,
|
||||
/* language= */ null),
|
||||
/* baseUrl= */ "",
|
||||
new SingleSegmentBase());
|
||||
|
|
@ -223,6 +225,7 @@ public final class DashMediaPeriodTest {
|
|||
/* codecs= */ null,
|
||||
/* bitrate= */ Format.NO_VALUE,
|
||||
/* selectionFlags= */ 0,
|
||||
/* roleFlags= */ 0,
|
||||
language),
|
||||
/* baseUrl= */ "",
|
||||
new SingleSegmentBase());
|
||||
|
|
|
|||
|
|
@ -85,7 +85,8 @@ public final class DashUtilTest {
|
|||
/* height= */ 768,
|
||||
Format.NO_VALUE,
|
||||
/* initializationData= */ null,
|
||||
/* selectionFlags= */ 0);
|
||||
/* selectionFlags= */ 0,
|
||||
/* roleFlags= */ 0);
|
||||
if (drmInitData != null) {
|
||||
format = format.copyWithDrmInitData(drmInitData);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -741,8 +741,8 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper
|
|||
/* sampleRate= */ Format.NO_VALUE,
|
||||
/* initializationData= */ null,
|
||||
selectionFlags,
|
||||
language,
|
||||
/* roleFlags= */ 0);
|
||||
/* roleFlags= */ 0,
|
||||
language);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,6 +78,7 @@ public final class HlsMasterPlaylist extends HlsPlaylist {
|
|||
/* codecs= */ null,
|
||||
/* bitrate= */ Format.NO_VALUE,
|
||||
/* selectionFlags= */ 0,
|
||||
/* roleFlags= */ 0,
|
||||
/* language= */ null);
|
||||
return new HlsUrl(url, format, /* name= */ "");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -362,8 +362,8 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
|
|||
/* sampleRate= */ Format.NO_VALUE,
|
||||
/* initializationData= */ null,
|
||||
selectionFlags,
|
||||
language,
|
||||
/* roleFlags= */ 0);
|
||||
/* roleFlags= */ 0,
|
||||
language);
|
||||
if (isMediaTagMuxed(variants, uri)) {
|
||||
muxedAudioFormat = format;
|
||||
} else {
|
||||
|
|
@ -406,9 +406,9 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
|
|||
/* codecs= */ null,
|
||||
/* bitrate= */ Format.NO_VALUE,
|
||||
selectionFlags,
|
||||
/* roleFlags= */ 0,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
/* roleFlags= */ 0));
|
||||
accessibilityChannel));
|
||||
break;
|
||||
default:
|
||||
// Do nothing.
|
||||
|
|
|
|||
|
|
@ -706,8 +706,8 @@ public class SsManifestParser implements ParsingLoadable.Parser<SsManifest> {
|
|||
samplingRate,
|
||||
codecSpecificData,
|
||||
/* selectionFlags= */ 0,
|
||||
language,
|
||||
/* roleFlags= */ 0);
|
||||
/* roleFlags= */ 0,
|
||||
language);
|
||||
} else if (type == C.TRACK_TYPE_TEXT) {
|
||||
String language = (String) getNormalizedAttribute(KEY_LANGUAGE);
|
||||
format =
|
||||
|
|
@ -730,6 +730,7 @@ public class SsManifestParser implements ParsingLoadable.Parser<SsManifest> {
|
|||
/* codecs= */ null,
|
||||
bitrate,
|
||||
/* selectionFlags= */ 0,
|
||||
/* roleFlags= */ 0,
|
||||
/* language= */ null);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue