Propagate EXT-X-DATERANGE tags with media playlists
------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=155062718
This commit is contained in:
parent
7773831d88
commit
b408750aa9
@ -91,12 +91,14 @@ public final class HlsMediaPlaylist extends HlsPlaylist {
|
||||
public final boolean hasProgramDateTime;
|
||||
public final Segment initializationSegment;
|
||||
public final List<Segment> segments;
|
||||
public final List<String> dateRanges;
|
||||
public final long durationUs;
|
||||
|
||||
public HlsMediaPlaylist(@PlaylistType int playlistType, String baseUri, long startOffsetUs,
|
||||
long startTimeUs, boolean hasDiscontinuitySequence, int discontinuitySequence,
|
||||
int mediaSequence, int version, long targetDurationUs, boolean hasEndTag,
|
||||
boolean hasProgramDateTime, Segment initializationSegment, List<Segment> segments) {
|
||||
boolean hasProgramDateTime, Segment initializationSegment, List<Segment> segments,
|
||||
List<String> dateRanges) {
|
||||
super(baseUri);
|
||||
this.playlistType = playlistType;
|
||||
this.startTimeUs = startTimeUs;
|
||||
@ -117,6 +119,7 @@ public final class HlsMediaPlaylist extends HlsPlaylist {
|
||||
}
|
||||
this.startOffsetUs = startOffsetUs == C.TIME_UNSET ? C.TIME_UNSET
|
||||
: startOffsetUs >= 0 ? startOffsetUs : durationUs + startOffsetUs;
|
||||
this.dateRanges = Collections.unmodifiableList(dateRanges);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -155,7 +158,7 @@ public final class HlsMediaPlaylist extends HlsPlaylist {
|
||||
public HlsMediaPlaylist copyWith(long startTimeUs, int discontinuitySequence) {
|
||||
return new HlsMediaPlaylist(playlistType, baseUri, startOffsetUs, startTimeUs, true,
|
||||
discontinuitySequence, mediaSequence, version, targetDurationUs, hasEndTag,
|
||||
hasProgramDateTime, initializationSegment, segments);
|
||||
hasProgramDateTime, initializationSegment, segments, dateRanges);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -170,7 +173,7 @@ public final class HlsMediaPlaylist extends HlsPlaylist {
|
||||
}
|
||||
return new HlsMediaPlaylist(playlistType, baseUri, startOffsetUs, startTimeUs,
|
||||
hasDiscontinuitySequence, discontinuitySequence, mediaSequence, version, targetDurationUs,
|
||||
true, hasProgramDateTime, initializationSegment, segments);
|
||||
true, hasProgramDateTime, initializationSegment, segments, dateRanges);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -57,6 +57,7 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
|
||||
private static final String TAG_ENDLIST = "#EXT-X-ENDLIST";
|
||||
private static final String TAG_KEY = "#EXT-X-KEY";
|
||||
private static final String TAG_BYTERANGE = "#EXT-X-BYTERANGE";
|
||||
private static final String TAG_DATERANGE = "#EXT-X-DATERANGE";
|
||||
|
||||
private static final String TYPE_AUDIO = "AUDIO";
|
||||
private static final String TYPE_VIDEO = "VIDEO";
|
||||
@ -263,6 +264,7 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
|
||||
boolean hasEndTag = false;
|
||||
Segment initializationSegment = null;
|
||||
List<Segment> segments = new ArrayList<>();
|
||||
List<String> dateRanges = new ArrayList<>();
|
||||
|
||||
long segmentDurationUs = 0;
|
||||
boolean hasDiscontinuitySequence = false;
|
||||
@ -343,6 +345,8 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
|
||||
C.msToUs(Util.parseXsDateTime(line.substring(line.indexOf(':') + 1)));
|
||||
playlistStartTimeUs = programDatetimeUs - segmentStartTimeUs;
|
||||
}
|
||||
} else if (line.startsWith(TAG_DATERANGE)) {
|
||||
dateRanges.add(line);
|
||||
} else if (!line.startsWith("#")) {
|
||||
String segmentEncryptionIV;
|
||||
if (!isEncrypted) {
|
||||
@ -371,7 +375,8 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
|
||||
}
|
||||
return new HlsMediaPlaylist(playlistType, baseUri, startOffsetUs, playlistStartTimeUs,
|
||||
hasDiscontinuitySequence, playlistDiscontinuitySequence, mediaSequence, version,
|
||||
targetDurationUs, hasEndTag, playlistStartTimeUs != 0, initializationSegment, segments);
|
||||
targetDurationUs, hasEndTag, playlistStartTimeUs != 0, initializationSegment, segments,
|
||||
dateRanges);
|
||||
}
|
||||
|
||||
private static String parseStringAttr(String line, Pattern pattern) throws ParserException {
|
||||
|
Loading…
x
Reference in New Issue
Block a user