Pass role and accessibility descriptor values from adaptation set to format
This commit is contained in:
parent
8746d4a885
commit
06ed877845
@ -167,6 +167,16 @@ public final class Format implements Parcelable {
|
||||
*/
|
||||
public final int accessibilityChannel;
|
||||
|
||||
/**
|
||||
* The Role descriptor value.
|
||||
*/
|
||||
public final String role;
|
||||
|
||||
/**
|
||||
* The Accessibility descriptor value.
|
||||
*/
|
||||
public final String accessibility;
|
||||
|
||||
// Lazily initialized hashcode.
|
||||
private int hashCode;
|
||||
|
||||
@ -234,6 +244,8 @@ public final class Format implements Parcelable {
|
||||
selectionFlags,
|
||||
/* language= */ null,
|
||||
/* accessibilityChannel= */ NO_VALUE,
|
||||
/* role= */ null,
|
||||
/* accessibility= */ null,
|
||||
OFFSET_SAMPLE_RELATIVE,
|
||||
initializationData,
|
||||
/* drmInitData= */ null,
|
||||
@ -337,6 +349,8 @@ public final class Format implements Parcelable {
|
||||
/* selectionFlags= */ 0,
|
||||
/* language= */ null,
|
||||
/* accessibilityChannel= */ NO_VALUE,
|
||||
/* role= */ null,
|
||||
/* accessibility= */ null,
|
||||
OFFSET_SAMPLE_RELATIVE,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
@ -407,6 +421,8 @@ public final class Format implements Parcelable {
|
||||
selectionFlags,
|
||||
language,
|
||||
/* accessibilityChannel= */ NO_VALUE,
|
||||
/* role= */ null,
|
||||
/* accessibility= */ null,
|
||||
OFFSET_SAMPLE_RELATIVE,
|
||||
initializationData,
|
||||
/* drmInitData= */ null,
|
||||
@ -511,6 +527,8 @@ public final class Format implements Parcelable {
|
||||
selectionFlags,
|
||||
language,
|
||||
/* accessibilityChannel= */ NO_VALUE,
|
||||
/* role= */ null,
|
||||
/* accessibility= */ null,
|
||||
OFFSET_SAMPLE_RELATIVE,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
@ -557,7 +575,9 @@ public final class Format implements Parcelable {
|
||||
bitrate,
|
||||
selectionFlags,
|
||||
language,
|
||||
/* accessibilityChannel= */ NO_VALUE);
|
||||
/* accessibilityChannel= */ NO_VALUE,
|
||||
/* role= */ null,
|
||||
/* accessibility= */ null);
|
||||
}
|
||||
|
||||
public static Format createTextContainerFormat(
|
||||
@ -569,7 +589,9 @@ public final class Format implements Parcelable {
|
||||
int bitrate,
|
||||
@C.SelectionFlags int selectionFlags,
|
||||
@Nullable String language,
|
||||
int accessibilityChannel) {
|
||||
int accessibilityChannel,
|
||||
@Nullable String role,
|
||||
@Nullable String accessibility) {
|
||||
return new Format(
|
||||
id,
|
||||
label,
|
||||
@ -594,6 +616,8 @@ public final class Format implements Parcelable {
|
||||
selectionFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
role,
|
||||
accessibility,
|
||||
OFFSET_SAMPLE_RELATIVE,
|
||||
/* initializationData= */ null,
|
||||
/* drmInitData= */ null,
|
||||
@ -706,6 +730,8 @@ public final class Format implements Parcelable {
|
||||
selectionFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
/* role= */ null,
|
||||
/* accessibility= */ null,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
@ -747,6 +773,8 @@ public final class Format implements Parcelable {
|
||||
selectionFlags,
|
||||
language,
|
||||
/* accessibilityChannel= */ NO_VALUE,
|
||||
/* role= */ null,
|
||||
/* accessibility= */ null,
|
||||
OFFSET_SAMPLE_RELATIVE,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
@ -808,6 +836,8 @@ public final class Format implements Parcelable {
|
||||
selectionFlags,
|
||||
language,
|
||||
/* accessibilityChannel= */ NO_VALUE,
|
||||
/* role= */ null,
|
||||
/* accessibility= */ null,
|
||||
OFFSET_SAMPLE_RELATIVE,
|
||||
/* initializationData= */ null,
|
||||
/* drmInitData= */ null,
|
||||
@ -840,6 +870,8 @@ public final class Format implements Parcelable {
|
||||
/* selectionFlags= */ 0,
|
||||
/* language= */ null,
|
||||
/* accessibilityChannel= */ NO_VALUE,
|
||||
/* role= */ null,
|
||||
/* accessibility= */ null,
|
||||
subsampleOffsetUs,
|
||||
/* initializationData= */ null,
|
||||
/* drmInitData= */ null,
|
||||
@ -876,6 +908,8 @@ public final class Format implements Parcelable {
|
||||
/* selectionFlags= */ 0,
|
||||
/* language= */ null,
|
||||
/* accessibilityChannel= */ NO_VALUE,
|
||||
/* role= */ null,
|
||||
/* accessibility= */ null,
|
||||
OFFSET_SAMPLE_RELATIVE,
|
||||
/* initializationData= */ null,
|
||||
drmInitData,
|
||||
@ -906,6 +940,8 @@ public final class Format implements Parcelable {
|
||||
@C.SelectionFlags int selectionFlags,
|
||||
@Nullable String language,
|
||||
int accessibilityChannel,
|
||||
@Nullable String role,
|
||||
@Nullable String accessibility,
|
||||
long subsampleOffsetUs,
|
||||
@Nullable List<byte[]> initializationData,
|
||||
@Nullable DrmInitData drmInitData,
|
||||
@ -934,6 +970,8 @@ public final class Format implements Parcelable {
|
||||
this.selectionFlags = selectionFlags;
|
||||
this.language = Util.normalizeLanguageCode(language);
|
||||
this.accessibilityChannel = accessibilityChannel;
|
||||
this.role = role;
|
||||
this.accessibility = accessibility;
|
||||
this.subsampleOffsetUs = subsampleOffsetUs;
|
||||
this.initializationData =
|
||||
initializationData == null ? Collections.emptyList() : initializationData;
|
||||
@ -967,6 +1005,8 @@ public final class Format implements Parcelable {
|
||||
selectionFlags = in.readInt();
|
||||
language = in.readString();
|
||||
accessibilityChannel = in.readInt();
|
||||
role = in.readString();
|
||||
accessibility = in.readString();
|
||||
subsampleOffsetUs = in.readLong();
|
||||
int initializationDataSize = in.readInt();
|
||||
initializationData = new ArrayList<>(initializationDataSize);
|
||||
@ -1002,6 +1042,8 @@ public final class Format implements Parcelable {
|
||||
selectionFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
role,
|
||||
accessibility,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
@ -1033,6 +1075,8 @@ public final class Format implements Parcelable {
|
||||
selectionFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
role,
|
||||
accessibility,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
@ -1073,6 +1117,8 @@ public final class Format implements Parcelable {
|
||||
selectionFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
role,
|
||||
accessibility,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
@ -1144,6 +1190,8 @@ public final class Format implements Parcelable {
|
||||
selectionFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
role,
|
||||
accessibility,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
@ -1175,6 +1223,8 @@ public final class Format implements Parcelable {
|
||||
selectionFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
role,
|
||||
accessibility,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
@ -1206,6 +1256,8 @@ public final class Format implements Parcelable {
|
||||
selectionFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
role,
|
||||
accessibility,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
@ -1237,6 +1289,8 @@ public final class Format implements Parcelable {
|
||||
selectionFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
role,
|
||||
accessibility,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
@ -1268,6 +1322,8 @@ public final class Format implements Parcelable {
|
||||
selectionFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
role,
|
||||
accessibility,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
@ -1299,6 +1355,8 @@ public final class Format implements Parcelable {
|
||||
selectionFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
role,
|
||||
accessibility,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
@ -1330,6 +1388,8 @@ public final class Format implements Parcelable {
|
||||
selectionFlags,
|
||||
language,
|
||||
accessibilityChannel,
|
||||
role,
|
||||
accessibility,
|
||||
subsampleOffsetUs,
|
||||
initializationData,
|
||||
drmInitData,
|
||||
@ -1439,6 +1499,8 @@ public final class Format implements Parcelable {
|
||||
&& Util.areEqual(label, other.label)
|
||||
&& Util.areEqual(language, other.language)
|
||||
&& accessibilityChannel == other.accessibilityChannel
|
||||
&& Util.areEqual(role, other.role)
|
||||
&& Util.areEqual(accessibility, other.accessibility)
|
||||
&& Util.areEqual(containerMimeType, other.containerMimeType)
|
||||
&& Util.areEqual(sampleMimeType, other.sampleMimeType)
|
||||
&& Util.areEqual(codecs, other.codecs)
|
||||
@ -1540,6 +1602,8 @@ public final class Format implements Parcelable {
|
||||
dest.writeInt(selectionFlags);
|
||||
dest.writeString(language);
|
||||
dest.writeInt(accessibilityChannel);
|
||||
dest.writeString(role);
|
||||
dest.writeString(accessibility);
|
||||
dest.writeLong(subsampleOffsetUs);
|
||||
int initializationDataSize = initializationData.size();
|
||||
dest.writeInt(initializationDataSize);
|
||||
|
@ -276,6 +276,7 @@ public class DashManifestParser extends DefaultHandler
|
||||
ArrayList<SchemeData> drmSchemeDatas = new ArrayList<>();
|
||||
ArrayList<Descriptor> inbandEventStreams = new ArrayList<>();
|
||||
ArrayList<Descriptor> accessibilityDescriptors = new ArrayList<>();
|
||||
ArrayList<Descriptor> roleDescriptors = new ArrayList<>();
|
||||
ArrayList<Descriptor> supplementalProperties = new ArrayList<>();
|
||||
List<RepresentationInfo> representationInfos = new ArrayList<>();
|
||||
@C.SelectionFlags int selectionFlags = 0;
|
||||
@ -300,7 +301,10 @@ public class DashManifestParser extends DefaultHandler
|
||||
language = checkLanguageConsistency(language, xpp.getAttributeValue(null, "lang"));
|
||||
contentType = checkContentTypeConsistency(contentType, parseContentType(xpp));
|
||||
} else if (XmlPullParserUtil.isStartTag(xpp, "Role")) {
|
||||
selectionFlags |= parseRole(xpp);
|
||||
Descriptor descriptor = parseDescriptor(xpp, "Role");
|
||||
selectionFlags |= "urn:mpeg:dash:role:2011".equals(descriptor.schemeIdUri)
|
||||
&& "main".equals(descriptor.value) ? C.SELECTION_FLAG_DEFAULT : 0;
|
||||
roleDescriptors.add(descriptor);
|
||||
} else if (XmlPullParserUtil.isStartTag(xpp, "AudioChannelConfiguration")) {
|
||||
audioChannels = parseAudioChannelConfiguration(xpp);
|
||||
} else if (XmlPullParserUtil.isStartTag(xpp, "Accessibility")) {
|
||||
@ -322,6 +326,7 @@ public class DashManifestParser extends DefaultHandler
|
||||
audioSamplingRate,
|
||||
language,
|
||||
selectionFlags,
|
||||
roleDescriptors,
|
||||
accessibilityDescriptors,
|
||||
segmentBase);
|
||||
contentType = checkContentTypeConsistency(contentType,
|
||||
@ -509,6 +514,7 @@ public class DashManifestParser extends DefaultHandler
|
||||
int adaptationSetAudioSamplingRate,
|
||||
String adaptationSetLanguage,
|
||||
@C.SelectionFlags int adaptationSetSelectionFlags,
|
||||
List<Descriptor> adaptationSetRoleDescriptors,
|
||||
List<Descriptor> adaptationSetAccessibilityDescriptors,
|
||||
SegmentBase segmentBase)
|
||||
throws XmlPullParserException, IOException {
|
||||
@ -573,6 +579,7 @@ public class DashManifestParser extends DefaultHandler
|
||||
bandwidth,
|
||||
adaptationSetLanguage,
|
||||
adaptationSetSelectionFlags,
|
||||
adaptationSetRoleDescriptors,
|
||||
adaptationSetAccessibilityDescriptors,
|
||||
codecs,
|
||||
supplementalProperties);
|
||||
@ -594,6 +601,7 @@ public class DashManifestParser extends DefaultHandler
|
||||
int bitrate,
|
||||
String language,
|
||||
@C.SelectionFlags int selectionFlags,
|
||||
List<Descriptor> roleDescriptors,
|
||||
List<Descriptor> accessibilityDescriptors,
|
||||
String codecs,
|
||||
List<Descriptor> supplementalProperties) {
|
||||
@ -637,6 +645,10 @@ public class DashManifestParser extends DefaultHandler
|
||||
} else {
|
||||
accessibilityChannel = Format.NO_VALUE;
|
||||
}
|
||||
|
||||
String role = parseRole(roleDescriptors);
|
||||
String accessibility = parseAccessibility(accessibilityDescriptors);
|
||||
|
||||
return Format.createTextContainerFormat(
|
||||
id,
|
||||
label,
|
||||
@ -646,7 +658,9 @@ public class DashManifestParser extends DefaultHandler
|
||||
bitrate,
|
||||
selectionFlags,
|
||||
language,
|
||||
accessibilityChannel);
|
||||
accessibilityChannel,
|
||||
role,
|
||||
accessibility);
|
||||
}
|
||||
}
|
||||
return Format.createContainerFormat(
|
||||
@ -1266,6 +1280,32 @@ public class DashManifestParser extends DefaultHandler
|
||||
return MimeTypes.AUDIO_E_AC3;
|
||||
}
|
||||
|
||||
protected static String parseRole(List<Descriptor> roleDescriptors) {
|
||||
for (int i = 0; i < roleDescriptors.size(); i++) {
|
||||
Descriptor descriptor = roleDescriptors.get(i);
|
||||
if ("urn:mpeg:dash:role:2011".equals(descriptor.schemeIdUri) && descriptor.value != null) {
|
||||
return descriptor.value;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected static String parseAccessibility(List<Descriptor> accessibilityDescriptors) {
|
||||
for (int i = 0; i < accessibilityDescriptors.size(); i++) {
|
||||
Descriptor descriptor = accessibilityDescriptors.get(i);
|
||||
if ("urn:mpeg:dash:role:2011".equals(descriptor.schemeIdUri) && descriptor.value != null) {
|
||||
return descriptor.value;
|
||||
}
|
||||
|
||||
if ("urn:tva:metadata:cs:AudioPurposeCS:2007".equals(descriptor.schemeIdUri)) {
|
||||
if ("1".equals(descriptor.value) || "2".equals(descriptor.value)) {
|
||||
return descriptor.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected static float parseFrameRate(XmlPullParser xpp, float defaultValue) {
|
||||
float frameRate = defaultValue;
|
||||
String frameRateAttribute = xpp.getAttributeValue(null, "frameRate");
|
||||
|
@ -405,7 +405,9 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
|
||||
/* bitrate= */ Format.NO_VALUE,
|
||||
selectionFlags,
|
||||
language,
|
||||
accessibilityChannel));
|
||||
accessibilityChannel,
|
||||
/* role= */ null,
|
||||
/* accessibility= */ null));
|
||||
break;
|
||||
default:
|
||||
// Do nothing.
|
||||
|
Loading…
x
Reference in New Issue
Block a user