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 boolean hasProgramDateTime;
|
||||||
public final Segment initializationSegment;
|
public final Segment initializationSegment;
|
||||||
public final List<Segment> segments;
|
public final List<Segment> segments;
|
||||||
|
public final List<String> dateRanges;
|
||||||
public final long durationUs;
|
public final long durationUs;
|
||||||
|
|
||||||
public HlsMediaPlaylist(@PlaylistType int playlistType, String baseUri, long startOffsetUs,
|
public HlsMediaPlaylist(@PlaylistType int playlistType, String baseUri, long startOffsetUs,
|
||||||
long startTimeUs, boolean hasDiscontinuitySequence, int discontinuitySequence,
|
long startTimeUs, boolean hasDiscontinuitySequence, int discontinuitySequence,
|
||||||
int mediaSequence, int version, long targetDurationUs, boolean hasEndTag,
|
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);
|
super(baseUri);
|
||||||
this.playlistType = playlistType;
|
this.playlistType = playlistType;
|
||||||
this.startTimeUs = startTimeUs;
|
this.startTimeUs = startTimeUs;
|
||||||
@ -117,6 +119,7 @@ public final class HlsMediaPlaylist extends HlsPlaylist {
|
|||||||
}
|
}
|
||||||
this.startOffsetUs = startOffsetUs == C.TIME_UNSET ? C.TIME_UNSET
|
this.startOffsetUs = startOffsetUs == C.TIME_UNSET ? C.TIME_UNSET
|
||||||
: startOffsetUs >= 0 ? startOffsetUs : durationUs + startOffsetUs;
|
: 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) {
|
public HlsMediaPlaylist copyWith(long startTimeUs, int discontinuitySequence) {
|
||||||
return new HlsMediaPlaylist(playlistType, baseUri, startOffsetUs, startTimeUs, true,
|
return new HlsMediaPlaylist(playlistType, baseUri, startOffsetUs, startTimeUs, true,
|
||||||
discontinuitySequence, mediaSequence, version, targetDurationUs, hasEndTag,
|
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,
|
return new HlsMediaPlaylist(playlistType, baseUri, startOffsetUs, startTimeUs,
|
||||||
hasDiscontinuitySequence, discontinuitySequence, mediaSequence, version, targetDurationUs,
|
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_ENDLIST = "#EXT-X-ENDLIST";
|
||||||
private static final String TAG_KEY = "#EXT-X-KEY";
|
private static final String TAG_KEY = "#EXT-X-KEY";
|
||||||
private static final String TAG_BYTERANGE = "#EXT-X-BYTERANGE";
|
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_AUDIO = "AUDIO";
|
||||||
private static final String TYPE_VIDEO = "VIDEO";
|
private static final String TYPE_VIDEO = "VIDEO";
|
||||||
@ -263,6 +264,7 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
|
|||||||
boolean hasEndTag = false;
|
boolean hasEndTag = false;
|
||||||
Segment initializationSegment = null;
|
Segment initializationSegment = null;
|
||||||
List<Segment> segments = new ArrayList<>();
|
List<Segment> segments = new ArrayList<>();
|
||||||
|
List<String> dateRanges = new ArrayList<>();
|
||||||
|
|
||||||
long segmentDurationUs = 0;
|
long segmentDurationUs = 0;
|
||||||
boolean hasDiscontinuitySequence = false;
|
boolean hasDiscontinuitySequence = false;
|
||||||
@ -343,6 +345,8 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
|
|||||||
C.msToUs(Util.parseXsDateTime(line.substring(line.indexOf(':') + 1)));
|
C.msToUs(Util.parseXsDateTime(line.substring(line.indexOf(':') + 1)));
|
||||||
playlistStartTimeUs = programDatetimeUs - segmentStartTimeUs;
|
playlistStartTimeUs = programDatetimeUs - segmentStartTimeUs;
|
||||||
}
|
}
|
||||||
|
} else if (line.startsWith(TAG_DATERANGE)) {
|
||||||
|
dateRanges.add(line);
|
||||||
} else if (!line.startsWith("#")) {
|
} else if (!line.startsWith("#")) {
|
||||||
String segmentEncryptionIV;
|
String segmentEncryptionIV;
|
||||||
if (!isEncrypted) {
|
if (!isEncrypted) {
|
||||||
@ -371,7 +375,8 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
|
|||||||
}
|
}
|
||||||
return new HlsMediaPlaylist(playlistType, baseUri, startOffsetUs, playlistStartTimeUs,
|
return new HlsMediaPlaylist(playlistType, baseUri, startOffsetUs, playlistStartTimeUs,
|
||||||
hasDiscontinuitySequence, playlistDiscontinuitySequence, mediaSequence, version,
|
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 {
|
private static String parseStringAttr(String line, Pattern pattern) throws ParserException {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user