1. 30 Jun, 2021 23 commits
  2. 22 Jun, 2021 1 commit
  3. 21 Jun, 2021 16 commits
    • HLS: Fix issue where a live event doesn't transition to STATE_ENDED · c7b3fa36
      The problem occurs when the primary media playlist URL switches
      from one whose latest snapshot has not yet got the ended tag, to
      one whose latest snapshot already has the ended tag. In this case:
      
      - We trigger a redundant load of the ended playlist.
      - When the redundant load completes,
        MediaPlaylistBundle.processLoadedPlaylist detects that the
        playlist is unchanged from the one it already has, and so
        doesn't call onPlaylistUpdated.
      - PrimaryPlaylistListener.onPrimaryPlaylistRefreshed is never
        called with the new primary. Hence the externally visible primary
        is still the one that hasn't ended. HlsMediaSource therefore thinks
        the event hasn't ended, which in turn prevents the player from
        transitioning to the ended state.
      
      This commit detects when the new primary already has the ended tag.
      In this case, we call onPrimaryPlaylistRefreshed directly and remove
      the unnecessary playlist load.
      
      Issue: #9067
      #minor-release
      PiperOrigin-RevId: 380680532
      olly committed
    • Fix DefaultTimeBar glitches · b1dda6a0
      The glitches were introduced in:
      https://github.com/google/ExoPlayer/commit/6c31e34528
      
      The problem is that Listener.onEvents is called in a later looper iteration
      than the listener methods that were previously used. This created a gap on
      the main thread between the UI component dispatching a seek operation to the
      player, and onEvents being called to update the progress bar's position.
      
      At the start of this gap the progress bar is rendering the new position,
      but its position member variable is still set to the old position. If the
      progress bar is re-drawn by another message on the main thread within the
      gap, it will briefly show the old position until onEvents is called.
      
      There are multiple possible fixes to this, and the best one is probably to
      modify ListenerSet to remove the gap. That's high risk though, so for now we
      fix the flicker by always updating the progress immediately after the seek
      is dispatched, in addition to when onEvents is called.
      
      Issue: #9049
      #minor-release
      PiperOrigin-RevId: 380678388
      olly committed
    • Specify a root when inflating child views · 3d3ac623
      #minor-release
      
      PiperOrigin-RevId: 380655806
      olly committed
    • Workaround for focus issues on API levels less than 26 · 6f686be7
      Issue: #9061
      PiperOrigin-RevId: 380640601
      olly committed
    • Remove deprecated ParserException constructor · 81c542b6
      And replace it with factory method which includes more
      context for error code assignment.
      
      PiperOrigin-RevId: 380624625
      aquilescanta committed
    • Parse BaseURL element including DVB attributes in DASH manifest · f609fecf
      This change parses the entire BaseURL element including DVB extension attributes, stores it in an instance of new BaseUrl class and puts it in a list of base URLs of the resulting Representation. The base url handling itself is still the same, which means that only the first base url is taken into account, just as before this change.
      
      PiperOrigin-RevId: 380609495
      bachinger committed
    • Re-word the DataSourceContractTest javadoc · 66308216
      This softens the language around suppressing individual test methods.
      There are some legitimate cases where this is needed, e.g.
      ByteArrayDataSourceContractTest has to suppress all the tests related
      to non-existent resources because it's not possible to simulate that
      case.
      
      #minor-release
      
      PiperOrigin-RevId: 380570017
      ibaker committed
    • Use a HashMap like behaviour in parsing SDP. · 46bc49a4
      Some server will wrongly insert duplicated attributes. We used to treat this as
      a unrecoverable error, but it is better to treat the duplicated attributes in
      an "over-writable" fashion like HashMaps.
      
      Issue: #9080,
      Issue: #9014
      PiperOrigin-RevId: 380547079
      claincly committed
    • Fix 2 ErrorProneStyle findings: · 602c5438
      * Constructors and methods with the same name should appear sequentially with no other code in between, even when modifiers such as static or private differ between the methods. Please re-order or re-name methods.
        (see http://go/bugpattern/UngroupedOverloads) (2 times)
      
      This CL looks good? Just LGTM and Approve it!
      This CL doesn’t look good? This is what you can do:
      * Suggest a fix on the CL (go/how-to-suggest-fix).
      * Revert this CL, by replying "REVERT: <provide reason>"
      * File a bug under go/error-prone-bug for category ErrorProneStyle if the change looks generally problematic.
      * Revert this CL and not get a CL that cleans up these paths in the future by
      replying "BLOCKLIST: <provide reason>". This is not reversible! We recommend to
      opt out the respective paths in your CL Robot configuration instead:
      go/clrobot-opt-out.
      
      This CL was generated by CL Robot - a tool that cleans up code findings
      (go/clrobot). The affected code paths have been enabled for CL Robot in //depot/google3/java/com/google/android/libraries/media/METADATA which is reachable following include_presubmits from //depot/google3/third_party/java_src/android_libs/media/METADATA.
      Anything wrong with the signup? File a bug at go/clrobot-bug.
      
      #codehealth
      
      PiperOrigin-RevId: 380544425
      olly committed
    • Rollback of https://github.com/google/ExoPlayer/commit/5e3022c48fbc345af751223271c7852beb48c5c4 · 270850f4
      *** Original commit ***
      
      Target demo apps to API level 30
      
      ***
      
      PiperOrigin-RevId: 380542402
      olly committed
    • Simplify FileDataSourceContractTest · f8320287
      #minor-release
      
      PiperOrigin-RevId: 380531272
      ibaker committed
    • Add RTP streaming test to playback test. · b05e8f50
      The test prepare_withSupportedTrack_playsTrackUntilEnded
      
      - sets up the supported AAC track with the RTSP server;
      - uses RtpPacketTransmitter to send RTP packets from the server to the client;
      - runs the player until the playback has ended, and
      - asserts on the data RTSP has received and queued to the SampleQueue.
      
      In the test, it was necessary to create a FakeUdpDataSourceRtpDataChannel. The
      reason we cannot reuse TransferRtpDataChannel is, we rely on BlockingQueue.poll
      timeout to identify the end of an RTSP stream, but the time out mechanism is
      unstable in Robolectric. For example, when the timeout is set to 8,000 ms, the
      actual timeout occasionally happens after 2,000,000 ms (in FakeClock).
      
      PiperOrigin-RevId: 380528710
      claincly committed
    • Allow repeated DRM provisioning in DefaultDrmSessionManager · 607fa8bf
      Also change to explicitly track the provisioning session, which makes
      the code easier to reason about than always using the zero'th element
      of the list.
      
      PiperOrigin-RevId: 380181453
      ibaker committed
    • Add a playlist title field to MediaMetadata. · 77550708
      Allows for compatibility with METADATA_KEY_COMPILATION.
      
      PiperOrigin-RevId: 380179505
      samrobinson committed
    • Clean up irrelevant TODO items. · b8c315f4
      PiperOrigin-RevId: 380176846
      claincly committed
    • Make onPlayerError take a PlaybackException · fc1d3dd1
      PiperOrigin-RevId: 380174672
      aquilescanta committed