1. 09 Feb, 2021 5 commits
    • Wire CodecException.isRecoverable to ExoPlaybackException · 01b6061b
      PiperOrigin-RevId: 355896218
      olly committed
    • Ensure BandwidthProfileDataSource loading is fully deterministic · 91c2f891
      We currently block the loading thread until the calculated load
      time has past and then unblock again by a message sent from the
      playback thread. However, because the loading thread itself is not
      using a Looper and runs freely, we don't control when the short
      calculations on the loader thread that determine how long we have
      to wait are happening, and we also don't control how long it takes
      to start and stop this thread.
      
      To solve these problems and to make the playback deterministic we
      can
       1. Send a message on the playback thread to block until the loader
          thread has started.
       2. Block the playback thread whenever a loading thread is doing its
          short calculation of wait times. The playback thread knows when it
          can continue because loading either enter a new waiting state for
          a simulated load time or loading is finished completely.
       3. Also wait on the playback thread until the loader has shut down.
          As this is waiting for a message on the playback thread, we can
          achieve this by sending messages to ourselves at the current time
          until the loader is shut down.
      All 3 steps together ensure that the loading thread interaction is
      compeltely deterministic when simulating bandwidth profiles with the
      BandwidthProfileDataSource. As we need to notify the source before and
      after the load started/finished, we also need a small wrapper for the
      chunk source when running the playback.
      
      PiperOrigin-RevId: 355810408
      tonihei committed
    • Consistently throw the original exception if recovery fails · 438bcada
      PiperOrigin-RevId: 355664280
      olly committed
    • #ExoPlayerMigration Ensure RawResourceDataSource class is obfuscated · a245fbdc
      PiperOrigin-RevId: 355659628
      olly committed
    • Clarify AudioFocusManager by renaming some methods/field · 91d3f47e
      The current naming had cause confusinon in b/179369346
      and #8545.
      
      PiperOrigin-RevId: 355656404
      krocard committed
  2. 04 Feb, 2021 10 commits
    • Avoid skipping the first decoder output buffers after speed change · da52de66
      #minor-release
      
      PiperOrigin-RevId: 355652144
      kimvde committed
    • More clearly define the semantics of error recovery · 5107fea5
      - When throwing a recoverable error from a renderer, it's important to understand
        exactly how the player will attempt recovery. Clarify the documentation to
        make this explicit.
      - Rename some methods/constants to make it clear that error recovery is specific
        to renderer errors. The current recovery mechanism only makes sense for
        renderer errors. Making the naming renderer specific avoids reader doubt that
        the implementation doesn't appear to be generic enough for other types of
        errors.
      
      PiperOrigin-RevId: 355650945
      olly committed
    • Finalize release notes for 2.13.0 · d08cacd9
      PiperOrigin-RevId: 355621265
      olly committed
    • Add Bundleable interface · d72d2547
      It's for classes to clearly denote they support bundling and it gives
      us a good place to document the best practice to implement fromBundle.
      
      PiperOrigin-RevId: 355609942
      gyumin committed
    • Fall back to AVC/HEVC for Dolby Vision levels 10-13 · 35d34af2
      Before, the level was set to null in this case.
      MediaCodecUtil.getCodecProfileAndLevel() was therefore returning null
      and the fallback to AVC/HEVC was not enabled in MediaCodecVideoRenderer.
      
      Issue:#8530
      #minor-release
      PiperOrigin-RevId: 355574499
      kimvde committed
    • Upgrade some dependency versions · e345e0a5
      PiperOrigin-RevId: 355508621
      olly committed
    • Suppress SwitchIntDef warning where it makes sense · 2a22b347
      In both cases it's deliberate that all excluded constants should use
      the default branch. Furthermore, there are quite a lot of excluded
      constants missing, so it's probably better to suppress the warning
      than to include them all.
      
      #minor-release
      
      PiperOrigin-RevId: 355426749
      olly committed
    • Fix gradle conflict resolution for Cronet tests · e98f5f34
      This resolves the following constraint resolution issue when running our release script:
      
      > Cannot find a version of 'org.chromium.net:cronet-api' that satisfies the version constraints:
          Dependency path 'com.google.android.exoplayer:extension-cronet:unspecified' --> 'com.google.android.gms:play-services-cronet:17.0.0' --> 'org.chromium.net:cronet-api:72.3626.96'
          Constraint path 'com.google.android.exoplayer:extension-cronet:unspecified' --> 'org.chromium.net:cronet-api:{strictly 72.3626.96}' because of the following reason: debugRuntimeClasspath uses version 72.3626.96
          Dependency path 'com.google.android.exoplayer:extension-cronet:unspecified' --> 'org.chromium.net:cronet-embedded:76.3809.111' --> 'org.chromium.net:cronet-common:76.3809.111' --> 'org.chromium.net:cronet-api:76.3809.111'
      
      #minor-release
      
      PiperOrigin-RevId: 355414968
      olly committed
  3. 03 Feb, 2021 7 commits
  4. 02 Feb, 2021 2 commits
    • Fix ProGuard configuration for 2.13 · b1920f3a
      Note: We only support pro-guard on a best effort basis,
      and developers should use R8 whenever possible.
      
      #minor-release
      
      PiperOrigin-RevId: 355129695
      olly committed
    • Modernize bandwidth profile simulator. · 05fddff8
      Main improvement is to switch away from ExoPlayerTestRunner and to
      split out the waiting component so that the same class can be used
      from Robolectric tests in the future.
      
      The only functional difference is that that BufferLengthLogAction
      is removed completely because the data isn't used downstream and the
      method of collecting this data is a bit arbitrary.
      
      PiperOrigin-RevId: 355117850
      tonihei committed
  5. 01 Feb, 2021 16 commits