Bug 1419249 - Fix the wrong logic calculating starttime of the first sample.
MozReview-Commit-ID: 3je7idVeYoZ
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/GeckoHlsPlayer.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/GeckoHlsPlayer.java
@@ -709,27 +709,27 @@ public class GeckoHlsPlayer implements B
// 2) positionUs is samples PTS from MFR, we need to re-adjust it
// for ExoPlayer by subtracting sample start time.
// 3) Time unit for ExoPlayer.seek() is milliseconds.
try {
// TODO : Gather Timeline Period / Window information to develop
// complete timeline, and seekTime should be inside the duration.
Long startTime = Long.MAX_VALUE;
for (GeckoHlsRendererBase r : mRenderers) {
- if (r == mVRenderer && mRendererController.isVideoRendererEnabled() ||
- r == mARenderer && mRendererController.isAudioRendererEnabled()) {
+ if (r == mVRenderer && mRendererController.isVideoRendererEnabled() && mTracksInfo.hasVideo() ||
+ r == mARenderer && mRendererController.isAudioRendererEnabled() && mTracksInfo.hasAudio()) {
// Find the min value of the start time
startTime = Math.min(startTime, r.getFirstSamplePTS());
}
}
if (DEBUG) {
Log.d(LOGTAG, "seeking : " + positionUs / 1000 +
" (ms); startTime : " + startTime / 1000 + " (ms)");
}
- assertTrue(startTime != Long.MAX_VALUE);
+ assertTrue(startTime != Long.MAX_VALUE && startTime != Long.MIN_VALUE);
mPlayer.seekTo(positionUs / 1000 - startTime / 1000);
} catch (Exception e) {
if (mDemuxerCallbacks != null) {
mDemuxerCallbacks.onError(DemuxerError.UNKNOWN.code());
}
return false;
}
return true;