Parse DASH manifest's publish time.
Parse DASH manifest's publishTime node as defined by ISO/IEC 23009-1:2014, section 5.3.1.2. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=176525922
This commit is contained in:
parent
6607f49be6
commit
e575af3ac3
@ -136,6 +136,7 @@ public class DashManifestTest extends TestCase {
|
|||||||
assertEquals(expected.minUpdatePeriodMs, actual.minUpdatePeriodMs);
|
assertEquals(expected.minUpdatePeriodMs, actual.minUpdatePeriodMs);
|
||||||
assertEquals(expected.timeShiftBufferDepthMs, actual.timeShiftBufferDepthMs);
|
assertEquals(expected.timeShiftBufferDepthMs, actual.timeShiftBufferDepthMs);
|
||||||
assertEquals(expected.suggestedPresentationDelayMs, actual.suggestedPresentationDelayMs);
|
assertEquals(expected.suggestedPresentationDelayMs, actual.suggestedPresentationDelayMs);
|
||||||
|
assertEquals(expected.publishTimeMs, actual.publishTimeMs);
|
||||||
assertEquals(expected.utcTiming, actual.utcTiming);
|
assertEquals(expected.utcTiming, actual.utcTiming);
|
||||||
assertEquals(expected.location, actual.location);
|
assertEquals(expected.location, actual.location);
|
||||||
assertEquals(expected.getPeriodCount(), actual.getPeriodCount());
|
assertEquals(expected.getPeriodCount(), actual.getPeriodCount());
|
||||||
@ -179,7 +180,7 @@ public class DashManifestTest extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static DashManifest newDashManifest(int duration, Period... periods) {
|
private static DashManifest newDashManifest(int duration, Period... periods) {
|
||||||
return new DashManifest(0, duration, 1, false, 2, 3, 4, DUMMY_UTC_TIMING, Uri.EMPTY,
|
return new DashManifest(0, duration, 1, false, 2, 3, 4, 12345, DUMMY_UTC_TIMING, Uri.EMPTY,
|
||||||
Arrays.asList(periods));
|
Arrays.asList(periods));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,6 +67,12 @@ public class DashManifest {
|
|||||||
*/
|
*/
|
||||||
public final long suggestedPresentationDelayMs;
|
public final long suggestedPresentationDelayMs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@code publishTime} value in milliseconds since epoch, or {@link C#TIME_UNSET} if
|
||||||
|
* not present.
|
||||||
|
*/
|
||||||
|
public final long publishTimeMs;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The {@link UtcTimingElement}, or null if not present. Defined in DVB A168:7/2016, Section
|
* The {@link UtcTimingElement}, or null if not present. Defined in DVB A168:7/2016, Section
|
||||||
* 4.7.2.
|
* 4.7.2.
|
||||||
@ -82,8 +88,8 @@ public class DashManifest {
|
|||||||
|
|
||||||
public DashManifest(long availabilityStartTimeMs, long durationMs, long minBufferTimeMs,
|
public DashManifest(long availabilityStartTimeMs, long durationMs, long minBufferTimeMs,
|
||||||
boolean dynamic, long minUpdatePeriodMs, long timeShiftBufferDepthMs,
|
boolean dynamic, long minUpdatePeriodMs, long timeShiftBufferDepthMs,
|
||||||
long suggestedPresentationDelayMs, UtcTimingElement utcTiming, Uri location,
|
long suggestedPresentationDelayMs, long publishTimeMs, UtcTimingElement utcTiming,
|
||||||
List<Period> periods) {
|
Uri location, List<Period> periods) {
|
||||||
this.availabilityStartTimeMs = availabilityStartTimeMs;
|
this.availabilityStartTimeMs = availabilityStartTimeMs;
|
||||||
this.durationMs = durationMs;
|
this.durationMs = durationMs;
|
||||||
this.minBufferTimeMs = minBufferTimeMs;
|
this.minBufferTimeMs = minBufferTimeMs;
|
||||||
@ -91,6 +97,7 @@ public class DashManifest {
|
|||||||
this.minUpdatePeriodMs = minUpdatePeriodMs;
|
this.minUpdatePeriodMs = minUpdatePeriodMs;
|
||||||
this.timeShiftBufferDepthMs = timeShiftBufferDepthMs;
|
this.timeShiftBufferDepthMs = timeShiftBufferDepthMs;
|
||||||
this.suggestedPresentationDelayMs = suggestedPresentationDelayMs;
|
this.suggestedPresentationDelayMs = suggestedPresentationDelayMs;
|
||||||
|
this.publishTimeMs = publishTimeMs;
|
||||||
this.utcTiming = utcTiming;
|
this.utcTiming = utcTiming;
|
||||||
this.location = location;
|
this.location = location;
|
||||||
this.periods = periods == null ? Collections.<Period>emptyList() : periods;
|
this.periods = periods == null ? Collections.<Period>emptyList() : periods;
|
||||||
@ -147,8 +154,8 @@ public class DashManifest {
|
|||||||
}
|
}
|
||||||
long newDuration = durationMs != C.TIME_UNSET ? durationMs - shiftMs : C.TIME_UNSET;
|
long newDuration = durationMs != C.TIME_UNSET ? durationMs - shiftMs : C.TIME_UNSET;
|
||||||
return new DashManifest(availabilityStartTimeMs, newDuration, minBufferTimeMs, dynamic,
|
return new DashManifest(availabilityStartTimeMs, newDuration, minBufferTimeMs, dynamic,
|
||||||
minUpdatePeriodMs, timeShiftBufferDepthMs, suggestedPresentationDelayMs, utcTiming,
|
minUpdatePeriodMs, timeShiftBufferDepthMs, suggestedPresentationDelayMs, publishTimeMs,
|
||||||
location, copyPeriods);
|
utcTiming, location, copyPeriods);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ArrayList<AdaptationSet> copyAdaptationSets(
|
private static ArrayList<AdaptationSet> copyAdaptationSets(
|
||||||
|
@ -119,6 +119,7 @@ public class DashManifestParser extends DefaultHandler
|
|||||||
? parseDuration(xpp, "timeShiftBufferDepth", C.TIME_UNSET) : C.TIME_UNSET;
|
? parseDuration(xpp, "timeShiftBufferDepth", C.TIME_UNSET) : C.TIME_UNSET;
|
||||||
long suggestedPresentationDelayMs = dynamic
|
long suggestedPresentationDelayMs = dynamic
|
||||||
? parseDuration(xpp, "suggestedPresentationDelay", C.TIME_UNSET) : C.TIME_UNSET;
|
? parseDuration(xpp, "suggestedPresentationDelay", C.TIME_UNSET) : C.TIME_UNSET;
|
||||||
|
long publishTimeMs = parseDateTime(xpp, "publishTime", C.TIME_UNSET);
|
||||||
UtcTimingElement utcTiming = null;
|
UtcTimingElement utcTiming = null;
|
||||||
Uri location = null;
|
Uri location = null;
|
||||||
|
|
||||||
@ -171,17 +172,17 @@ public class DashManifestParser extends DefaultHandler
|
|||||||
}
|
}
|
||||||
|
|
||||||
return buildMediaPresentationDescription(availabilityStartTime, durationMs, minBufferTimeMs,
|
return buildMediaPresentationDescription(availabilityStartTime, durationMs, minBufferTimeMs,
|
||||||
dynamic, minUpdateTimeMs, timeShiftBufferDepthMs, suggestedPresentationDelayMs, utcTiming,
|
dynamic, minUpdateTimeMs, timeShiftBufferDepthMs, suggestedPresentationDelayMs,
|
||||||
location, periods);
|
publishTimeMs, utcTiming, location, periods);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected DashManifest buildMediaPresentationDescription(long availabilityStartTime,
|
protected DashManifest buildMediaPresentationDescription(long availabilityStartTime,
|
||||||
long durationMs, long minBufferTimeMs, boolean dynamic, long minUpdateTimeMs,
|
long durationMs, long minBufferTimeMs, boolean dynamic, long minUpdateTimeMs,
|
||||||
long timeShiftBufferDepthMs, long suggestedPresentationDelayMs, UtcTimingElement utcTiming,
|
long timeShiftBufferDepthMs, long suggestedPresentationDelayMs, long publishTimeMs,
|
||||||
Uri location, List<Period> periods) {
|
UtcTimingElement utcTiming, Uri location, List<Period> periods) {
|
||||||
return new DashManifest(availabilityStartTime, durationMs, minBufferTimeMs,
|
return new DashManifest(availabilityStartTime, durationMs, minBufferTimeMs,
|
||||||
dynamic, minUpdateTimeMs, timeShiftBufferDepthMs, suggestedPresentationDelayMs, utcTiming,
|
dynamic, minUpdateTimeMs, timeShiftBufferDepthMs, suggestedPresentationDelayMs,
|
||||||
location, periods);
|
publishTimeMs, utcTiming, location, periods);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected UtcTimingElement parseUtcTiming(XmlPullParser xpp) {
|
protected UtcTimingElement parseUtcTiming(XmlPullParser xpp) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user