Bug 1378852 - Always return a value >= 0 for getBufferedPosition in GeckoHlsPlayer. draft
authorKilik Kuo <kikuo@mozilla.com>
Fri, 07 Jul 2017 04:59:33 +0800
changeset 605153 8bb607b93ed50353e3899a324a0bbbc1d0558e5b
parent 604915 e23f55311ecb5e0cd14c5010d1b40663b3a2e7d0
child 605154 b9e8d80f7c07642f52dae3640bfedfbe169964e0
push id67316
push userbmo:kikuo@mozilla.com
push dateFri, 07 Jul 2017 04:45:29 +0000
bugs1378852
milestone56.0a1
Bug 1378852 - Always return a value >= 0 for getBufferedPosition in GeckoHlsPlayer. -1L will be returned if there's no estimated buffered position for now, it implies that we should treat any returned negative value in the same way. MozReview-Commit-ID: K1fpQKOmo3k
mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/GeckoHlsPlayer.java
--- 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
@@ -577,17 +577,17 @@ public class GeckoHlsPlayer implements B
         if (DEBUG) { Log.d(LOGTAG, "getDuration : " + duration  + "(Us)"); }
         return duration;
     }
 
     @Override
     public long getBufferedPosition() {
         assertTrue(mPlayer != null);
         // Value returned by getBufferedPosition() is in milliseconds.
-        long bufferedPos = mPlayer.getBufferedPosition() * 1000;
+        long bufferedPos = Math.max(0L, mPlayer.getBufferedPosition() * 1000L);
         if (DEBUG) { Log.d(LOGTAG, "getBufferedPosition : " + bufferedPos + "(Us)"); }
         return bufferedPos;
     }
 
     @Override
     public synchronized int getNumberOfTracks(TrackType trackType) {
         if (DEBUG) { Log.d(LOGTAG, "getNumberOfTracks : type " + trackType); }
         assertTrue(mTracksInfo != null);