1. 29 6月, 2020 2 次提交
  2. 26 6月, 2020 1 次提交
    • A
      Fix postroll content complete notifications · ce8bb268
      andrewlewis 提交于
      On reaching the end of the content we would notify content complete
      and skip unplayed ads, causing a timeline change. That timeline change
      was handled in a way that caused a further timeline change in the
      2.11.6 release, where we don't yet deduplicate no-op Timeline changes,
      causing repeated timeline changes indefinitely.
      
      At tip-of-tree, the timeline wouldn't refresh repeatedly. However the
      code for sending content complete at the point of transitioning to
      play a preloaded postroll ad was not correct in that it didn't mark
      previous ads as skipped. Instead they happened to be marked as
      skipped later on due to the timeline change handling content
      completion code triggering again.
      
      Fix this by only marking ads as skipped when content completes once,
      to avoid the duplicate timeline change, and moving the skipped ad
      marking so it happens in the same place as notifying content complete.
      
      PiperOrigin-RevId: 318454908
      ce8bb268
  3. 24 6月, 2020 1 次提交
  4. 23 6月, 2020 4 次提交
    • A
      Fix resuming postrolls · 67c99e1d
      andrewlewis 提交于
      Postrolls would be skipped because the period duration wasn't know at
      the moment of resuming playback after backgrounding, so the position
      wouldn't be resolved to resume the postroll ad.
      
      We have the period duration stored in the AdPlaybackState, so we can
      use that directly.
      
      Issue: #7518
      PiperOrigin-RevId: 317830418
      67c99e1d
    • A
      Fix handling of postrolls preloading · df10fdf7
      andrewlewis 提交于
      The IMA SDK now preloads postrolls which is great as we no longer need
      to rely on detecting buffering at the end of the stream to trigger
      playing postrolls.
      
      Add in the required logic to detect the period transition to playing
      the postroll.
      
      Issue: #7518
      PiperOrigin-RevId: 317610682
      df10fdf7
    • A
      Fix incorrect rounding of ad cue points · 0ffe7470
      andrewlewis 提交于
      We currently get float ad cue points from IMA, but store these as
      longs in microseconds. The cast from double to long would take the
      floor of the value, which could lead to stored ad cue points being
      off-by-one. Use Math.round to avoid this.
      
      ImaAdsLoader also has code to map a double AdPodInfo position (which
      should match a cue point) onto the corresponding ad group index by
      searching the long ad cue points. Match the calculation used where we
      map float cue points, including narrowing the position to a float
      first to avoid regressions if IMA SDK behavior changes to represent
      positions in more than float precision later, and also remove the
      requirement that the ad positions match exactly as a defensive
      measure.
      
      PiperOrigin-RevId: 317607017
      0ffe7470
    • O
      Bump version to 2.11.6 · f39a65cb
      olly 提交于
      PiperOrigin-RevId: 316949571
      f39a65cb
  5. 18 6月, 2020 14 次提交
    • O
      Fix release notes · 99c03052
      Oliver Woodman 提交于
      99c03052
    • A
      Workaround unexpected discard of preloaded ad · 49951d4f
      andrewlewis 提交于
      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
      49951d4f
    • A
      Remove some ad playback state change requirements · fc76dbfa
      andrewlewis 提交于
      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
      fc76dbfa
    • A
      Move IMA SDK callbacks into inner class · 5fd287b3
      andrewlewis 提交于
      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
      5fd287b3
    • O
      Add MIME types for which every sample is known to be a sync sample. · 6e1c1973
      olly 提交于
      - 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
      6e1c1973
    • I
      Pull IMA cuePoints -> adGroupTimesUs logic into a helper class · a0e90ce1
      ibaker 提交于
      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
      a0e90ce1
    • A
      Add AdPlaybackState toString · 1ce04000
      andrewlewis 提交于
      This is useful for debugging both in tests and via logging.
      
      PiperOrigin-RevId: 316102968
      1ce04000
    • A
      Handle errors in all VideoAdPlayer callbacks · f1197d8a
      andrewlewis 提交于
      Some but not all VideoAdPlayer callbacks from the IMA SDK included
      defensive handling of unexpected cases. Add the remaining ones.
      
      Issue: #7492
      PiperOrigin-RevId: 316082651
      f1197d8a
    • A
      Fix catch type in ImaAdsLoader defensive checks · 8ab3fab4
      andrewlewis 提交于
      PiperOrigin-RevId: 316079131
      8ab3fab4
    • A
      Allow skipping the ad before the start position · e261b8d0
      andrewlewis 提交于
      PiperOrigin-RevId: 315867160
      e261b8d0
    • O
      Prevent shutter closing for within-window seeks to unprepared periods · e5ec8e6b
      olly 提交于
      Issue: #5507
      PiperOrigin-RevId: 315512207
      e5ec8e6b
    • A
      Separate ads rendering and AdsManager init · 80f4197e
      andrewlewis 提交于
      In a later change it will be necessary to be able to destroy the ads
      manager if all ads are skipped while creating ads rendering settings.
      This change prepares for doing that by not having the ads manager
      passed into the method (so the caller can null or initialize it).
      
      PiperOrigin-RevId: 315488830
      80f4197e
    • A
      Add tests for resuming ad playbacks · 5d74fced
      andrewlewis 提交于
      This is in preparation for refactoring the logic to support not
      playing an ad before the resume position (optionally).
      
      PiperOrigin-RevId: 315431483
      5d74fced
    • A
      Improve ImaAdsLoaderTest ad duration handling · 28c5fa66
      andrewlewis 提交于
      Previously the fake ads loader listener would always pass the same ad
      durations to the fake player, but actually the known ad durations can
      change during playback.
      
      Make the fake behavior more realistic by only exposing durations for
      ads that have loaded.
      
      PiperOrigin-RevId: 314956223
      28c5fa66
  6. 09 6月, 2020 1 次提交
  7. 05 6月, 2020 4 次提交
  8. 04 6月, 2020 1 次提交
  9. 03 6月, 2020 3 次提交
  10. 02 6月, 2020 6 次提交
  11. 01 6月, 2020 1 次提交
  12. 30 5月, 2020 2 次提交