1. 23 Jun, 2020 8 commits
  2. 17 Jun, 2020 21 commits
    • Bump version to 2.11.6 · 92fd3bc2
      PiperOrigin-RevId: 316949571
      olly committed
    • Rollback of https://github.com/google/ExoPlayer/commit/b6f5a263f725089c026bb8416ade555f4f16a2bc · ffa4ad0e
      *** Original commit ***
      
      Rollforward of commit 5612ac50.
      
      *** Reason for rollforward ***
      
      Rollforward after making sure the handler is created
      from the playback thread and not from an app thread.
      
      *** Original change description ***
      
      Rollback of https://github.com/google/ExoPlayer/commit/e1beb1d1946bb8ca94f62578aee8cbadd97b6e2b
      
      *** Original commit ***
      
      Expose experimental offload scheduling
      
      Add a new scheduling mode that stops ExoPlayer main loop
      when the audio offload buffer is full and resume it...
      
      ***
      
      PiperOrigin-RevId: 316914147
      olly committed
    • Remove unused previousExtractor from HlsExtractorFactory · a5bc91f0
      PiperOrigin-RevId: 316902430
      aquilescanta committed
    • Remove overloaded set method · 733e71b4
      PiperOrigin-RevId: 316900193
      bachinger committed
    • Rollforward of commit 5612ac50. · b6f5a263
      *** Reason for rollforward ***
      
      Rollforward after making sure the handler is created
      from the playback thread and not from an app thread.
      
      *** Original change description ***
      
      Rollback of https://github.com/google/ExoPlayer/commit/e1beb1d1946bb8ca94f62578aee8cbadd97b6e2b
      
      *** Original commit ***
      
      Expose experimental offload scheduling
      
      Add a new scheduling mode that stops ExoPlayer main loop
      when the audio offload buffer is full and resume it when
      it has been partially played.
      
      This mode needs to be enabled and dissabled manually by the app
      for now.
      
      #exo-offload
      
      ***
      
      ***
      
      PiperOrigin-RevId: 316898804
      krocard committed
    • Workaround unexpected discard of preloaded ad · ed0778d0
      After an ad pod coming up has preloaded, if the user seeks before it
      plays we get pauseAd/stopAd called for that ad pod. Also, the ad will
      not load again. Work around this unexpected behavior by handling
      pauseAd/stopAd and discarding the ad.
      
      In future, it's likely that the IMA SDK will stop calling those
      methods, and will loadAd again for the preloaded ad that was
      unexpectedly discarded. This change should be compatible with that,
      because the ad won't be discarded any more due to not calling stopAd.
      
      Issue: #7492
      PiperOrigin-RevId: 316873699
      andrewlewis committed
    • Remove some ad playback state change requirements · 2546be51
      Ads can appear due to asynchronous ad tag requests completing after
      earlier ads in a pod have loaded, so remove the requirement that the
      ad count can't change. The MediaPeriodQueue should handling discarding
      buffered content if an ad appears before already buffered content, so
      I think this case is actually handled correctly by the core player
      already.
      
      Also remove the requirement that an ad URI can't change. This is a
      defensive measure for now, but it's likely that a later fix in the IMA
      SDK for an issue where loadAd is not called after preloading then
      seeking before a preloaded ad plays will result in loadAd being called
      more than once, and I think it's possible that the second call to
      loadAd may have a different URI. Because the ad URI should only change
      after an intermediate seek to another MediaPeriod, there shouldn't be
      any problems with buffered data not getting discarded.
      
      Issue: #7477
      PiperOrigin-RevId: 316871371
      andrewlewis committed
    • Deflake DecoderVideoRendererTest · 99954b4c
      The test was trying to synchronize a background decoding thread by
      waiting for pending decode calls. However, the background thread needs
      to fully queue the newly available output buffer before we can stop
      waiting to ensure it's actually fully predictable. So we change the
      pending wait to wait until the input buffer is cleared, which only
      happens after the decoder is definitely done with it.
      
      Also properly clean-up decoder (including shutting down the background
      thread).
      
      PiperOrigin-RevId: 316870659
      tonihei committed
    • Move IMA SDK callbacks into inner class · 28695d9a
      The release() method was added in the recent IMA API changes for
      preloading and now 'collides' with the ExoPlayer AdsLoader release
      method. This led to all ads completing being treated as a call to
      completely release the ads loader, which meant that the ad playback
      state was not updated on resuming after all ads had completed, which
      in turn led to playback getting stuck buffering on returning from the
      background after all ads played.
      
      Move the IMA callbacks into an inner class to avoid this.
      
      Issue: #7508
      PiperOrigin-RevId: 316834561
      andrewlewis committed
    • Update deprecation JavaDoc for ExoPlayer DataSpec · f85098a8
      constructor to note that the builder does NOT
      infer the http method from the existence of the
      post body.
      
      PiperOrigin-RevId: 316765677
      olly committed
    • Add MIME types for which every sample is known to be a sync sample. · c808db99
      - Leaving the TODO, since there are still MIME types we're unsure about.
      - Removing AAC because xHE-AAC does not have this property. We may re-add
        it with an additional profile check to exclude xHE-AAC in the future.
      
      PiperOrigin-RevId: 316715147
      olly committed
    • Remove support for MKV invisible flag · e6b6a86a
      We haven't seen it used anywhere in practice. It's a niche feature not
      supported by any other extractors, and is one of the very few things
      stopping us from simplifying MediaSource implementations to not set the
      decodeOnly sample flag. This is a simplification that we want to make,
      since the current mechanism doesn't work properly for cases where a
      downstream decoder adjusts the buffer presentation timestamps so that
      they're different on the output side than on the input side.
      
      PiperOrigin-RevId: 316712302
      olly committed
    • Create HlsMediaChunkExtractor · 2273b00a
      To be the abstraction to use for integrating with MediaParser.
      
      PiperOrigin-RevId: 316710421
      aquilescanta committed
    • Remove unused waitingForKeys in renderers. · aed8cad8
      This flag isn't needed anymore because the waiting for keys happens on
      the source side and the source just returns NOTHING_READ under the
      same conditions.
      
      PiperOrigin-RevId: 316704214
      tonihei committed
    • Move runUntil method to TestUtil as it's used by multiple tests. · cc97bcb4
      We started using this method from other tests unrelated to
      TestExoPlayer, so the method is better placed inside a generic Util
      class.
      
      PiperOrigin-RevId: 316675067
      tonihei committed
    • Add Player.getCurrentMediaItem() · b7233c28
      PiperOrigin-RevId: 316650017
      bachinger committed
    • Add getMediaItem() to MediaSource · 5b28cb52
      This change adds MediaSource.getMediaItem and deprecates MediaSource.getTag. For backwards compatibility, the tag is made available through the Window with `mediaItem.playbackProperties.tag` as well as in the deprecated `tag` attribute.
      
      PiperOrigin-RevId: 316539752
      bachinger committed
    • Pull IMA cuePoints -> adGroupTimesUs logic into a helper class · 9719b66d
      We're then able to use this same helper class from tests, to avoid
      running into spurious failures caused by long microseconds being
      round-tripped through float seconds.
      
      PiperOrigin-RevId: 316435084
      ibaker committed
    • Clarify usage of default period-in-window offset in tests. · cd54e3e5
      Using the default offset as a magic constant makes tests hard to
      understand. Improve that by looking up the value from the timeline or
      setting it explicitly in multiple places, so the relationship becomes
      clear.
      
      PiperOrigin-RevId: 316421977
      tonihei committed
    • Make ChunkExtractor.read return a boolean instead of an int · 3ec4ec4d
      PiperOrigin-RevId: 316172860
      aquilescanta committed
    • Add configure() in MediaCodecAdapter · 41d4a132
      The correct order of initializing the MediaCodec should be (as per
      documentation
      https://developer.android.com/reference/android/media/MediaCodec#initialization)
      
      "create -> setCallback -> configure -> start"
      
      but the MediaCodecRenderer currently does
      
      "create -> configure -> setCallback -> start"
      
      MediaCodec implementations did not complain about this so far, but the
      wrong sequence does not work with the MediaCodec in block mode (new mode
      in Android R) and also the ShadowMediaCodec won't operate in
      asynchronous mode otherwise. To initialize the MediaCodec in the correct
      order, this commit adds configure() in the MediaCodecAdapter so the
      MediaCodecRenderer can do:
      
      adapter.configure(); // sets the callback and then configures the codec
      adapter.start();     // starts the codec
      
      PiperOrigin-RevId: 316127680
      christosts committed
  3. 12 Jun, 2020 5 commits
  4. 11 Jun, 2020 6 commits