public class DashManifestParser extends org.xml.sax.helpers.DefaultHandler implements com.google.android.exoplayer2.upstream.ParsingLoadable.Parser<DashManifest>
| Modifier and Type | Class and Description |
|---|---|
protected static class |
DashManifestParser.RepresentationInfo
A parsed Representation element.
|
| Constructor and Description |
|---|
DashManifestParser()
Equivalent to calling
new DashManifestParser(null). |
DashManifestParser(java.lang.String contentId) |
| Modifier and Type | Method and Description |
|---|---|
protected AdaptationSet |
buildAdaptationSet(int id,
int contentType,
java.util.List<Representation> representations,
java.util.List<Descriptor> accessibilityDescriptors,
java.util.List<Descriptor> supplementalProperties) |
protected com.google.android.exoplayer2.metadata.emsg.EventMessage |
buildEvent(java.lang.String schemeIdUri,
java.lang.String value,
long id,
long durationMs,
byte[] messageData) |
protected EventStream |
buildEventStream(java.lang.String schemeIdUri,
java.lang.String value,
long timescale,
long[] presentationTimesUs,
com.google.android.exoplayer2.metadata.emsg.EventMessage[] events) |
protected com.google.android.exoplayer2.Format |
buildFormat(java.lang.String id,
java.lang.String label,
java.lang.String containerMimeType,
int width,
int height,
float frameRate,
int audioChannels,
int audioSamplingRate,
int bitrate,
java.lang.String language,
int selectionFlags,
java.util.List<Descriptor> accessibilityDescriptors,
java.lang.String codecs,
java.util.List<Descriptor> supplementalProperties) |
protected DashManifest |
buildMediaPresentationDescription(long availabilityStartTime,
long durationMs,
long minBufferTimeMs,
boolean dynamic,
long minUpdateTimeMs,
long timeShiftBufferDepthMs,
long suggestedPresentationDelayMs,
long publishTimeMs,
ProgramInformation programInformation,
UtcTimingElement utcTiming,
android.net.Uri location,
java.util.List<Period> periods) |
protected Period |
buildPeriod(java.lang.String id,
long startMs,
java.util.List<AdaptationSet> adaptationSets,
java.util.List<EventStream> eventStreams) |
protected RangedUri |
buildRangedUri(java.lang.String urlText,
long rangeStart,
long rangeLength) |
protected Representation |
buildRepresentation(DashManifestParser.RepresentationInfo representationInfo,
java.lang.String contentId,
java.lang.String extraDrmSchemeType,
java.util.ArrayList<com.google.android.exoplayer2.drm.DrmInitData.SchemeData> extraDrmSchemeDatas,
java.util.ArrayList<Descriptor> extraInbandEventStreams) |
protected SegmentBase.SegmentList |
buildSegmentList(RangedUri initialization,
long timescale,
long presentationTimeOffset,
long startNumber,
long duration,
java.util.List<SegmentBase.SegmentTimelineElement> timeline,
java.util.List<RangedUri> segments) |
protected SegmentBase.SegmentTemplate |
buildSegmentTemplate(RangedUri initialization,
long timescale,
long presentationTimeOffset,
long startNumber,
long duration,
java.util.List<SegmentBase.SegmentTimelineElement> timeline,
UrlTemplate initializationTemplate,
UrlTemplate mediaTemplate) |
protected SegmentBase.SegmentTimelineElement |
buildSegmentTimelineElement(long elapsedTime,
long duration) |
protected SegmentBase.SingleSegmentBase |
buildSingleSegmentBase(RangedUri initialization,
long timescale,
long presentationTimeOffset,
long indexStart,
long indexLength) |
protected UtcTimingElement |
buildUtcTimingElement(java.lang.String schemeIdUri,
java.lang.String value) |
protected int |
getContentType(com.google.android.exoplayer2.Format format) |
static void |
maybeSkipTag(org.xmlpull.v1.XmlPullParser xpp)
If the provided
XmlPullParser is currently positioned at the start of a tag, skips
forward to the end of that tag. |
DashManifest |
parse(android.net.Uri uri,
java.io.InputStream inputStream) |
protected AdaptationSet |
parseAdaptationSet(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String baseUrl,
SegmentBase segmentBase) |
protected void |
parseAdaptationSetChild(org.xmlpull.v1.XmlPullParser xpp)
Parses children of AdaptationSet elements not specifically parsed elsewhere.
|
protected int |
parseAudioChannelConfiguration(org.xmlpull.v1.XmlPullParser xpp) |
protected static java.lang.String |
parseBaseUrl(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String parentBaseUrl) |
protected static int |
parseCea608AccessibilityChannel(java.util.List<Descriptor> accessibilityDescriptors) |
protected static int |
parseCea708AccessibilityChannel(java.util.List<Descriptor> accessibilityDescriptors) |
protected android.util.Pair<java.lang.String,com.google.android.exoplayer2.drm.DrmInitData.SchemeData> |
parseContentProtection(org.xmlpull.v1.XmlPullParser xpp)
Parses a ContentProtection element.
|
protected int |
parseContentType(org.xmlpull.v1.XmlPullParser xpp) |
protected static long |
parseDateTime(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String name,
long defaultValue) |
protected static Descriptor |
parseDescriptor(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String tag)
Parses a
Descriptor from an element. |
protected static int |
parseDolbyChannelConfiguration(org.xmlpull.v1.XmlPullParser xpp)
Parses the number of channels from the value attribute of an AudioElementConfiguration with
schemeIdUri "tag:dolby.com,2014:dash:audio_channel_configuration:2011", as defined by table E.5
in ETSI TS 102 366.
|
protected static long |
parseDuration(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String name,
long defaultValue) |
protected static java.lang.String |
parseEac3SupplementalProperties(java.util.List<Descriptor> supplementalProperties) |
protected android.util.Pair<java.lang.Long,com.google.android.exoplayer2.metadata.emsg.EventMessage> |
parseEvent(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String schemeIdUri,
java.lang.String value,
long timescale,
java.io.ByteArrayOutputStream scratchOutputStream)
Parses a single Event node in the manifest.
|
protected byte[] |
parseEventObject(org.xmlpull.v1.XmlPullParser xpp,
java.io.ByteArrayOutputStream scratchOutputStream)
Parses an event object.
|
protected EventStream |
parseEventStream(org.xmlpull.v1.XmlPullParser xpp)
/**
Parses a single EventStream node in the manifest.
|
protected static float |
parseFrameRate(org.xmlpull.v1.XmlPullParser xpp,
float defaultValue) |
protected RangedUri |
parseInitialization(org.xmlpull.v1.XmlPullParser xpp) |
protected static int |
parseInt(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String name,
int defaultValue) |
protected static long |
parseLong(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String name,
long defaultValue) |
protected DashManifest |
parseMediaPresentationDescription(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String baseUrl) |
protected android.util.Pair<Period,java.lang.Long> |
parsePeriod(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String baseUrl,
long defaultStartMs) |
protected ProgramInformation |
parseProgramInformation(org.xmlpull.v1.XmlPullParser xpp) |
protected RangedUri |
parseRangedUrl(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String urlAttribute,
java.lang.String rangeAttribute) |
protected DashManifestParser.RepresentationInfo |
parseRepresentation(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String baseUrl,
java.lang.String label,
java.lang.String adaptationSetMimeType,
java.lang.String adaptationSetCodecs,
int adaptationSetWidth,
int adaptationSetHeight,
float adaptationSetFrameRate,
int adaptationSetAudioChannels,
int adaptationSetAudioSamplingRate,
java.lang.String adaptationSetLanguage,
int adaptationSetSelectionFlags,
java.util.List<Descriptor> adaptationSetAccessibilityDescriptors,
SegmentBase segmentBase) |
protected int |
parseRole(org.xmlpull.v1.XmlPullParser xpp)
Parses a Role element.
|
protected SegmentBase.SingleSegmentBase |
parseSegmentBase(org.xmlpull.v1.XmlPullParser xpp,
SegmentBase.SingleSegmentBase parent) |
protected SegmentBase.SegmentList |
parseSegmentList(org.xmlpull.v1.XmlPullParser xpp,
SegmentBase.SegmentList parent) |
protected SegmentBase.SegmentTemplate |
parseSegmentTemplate(org.xmlpull.v1.XmlPullParser xpp,
SegmentBase.SegmentTemplate parent) |
protected java.util.List<SegmentBase.SegmentTimelineElement> |
parseSegmentTimeline(org.xmlpull.v1.XmlPullParser xpp) |
protected RangedUri |
parseSegmentUrl(org.xmlpull.v1.XmlPullParser xpp) |
protected static java.lang.String |
parseString(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String name,
java.lang.String defaultValue) |
protected UrlTemplate |
parseUrlTemplate(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String name,
UrlTemplate defaultValue) |
protected UtcTimingElement |
parseUtcTiming(org.xmlpull.v1.XmlPullParser xpp) |
characters, endDocument, endElement, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startDocument, startElement, startPrefixMapping, unparsedEntityDecl, warningpublic DashManifestParser()
new DashManifestParser(null).public DashManifestParser(java.lang.String contentId)
contentId - An optional content identifier to include in the parsed manifest.public DashManifest parse(android.net.Uri uri, java.io.InputStream inputStream) throws java.io.IOException
parse in interface com.google.android.exoplayer2.upstream.ParsingLoadable.Parser<DashManifest>java.io.IOExceptionprotected DashManifest parseMediaPresentationDescription(org.xmlpull.v1.XmlPullParser xpp, java.lang.String baseUrl) throws org.xmlpull.v1.XmlPullParserException, java.io.IOException
org.xmlpull.v1.XmlPullParserExceptionjava.io.IOExceptionprotected DashManifest buildMediaPresentationDescription(long availabilityStartTime, long durationMs, long minBufferTimeMs, boolean dynamic, long minUpdateTimeMs, long timeShiftBufferDepthMs, long suggestedPresentationDelayMs, long publishTimeMs, ProgramInformation programInformation, UtcTimingElement utcTiming, android.net.Uri location, java.util.List<Period> periods)
protected UtcTimingElement parseUtcTiming(org.xmlpull.v1.XmlPullParser xpp)
protected UtcTimingElement buildUtcTimingElement(java.lang.String schemeIdUri, java.lang.String value)
protected android.util.Pair<Period,java.lang.Long> parsePeriod(org.xmlpull.v1.XmlPullParser xpp, java.lang.String baseUrl, long defaultStartMs) throws org.xmlpull.v1.XmlPullParserException, java.io.IOException
org.xmlpull.v1.XmlPullParserExceptionjava.io.IOExceptionprotected Period buildPeriod(java.lang.String id, long startMs, java.util.List<AdaptationSet> adaptationSets, java.util.List<EventStream> eventStreams)
protected AdaptationSet parseAdaptationSet(org.xmlpull.v1.XmlPullParser xpp, java.lang.String baseUrl, SegmentBase segmentBase) throws org.xmlpull.v1.XmlPullParserException, java.io.IOException
org.xmlpull.v1.XmlPullParserExceptionjava.io.IOExceptionprotected AdaptationSet buildAdaptationSet(int id, int contentType, java.util.List<Representation> representations, java.util.List<Descriptor> accessibilityDescriptors, java.util.List<Descriptor> supplementalProperties)
protected int parseContentType(org.xmlpull.v1.XmlPullParser xpp)
protected int getContentType(com.google.android.exoplayer2.Format format)
protected android.util.Pair<java.lang.String,com.google.android.exoplayer2.drm.DrmInitData.SchemeData> parseContentProtection(org.xmlpull.v1.XmlPullParser xpp)
throws org.xmlpull.v1.XmlPullParserException,
java.io.IOException
xpp - The parser from which to read.DrmInitData.SchemeData parsed from the ContentProtection element.
Either or both may be null, depending on the ContentProtection element being parsed.org.xmlpull.v1.XmlPullParserException - If an error occurs parsing the element.java.io.IOException - If an error occurs reading the element.protected int parseRole(org.xmlpull.v1.XmlPullParser xpp)
throws org.xmlpull.v1.XmlPullParserException,
java.io.IOException
xpp - The parser from which to read.C.SelectionFlags parsed from the element.org.xmlpull.v1.XmlPullParserException - If an error occurs parsing the element.java.io.IOException - If an error occurs reading the element.protected void parseAdaptationSetChild(org.xmlpull.v1.XmlPullParser xpp)
throws org.xmlpull.v1.XmlPullParserException,
java.io.IOException
xpp - The XmpPullParser from which the AdaptationSet child should be parsed.org.xmlpull.v1.XmlPullParserException - If an error occurs parsing the element.java.io.IOException - If an error occurs reading the element.protected DashManifestParser.RepresentationInfo parseRepresentation(org.xmlpull.v1.XmlPullParser xpp, java.lang.String baseUrl, java.lang.String label, java.lang.String adaptationSetMimeType, java.lang.String adaptationSetCodecs, int adaptationSetWidth, int adaptationSetHeight, float adaptationSetFrameRate, int adaptationSetAudioChannels, int adaptationSetAudioSamplingRate, java.lang.String adaptationSetLanguage, @C.SelectionFlags int adaptationSetSelectionFlags, java.util.List<Descriptor> adaptationSetAccessibilityDescriptors, SegmentBase segmentBase) throws org.xmlpull.v1.XmlPullParserException, java.io.IOException
org.xmlpull.v1.XmlPullParserExceptionjava.io.IOExceptionprotected com.google.android.exoplayer2.Format buildFormat(java.lang.String id,
java.lang.String label,
java.lang.String containerMimeType,
int width,
int height,
float frameRate,
int audioChannels,
int audioSamplingRate,
int bitrate,
java.lang.String language,
@C.SelectionFlags
int selectionFlags,
java.util.List<Descriptor> accessibilityDescriptors,
java.lang.String codecs,
java.util.List<Descriptor> supplementalProperties)
protected Representation buildRepresentation(DashManifestParser.RepresentationInfo representationInfo, java.lang.String contentId, java.lang.String extraDrmSchemeType, java.util.ArrayList<com.google.android.exoplayer2.drm.DrmInitData.SchemeData> extraDrmSchemeDatas, java.util.ArrayList<Descriptor> extraInbandEventStreams)
protected SegmentBase.SingleSegmentBase parseSegmentBase(org.xmlpull.v1.XmlPullParser xpp, SegmentBase.SingleSegmentBase parent) throws org.xmlpull.v1.XmlPullParserException, java.io.IOException
org.xmlpull.v1.XmlPullParserExceptionjava.io.IOExceptionprotected SegmentBase.SingleSegmentBase buildSingleSegmentBase(RangedUri initialization, long timescale, long presentationTimeOffset, long indexStart, long indexLength)
protected SegmentBase.SegmentList parseSegmentList(org.xmlpull.v1.XmlPullParser xpp, SegmentBase.SegmentList parent) throws org.xmlpull.v1.XmlPullParserException, java.io.IOException
org.xmlpull.v1.XmlPullParserExceptionjava.io.IOExceptionprotected SegmentBase.SegmentList buildSegmentList(RangedUri initialization, long timescale, long presentationTimeOffset, long startNumber, long duration, java.util.List<SegmentBase.SegmentTimelineElement> timeline, java.util.List<RangedUri> segments)
protected SegmentBase.SegmentTemplate parseSegmentTemplate(org.xmlpull.v1.XmlPullParser xpp, SegmentBase.SegmentTemplate parent) throws org.xmlpull.v1.XmlPullParserException, java.io.IOException
org.xmlpull.v1.XmlPullParserExceptionjava.io.IOExceptionprotected SegmentBase.SegmentTemplate buildSegmentTemplate(RangedUri initialization, long timescale, long presentationTimeOffset, long startNumber, long duration, java.util.List<SegmentBase.SegmentTimelineElement> timeline, UrlTemplate initializationTemplate, UrlTemplate mediaTemplate)
protected EventStream parseEventStream(org.xmlpull.v1.XmlPullParser xpp) throws org.xmlpull.v1.XmlPullParserException, java.io.IOException
xpp - The current xml parser.EventStream parsed from this EventStream node.org.xmlpull.v1.XmlPullParserException - If there is any error parsing this node.java.io.IOException - If there is any error reading from the underlying input stream.protected EventStream buildEventStream(java.lang.String schemeIdUri, java.lang.String value, long timescale, long[] presentationTimesUs, com.google.android.exoplayer2.metadata.emsg.EventMessage[] events)
protected android.util.Pair<java.lang.Long,com.google.android.exoplayer2.metadata.emsg.EventMessage> parseEvent(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String schemeIdUri,
java.lang.String value,
long timescale,
java.io.ByteArrayOutputStream scratchOutputStream)
throws java.io.IOException,
org.xmlpull.v1.XmlPullParserException
xpp - The current xml parser.schemeIdUri - The schemeIdUri of the parent EventStream.value - The schemeIdUri of the parent EventStream.timescale - The timescale of the parent EventStream.scratchOutputStream - A ByteArrayOutputStream that is used when parsing event
objects.EventMessage.org.xmlpull.v1.XmlPullParserException - If there is any error parsing this node.java.io.IOException - If there is any error reading from the underlying input stream.protected byte[] parseEventObject(org.xmlpull.v1.XmlPullParser xpp,
java.io.ByteArrayOutputStream scratchOutputStream)
throws org.xmlpull.v1.XmlPullParserException,
java.io.IOException
xpp - The current xml parser.scratchOutputStream - A ByteArrayOutputStream that's used when parsing the object.org.xmlpull.v1.XmlPullParserException - If there is any error parsing this node.java.io.IOException - If there is any error reading from the underlying input stream.protected com.google.android.exoplayer2.metadata.emsg.EventMessage buildEvent(java.lang.String schemeIdUri,
java.lang.String value,
long id,
long durationMs,
byte[] messageData)
protected java.util.List<SegmentBase.SegmentTimelineElement> parseSegmentTimeline(org.xmlpull.v1.XmlPullParser xpp) throws org.xmlpull.v1.XmlPullParserException, java.io.IOException
org.xmlpull.v1.XmlPullParserExceptionjava.io.IOExceptionprotected SegmentBase.SegmentTimelineElement buildSegmentTimelineElement(long elapsedTime, long duration)
protected UrlTemplate parseUrlTemplate(org.xmlpull.v1.XmlPullParser xpp, java.lang.String name, UrlTemplate defaultValue)
protected RangedUri parseInitialization(org.xmlpull.v1.XmlPullParser xpp)
protected RangedUri parseSegmentUrl(org.xmlpull.v1.XmlPullParser xpp)
protected RangedUri parseRangedUrl(org.xmlpull.v1.XmlPullParser xpp, java.lang.String urlAttribute, java.lang.String rangeAttribute)
protected RangedUri buildRangedUri(java.lang.String urlText, long rangeStart, long rangeLength)
protected ProgramInformation parseProgramInformation(org.xmlpull.v1.XmlPullParser xpp) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException
java.io.IOExceptionorg.xmlpull.v1.XmlPullParserExceptionprotected int parseAudioChannelConfiguration(org.xmlpull.v1.XmlPullParser xpp)
throws org.xmlpull.v1.XmlPullParserException,
java.io.IOException
org.xmlpull.v1.XmlPullParserExceptionjava.io.IOExceptionpublic static void maybeSkipTag(org.xmlpull.v1.XmlPullParser xpp)
throws java.io.IOException,
org.xmlpull.v1.XmlPullParserException
XmlPullParser is currently positioned at the start of a tag, skips
forward to the end of that tag.xpp - The XmlPullParser.org.xmlpull.v1.XmlPullParserException - If an error occurs parsing the stream.java.io.IOException - If an error occurs reading the stream.protected static Descriptor parseDescriptor(org.xmlpull.v1.XmlPullParser xpp, java.lang.String tag) throws org.xmlpull.v1.XmlPullParserException, java.io.IOException
Descriptor from an element.xpp - The parser from which to read.tag - The tag of the element being parsed.Descriptor.org.xmlpull.v1.XmlPullParserException - If an error occurs parsing the element.java.io.IOException - If an error occurs reading the element.protected static int parseCea608AccessibilityChannel(java.util.List<Descriptor> accessibilityDescriptors)
protected static int parseCea708AccessibilityChannel(java.util.List<Descriptor> accessibilityDescriptors)
protected static java.lang.String parseEac3SupplementalProperties(java.util.List<Descriptor> supplementalProperties)
protected static float parseFrameRate(org.xmlpull.v1.XmlPullParser xpp,
float defaultValue)
protected static long parseDuration(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String name,
long defaultValue)
protected static long parseDateTime(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String name,
long defaultValue)
throws com.google.android.exoplayer2.ParserException
com.google.android.exoplayer2.ParserExceptionprotected static java.lang.String parseBaseUrl(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String parentBaseUrl)
throws org.xmlpull.v1.XmlPullParserException,
java.io.IOException
org.xmlpull.v1.XmlPullParserExceptionjava.io.IOExceptionprotected static int parseInt(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String name,
int defaultValue)
protected static long parseLong(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String name,
long defaultValue)
protected static java.lang.String parseString(org.xmlpull.v1.XmlPullParser xpp,
java.lang.String name,
java.lang.String defaultValue)
protected static int parseDolbyChannelConfiguration(org.xmlpull.v1.XmlPullParser xpp)
xpp - The parser from which to read.Format.NO_VALUE if the channel count could
not be parsed.