正在查看: CallApp v2.226 应用的 DashManifestParser.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: CallApp v2.226 应用的 DashManifestParser.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package io.bidmachine.media3.exoplayer.dash.manifest;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Pair;
import android.util.Xml;
import androidx.annotation.Nullable;
import io.bidmachine.iab.vast.tags.VastAttributes;
import io.bidmachine.media3.common.C;
import io.bidmachine.media3.common.DrmInitData;
import io.bidmachine.media3.common.Format;
import io.bidmachine.media3.common.Label;
import io.bidmachine.media3.common.MimeTypes;
import io.bidmachine.media3.common.ParserException;
import io.bidmachine.media3.common.util.Assertions;
import io.bidmachine.media3.common.util.Log;
import io.bidmachine.media3.common.util.UnstableApi;
import io.bidmachine.media3.common.util.UriUtil;
import io.bidmachine.media3.common.util.Util;
import io.bidmachine.media3.common.util.XmlPullParserUtil;
import io.bidmachine.media3.exoplayer.dash.manifest.SegmentBase;
import io.bidmachine.media3.exoplayer.upstream.ParsingLoadable;
import io.bidmachine.media3.extractor.metadata.emsg.EventMessage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import mj.c;
import mj.e;
import nj.g0;
import nj.u0;
import org.xml.sax.helpers.DefaultHandler;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import org.xmlpull.v1.XmlSerializer;
@UnstableApi
public class DashManifestParser extends DefaultHandler implements ParsingLoadable.Parser<DashManifest> {
private static final String TAG = "MpdParser";
private final XmlPullParserFactory xmlParserFactory;
private static final Pattern FRAME_RATE_PATTERN = Pattern.compile("(\\d+)(?:/(\\d+))?");
private static final Pattern CEA_608_ACCESSIBILITY_PATTERN = Pattern.compile("CC([1-4])=.*");
private static final Pattern CEA_708_ACCESSIBILITY_PATTERN = Pattern.compile("([1-9]|[1-5][0-9]|6[0-3])=.*");
private static final int[] MPEG_CHANNEL_CONFIGURATION_MAPPING = {-1, 1, 2, 3, 4, 5, 6, 8, 2, 3, 4, 7, 8, 24, 8, 12, 10, 12, 14, 12, 14};
public static final class RepresentationInfo {
public final g0 baseUrls;
public final ArrayList<DrmInitData.SchemeData> drmSchemeDatas;
@Nullable
public final String drmSchemeType;
public final List<Descriptor> essentialProperties;
public final Format format;
public final ArrayList<Descriptor> inbandEventStreams;
public final long revisionId;
public final SegmentBase segmentBase;
public final List<Descriptor> supplementalProperties;
public RepresentationInfo(Format format, List<BaseUrl> list, SegmentBase segmentBase, @Nullable String str, ArrayList<DrmInitData.SchemeData> arrayList, ArrayList<Descriptor> arrayList2, List<Descriptor> list2, List<Descriptor> list3, long j) {
this.format = format;
this.baseUrls = g0.m(list);
this.segmentBase = segmentBase;
this.drmSchemeType = str;
this.drmSchemeDatas = arrayList;
this.inbandEventStreams = arrayList2;
this.essentialProperties = list2;
this.supplementalProperties = list3;
this.revisionId = j;
}
}
public DashManifestParser() {
try {
this.xmlParserFactory = XmlPullParserFactory.newInstance();
} catch (XmlPullParserException e) {
throw new RuntimeException("Couldn't create XmlPullParserFactory instance", e);
}
}
private long addSegmentTimelineElementsToList(List<SegmentBase.SegmentTimelineElement> list, long j, long j2, int i, long j3) {
int ceilDivide = i >= 0 ? i + 1 : (int) Util.ceilDivide(j3 - j, j2);
for (int i2 = 0; i2 < ceilDivide; i2++) {
list.add(buildSegmentTimelineElement(j, j2));
j += j2;
}
return j;
}
private static int checkContentTypeConsistency(int i, int i2) {
if (i == -1) {
return i2;
}
if (i2 == -1) {
return i;
}
Assertions.checkState(i == i2);
return i;
}
@Nullable
private static String checkLanguageConsistency(@Nullable String str, @Nullable String str2) {
if (str == null) {
return str2;
}
if (str2 == null) {
return str;
}
Assertions.checkState(str.equals(str2));
return str;
}
private static void fillInClearKeyInformation(ArrayList<DrmInitData.SchemeData> arrayList) {
String str;
int i = 0;
while (true) {
if (i >= arrayList.size()) {
str = null;
break;
}
DrmInitData.SchemeData schemeData = arrayList.get(i);
if (C.CLEARKEY_UUID.equals(schemeData.uuid) && (str = schemeData.licenseServerUrl) != null) {
arrayList.remove(i);
break;
}
i++;
}
if (str == null) {
return;
}
for (int i2 = 0; i2 < arrayList.size(); i2++) {
DrmInitData.SchemeData schemeData2 = arrayList.get(i2);
if (C.COMMON_PSSH_UUID.equals(schemeData2.uuid) && schemeData2.licenseServerUrl == null) {
arrayList.set(i2, new DrmInitData.SchemeData(C.CLEARKEY_UUID, str, schemeData2.mimeType, schemeData2.data));
}
}
}
private static void filterRedundantIncompleteSchemeDatas(ArrayList<DrmInitData.SchemeData> arrayList) {
for (int size = arrayList.size() - 1; size >= 0; size--) {
DrmInitData.SchemeData schemeData = arrayList.get(size);
if (!schemeData.hasData()) {
int i = 0;
while (true) {
if (i >= arrayList.size()) {
break;
}
if (arrayList.get(i).canReplace(schemeData)) {
arrayList.remove(size);
break;
}
i++;
}
}
}
}
private static long getFinalAvailabilityTimeOffset(long j, long j2) {
if (j2 != C.TIME_UNSET) {
j = j2;
}
return j == Long.MAX_VALUE ? C.TIME_UNSET : j;
}
@Nullable
private static String getSampleMimeType(@Nullable String str, @Nullable String str2) {
if (MimeTypes.isAudio(str)) {
return MimeTypes.getAudioMediaMimeType(str2);
}
if (MimeTypes.isVideo(str)) {
return MimeTypes.getVideoMediaMimeType(str2);
}
if (MimeTypes.isText(str) || MimeTypes.isImage(str)) {
return str;
}
if (!MimeTypes.APPLICATION_MP4.equals(str)) {
return null;
}
String mediaMimeType = MimeTypes.getMediaMimeType(str2);
return MimeTypes.TEXT_VTT.equals(mediaMimeType) ? MimeTypes.APPLICATION_MP4VTT : mediaMimeType;
}
private boolean isDvbProfileDeclared(String[] strArr) {
for (String str : strArr) {
if (str.startsWith("urn:dvb:dash:profile:dvb-dash:")) {
return true;
}
}
return false;
}
public static void maybeSkipTag(XmlPullParser xmlPullParser) throws IOException, XmlPullParserException {
if (XmlPullParserUtil.isStartTag(xmlPullParser)) {
int i = 1;
while (i != 0) {
xmlPullParser.next();
if (XmlPullParserUtil.isStartTag(xmlPullParser)) {
i++;
} else if (XmlPullParserUtil.isEndTag(xmlPullParser)) {
i--;
}
}
}
}
public static int parseCea608AccessibilityChannel(List<Descriptor> list) {
String str;
for (int i = 0; i < list.size(); i++) {
Descriptor descriptor = list.get(i);
if ("urn:scte:dash:cc:cea-608:2015".equals(descriptor.schemeIdUri) && (str = descriptor.value) != null) {
Matcher matcher = CEA_608_ACCESSIBILITY_PATTERN.matcher(str);
if (matcher.matches()) {
return Integer.parseInt(matcher.group(1));
}
Log.w(TAG, "Unable to parse CEA-608 channel number from: " + descriptor.value);
}
}
return -1;
}
public static int parseCea708AccessibilityChannel(List<Descriptor> list) {
String str;
for (int i = 0; i < list.size(); i++) {
Descriptor descriptor = list.get(i);
if ("urn:scte:dash:cc:cea-708:2015".equals(descriptor.schemeIdUri) && (str = descriptor.value) != null) {
Matcher matcher = CEA_708_ACCESSIBILITY_PATTERN.matcher(str);
if (matcher.matches()) {
return Integer.parseInt(matcher.group(1));
}
Log.w(TAG, "Unable to parse CEA-708 service block number from: " + descriptor.value);
}
}
return -1;
}
public static long parseDateTime(XmlPullParser xmlPullParser, String str, long j) throws ParserException {
String attributeValue = xmlPullParser.getAttributeValue(null, str);
return attributeValue == null ? j : Util.parseXsDateTime(attributeValue);
}
public static Descriptor parseDescriptor(XmlPullParser xmlPullParser, String str) throws XmlPullParserException, IOException {
String parseString = parseString(xmlPullParser, "schemeIdUri", "");
String parseString2 = parseString(xmlPullParser, "value", null);
String parseString3 = parseString(xmlPullParser, "id", null);
do {
xmlPullParser.next();
} while (!XmlPullParserUtil.isEndTag(xmlPullParser, str));
return new Descriptor(parseString, parseString2, parseString3);
}
public static int parseDolbyChannelConfiguration(XmlPullParser xmlPullParser) {
char c;
String attributeValue = xmlPullParser.getAttributeValue(null, "value");
if (attributeValue == null) {
return -1;
}
String c2 = c.c(attributeValue);
c2.getClass();
switch (c2.hashCode()) {
case 1596796:
if (c2.equals("4000")) {
c = 0;
break;
}
c = 65535;
break;
case 2937391:
if (c2.equals("a000")) {
c = 1;
break;
}
c = 65535;
break;
case 3094034:
if (c2.equals("f800")) {
c = 2;
break;
}
c = 65535;
break;
case 3094035:
if (c2.equals("f801")) {
c = 3;
break;
}
c = 65535;
break;
case 3133436:
if (c2.equals("fa01")) {
c = 4;
break;
}
c = 65535;
break;
default:
c = 65535;
break;
}
switch (c) {
}
return -1;
}
public static int parseDtsChannelConfiguration(XmlPullParser xmlPullParser) {
int parseInt = parseInt(xmlPullParser, "value", -1);
if (parseInt <= 0 || parseInt >= 33) {
return -1;
}
return parseInt;
}
public static int parseDtsxChannelConfiguration(XmlPullParser xmlPullParser) {
int bitCount;
String attributeValue = xmlPullParser.getAttributeValue(null, "value");
if (attributeValue == null || (bitCount = Integer.bitCount(Integer.parseInt(attributeValue, 16))) == 0) {
return -1;
}
return bitCount;
}
public static long parseDuration(XmlPullParser xmlPullParser, String str, long j) {
String attributeValue = xmlPullParser.getAttributeValue(null, str);
return attributeValue == null ? j : Util.parseXsDuration(attributeValue);
}
public static String parseEac3SupplementalProperties(List<Descriptor> list) {
for (int i = 0; i < list.size(); i++) {
Descriptor descriptor = list.get(i);
String str = descriptor.schemeIdUri;
if ("tag:dolby.com,2018:dash:EC3_ExtensionType:2018".equals(str) && "JOC".equals(descriptor.value)) {
return MimeTypes.AUDIO_E_AC3_JOC;
}
if ("tag:dolby.com,2014:dash:DolbyDigitalPlusExtensionType:2014".equals(str) && MimeTypes.CODEC_E_AC3_JOC.equals(descriptor.value)) {
return MimeTypes.AUDIO_E_AC3_JOC;
}
}
return MimeTypes.AUDIO_E_AC3;
}
public static float parseFloat(XmlPullParser xmlPullParser, String str, float f) {
String attributeValue = xmlPullParser.getAttributeValue(null, str);
return attributeValue == null ? f : Float.parseFloat(attributeValue);
}
public static float parseFrameRate(XmlPullParser xmlPullParser, float f) {
String attributeValue = xmlPullParser.getAttributeValue(null, "frameRate");
if (attributeValue != null) {
Matcher matcher = FRAME_RATE_PATTERN.matcher(attributeValue);
if (matcher.matches()) {
int parseInt = Integer.parseInt(matcher.group(1));
return !TextUtils.isEmpty(matcher.group(2)) ? parseInt / Integer.parseInt(r2) : parseInt;
}
}
return f;
}
public static int parseInt(XmlPullParser xmlPullParser, String str, int i) {
String attributeValue = xmlPullParser.getAttributeValue(null, str);
return attributeValue == null ? i : Integer.parseInt(attributeValue);
}
public static long parseLastSegmentNumberSupplementalProperty(List<Descriptor> list) {
for (int i = 0; i < list.size(); i++) {
Descriptor descriptor = list.get(i);
if (c.a("http://dashif.org/guidelines/last-segment-number", descriptor.schemeIdUri)) {
return Long.parseLong(descriptor.value);
}
}
return -1L;
}
public static long parseLong(XmlPullParser xmlPullParser, String str, long j) {
String attributeValue = xmlPullParser.getAttributeValue(null, str);
return attributeValue == null ? j : Long.parseLong(attributeValue);
}
public static int parseMpegChannelConfiguration(XmlPullParser xmlPullParser) {
int parseInt = parseInt(xmlPullParser, "value", -1);
if (parseInt >= 0) {
int[] iArr = MPEG_CHANNEL_CONFIGURATION_MAPPING;
if (parseInt < iArr.length) {
return iArr[parseInt];
}
}
return -1;
}
public static String parseString(XmlPullParser xmlPullParser, String str, String str2) {
String attributeValue = xmlPullParser.getAttributeValue(null, str);
return attributeValue == null ? str2 : attributeValue;
}
public static String parseText(XmlPullParser xmlPullParser, String str) throws XmlPullParserException, IOException {
String str2 = "";
do {
xmlPullParser.next();
if (xmlPullParser.getEventType() == 4) {
str2 = xmlPullParser.getText();
} else {
maybeSkipTag(xmlPullParser);
}
} while (!XmlPullParserUtil.isEndTag(xmlPullParser, str));
return str2;
}
public AdaptationSet buildAdaptationSet(long j, int i, List<Representation> list, List<Descriptor> list2, List<Descriptor> list3, List<Descriptor> list4) {
return new AdaptationSet(j, i, list, list2, list3, list4);
}
public EventMessage buildEvent(String str, String str2, long j, long j2, byte[] bArr) {
return new EventMessage(str, str2, j2, j, bArr);
}
public EventStream buildEventStream(String str, String str2, long j, long[] jArr, EventMessage[] eventMessageArr) {
return new EventStream(str, str2, j, jArr, eventMessageArr);
}
public Format buildFormat(@Nullable String str, @Nullable String str2, int i, int i2, float f, int i3, int i4, int i5, @Nullable String str3, List<Descriptor> list, List<Descriptor> list2, @Nullable String str4, List<Descriptor> list3, List<Descriptor> list4) {
String str5 = str4;
String sampleMimeType = getSampleMimeType(str2, str5);
if (MimeTypes.AUDIO_E_AC3.equals(sampleMimeType)) {
sampleMimeType = parseEac3SupplementalProperties(list4);
if (MimeTypes.AUDIO_E_AC3_JOC.equals(sampleMimeType)) {
str5 = MimeTypes.CODEC_E_AC3_JOC;
}
}
int parseSelectionFlagsFromRoleDescriptors = parseSelectionFlagsFromRoleDescriptors(list);
int parseRoleFlagsFromRoleDescriptors = parseRoleFlagsFromRoleDescriptors(list) | parseRoleFlagsFromAccessibilityDescriptors(list2) | parseRoleFlagsFromProperties(list3) | parseRoleFlagsFromProperties(list4);
Pair<Integer, Integer> parseTileCountFromProperties = parseTileCountFromProperties(list3);
Format.Builder language = new Format.Builder().setId(str).setContainerMimeType(str2).setSampleMimeType(sampleMimeType).setCodecs(str5).setPeakBitrate(i5).setSelectionFlags(parseSelectionFlagsFromRoleDescriptors).setRoleFlags(parseRoleFlagsFromRoleDescriptors).setLanguage(str3);
int i6 = -1;
Format.Builder tileCountVertical = language.setTileCountHorizontal(parseTileCountFromProperties != null ? ((Integer) parseTileCountFromProperties.first).intValue() : -1).setTileCountVertical(parseTileCountFromProperties != null ? ((Integer) parseTileCountFromProperties.second).intValue() : -1);
if (MimeTypes.isVideo(sampleMimeType)) {
tileCountVertical.setWidth(i).setHeight(i2).setFrameRate(f);
} else if (MimeTypes.isAudio(sampleMimeType)) {
tileCountVertical.setChannelCount(i3).setSampleRate(i4);
} else if (MimeTypes.isText(sampleMimeType)) {
if (MimeTypes.APPLICATION_CEA608.equals(sampleMimeType)) {
i6 = parseCea608AccessibilityChannel(list2);
} else if (MimeTypes.APPLICATION_CEA708.equals(sampleMimeType)) {
i6 = parseCea708AccessibilityChannel(list2);
}
tileCountVertical.setAccessibilityChannel(i6);
} else if (MimeTypes.isImage(sampleMimeType)) {
tileCountVertical.setWidth(i).setHeight(i2);
}
return tileCountVertical.build();
}
public DashManifest buildMediaPresentationDescription(long j, long j2, long j3, boolean z, long j4, long j5, long j6, long j7, @Nullable ProgramInformation programInformation, @Nullable UtcTimingElement utcTimingElement, @Nullable ServiceDescriptionElement serviceDescriptionElement, @Nullable Uri uri, List<Period> list) {
return new DashManifest(j, j2, j3, z, j4, j5, j6, j7, programInformation, utcTimingElement, serviceDescriptionElement, uri, list);
}
public Period buildPeriod(@Nullable String str, long j, List<AdaptationSet> list, List<EventStream> list2, @Nullable Descriptor descriptor) {
return new Period(str, j, list, list2, descriptor);
}
public RangedUri buildRangedUri(String str, long j, long j2) {
return new RangedUri(str, j, j2);
}
public Representation buildRepresentation(RepresentationInfo representationInfo, @Nullable String str, List<Label> list, @Nullable String str2, ArrayList<DrmInitData.SchemeData> arrayList, ArrayList<Descriptor> arrayList2) {
Format.Builder buildUpon = representationInfo.format.buildUpon();
if (str == null || !list.isEmpty()) {
buildUpon.setLabels(list);
} else {
buildUpon.setLabel(str);
}
String str3 = representationInfo.drmSchemeType;
if (str3 == null) {
str3 = str2;
}
ArrayList<DrmInitData.SchemeData> arrayList3 = representationInfo.drmSchemeDatas;
arrayList3.addAll(arrayList);
if (!arrayList3.isEmpty()) {
fillInClearKeyInformation(arrayList3);
filterRedundantIncompleteSchemeDatas(arrayList3);
buildUpon.setDrmInitData(new DrmInitData(str3, arrayList3));
}
ArrayList<Descriptor> arrayList4 = representationInfo.inbandEventStreams;
arrayList4.addAll(arrayList2);
return Representation.newInstance(representationInfo.revisionId, buildUpon.build(), representationInfo.baseUrls, representationInfo.segmentBase, arrayList4, representationInfo.essentialProperties, representationInfo.supplementalProperties, null);
}
public SegmentBase.SegmentList buildSegmentList(RangedUri rangedUri, long j, long j2, long j3, long j4, @Nullable List<SegmentBase.SegmentTimelineElement> list, long j5, @Nullable List<RangedUri> list2, long j6, long j7) {
return new SegmentBase.SegmentList(rangedUri, j, j2, j3, j4, list, j5, list2, Util.msToUs(j6), Util.msToUs(j7));
}
public SegmentBase.SegmentTemplate buildSegmentTemplate(RangedUri rangedUri, long j, long j2, long j3, long j4, long j5, List<SegmentBase.SegmentTimelineElement> list, long j6, @Nullable UrlTemplate urlTemplate, @Nullable UrlTemplate urlTemplate2, long j7, long j8) {
return new SegmentBase.SegmentTemplate(rangedUri, j, j2, j3, j4, j5, list, j6, urlTemplate, urlTemplate2, Util.msToUs(j7), Util.msToUs(j8));
}
public SegmentBase.SegmentTimelineElement buildSegmentTimelineElement(long j, long j2) {
return new SegmentBase.SegmentTimelineElement(j, j2);
}
public SegmentBase.SingleSegmentBase buildSingleSegmentBase(RangedUri rangedUri, long j, long j2, long j3, long j4) {
return new SegmentBase.SingleSegmentBase(rangedUri, j, j2, j3, j4);
}
public UtcTimingElement buildUtcTimingElement(String str, String str2) {
return new UtcTimingElement(str, str2);
}
public io.bidmachine.media3.exoplayer.dash.manifest.AdaptationSet parseAdaptationSet(org.xmlpull.v1.XmlPullParser r44, java.util.List<io.bidmachine.media3.exoplayer.dash.manifest.BaseUrl> r45, @androidx.annotation.Nullable io.bidmachine.media3.exoplayer.dash.manifest.SegmentBase r46, long r47, long r49, long r51, long r53, long r55, boolean r57) throws org.xmlpull.v1.XmlPullParserException, java.io.IOException {
throw new UnsupportedOperationException("Method not decompiled: io.bidmachine.media3.exoplayer.dash.manifest.DashManifestParser.parseAdaptationSet(org.xmlpull.v1.XmlPullParser, java.util.List, io.bidmachine.media3.exoplayer.dash.manifest.SegmentBase, long, long, long, long, long, boolean):io.bidmachine.media3.exoplayer.dash.manifest.AdaptationSet");
}
public void parseAdaptationSetChild(XmlPullParser xmlPullParser) throws XmlPullParserException, IOException {
maybeSkipTag(xmlPullParser);
}
public int parseAudioChannelConfiguration(XmlPullParser xmlPullParser) throws XmlPullParserException, IOException {
char c;
String parseString = parseString(xmlPullParser, "schemeIdUri", null);
parseString.getClass();
int i = -1;
switch (parseString.hashCode()) {
case -2128649360:
if (parseString.equals("urn:dts:dash:audio_channel_configuration:2012")) {
c = 0;
break;
}
c = 65535;
break;
case -1352850286:
if (parseString.equals("urn:mpeg:dash:23003:3:audio_channel_configuration:2011")) {
c = 1;
break;
}
c = 65535;
break;
case -1138141449:
if (parseString.equals("tag:dolby.com,2014:dash:audio_channel_configuration:2011")) {
c = 2;
break;
}
c = 65535;
break;
case -986633423:
if (parseString.equals("urn:mpeg:mpegB:cicp:ChannelConfiguration")) {
c = 3;
break;
}
c = 65535;
break;
case -79006963:
if (parseString.equals("tag:dts.com,2014:dash:audio_channel_configuration:2012")) {
c = 4;
break;
}
c = 65535;
break;
case 312179081:
if (parseString.equals("tag:dts.com,2018:uhd:audio_channel_configuration")) {
c = 5;
break;
}
c = 65535;
break;
case 2036691300:
if (parseString.equals("urn:dolby:dash:audio_channel_configuration:2011")) {
c = 6;
break;
}
c = 65535;
break;
default:
c = 65535;
break;
}
switch (c) {
case 0:
case 4:
i = parseDtsChannelConfiguration(xmlPullParser);
break;
case 1:
i = parseInt(xmlPullParser, "value", -1);
break;
case 2:
case 6:
i = parseDolbyChannelConfiguration(xmlPullParser);
break;
case 3:
i = parseMpegChannelConfiguration(xmlPullParser);
break;
case 5:
i = parseDtsxChannelConfiguration(xmlPullParser);
break;
}
do {
xmlPullParser.next();
} while (!XmlPullParserUtil.isEndTag(xmlPullParser, "AudioChannelConfiguration"));
return i;
}
public long parseAvailabilityTimeOffsetUs(XmlPullParser xmlPullParser, long j) {
String attributeValue = xmlPullParser.getAttributeValue(null, "availabilityTimeOffset");
if (attributeValue == null) {
return j;
}
if ("INF".equals(attributeValue)) {
return Long.MAX_VALUE;
}
return (long) (Float.parseFloat(attributeValue) * 1000000.0f);
}
public List<BaseUrl> parseBaseUrl(XmlPullParser xmlPullParser, List<BaseUrl> list, boolean z) throws XmlPullParserException, IOException {
String attributeValue = xmlPullParser.getAttributeValue(null, "dvb:priority");
int parseInt = attributeValue != null ? Integer.parseInt(attributeValue) : z ? 1 : Integer.MIN_VALUE;
String attributeValue2 = xmlPullParser.getAttributeValue(null, "dvb:weight");
int parseInt2 = attributeValue2 != null ? Integer.parseInt(attributeValue2) : 1;
String attributeValue3 = xmlPullParser.getAttributeValue(null, "serviceLocation");
String parseText = parseText(xmlPullParser, "BaseURL");
if (UriUtil.isAbsolute(parseText)) {
if (attributeValue3 == null) {
attributeValue3 = parseText;
}
return u0.a(new BaseUrl[]{new BaseUrl(parseText, attributeValue3, parseInt, parseInt2)});
}
ArrayList arrayList = new ArrayList();
for (int i = 0; i < list.size(); i++) {
BaseUrl baseUrl = list.get(i);
String resolve = UriUtil.resolve(baseUrl.url, parseText);
String str = attributeValue3 == null ? resolve : attributeValue3;
if (z) {
parseInt = baseUrl.priority;
parseInt2 = baseUrl.weight;
str = baseUrl.serviceLocation;
}
arrayList.add(new BaseUrl(resolve, str, parseInt, parseInt2));
}
return arrayList;
}
public android.util.Pair<java.lang.String, io.bidmachine.media3.common.DrmInitData.SchemeData> parseContentProtection(org.xmlpull.v1.XmlPullParser r12) throws org.xmlpull.v1.XmlPullParserException, java.io.IOException {
throw new UnsupportedOperationException("Method not decompiled: io.bidmachine.media3.exoplayer.dash.manifest.DashManifestParser.parseContentProtection(org.xmlpull.v1.XmlPullParser):android.util.Pair");
}
public int parseContentType(XmlPullParser xmlPullParser) {
String attributeValue = xmlPullParser.getAttributeValue(null, "contentType");
if (TextUtils.isEmpty(attributeValue)) {
return -1;
}
if (MimeTypes.BASE_TYPE_AUDIO.equals(attributeValue)) {
return 1;
}
if ("video".equals(attributeValue)) {
return 2;
}
if ("text".equals(attributeValue)) {
return 3;
}
return "image".equals(attributeValue) ? 4 : -1;
}
public Pair<Long, EventMessage> parseEvent(XmlPullParser xmlPullParser, String str, String str2, long j, long j2, ByteArrayOutputStream byteArrayOutputStream) throws IOException, XmlPullParserException {
long parseLong = parseLong(xmlPullParser, "id", 0L);
long parseLong2 = parseLong(xmlPullParser, "duration", C.TIME_UNSET);
long parseLong3 = parseLong(xmlPullParser, "presentationTime", 0L);
long scaleLargeTimestamp = Util.scaleLargeTimestamp(parseLong2, 1000L, j);
long scaleLargeTimestamp2 = Util.scaleLargeTimestamp(parseLong3 - j2, 1000000L, j);
String parseString = parseString(xmlPullParser, "messageData", null);
byte[] parseEventObject = parseEventObject(xmlPullParser, byteArrayOutputStream);
Long valueOf = Long.valueOf(scaleLargeTimestamp2);
if (parseString != null) {
parseEventObject = Util.getUtf8Bytes(parseString);
}
return Pair.create(valueOf, buildEvent(str, str2, parseLong, scaleLargeTimestamp, parseEventObject));
}
public byte[] parseEventObject(XmlPullParser xmlPullParser, ByteArrayOutputStream byteArrayOutputStream) throws XmlPullParserException, IOException {
byteArrayOutputStream.reset();
XmlSerializer newSerializer = Xml.newSerializer();
newSerializer.setOutput(byteArrayOutputStream, e.c.name());
xmlPullParser.nextToken();
while (!XmlPullParserUtil.isEndTag(xmlPullParser, "Event")) {
switch (xmlPullParser.getEventType()) {
case 0:
newSerializer.startDocument(null, Boolean.FALSE);
break;
case 1:
newSerializer.endDocument();
break;
case 2:
newSerializer.startTag(xmlPullParser.getNamespace(), xmlPullParser.getName());
for (int i = 0; i < xmlPullParser.getAttributeCount(); i++) {
newSerializer.attribute(xmlPullParser.getAttributeNamespace(i), xmlPullParser.getAttributeName(i), xmlPullParser.getAttributeValue(i));
}
break;
case 3:
newSerializer.endTag(xmlPullParser.getNamespace(), xmlPullParser.getName());
break;
case 4:
newSerializer.text(xmlPullParser.getText());
break;
case 5:
newSerializer.cdsect(xmlPullParser.getText());
break;
case 6:
newSerializer.entityRef(xmlPullParser.getText());
break;
case 7:
newSerializer.ignorableWhitespace(xmlPullParser.getText());
break;
case 8:
newSerializer.processingInstruction(xmlPullParser.getText());
break;
case 9:
newSerializer.comment(xmlPullParser.getText());
break;
case 10:
newSerializer.docdecl(xmlPullParser.getText());
break;
}
xmlPullParser.nextToken();
}
newSerializer.flush();
return byteArrayOutputStream.toByteArray();
}
public EventStream parseEventStream(XmlPullParser xmlPullParser) throws XmlPullParserException, IOException {
long j;
String str;
String str2;
XmlPullParser xmlPullParser2;
String parseString = parseString(xmlPullParser, "schemeIdUri", "");
String parseString2 = parseString(xmlPullParser, "value", "");
long parseLong = parseLong(xmlPullParser, "timescale", 1L);
long parseLong2 = parseLong(xmlPullParser, "presentationTimeOffset", 0L);
ArrayList arrayList = new ArrayList();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(512);
while (true) {
xmlPullParser.next();
if (XmlPullParserUtil.isStartTag(xmlPullParser, "Event")) {
j = parseLong;
str = parseString2;
str2 = parseString;
xmlPullParser2 = xmlPullParser;
arrayList.add(parseEvent(xmlPullParser2, str2, str, j, parseLong2, byteArrayOutputStream));
} else {
j = parseLong;
str = parseString2;
str2 = parseString;
xmlPullParser2 = xmlPullParser;
maybeSkipTag(xmlPullParser2);
}
if (XmlPullParserUtil.isEndTag(xmlPullParser2, "EventStream")) {
break;
}
xmlPullParser = xmlPullParser2;
parseString = str2;
parseString2 = str;
parseLong = j;
}
long[] jArr = new long[arrayList.size()];
EventMessage[] eventMessageArr = new EventMessage[arrayList.size()];
for (int i = 0; i < arrayList.size(); i++) {
Pair pair = (Pair) arrayList.get(i);
jArr[i] = ((Long) pair.first).longValue();
eventMessageArr[i] = (EventMessage) pair.second;
}
return buildEventStream(str2, str, j, jArr, eventMessageArr);
}
public RangedUri parseInitialization(XmlPullParser xmlPullParser) {
return parseRangedUrl(xmlPullParser, "sourceURL", "range");
}
public Label parseLabel(XmlPullParser xmlPullParser) throws XmlPullParserException, IOException {
return new Label(xmlPullParser.getAttributeValue(null, "lang"), parseText(xmlPullParser, "Label"));
}
public io.bidmachine.media3.exoplayer.dash.manifest.DashManifest parseMediaPresentationDescription(org.xmlpull.v1.XmlPullParser r39, android.net.Uri r40) throws org.xmlpull.v1.XmlPullParserException, java.io.IOException {
throw new UnsupportedOperationException("Method not decompiled: io.bidmachine.media3.exoplayer.dash.manifest.DashManifestParser.parseMediaPresentationDescription(org.xmlpull.v1.XmlPullParser, android.net.Uri):io.bidmachine.media3.exoplayer.dash.manifest.DashManifest");
}
public android.util.Pair<io.bidmachine.media3.exoplayer.dash.manifest.Period, java.lang.Long> parsePeriod(org.xmlpull.v1.XmlPullParser r33, java.util.List<io.bidmachine.media3.exoplayer.dash.manifest.BaseUrl> r34, long r35, long r37, long r39, long r41, boolean r43) throws org.xmlpull.v1.XmlPullParserException, java.io.IOException {
throw new UnsupportedOperationException("Method not decompiled: io.bidmachine.media3.exoplayer.dash.manifest.DashManifestParser.parsePeriod(org.xmlpull.v1.XmlPullParser, java.util.List, long, long, long, long, boolean):android.util.Pair");
}
public String[] parseProfiles(XmlPullParser xmlPullParser, String str, String[] strArr) {
String attributeValue = xmlPullParser.getAttributeValue(null, str);
return attributeValue == null ? strArr : attributeValue.split(",");
}
public ProgramInformation parseProgramInformation(XmlPullParser xmlPullParser) throws IOException, XmlPullParserException {
String str = null;
String parseString = parseString(xmlPullParser, "moreInformationURL", null);
String parseString2 = parseString(xmlPullParser, "lang", null);
String str2 = null;
String str3 = null;
while (true) {
xmlPullParser.next();
if (XmlPullParserUtil.isStartTag(xmlPullParser, "Title")) {
str = xmlPullParser.nextText();
} else if (XmlPullParserUtil.isStartTag(xmlPullParser, "Source")) {
str2 = xmlPullParser.nextText();
} else if (XmlPullParserUtil.isStartTag(xmlPullParser, "Copyright")) {
str3 = xmlPullParser.nextText();
} else {
maybeSkipTag(xmlPullParser);
}
String str4 = str2;
String str5 = str;
String str6 = str3;
if (XmlPullParserUtil.isEndTag(xmlPullParser, "ProgramInformation")) {
return new ProgramInformation(str5, str4, str6, parseString, parseString2);
}
str = str5;
str2 = str4;
str3 = str6;
}
}
public RangedUri parseRangedUrl(XmlPullParser xmlPullParser, String str, String str2) {
long j;
String attributeValue = xmlPullParser.getAttributeValue(null, str);
String attributeValue2 = xmlPullParser.getAttributeValue(null, str2);
long j2 = -1;
if (attributeValue2 != null) {
String[] split = attributeValue2.split("-");
j = Long.parseLong(split[0]);
if (split.length == 2) {
j2 = (Long.parseLong(split[1]) - j) + 1;
}
} else {
j = 0;
}
return buildRangedUri(attributeValue, j, j2);
}
public io.bidmachine.media3.exoplayer.dash.manifest.DashManifestParser.RepresentationInfo parseRepresentation(org.xmlpull.v1.XmlPullParser r33, java.util.List<io.bidmachine.media3.exoplayer.dash.manifest.BaseUrl> r34, @androidx.annotation.Nullable java.lang.String r35, @androidx.annotation.Nullable java.lang.String r36, int r37, int r38, float r39, int r40, int r41, @androidx.annotation.Nullable java.lang.String r42, java.util.List<io.bidmachine.media3.exoplayer.dash.manifest.Descriptor> r43, java.util.List<io.bidmachine.media3.exoplayer.dash.manifest.Descriptor> r44, java.util.List<io.bidmachine.media3.exoplayer.dash.manifest.Descriptor> r45, java.util.List<io.bidmachine.media3.exoplayer.dash.manifest.Descriptor> r46, @androidx.annotation.Nullable io.bidmachine.media3.exoplayer.dash.manifest.SegmentBase r47, long r48, long r50, long r52, long r54, long r56, boolean r58) throws org.xmlpull.v1.XmlPullParserException, java.io.IOException {
throw new UnsupportedOperationException("Method not decompiled: io.bidmachine.media3.exoplayer.dash.manifest.DashManifestParser.parseRepresentation(org.xmlpull.v1.XmlPullParser, java.util.List, java.lang.String, java.lang.String, int, int, float, int, int, java.lang.String, java.util.List, java.util.List, java.util.List, java.util.List, io.bidmachine.media3.exoplayer.dash.manifest.SegmentBase, long, long, long, long, long, boolean):io.bidmachine.media3.exoplayer.dash.manifest.DashManifestParser$RepresentationInfo");
}
public int parseRoleFlagsFromAccessibilityDescriptors(List<Descriptor> list) {
int parseTvaAudioPurposeCsValue;
int i = 0;
for (int i2 = 0; i2 < list.size(); i2++) {
Descriptor descriptor = list.get(i2);
if (c.a("urn:mpeg:dash:role:2011", descriptor.schemeIdUri)) {
parseTvaAudioPurposeCsValue = parseRoleFlagsFromDashRoleScheme(descriptor.value);
} else if (c.a("urn:tva:metadata:cs:AudioPurposeCS:2007", descriptor.schemeIdUri)) {
parseTvaAudioPurposeCsValue = parseTvaAudioPurposeCsValue(descriptor.value);
}
i |= parseTvaAudioPurposeCsValue;
}
return i;
}
public int parseRoleFlagsFromDashRoleScheme(@Nullable String str) {
if (str == null) {
return 0;
}
switch (str) {
}
return 0;
}
public int parseRoleFlagsFromProperties(List<Descriptor> list) {
int i = 0;
for (int i2 = 0; i2 < list.size(); i2++) {
if (c.a("http://dashif.org/guidelines/trickmode", list.get(i2).schemeIdUri)) {
i = 16384;
}
}
return i;
}
public int parseRoleFlagsFromRoleDescriptors(List<Descriptor> list) {
int i = 0;
for (int i2 = 0; i2 < list.size(); i2++) {
Descriptor descriptor = list.get(i2);
if (c.a("urn:mpeg:dash:role:2011", descriptor.schemeIdUri)) {
i |= parseRoleFlagsFromDashRoleScheme(descriptor.value);
}
}
return i;
}
public SegmentBase.SingleSegmentBase parseSegmentBase(XmlPullParser xmlPullParser, @Nullable SegmentBase.SingleSegmentBase singleSegmentBase) throws XmlPullParserException, IOException {
long parseLong = parseLong(xmlPullParser, "timescale", singleSegmentBase != null ? singleSegmentBase.timescale : 1L);
long parseLong2 = parseLong(xmlPullParser, "presentationTimeOffset", singleSegmentBase != null ? singleSegmentBase.presentationTimeOffset : 0L);
long j = singleSegmentBase != null ? singleSegmentBase.indexStart : 0L;
long j2 = singleSegmentBase != null ? singleSegmentBase.indexLength : 0L;
String attributeValue = xmlPullParser.getAttributeValue(null, "indexRange");
if (attributeValue != null) {
String[] split = attributeValue.split("-");
j = Long.parseLong(split[0]);
j2 = (Long.parseLong(split[1]) - j) + 1;
}
long j3 = j2;
RangedUri rangedUri = singleSegmentBase != null ? singleSegmentBase.initialization : null;
while (true) {
xmlPullParser.next();
if (XmlPullParserUtil.isStartTag(xmlPullParser, "Initialization")) {
rangedUri = parseInitialization(xmlPullParser);
} else {
maybeSkipTag(xmlPullParser);
}
RangedUri rangedUri2 = rangedUri;
if (XmlPullParserUtil.isEndTag(xmlPullParser, "SegmentBase")) {
return buildSingleSegmentBase(rangedUri2, parseLong, parseLong2, j, j3);
}
rangedUri = rangedUri2;
}
}
public SegmentBase.SegmentList parseSegmentList(XmlPullParser xmlPullParser, @Nullable SegmentBase.SegmentList segmentList, long j, long j2, long j3, long j4, long j5) throws XmlPullParserException, IOException {
long j6;
long parseLong = parseLong(xmlPullParser, "timescale", segmentList != null ? segmentList.timescale : 1L);
long parseLong2 = parseLong(xmlPullParser, "presentationTimeOffset", segmentList != null ? segmentList.presentationTimeOffset : 0L);
long parseLong3 = parseLong(xmlPullParser, "duration", segmentList != null ? segmentList.duration : C.TIME_UNSET);
long parseLong4 = parseLong(xmlPullParser, "startNumber", segmentList != null ? segmentList.startNumber : 1L);
long finalAvailabilityTimeOffset = getFinalAvailabilityTimeOffset(j3, j4);
List<RangedUri> list = null;
RangedUri rangedUri = null;
List<SegmentBase.SegmentTimelineElement> list2 = null;
while (true) {
xmlPullParser.next();
if (XmlPullParserUtil.isStartTag(xmlPullParser, "Initialization")) {
rangedUri = parseInitialization(xmlPullParser);
j6 = parseLong;
} else if (XmlPullParserUtil.isStartTag(xmlPullParser, "SegmentTimeline")) {
j6 = parseLong;
list2 = parseSegmentTimeline(xmlPullParser, j6, j2);
} else {
j6 = parseLong;
if (XmlPullParserUtil.isStartTag(xmlPullParser, "SegmentURL")) {
if (list == null) {
list = new ArrayList<>();
}
list.add(parseSegmentUrl(xmlPullParser));
} else {
maybeSkipTag(xmlPullParser);
}
}
if (XmlPullParserUtil.isEndTag(xmlPullParser, "SegmentList")) {
break;
}
parseLong = j6;
}
if (segmentList != null) {
if (rangedUri == null) {
rangedUri = segmentList.initialization;
}
if (list2 == null) {
list2 = segmentList.segmentTimeline;
}
if (list == null) {
list = segmentList.mediaSegments;
}
}
return buildSegmentList(rangedUri, j6, parseLong2, parseLong4, parseLong3, list2, finalAvailabilityTimeOffset, list, j5, j);
}
public SegmentBase.SegmentTemplate parseSegmentTemplate(XmlPullParser xmlPullParser, @Nullable SegmentBase.SegmentTemplate segmentTemplate, List<Descriptor> list, long j, long j2, long j3, long j4, long j5) throws XmlPullParserException, IOException {
long j6;
DashManifestParser dashManifestParser = this;
long parseLong = parseLong(xmlPullParser, "timescale", segmentTemplate != null ? segmentTemplate.timescale : 1L);
long parseLong2 = parseLong(xmlPullParser, "presentationTimeOffset", segmentTemplate != null ? segmentTemplate.presentationTimeOffset : 0L);
long parseLong3 = parseLong(xmlPullParser, "duration", segmentTemplate != null ? segmentTemplate.duration : C.TIME_UNSET);
long parseLong4 = parseLong(xmlPullParser, "startNumber", segmentTemplate != null ? segmentTemplate.startNumber : 1L);
long parseLastSegmentNumberSupplementalProperty = parseLastSegmentNumberSupplementalProperty(list);
long finalAvailabilityTimeOffset = getFinalAvailabilityTimeOffset(j3, j4);
UrlTemplate parseUrlTemplate = dashManifestParser.parseUrlTemplate(xmlPullParser, "media", segmentTemplate != null ? segmentTemplate.mediaTemplate : null);
UrlTemplate parseUrlTemplate2 = dashManifestParser.parseUrlTemplate(xmlPullParser, "initialization", segmentTemplate != null ? segmentTemplate.initializationTemplate : null);
RangedUri rangedUri = null;
List<SegmentBase.SegmentTimelineElement> list2 = null;
while (true) {
xmlPullParser.next();
if (XmlPullParserUtil.isStartTag(xmlPullParser, "Initialization")) {
rangedUri = parseInitialization(xmlPullParser);
j6 = parseLong;
} else if (XmlPullParserUtil.isStartTag(xmlPullParser, "SegmentTimeline")) {
j6 = parseLong;
list2 = dashManifestParser.parseSegmentTimeline(xmlPullParser, j6, j2);
} else {
j6 = parseLong;
maybeSkipTag(xmlPullParser);
}
if (XmlPullParserUtil.isEndTag(xmlPullParser, "SegmentTemplate")) {
break;
}
dashManifestParser = this;
finalAvailabilityTimeOffset = finalAvailabilityTimeOffset;
parseLastSegmentNumberSupplementalProperty = parseLastSegmentNumberSupplementalProperty;
parseLong4 = parseLong4;
parseLong2 = parseLong2;
parseLong = j6;
}
if (segmentTemplate != null) {
if (rangedUri == null) {
rangedUri = segmentTemplate.initialization;
}
if (list2 == null) {
list2 = segmentTemplate.segmentTimeline;
}
}
return buildSegmentTemplate(rangedUri, j6, parseLong2, parseLong4, parseLastSegmentNumberSupplementalProperty, parseLong3, list2, finalAvailabilityTimeOffset, parseUrlTemplate2, parseUrlTemplate, j5, j);
}
public List<SegmentBase.SegmentTimelineElement> parseSegmentTimeline(XmlPullParser xmlPullParser, long j, long j2) throws XmlPullParserException, IOException {
ArrayList arrayList = new ArrayList();
long j3 = 0;
long j4 = -9223372036854775807L;
boolean z = false;
int i = 0;
do {
xmlPullParser.next();
if (XmlPullParserUtil.isStartTag(xmlPullParser, "S")) {
long parseLong = parseLong(xmlPullParser, "t", C.TIME_UNSET);
if (z) {
ArrayList arrayList2 = arrayList;
j3 = addSegmentTimelineElementsToList(arrayList2, j3, j4, i, parseLong);
arrayList = arrayList2;
}
if (parseLong != C.TIME_UNSET) {
j3 = parseLong;
}
j4 = parseLong(xmlPullParser, "d", C.TIME_UNSET);
i = parseInt(xmlPullParser, "r", 0);
z = true;
} else {
maybeSkipTag(xmlPullParser);
}
} while (!XmlPullParserUtil.isEndTag(xmlPullParser, "SegmentTimeline"));
if (z) {
addSegmentTimelineElementsToList(arrayList, j3, j4, i, Util.scaleLargeTimestamp(j2, j, 1000L));
}
return arrayList;
}
public RangedUri parseSegmentUrl(XmlPullParser xmlPullParser) {
return parseRangedUrl(xmlPullParser, "media", "mediaRange");
}
public int parseSelectionFlagsFromDashRoleScheme(@Nullable String str) {
if (str == null) {
return 0;
}
return (str.equals("forced_subtitle") || str.equals("forced-subtitle")) ? 2 : 0;
}
public int parseSelectionFlagsFromRoleDescriptors(List<Descriptor> list) {
int i = 0;
for (int i2 = 0; i2 < list.size(); i2++) {
Descriptor descriptor = list.get(i2);
if (c.a("urn:mpeg:dash:role:2011", descriptor.schemeIdUri)) {
i |= parseSelectionFlagsFromDashRoleScheme(descriptor.value);
}
}
return i;
}
public ServiceDescriptionElement parseServiceDescription(XmlPullParser xmlPullParser) throws XmlPullParserException, IOException {
long j = -9223372036854775807L;
long j2 = -9223372036854775807L;
long j3 = -9223372036854775807L;
float f = -3.4028235E38f;
float f2 = -3.4028235E38f;
while (true) {
xmlPullParser.next();
if (XmlPullParserUtil.isStartTag(xmlPullParser, "Latency")) {
j = parseLong(xmlPullParser, "target", C.TIME_UNSET);
j2 = parseLong(xmlPullParser, "min", C.TIME_UNSET);
j3 = parseLong(xmlPullParser, "max", C.TIME_UNSET);
} else if (XmlPullParserUtil.isStartTag(xmlPullParser, "PlaybackRate")) {
f = parseFloat(xmlPullParser, "min", -3.4028235E38f);
f2 = parseFloat(xmlPullParser, "max", -3.4028235E38f);
}
long j4 = j;
long j5 = j2;
long j6 = j3;
float f3 = f;
float f4 = f2;
if (XmlPullParserUtil.isEndTag(xmlPullParser, "ServiceDescription")) {
return new ServiceDescriptionElement(j4, j5, j6, f3, f4);
}
j = j4;
j2 = j5;
j3 = j6;
f = f3;
f2 = f4;
}
}
@Nullable
public Pair<Integer, Integer> parseTileCountFromProperties(List<Descriptor> list) {
String str;
for (int i = 0; i < list.size(); i++) {
Descriptor descriptor = list.get(i);
if ((c.a("http://dashif.org/thumbnail_tile", descriptor.schemeIdUri) || c.a("http://dashif.org/guidelines/thumbnail_tile", descriptor.schemeIdUri)) && (str = descriptor.value) != null) {
String[] split = Util.split(str, VastAttributes.HORIZONTAL_POSITION);
if (split.length != 2) {
continue;
} else {
try {
return Pair.create(Integer.valueOf(Integer.parseInt(split[0])), Integer.valueOf(Integer.parseInt(split[1])));
} catch (NumberFormatException unused) {
continue;
}
}
}
}
return null;
}
public int parseTvaAudioPurposeCsValue(@Nullable String str) {
if (str == null) {
return 0;
}
switch (str) {
}
return 0;
}
@Nullable
public UrlTemplate parseUrlTemplate(XmlPullParser xmlPullParser, String str, @Nullable UrlTemplate urlTemplate) {
String attributeValue = xmlPullParser.getAttributeValue(null, str);
return attributeValue != null ? UrlTemplate.compile(attributeValue) : urlTemplate;
}
public UtcTimingElement parseUtcTiming(XmlPullParser xmlPullParser) {
return buildUtcTimingElement(xmlPullParser.getAttributeValue(null, "schemeIdUri"), xmlPullParser.getAttributeValue(null, "value"));
}
@Override
public DashManifest parse(Uri uri, InputStream inputStream) throws IOException {
try {
XmlPullParser newPullParser = this.xmlParserFactory.newPullParser();
newPullParser.setInput(inputStream, null);
if (newPullParser.next() == 2 && "MPD".equals(newPullParser.getName())) {
return parseMediaPresentationDescription(newPullParser, uri);
}
throw ParserException.createForMalformedManifest("inputStream does not contain a valid media presentation description", null);
} catch (XmlPullParserException e) {
throw ParserException.createForMalformedManifest(null, e);
}
}
}