1. 05 Oct, 2021 5 commits
    • Rollback of https://github.com/google/ExoPlayer/commit/9788750ddb23b2064dddf99d6e1ea491b2e45cea · 3eda590c
      *** Original commit ***
      
      Simplify GL program handling.
      
      ***
      
      PiperOrigin-RevId: 400970170
      claincly committed
    • Rollback of https://github.com/google/ExoPlayer/commit/912c47ff6f4abc88d33665d27da33ec7997358ef · 80d36516
      *** Original commit ***
      
      Rollback of https://github.com/google/ExoPlayer/commit/8ed6c9fcf5e22ad859023703e479e21b2f578f83
      
      *** Original commit ***
      
      Fix capitalization of language in track selector
      
      Issue: #9452
      
      ***
      
      ***
      
      PiperOrigin-RevId: 400942287
      olly committed
    • Add TracksInfo to the Player API · ac881be2
      TracksInfo is very similar to
      `MappingTrackSelector.MappedTracksInfo` with some
      fields removed to simplify the Player API,
      notably it doesn't expose the renderer concept.
      
      A significant difference is the addition of a `selected` boolean
      field which avoids having a separate `getCurrentTrackSelection`
      API.
      
      This cl is a part of the bigger track selection change,
      splitted for ease of review.
      
      In particular, the MediaSession implementation and UI usage
      have been slitted in child cls.
      
      Find all cls with the tag:
      #player-track-selection
      
      PiperOrigin-RevId: 400937124
      krocard committed
    • Remove inlined, fully qualified class name · 47573d45
      PiperOrigin-RevId: 400742025
      bachinger committed
    • Make asynchronous queueing non-experimental · 7a2c7c32
      This change makes asynchronous queueing non-experimental, it enables the
      feature by default on devices with API level >= 31 (Android 12+) and
      exposes APIs for apps to either fully opt-in or opt-out from the
      feature.
      
      The choice to use or not asynchronous queueing is moved out of
      MediaCodecRenderer to a new MediaCodecAdapter factory, the
      DefaultMediaCodecAdapterFactory. This is because, at the moment,
      if an app passes a custom adapter factory to a MediaCodecRenderer and
      then enables asynchronous queueing on it, the custom
      adapter factory is not used but this is not visible to the user.
      
      The default behavior of DefaultMediaCodecAdapterFactory is to create
      asynchronous MediaCodec adapters for devices with API level >= 31
      (Android 12+), and synchronous MediaCodec adapters on devices with older
      API versions.
      
      DefaultMediaCodecAdapterFactory exposes methods to force enable or force
      disable the use of asynchronous adapters so that applications can enable
      asynchronous queueing on devices with API versions before 31 (but not
      before 23), or fully disable the feature. For applications that build
      MediaCodecRenderers directly, they will need to create a
      DefaultMediaCodecAdapterFactory and pass it to the renderer constructor.
      For applications that rely on the DefaultRenderersFactory, additional
      methods have been added on the DefaultRenderersFactory to control
      enabling/disabling asynchronous queueing.
      
      Issue: #6348
      PiperOrigin-RevId: 400733506
      christosts committed
  2. 04 Oct, 2021 13 commits
  3. 03 Oct, 2021 1 commit
  4. 01 Oct, 2021 5 commits
  5. 30 Sep, 2021 10 commits
  6. 29 Sep, 2021 5 commits
  7. 28 Sep, 2021 1 commit
    • Change how AnalyticsCollector forwards onPlayerReleased · 5ae29821
      Before releasing r2.15.0, we had a regression that crashed
      PlaybackStatsListener. A change in the AnalyticsCollector made
      it to send an additional AnalyticsListener.onEvents() callback after
      calling Player.release() and AnalyticsListener.onEvents() appeared
      to arrive with event times that were not monotonically increasing.
      The AnalyticsListener.onEvents() callback that contained
      AnalyticsListener.EVENT_PLAYER_RELEASED was called with a timestamp that
      was smaller than event times of previously AnalyticsListener.onEvents()
      calls.
      
      A first fix changed the order of events being forwarded to
      AnalyticsListener. Upon calling Player.release(), the AnalyticsCollector
      would call AnalyticsListener.onPlayerReleased() and its associated
      AnalyticsListener.onEvents() on the same stack call. This fix maintained
      that event times are monotonically increasing, but made
      AnalyticsListener.onPlayerReleased() be called earlier.
      
      This change:
      - Further changes AnalyticsCollector to ensure that
        AnalyticsListener.onPlayerReleased() and its related
        AnalyticsListener.onEvents() are the last callbacks to be called,
        and the associated timestamp is bigger than  previously reported
        event times.
      - Adds an instrumentation test to guard against the regression.
      
      PiperOrigin-RevId: 399437724
      christosts committed