1. 12 Feb, 2021 4 commits
    • Fix available end time calculation for multi-period DASH live streams · d7009901
      The available end time was accidentally substracted by the start time
      of the last period.
      
      To avoid similar time reference confusion in the future, also renaming
      many variables and methods to clearly reflect the time reference point.
      And to avoid constant conversion, the processManifest method also
      attempts to converge to time relative to the start of the window as
      quickly as possible.
      
      Issue: #8537
      PiperOrigin-RevId: 357001624
      tonihei committed
    • Check if keepalive is enabled before releasing sessions in DDSM.release · 6b5b3d81
      If keepalive is disabled the existing code over-eagerly releases
      DrmSession instances. This is arguably OK since a (Default)DrmSession
      should be released before its (Default)Manager is released
      (since the underlying MediaDrm instance might be released when the
      manager is released). And if all sessions are released before the
      manager is released then `sessions` is empty, so the loop is a no-op.
      
      Issue: #8576
      #minor-release
      PiperOrigin-RevId: 356955308
      ibaker committed
    • Propagate DRM config when creating ad media sources · de359cd6
      The `DrmConfiguration.sessionForClearTypes` property is often used
      to ensure a secure decoder is used for clear ads played in encrypted
      content. This is because some devices show black frames when switching
      decoders.
      
      Before this change the DRM config isn't propagated down when
      constructing the ad media source, meaning
      `DrmSessionManager.DRM_UNSUPPORTED` is always used, which will
      cause playback to switch from secure to clear decoder when transitioning
      to an ad break (ignoring the MediaItem `sessionForClearTypes` option.
      
      Issue: #8568
      
      #minor-release
      
      PiperOrigin-RevId: 356951124
      ibaker committed
    • Move MediaFormatUtil into common · f8505204
      Also move out of the mediacodec package into the util package.
      
      PiperOrigin-RevId: 356949401
      aquilescanta committed
  2. 11 Feb, 2021 7 commits
  3. 09 Feb, 2021 14 commits
  4. 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
  5. 03 Feb, 2021 5 commits