1. 27 Nov, 2020 11 commits
  2. 24 Nov, 2020 21 commits
  3. 23 Nov, 2020 3 commits
    • Notify VideoFrameReleaseTimeHelper of all frame PTS values · e0ccfdde
      Previously, VideoFrameReleaseTimeHelper didn't receive PTS values for
      frames that were skipped. This would lead to unnecessary sync loss when
      encountering such buffers, because the helper would see a frame-rate
      change (i.e., the next frame being significantly longer than previous
      ones). After this change, VideoFrameReleaseTimeHelper is notified of
      all frame PTS values, so it can retain sync in this case.
      
      This change also propagates onStarted and onPositionReset to the helper.
      This paves the way for decoupling frame-rate estimation from release
      adjustment sync. Note that currently, loss of sync effectively resets
      both. This is unnecessary. For example, if the renderer is paused and
      later resumed, then release adjustment sync needs to be reset, but any
      frame-rate estimate we have is still valid.
      
      PiperOrigin-RevId: 343803531
      olly committed
    • Rollback of https://github.com/google/ExoPlayer/commit/8d84a50fa1c86f730105cd648bb2454f365830d4 · b16cf594
      *** Original commit ***
      
      Update Styled non bottom buttons to be borderless.
      
      This requires the parent of the background to draw and have padding large enough to support the size of the ripple.
      
      The bottom buttons must remained bordered as the space around them is constrained.
      
      ***
      
      PiperOrigin-RevId: 343531411
      olly committed
    • Update docs with onEvents callback information. · a987e106
      PiperOrigin-RevId: 343507207
      tonihei committed
  4. 20 Nov, 2020 5 commits
    • Fix ProgressiveDownloader retry logic · 1b50071f
      RunnableFutureTask is not reusable. Trying to reuse it meant that a
      failure in one doWork() call would cause subsequent download() calls
      to (a) not block until the runnable has finished executing (does not
      apply when using a direct executor), and (b) throw the same failure
      as thrown from the first doWork() call.
      
      This could cause #8078 if the initial failure occurred before the
      content length was resolved. Retries are not blocked on their work
      completing due to (a), and the download would be marked as failed due
      to (b). The work itself could then resolve the content length, which
      causes the stack trace in this issue.
      
      Issue: #8078
      PiperOrigin-RevId: 343498252
      olly committed
    • Add onEvents callback. · bd631a6c
      This callback allows listeners to know when all simultanous changes
      have been handled and the values reported through callbacks are
      again completely consistent with value obtained from Player
      getter calls.
      
      PiperOrigin-RevId: 343476639
      tonihei committed
    • Add OGG playback tests · a6b53d24
      PiperOrigin-RevId: 343467276
      tonihei committed
    • Re-download failed download in demo app · 3981f9f1
      The demo app has two states for downloads, as per DownloadTracker.isDownloaded.
      It's either "downloaded or downloading" (isDownloaded returns true, and the UI
      shows a blue tick) or it's "not downloaded or failed (isDownloaded returns
      false, and the UI does not show a blue tick).
      
      toggleDownload is out of sync in that it treates "failed" as belonging to the
      first state rather than the second. This means tapping on the grey tick in the
      UI in this case appears to be a no-op (tapping it again will make something
      happen).
      
      This change aligns things by making toggleDownload re-download in the case a
      previous download failed. In the future we could consider having three states,
      so failed downloads could be disambiguated properly. Unclear whether it's a
      good complexity/benefit trade-off for the demo app though!
      
      #minor-release
      
      PiperOrigin-RevId: 343464364
      olly committed
    • Fix bug in SampleQueue.discardTo for duplicate timestamps. · 1d2cf6f2
      When a stream has duplicate timestamps we currently discard to
      the last sample with the specified discardTo timestamp, but
      it should be the first one to adhere to the method doc and the
      intended usage.
      
      #minor-release
      
      PiperOrigin-RevId: 343458870
      tonihei committed