Skip to content

r2.15.0

Compare
Choose a tag to compare
@christosts christosts released this 11 Aug 14:23
· 7028 commits to release-v2 since this release
02f7aaf
  • Core Library:
    • Add MediaCodecAdapter.needsReconfiguration method.
    • Add getSeekBackIncrement, seekBack, getSeekForwardIncrement, seekForward, getMaxSeekToPreviousPosition, seekToPrevious and seekToNext methods to Player.
    • Rename Player methods:
      • hasPrevious to hasPreviousWindow.
      • previous to seekToPreviousWindow.
      • hasNext to hasNextWindow.
      • next to seekToNextWindow.
    • Rename Player commands:
      • COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM to COMMAND_SEEK_IN_CURRENT_WINDOW.
      • COMMAND_SEEK_TO_NEXT_MEDIA_ITEM to COMMAND_SEEK_TO_NEXT_WINDOW.
      • COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM to COMMAND_SEEK_TO_PREVIOUS_WINDOW.
      • COMMAND_SEEK_TO_MEDIA_ITEM to COMMAND_SEEK_TO_WINDOW.
      • COMMAND_GET_MEDIA_ITEMS to COMMAND_GET_TIMELINE.
    • Rename Player.EventFlags IntDef to Player.Event.
    • Make Player depend on the new PlaybackException class instead of ExoPlaybackException:
      • Player.getPlayerError now returns a PlaybackException.
      • Player.Listener.onPlayerError now receives a PlaybackException.
      • Add a new listener method Player.Listener.onPlayerErrorChanged, which is equivalent to onPlayerError except that it is also called when the player error becomes null.
      • Player implementations like ExoPlayer may use PlaybackException subclasses (like ExoPlaybackException), so users can downcast the PlaybackException instance to obtain implementation-specific fields (like ExoPlaybackException.rendererIndex).
    • PlaybackException introduces an errorCode which identifies the cause of the failure in order to simplify error handling (#1611).
    • Add a DefaultMediaDescriptionAdapter for the PlayerNotificationManager, that makes use of the Player MediaMetadata to populate the notification fields.
    • Add @FallbackType to LoadErrorHandlingPolicy to support customization of the exclusion duration for locations and tracks.
    • Change interface of LoadErrorHandlingPolicy to support configuring the behavior of track and location fallback. Location fallback is currently only supported for DASH manifests with multiple base URLs.
    • Restrict use of AudioTrack.isDirectPlaybackSupported to TVs, to avoid listing audio offload encodings as supported for passthrough mode on mobile devices (#9239).
  • Extractors:
    • Add support for DTS-UHD in MP4 (#9163).
  • Text:
    • TTML: Inherit the rubyPosition value from a containing <span ruby="container"> element.
    • WebVTT: Add support for CSS font-size property (#8964).
  • Ad playback:
    • Support changing ad break positions in the player logic (#5067).
    • Support resuming content with an offset after an ad group.
  • UI:
    • Add setUseRewindAction and setUseFastForwardAction to PlayerNotificationManager, and setUseFastForwardActionInCompactView and setUseRewindActionInCompactView to show the actions in compact view mode.
    • Remove rewind_increment and fastforward_increment attributes from PlayerControlView and StyledPlayerControlView. These increments can be customized by configuring the Player (see setSeekBackIncrementMs and setSeekForwardIncrementMs in SimpleExoPlayer.Builder), or by using a ForwardingPlayer that overrides getSeekBackIncrement, seekBack, getSeekForwardIncrement and seekForward. The rewind and fast forward buttons can be disabled by using a ForwardingPlayer that removes COMMAND_SEEK_BACK and COMMAND_SEEK_FORWARD from the available commands.
    • Update DefaultControlDispatcher getRewindIncrementMs and getFastForwardIncrementMs to take the player as parameter.
  • DASH:
    • Add support for multiple base URLs and DVB attributes in the manifest. Apps that are using DefaultLoadErrorHandlingPolicy with such manifests have base URL fallback automatically enabled (#771, #7654).
  • HLS:
    • Fix issue that could cause some playbacks to be stuck buffering (#8850, #9153).
    • Report audio track type in AnalyticsListener.onDownstreamFormatChanged() for audio-only playlists, so that the PlaybackStatsListener can derive audio format-related information (#9175).
  • RTSP:
    • Use standard RTSP header names (#9182).
    • Handle an extra semicolon in SDP fmtp attribute (#9247).
    • Fix handling of special characters in the RTSP session ID (#9254).
  • SmoothStreaming:
    • Propagate StreamIndex element Name attribute value as Format label (#9252).
  • Cronet extension:
    • Add CronetDataSource.Factory.setRequestPriority to allow setting the priority of requests made by CronetDataSource instances.
  • OkHttp extension:
    • Switch to OkHttp 4.9.1. This increases the extension's minimum SDK version requirement from 16 to 21.
  • Remove deprecated symbols:
    • Remove CastPlayer specific playlist manipulation methods. Use setMediaItems, addMediaItems, removeMediaItem and moveMediaItem instead.
    • Remove Format.create methods. Use Format.Builder instead.
    • Remove MediaSource.getTag. Use MediaSource.getMediaItem and MediaItem.PlaybackProperties.tag instead.
    • Remove PlaybackPreparer. UI components that previously had setPlaybackPreparer methods will now call Player.prepare by default. If this behavior is sufficient, use of PlaybackPreparer can be removed from application code without replacement. For custom preparation logic, use a ForwardingPlayer that implements custom preparation logic in prepare.
    • Remove Player.Listener.onTimelineChanged(Timeline, Object, int). Use Player.Listener.onTimelineChanged(Timeline, int) instead. The manifest can be accessed using Player.getCurrentManifest.
    • Remove Player.getCurrentTag. Use Player.getCurrentMediaItem and MediaItem.PlaybackProperties.tag instead.
    • Remove Player.getPlaybackError. Use Player.getPlayerError instead.
    • Remove PlayerNotificationManager constructors and createWith methods. Use PlayerNotificationManager.Builder instead.
    • Remove PlayerNotificationManager.setNotificationListener. Use PlayerNotificationManager.Builder.setNotificationListener instead.
    • Remove PlayerNotificationManager setUseNavigationActions and setUseNavigationActionsInCompactView. Use setUseNextAction, setUsePreviousAction, setUseNextActionInCompactView and setUsePreviousActionInCompactView instead.
    • Remove setRewindIncrementMs and setFastForwardIncrementMs from UI components. These increments can be customized by configuring the Player (see setSeekBackIncrementMs and setSeekForwardIncrementMs in SimpleExoPlayer.Builder), or by using a ForwardingPlayer that overrides getSeekBackIncrement, seekBack, getSeekForwardIncrement and seekForward. The rewind and fast forward buttons can be disabled by using a ForwardingPlayer that removes COMMAND_SEEK_BACK and COMMAND_SEEK_FORWARD from the available commands.
    • Remove Timeline.getWindow(int, Window, boolean). Use Timeline.getWindow(int, Window) instead, which will always set tags.