Package com.google.android.exoplayer2

## Class ForwardingPlayer

- java.lang.Object
- - com.google.android.exoplayer2.ForwardingPlayer

- All Implemented Interfaces:
    `Player`

      public class ForwardingPlayer
      extends Object
      implements Player

  A `Player` that forwards operations to another `Player`. Applications can use this class to suppress or modify specific operations, by overriding the respective methods.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface com.google.android.exoplayer2.Player

      `Player.Command, Player.Commands, Player.DiscontinuityReason, Player.Event, Player.Events, Player.Listener, Player.MediaItemTransitionReason, Player.PlaybackSuppressionReason, Player.PlayWhenReadyChangeReason, Player.PositionInfo, Player.RepeatMode, Player.State, Player.TimelineChangeReason`

  - ### Field Summary

    - ### Fields inherited from interface com.google.android.exoplayer2.Player

      `COMMAND_ADJUST_DEVICE_VOLUME, COMMAND_CHANGE_MEDIA_ITEMS, COMMAND_GET_AUDIO_ATTRIBUTES, COMMAND_GET_CURRENT_MEDIA_ITEM, COMMAND_GET_DEVICE_VOLUME, COMMAND_GET_MEDIA_ITEMS_METADATA, COMMAND_GET_TEXT, COMMAND_GET_TIMELINE, COMMAND_GET_TRACKS, COMMAND_GET_VOLUME, COMMAND_INVALID, COMMAND_PLAY_PAUSE, COMMAND_PREPARE, COMMAND_SEEK_BACK, COMMAND_SEEK_FORWARD, COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM, COMMAND_SEEK_IN_CURRENT_WINDOW, COMMAND_SEEK_TO_DEFAULT_POSITION, COMMAND_SEEK_TO_MEDIA_ITEM, COMMAND_SEEK_TO_NEXT, COMMAND_SEEK_TO_NEXT_MEDIA_ITEM, COMMAND_SEEK_TO_NEXT_WINDOW, COMMAND_SEEK_TO_PREVIOUS, COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM, COMMAND_SEEK_TO_PREVIOUS_WINDOW, COMMAND_SEEK_TO_WINDOW, COMMAND_SET_DEVICE_VOLUME, COMMAND_SET_MEDIA_ITEM, COMMAND_SET_MEDIA_ITEMS_METADATA, COMMAND_SET_REPEAT_MODE, COMMAND_SET_SHUFFLE_MODE, COMMAND_SET_SPEED_AND_PITCH, COMMAND_SET_TRACK_SELECTION_PARAMETERS, COMMAND_SET_VIDEO_SURFACE, COMMAND_SET_VOLUME, COMMAND_STOP, DISCONTINUITY_REASON_AUTO_TRANSITION, DISCONTINUITY_REASON_INTERNAL, DISCONTINUITY_REASON_REMOVE, DISCONTINUITY_REASON_SEEK, DISCONTINUITY_REASON_SEEK_ADJUSTMENT, DISCONTINUITY_REASON_SKIP, EVENT_AUDIO_ATTRIBUTES_CHANGED, EVENT_AUDIO_SESSION_ID, EVENT_AVAILABLE_COMMANDS_CHANGED, EVENT_CUES, EVENT_DEVICE_INFO_CHANGED, EVENT_DEVICE_VOLUME_CHANGED, EVENT_IS_LOADING_CHANGED, EVENT_IS_PLAYING_CHANGED, EVENT_MAX_SEEK_TO_PREVIOUS_POSITION_CHANGED, EVENT_MEDIA_ITEM_TRANSITION, EVENT_MEDIA_METADATA_CHANGED, EVENT_METADATA, EVENT_PLAY_WHEN_READY_CHANGED, EVENT_PLAYBACK_PARAMETERS_CHANGED, EVENT_PLAYBACK_STATE_CHANGED, EVENT_PLAYBACK_SUPPRESSION_REASON_CHANGED, EVENT_PLAYER_ERROR, EVENT_PLAYLIST_METADATA_CHANGED, EVENT_POSITION_DISCONTINUITY, EVENT_RENDERED_FIRST_FRAME, EVENT_REPEAT_MODE_CHANGED, EVENT_SEEK_BACK_INCREMENT_CHANGED, EVENT_SEEK_FORWARD_INCREMENT_CHANGED, EVENT_SHUFFLE_MODE_ENABLED_CHANGED, EVENT_SKIP_SILENCE_ENABLED_CHANGED, EVENT_SURFACE_SIZE_CHANGED, EVENT_TIMELINE_CHANGED, EVENT_TRACK_SELECTION_PARAMETERS_CHANGED, EVENT_TRACKS_CHANGED, EVENT_VIDEO_SIZE_CHANGED, EVENT_VOLUME_CHANGED, MEDIA_ITEM_TRANSITION_REASON_AUTO, MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED, MEDIA_ITEM_TRANSITION_REASON_REPEAT, MEDIA_ITEM_TRANSITION_REASON_SEEK, PLAY_WHEN_READY_CHANGE_REASON_AUDIO_BECOMING_NOISY, PLAY_WHEN_READY_CHANGE_REASON_AUDIO_FOCUS_LOSS, PLAY_WHEN_READY_CHANGE_REASON_END_OF_MEDIA_ITEM, PLAY_WHEN_READY_CHANGE_REASON_REMOTE, PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST, PLAYBACK_SUPPRESSION_REASON_NONE, PLAYBACK_SUPPRESSION_REASON_TRANSIENT_AUDIO_FOCUS_LOSS, REPEAT_MODE_ALL, REPEAT_MODE_OFF, REPEAT_MODE_ONE, STATE_BUFFERING, STATE_ENDED, STATE_IDLE, STATE_READY, TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED, TIMELINE_CHANGE_REASON_SOURCE_UPDATE`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ForwardingPlayer​(Player player)` | Creates a new instance that forwards all operations to `player`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addListener​(Player.Listener listener)` | Calls `Player.addListener(Listener)` on the delegate.
    `void` | `addMediaItem​(int index, MediaItem mediaItem)` | Calls `Player.addMediaItem(int, MediaItem)` on the delegate.
    `void` | `addMediaItem​(MediaItem mediaItem)` | Calls `Player.addMediaItem(MediaItem)` on the delegate.
    `void` | `addMediaItems​(int index, List<MediaItem> mediaItems)` | Calls `Player.addMediaItems(int, List)` on the delegate.
    `void` | `addMediaItems​(List<MediaItem> mediaItems)` | Calls `Player.addMediaItems(List)` on the delegate.
    `boolean` | `canAdvertiseSession()` | Calls `Player.canAdvertiseSession()` on the delegate and returns the result.
    `void` | `clearMediaItems()` | Calls `Player.clearMediaItems()` on the delegate.
    `void` | `clearVideoSurface()` | Calls `Player.clearVideoSurface()` on the delegate.
    `void` | `clearVideoSurface​(Surface surface)` | Calls `Player.clearVideoSurface(Surface)` on the delegate.
    `void` | `clearVideoSurfaceHolder​(SurfaceHolder surfaceHolder)` | Calls `Player.clearVideoSurfaceHolder(SurfaceHolder)` on the delegate.
    `void` | `clearVideoSurfaceView​(SurfaceView surfaceView)` | Calls `Player.clearVideoSurfaceView(SurfaceView)` on the delegate.
    `void` | `clearVideoTextureView​(TextureView textureView)` | Calls `Player.clearVideoTextureView(TextureView)` on the delegate.
    `void` | `decreaseDeviceVolume()` | Calls `Player.decreaseDeviceVolume()` on the delegate.
    `Looper` | `getApplicationLooper()` | Calls `Player.getApplicationLooper()` on the delegate and returns the result.
    `AudioAttributes` | `getAudioAttributes()` | Calls `Player.getAudioAttributes()` on the delegate and returns the result.
    `Player.Commands` | `getAvailableCommands()` | Calls `Player.getAvailableCommands()` on the delegate and returns the result.
    `int` | `getBufferedPercentage()` | Calls `Player.getBufferedPercentage()` on the delegate and returns the result.
    `long` | `getBufferedPosition()` | Calls `Player.getBufferedPosition()` on the delegate and returns the result.
    `long` | `getContentBufferedPosition()` | Calls `Player.getContentBufferedPosition()` on the delegate and returns the result.
    `long` | `getContentDuration()` | Calls `Player.getContentDuration()` on the delegate and returns the result.
    `long` | `getContentPosition()` | Calls `Player.getContentPosition()` on the delegate and returns the result.
    `int` | `getCurrentAdGroupIndex()` | Calls `Player.getCurrentAdGroupIndex()` on the delegate and returns the result.
    `int` | `getCurrentAdIndexInAdGroup()` | Calls `Player.getCurrentAdIndexInAdGroup()` on the delegate and returns the result.
    `CueGroup` | `getCurrentCues()` | Calls `Player.getCurrentCues()` on the delegate and returns the result.
    `long` | `getCurrentLiveOffset()` | Calls `Player.getCurrentLiveOffset()` on the delegate and returns the result.
    `Object` | `getCurrentManifest()` | Calls `Player.getCurrentManifest()` on the delegate and returns the result.
    `MediaItem` | `getCurrentMediaItem()` | Calls `Player.getCurrentMediaItem()` on the delegate and returns the result.
    `int` | `getCurrentMediaItemIndex()` | Calls `Player.getCurrentMediaItemIndex()` on the delegate and returns the result.
    `int` | `getCurrentPeriodIndex()` | Calls `Player.getCurrentPeriodIndex()` on the delegate and returns the result.
    `long` | `getCurrentPosition()` | Calls `Player.getCurrentPosition()` on the delegate and returns the result.
    `Timeline` | `getCurrentTimeline()` | Calls `Player.getCurrentTimeline()` on the delegate and returns the result.
    `Tracks` | `getCurrentTracks()` | Calls `Player.getCurrentTracks()` on the delegate and returns the result.
    `int` | `getCurrentWindowIndex()` | Deprecated. Use `getCurrentMediaItemIndex()` instead.
    `DeviceInfo` | `getDeviceInfo()` | Calls `Player.getDeviceInfo()` on the delegate and returns the result.
    `int` | `getDeviceVolume()` | Calls `Player.getDeviceVolume()` on the delegate and returns the result.
    `long` | `getDuration()` | Calls `Player.getDuration()` on the delegate and returns the result.
    `long` | `getMaxSeekToPreviousPosition()` | Calls `Player.getMaxSeekToPreviousPosition()` on the delegate and returns the result.
    `MediaItem` | `getMediaItemAt​(int index)` | Calls `Player.getMediaItemAt(int)` on the delegate and returns the result.
    `int` | `getMediaItemCount()` | Calls `Player.getMediaItemCount()` on the delegate and returns the result.
    `MediaMetadata` | `getMediaMetadata()` | Calls `Player.getMediaMetadata()` on the delegate and returns the result.
    `int` | `getNextMediaItemIndex()` | Calls `Player.getNextMediaItemIndex()` on the delegate and returns the result.
    `int` | `getNextWindowIndex()` | Deprecated. Use `getNextMediaItemIndex()` instead.
    `PlaybackParameters` | `getPlaybackParameters()` | Calls `Player.getPlaybackParameters()` on the delegate and returns the result.
    `int` | `getPlaybackState()` | Calls `Player.getPlaybackState()` on the delegate and returns the result.
    `int` | `getPlaybackSuppressionReason()` | Calls `Player.getPlaybackSuppressionReason()` on the delegate and returns the result.
    `PlaybackException` | `getPlayerError()` | Calls `Player.getPlayerError()` on the delegate and returns the result.
    `MediaMetadata` | `getPlaylistMetadata()` | Calls `Player.getPlaylistMetadata()` on the delegate and returns the result.
    `boolean` | `getPlayWhenReady()` | Calls `Player.getPlayWhenReady()` on the delegate and returns the result.
    `int` | `getPreviousMediaItemIndex()` | Calls `Player.getPreviousMediaItemIndex()` on the delegate and returns the result.
    `int` | `getPreviousWindowIndex()` | Deprecated. Use `getPreviousMediaItemIndex()` instead.
    `int` | `getRepeatMode()` | Calls `Player.getRepeatMode()` on the delegate and returns the result.
    `long` | `getSeekBackIncrement()` | Calls `Player.getSeekBackIncrement()` on the delegate and returns the result.
    `long` | `getSeekForwardIncrement()` | Calls `Player.getSeekForwardIncrement()` on the delegate and returns the result.
    `boolean` | `getShuffleModeEnabled()` | Calls `Player.getShuffleModeEnabled()` on the delegate and returns the result.
    `Size` | `getSurfaceSize()` | Calls `Player.getSurfaceSize()` on the delegate and returns the result.
    `long` | `getTotalBufferedDuration()` | Calls `Player.getTotalBufferedDuration()` on the delegate and returns the result.
    `TrackSelectionParameters` | `getTrackSelectionParameters()` | Calls `Player.getTrackSelectionParameters()` on the delegate and returns the result.
    `VideoSize` | `getVideoSize()` | Calls `Player.getVideoSize()` on the delegate and returns the result.
    `float` | `getVolume()` | Calls `Player.getVolume()` on the delegate and returns the result.
    `Player` | `getWrappedPlayer()` | Returns the `Player` to which operations are forwarded.
    `boolean` | `hasNext()` | Deprecated. Use `hasNextMediaItem()` instead.
    `boolean` | `hasNextMediaItem()` | Calls `Player.hasNextMediaItem()` on the delegate and returns the result.
    `boolean` | `hasNextWindow()` | Deprecated. Use `hasNextMediaItem()` instead.
    `boolean` | `hasPrevious()` | Deprecated. Use `hasPreviousMediaItem()` instead.
    `boolean` | `hasPreviousMediaItem()` | Calls `Player.hasPreviousMediaItem()` on the delegate and returns the result.
    `boolean` | `hasPreviousWindow()` | Deprecated. Use `hasPreviousMediaItem()` instead.
    `void` | `increaseDeviceVolume()` | Calls `Player.increaseDeviceVolume()` on the delegate.
    `boolean` | `isCommandAvailable​(@com.google.android.exoplayer2.Player.Command int command)` | Calls `Player.isCommandAvailable(int)` on the delegate and returns the result.
    `boolean` | `isCurrentMediaItemDynamic()` | Calls `Player.isCurrentMediaItemDynamic()` on the delegate and returns the result.
    `boolean` | `isCurrentMediaItemLive()` | Calls `Player.isCurrentMediaItemLive()` on the delegate and returns the result.
    `boolean` | `isCurrentMediaItemSeekable()` | Calls `Player.isCurrentMediaItemSeekable()` on the delegate and returns the result.
    `boolean` | `isCurrentWindowDynamic()` | Deprecated. Use `isCurrentMediaItemDynamic()` instead.
    `boolean` | `isCurrentWindowLive()` | Deprecated. Use `isCurrentMediaItemLive()` instead.
    `boolean` | `isCurrentWindowSeekable()` | Deprecated. Use `isCurrentMediaItemSeekable()` instead.
    `boolean` | `isDeviceMuted()` | Calls `Player.isDeviceMuted()` on the delegate and returns the result.
    `boolean` | `isLoading()` | Calls `Player.isLoading()` on the delegate and returns the result.
    `boolean` | `isPlaying()` | Calls `Player.isPlaying()` on the delegate and returns the result.
    `boolean` | `isPlayingAd()` | Calls `Player.isPlayingAd()` on the delegate and returns the result.
    `void` | `moveMediaItem​(int currentIndex, int newIndex)` | Calls `Player.moveMediaItem(int, int)` on the delegate.
    `void` | `moveMediaItems​(int fromIndex, int toIndex, int newIndex)` | Calls `Player.moveMediaItems(int, int, int)` on the delegate.
    `void` | `next()` | Deprecated. Use `seekToNextMediaItem()` instead.
    `void` | `pause()` | Calls `Player.pause()` on the delegate.
    `void` | `play()` | Calls `Player.play()` on the delegate.
    `void` | `prepare()` | Calls `Player.prepare()` on the delegate.
    `void` | `previous()` | Deprecated. Use `seekToPreviousMediaItem()` instead.
    `void` | `release()` | Calls `Player.release()` on the delegate.
    `void` | `removeListener​(Player.Listener listener)` | Calls `Player.removeListener(Listener)` on the delegate.
    `void` | `removeMediaItem​(int index)` | Calls `Player.removeMediaItem(int)` on the delegate.
    `void` | `removeMediaItems​(int fromIndex, int toIndex)` | Calls `Player.removeMediaItems(int, int)` on the delegate.
    `void` | `seekBack()` | Calls `Player.seekBack()` on the delegate.
    `void` | `seekForward()` | Calls `Player.seekForward()` on the delegate.
    `void` | `seekTo​(int mediaItemIndex, long positionMs)` | Calls `Player.seekTo(int, long)` on the delegate.
    `void` | `seekTo​(long positionMs)` | Calls `Player.seekTo(long)` on the delegate.
    `void` | `seekToDefaultPosition()` | Calls `Player.seekToDefaultPosition()` on the delegate.
    `void` | `seekToDefaultPosition​(int mediaItemIndex)` | Calls `Player.seekToDefaultPosition(int)` on the delegate.
    `void` | `seekToNext()` | Calls `Player.seekToNext()` on the delegate.
    `void` | `seekToNextMediaItem()` | Calls `Player.seekToNextMediaItem()` on the delegate.
    `void` | `seekToNextWindow()` | Deprecated. Use `seekToNextMediaItem()` instead.
    `void` | `seekToPrevious()` | Calls `Player.seekToPrevious()` on the delegate.
    `void` | `seekToPreviousMediaItem()` | Calls `Player.seekToPreviousMediaItem()` on the delegate.
    `void` | `seekToPreviousWindow()` | Deprecated. Use `seekToPreviousMediaItem()` instead.
    `void` | `setDeviceMuted​(boolean muted)` | Calls `Player.setDeviceMuted(boolean)` on the delegate.
    `void` | `setDeviceVolume​(int volume)` | Calls `Player.setDeviceVolume(int)` on the delegate.
    `void` | `setMediaItem​(MediaItem mediaItem)` | Calls `Player.setMediaItem(MediaItem)` on the delegate.
    `void` | `setMediaItem​(MediaItem mediaItem, boolean resetPosition)` | Calls `Player.setMediaItem(MediaItem, boolean)` on the delegate.
    `void` | `setMediaItem​(MediaItem mediaItem, long startPositionMs)` | Calls `Player.setMediaItem(MediaItem, long)` on the delegate.
    `void` | `setMediaItems​(List<MediaItem> mediaItems)` | Calls `Player.setMediaItems(List)` on the delegate.
    `void` | `setMediaItems​(List<MediaItem> mediaItems, boolean resetPosition)` | Calls `Player.setMediaItems(List, boolean)` ()} on the delegate.
    `void` | `setMediaItems​(List<MediaItem> mediaItems, int startIndex, long startPositionMs)` | Calls `Player.setMediaItems(List, int, long)` on the delegate.
    `void` | `setPlaybackParameters​(PlaybackParameters playbackParameters)` | Calls `Player.setPlaybackParameters(PlaybackParameters)` on the delegate.
    `void` | `setPlaybackSpeed​(float speed)` | Calls `Player.setPlaybackSpeed(float)` on the delegate.
    `void` | `setPlaylistMetadata​(MediaMetadata mediaMetadata)` | Calls `Player.setPlaylistMetadata(MediaMetadata)` on the delegate.
    `void` | `setPlayWhenReady​(boolean playWhenReady)` | Calls `Player.setPlayWhenReady(boolean)` on the delegate.
    `void` | `setRepeatMode​(@com.google.android.exoplayer2.Player.RepeatMode int repeatMode)` | Calls `Player.setRepeatMode(int)` on the delegate.
    `void` | `setShuffleModeEnabled​(boolean shuffleModeEnabled)` | Calls `Player.setShuffleModeEnabled(boolean)` on the delegate.
    `void` | `setTrackSelectionParameters​(TrackSelectionParameters parameters)` | Calls `Player.setTrackSelectionParameters(TrackSelectionParameters)` on the delegate.
    `void` | `setVideoSurface​(Surface surface)` | Calls `Player.setVideoSurface(Surface)` on the delegate.
    `void` | `setVideoSurfaceHolder​(SurfaceHolder surfaceHolder)` | Calls `Player.setVideoSurfaceHolder(SurfaceHolder)` on the delegate.
    `void` | `setVideoSurfaceView​(SurfaceView surfaceView)` | Calls `Player.setVideoSurfaceView(SurfaceView)` on the delegate.
    `void` | `setVideoTextureView​(TextureView textureView)` | Calls `Player.setVideoTextureView(TextureView)` on the delegate.
    `void` | `setVolume​(float volume)` | Calls `Player.setVolume(float)` on the delegate.
    `void` | `stop()` | Calls `Player.stop()` on the delegate.
    `void` | `stop​(boolean reset)` | Deprecated. Use `stop()` and `clearMediaItems()` (if `reset` is true) or just `stop()` (if `reset` is false).

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ForwardingPlayer

          public ForwardingPlayer​(Player player)

      Creates a new instance that forwards all operations to `player`.

  - ### Method Detail

    - #### getApplicationLooper

          public Looper getApplicationLooper()

      Calls `Player.getApplicationLooper()` on the delegate and returns the result.
      Specified by:
        `getApplicationLooper` in interface `Player`

    - #### addListener

          public void addListener​(Player.Listener listener)

      Calls `Player.addListener(Listener)` on the delegate.
      Specified by:
        `addListener` in interface `Player`
      Parameters:
        `listener` - The listener to register.

    - #### removeListener

          public void removeListener​(Player.Listener listener)

      Calls `Player.removeListener(Listener)` on the delegate.
      Specified by:
        `removeListener` in interface `Player`
      Parameters:
        `listener` - The listener to unregister.

    - #### setMediaItems

          public void setMediaItems​(List<MediaItem> mediaItems)

      Calls `Player.setMediaItems(List)` on the delegate.
      Specified by:
        `setMediaItems` in interface `Player`
      Parameters:
        `mediaItems` - The new media items.

    - #### setMediaItems

          public void setMediaItems​(List<MediaItem> mediaItems,
                                    boolean resetPosition)

      Calls `Player.setMediaItems(List, boolean)` ()} on the delegate.
      Specified by:
        `setMediaItems` in interface `Player`
      Parameters:
        `mediaItems` - The new media items.
        `resetPosition` - Whether the playback position should be reset to the default position in the first `Timeline.Window`. If false, playback will start from the position defined by `Player.getCurrentMediaItemIndex()` and `Player.getCurrentPosition()`.

    - #### setMediaItems

          public void setMediaItems​(List<MediaItem> mediaItems,
                                    int startIndex,
                                    long startPositionMs)

      Calls `Player.setMediaItems(List, int, long)` on the delegate.
      Specified by:
        `setMediaItems` in interface `Player`
      Parameters:
        `mediaItems` - The new media items.
        `startIndex` - The `MediaItem` index to start playback from. If `C.INDEX_UNSET` is passed, the current position is not reset.
        `startPositionMs` - The position in milliseconds to start playback from. If `C.TIME_UNSET` is passed, the default position of the given `MediaItem` is used. In any case, if `startIndex` is set to `C.INDEX_UNSET`, this parameter is ignored and the position is not reset at all.

    - #### setMediaItem

          public void setMediaItem​(MediaItem mediaItem)

      Calls `Player.setMediaItem(MediaItem)` on the delegate.
      Specified by:
        `setMediaItem` in interface `Player`
      Parameters:
        `mediaItem` - The new `MediaItem`.

    - #### setMediaItem

          public void setMediaItem​(MediaItem mediaItem,
                                   long startPositionMs)

      Calls `Player.setMediaItem(MediaItem, long)` on the delegate.
      Specified by:
        `setMediaItem` in interface `Player`
      Parameters:
        `mediaItem` - The new `MediaItem`.
        `startPositionMs` - The position in milliseconds to start playback from.

    - #### setMediaItem

          public void setMediaItem​(MediaItem mediaItem,
                                   boolean resetPosition)

      Calls `Player.setMediaItem(MediaItem, boolean)` on the delegate.
      Specified by:
        `setMediaItem` in interface `Player`
      Parameters:
        `mediaItem` - The new `MediaItem`.
        `resetPosition` - Whether the playback position should be reset to the default position. If false, playback will start from the position defined by `Player.getCurrentMediaItemIndex()` and `Player.getCurrentPosition()`.

    - #### addMediaItem

          public void addMediaItem​(MediaItem mediaItem)

      Calls `Player.addMediaItem(MediaItem)` on the delegate.
      Specified by:
        `addMediaItem` in interface `Player`
      Parameters:
        `mediaItem` - The `MediaItem` to add.

    - #### addMediaItem

          public void addMediaItem​(int index,
                                   MediaItem mediaItem)

      Calls `Player.addMediaItem(int, MediaItem)` on the delegate.
      Specified by:
        `addMediaItem` in interface `Player`
      Parameters:
        `index` - The index at which to add the media item. If the index is larger than the size of the playlist, the media item is added to the end of the playlist.
        `mediaItem` - The `MediaItem` to add.

    - #### addMediaItems

          public void addMediaItems​(List<MediaItem> mediaItems)

      Calls `Player.addMediaItems(List)` on the delegate.
      Specified by:
        `addMediaItems` in interface `Player`
      Parameters:
        `mediaItems` - The media items to add.

    - #### addMediaItems

          public void addMediaItems​(int index,
                                    List<MediaItem> mediaItems)

      Calls `Player.addMediaItems(int, List)` on the delegate.
      Specified by:
        `addMediaItems` in interface `Player`
      Parameters:
        `index` - The index at which to add the media items. If the index is larger than the size of the playlist, the media items are added to the end of the playlist.
        `mediaItems` - The media items to add.

    - #### moveMediaItem

          public void moveMediaItem​(int currentIndex,
                                    int newIndex)

      Calls `Player.moveMediaItem(int, int)` on the delegate.
      Specified by:
        `moveMediaItem` in interface `Player`
      Parameters:
        `currentIndex` - The current index of the media item to move. If the index is larger than the size of the playlist, the request is ignored.
        `newIndex` - The new index of the media item. If the new index is larger than the size of the playlist the item is moved to the end of the playlist.

    - #### moveMediaItems

          public void moveMediaItems​(int fromIndex,
                                     int toIndex,
                                     int newIndex)

      Calls `Player.moveMediaItems(int, int, int)` on the delegate.
      Specified by:
        `moveMediaItems` in interface `Player`
      Parameters:
        `fromIndex` - The start of the range to move. If the index is larger than the size of the playlist, the request is ignored.
        `toIndex` - The first item not to be included in the range (exclusive). If the index is larger than the size of the playlist, items up to the end of the playlist are moved.
        `newIndex` - The new index of the first media item of the range. If the new index is larger than the size of the remaining playlist after removing the range, the range is moved to the end of the playlist.

    - #### removeMediaItem

          public void removeMediaItem​(int index)

      Calls `Player.removeMediaItem(int)` on the delegate.
      Specified by:
        `removeMediaItem` in interface `Player`
      Parameters:
        `index` - The index at which to remove the media item. If the index is larger than the size of the playlist, the request is ignored.

    - #### removeMediaItems

          public void removeMediaItems​(int fromIndex,
                                       int toIndex)

      Calls `Player.removeMediaItems(int, int)` on the delegate.
      Specified by:
        `removeMediaItems` in interface `Player`
      Parameters:
        `fromIndex` - The index at which to start removing media items. If the index is larger than the size of the playlist, the request is ignored.
        `toIndex` - The index of the first item to be kept (exclusive). If the index is larger than the size of the playlist, media items up to the end of the playlist are removed.

    - #### clearMediaItems

          public void clearMediaItems()

      Calls `Player.clearMediaItems()` on the delegate.
      Specified by:
        `clearMediaItems` in interface `Player`

    - #### isCommandAvailable

          public boolean isCommandAvailable​(@Command
                                            @com.google.android.exoplayer2.Player.Command int command)

      Calls `Player.isCommandAvailable(int)` on the delegate and returns the result.
      Specified by:
        `isCommandAvailable` in interface `Player`
      Parameters:
        `command` - A `Player.Command`.
      Returns:
        Whether the `Player.Command` is available.
      See Also:
        `Player.Listener.onAvailableCommandsChanged(Commands)`

    - #### canAdvertiseSession

          public boolean canAdvertiseSession()

      Calls `Player.canAdvertiseSession()` on the delegate and returns the result.
      Specified by:
        `canAdvertiseSession` in interface `Player`

    - #### getAvailableCommands

          public Player.Commands getAvailableCommands()

      Calls `Player.getAvailableCommands()` on the delegate and returns the result.
      Specified by:
        `getAvailableCommands` in interface `Player`
      Returns:
        The currently available `Player.Commands`.
      See Also:
        `Player.Listener.onAvailableCommandsChanged(com.google.android.exoplayer2.Player.Commands)`

    - #### prepare

          public void prepare()

      Calls `Player.prepare()` on the delegate.
      Specified by:
        `prepare` in interface `Player`

    - #### getPlaybackState

          public int getPlaybackState()

      Calls `Player.getPlaybackState()` on the delegate and returns the result.
      Specified by:
        `getPlaybackState` in interface `Player`
      Returns:
        The current playback state.
      See Also:
        `Player.Listener.onPlaybackStateChanged(int)`

    - #### getPlaybackSuppressionReason

          public int getPlaybackSuppressionReason()

      Calls `Player.getPlaybackSuppressionReason()` on the delegate and returns the result.
      Specified by:
        `getPlaybackSuppressionReason` in interface `Player`
      Returns:
        The current `Player.PlaybackSuppressionReason`.
      See Also:
        `Player.Listener.onPlaybackSuppressionReasonChanged(int)`

    - #### isPlaying

          public boolean isPlaying()

      Calls `Player.isPlaying()` on the delegate and returns the result.
      Specified by:
        `isPlaying` in interface `Player`
      Returns:
        Whether the player is playing.
      See Also:
        `Player.Listener.onIsPlayingChanged(boolean)`

    - #### getPlayerError

          @Nullable
          public PlaybackException getPlayerError()

      Calls `Player.getPlayerError()` on the delegate and returns the result.
      Specified by:
        `getPlayerError` in interface `Player`
      Returns:
        The error, or `null`.
      See Also:
        `Player.Listener.onPlayerError(PlaybackException)`

    - #### play

          public void play()

      Calls `Player.play()` on the delegate.
      Specified by:
        `play` in interface `Player`

    - #### pause

          public void pause()

      Calls `Player.pause()` on the delegate.
      Specified by:
        `pause` in interface `Player`

    - #### setPlayWhenReady

          public void setPlayWhenReady​(boolean playWhenReady)

      Calls `Player.setPlayWhenReady(boolean)` on the delegate.
      Specified by:
        `setPlayWhenReady` in interface `Player`
      Parameters:
        `playWhenReady` - Whether playback should proceed when ready.

    - #### getPlayWhenReady

          public boolean getPlayWhenReady()

      Calls `Player.getPlayWhenReady()` on the delegate and returns the result.
      Specified by:
        `getPlayWhenReady` in interface `Player`
      Returns:
        Whether playback will proceed when ready.
      See Also:
        `Player.Listener.onPlayWhenReadyChanged(boolean, int)`

    - #### setRepeatMode

          public void setRepeatMode​(@RepeatMode
                                    @com.google.android.exoplayer2.Player.RepeatMode int repeatMode)

      Calls `Player.setRepeatMode(int)` on the delegate.
      Specified by:
        `setRepeatMode` in interface `Player`
      Parameters:
        `repeatMode` - The repeat mode.

    - #### getRepeatMode

          public int getRepeatMode()

      Calls `Player.getRepeatMode()` on the delegate and returns the result.
      Specified by:
        `getRepeatMode` in interface `Player`
      Returns:
        The current repeat mode.
      See Also:
        `Player.Listener.onRepeatModeChanged(int)`

    - #### setShuffleModeEnabled

          public void setShuffleModeEnabled​(boolean shuffleModeEnabled)

      Calls `Player.setShuffleModeEnabled(boolean)` on the delegate.
      Specified by:
        `setShuffleModeEnabled` in interface `Player`
      Parameters:
        `shuffleModeEnabled` - Whether shuffling is enabled.

    - #### getShuffleModeEnabled

          public boolean getShuffleModeEnabled()

      Calls `Player.getShuffleModeEnabled()` on the delegate and returns the result.
      Specified by:
        `getShuffleModeEnabled` in interface `Player`
      See Also:
        `Player.Listener.onShuffleModeEnabledChanged(boolean)`

    - #### isLoading

          public boolean isLoading()

      Calls `Player.isLoading()` on the delegate and returns the result.
      Specified by:
        `isLoading` in interface `Player`
      Returns:
        Whether the player is currently loading the source.
      See Also:
        `Player.Listener.onIsLoadingChanged(boolean)`

    - #### seekToDefaultPosition

          public void seekToDefaultPosition()

      Calls `Player.seekToDefaultPosition()` on the delegate.
      Specified by:
        `seekToDefaultPosition` in interface `Player`

    - #### seekToDefaultPosition

          public void seekToDefaultPosition​(int mediaItemIndex)

      Calls `Player.seekToDefaultPosition(int)` on the delegate.
      Specified by:
        `seekToDefaultPosition` in interface `Player`
      Parameters:
        `mediaItemIndex` - The index of the `MediaItem` whose associated default position should be seeked to. If the index is larger than the size of the playlist, the request is ignored.

    - #### seekTo

          public void seekTo​(long positionMs)

      Calls `Player.seekTo(long)` on the delegate.
      Specified by:
        `seekTo` in interface `Player`
      Parameters:
        `positionMs` - The seek position in the current `MediaItem`, or `C.TIME_UNSET` to seek to the media item's default position.

    - #### seekTo

          public void seekTo​(int mediaItemIndex,
                             long positionMs)

      Calls `Player.seekTo(int, long)` on the delegate.
      Specified by:
        `seekTo` in interface `Player`
      Parameters:
        `mediaItemIndex` - The index of the `MediaItem`. If the index is larger than the size of the playlist, the request is ignored.
        `positionMs` - The seek position in the specified `MediaItem`, or `C.TIME_UNSET` to seek to the media item's default position.

    - #### getSeekBackIncrement

          public long getSeekBackIncrement()

      Calls `Player.getSeekBackIncrement()` on the delegate and returns the result.
      Specified by:
        `getSeekBackIncrement` in interface `Player`
      Returns:
        The seek back increment, in milliseconds.
      See Also:
        `Player.Listener.onSeekBackIncrementChanged(long)`

    - #### seekBack

          public void seekBack()

      Calls `Player.seekBack()` on the delegate.
      Specified by:
        `seekBack` in interface `Player`

    - #### getSeekForwardIncrement

          public long getSeekForwardIncrement()

      Calls `Player.getSeekForwardIncrement()` on the delegate and returns the result.
      Specified by:
        `getSeekForwardIncrement` in interface `Player`
      Returns:
        The seek forward increment, in milliseconds.
      See Also:
        `Player.Listener.onSeekForwardIncrementChanged(long)`

    - #### seekForward

          public void seekForward()

      Calls `Player.seekForward()` on the delegate.
      Specified by:
        `seekForward` in interface `Player`

    - #### hasPrevious

          @Deprecated
          public boolean hasPrevious()

      Deprecated.
      Use `hasPreviousMediaItem()` instead.
      Calls `Player.hasPrevious()` on the delegate and returns the result.
      Specified by:
        `hasPrevious` in interface `Player`

    - #### hasPreviousWindow

          @Deprecated
          public boolean hasPreviousWindow()

      Deprecated.
      Use `hasPreviousMediaItem()` instead.
      Calls `Player.hasPreviousWindow()` on the delegate and returns the result.
      Specified by:
        `hasPreviousWindow` in interface `Player`

    - #### hasPreviousMediaItem

          public boolean hasPreviousMediaItem()

      Calls `Player.hasPreviousMediaItem()` on the delegate and returns the result.
      Specified by:
        `hasPreviousMediaItem` in interface `Player`

    - #### previous

          @Deprecated
          public void previous()

      Deprecated.
      Use `seekToPreviousMediaItem()` instead.
      Calls `Player.previous()` on the delegate.
      Specified by:
        `previous` in interface `Player`

    - #### seekToPreviousWindow

          @Deprecated
          public void seekToPreviousWindow()

      Deprecated.
      Use `seekToPreviousMediaItem()` instead.
      Calls `Player.seekToPreviousWindow()` on the delegate.
      Specified by:
        `seekToPreviousWindow` in interface `Player`

    - #### seekToPreviousMediaItem

          public void seekToPreviousMediaItem()

      Calls `Player.seekToPreviousMediaItem()` on the delegate.
      Specified by:
        `seekToPreviousMediaItem` in interface `Player`

    - #### seekToPrevious

          public void seekToPrevious()

      Calls `Player.seekToPrevious()` on the delegate.
      Specified by:
        `seekToPrevious` in interface `Player`

    - #### getMaxSeekToPreviousPosition

          public long getMaxSeekToPreviousPosition()

      Calls `Player.getMaxSeekToPreviousPosition()` on the delegate and returns the result.
      Specified by:
        `getMaxSeekToPreviousPosition` in interface `Player`
      Returns:
        The maximum seek to previous position, in milliseconds.
      See Also:
        `Player.Listener.onMaxSeekToPreviousPositionChanged(long)`

    - #### hasNext

          @Deprecated
          public boolean hasNext()

      Deprecated.
      Use `hasNextMediaItem()` instead.
      Calls `Player.hasNext()` on the delegate and returns the result.
      Specified by:
        `hasNext` in interface `Player`

    - #### hasNextWindow

          @Deprecated
          public boolean hasNextWindow()

      Deprecated.
      Use `hasNextMediaItem()` instead.
      Calls `Player.hasNextWindow()` on the delegate and returns the result.
      Specified by:
        `hasNextWindow` in interface `Player`

    - #### hasNextMediaItem

          public boolean hasNextMediaItem()

      Calls `Player.hasNextMediaItem()` on the delegate and returns the result.
      Specified by:
        `hasNextMediaItem` in interface `Player`

    - #### next

          @Deprecated
          public void next()

      Deprecated.
      Use `seekToNextMediaItem()` instead.
      Calls `Player.next()` on the delegate.
      Specified by:
        `next` in interface `Player`

    - #### seekToNextWindow

          @Deprecated
          public void seekToNextWindow()

      Deprecated.
      Use `seekToNextMediaItem()` instead.
      Calls `Player.seekToNextWindow()` on the delegate.
      Specified by:
        `seekToNextWindow` in interface `Player`

    - #### seekToNextMediaItem

          public void seekToNextMediaItem()

      Calls `Player.seekToNextMediaItem()` on the delegate.
      Specified by:
        `seekToNextMediaItem` in interface `Player`

    - #### seekToNext

          public void seekToNext()

      Calls `Player.seekToNext()` on the delegate.
      Specified by:
        `seekToNext` in interface `Player`

    - #### setPlaybackParameters

          public void setPlaybackParameters​(PlaybackParameters playbackParameters)

      Calls `Player.setPlaybackParameters(PlaybackParameters)` on the delegate.
      Specified by:
        `setPlaybackParameters` in interface `Player`
      Parameters:
        `playbackParameters` - The playback parameters.

    - #### setPlaybackSpeed

          public void setPlaybackSpeed​(float speed)

      Calls `Player.setPlaybackSpeed(float)` on the delegate.
      Specified by:
        `setPlaybackSpeed` in interface `Player`
      Parameters:
        `speed` - The linear factor by which playback will be sped up. Must be higher than 0. 1 is normal speed, 2 is twice as fast, 0.5 is half normal speed.

    - #### getPlaybackParameters

          public PlaybackParameters getPlaybackParameters()

      Calls `Player.getPlaybackParameters()` on the delegate and returns the result.
      Specified by:
        `getPlaybackParameters` in interface `Player`
      See Also:
        `Player.Listener.onPlaybackParametersChanged(PlaybackParameters)`

    - #### stop

          public void stop()

      Calls `Player.stop()` on the delegate.
      Specified by:
        `stop` in interface `Player`

    - #### stop

          @Deprecated
          public void stop​(boolean reset)

      Deprecated.
      Use `stop()` and `clearMediaItems()` (if `reset` is true) or just `stop()` (if `reset` is false). Any player error will be cleared when `re-preparing` the player.
      Calls `Player.stop(boolean)` on the delegate.
      Specified by:
        `stop` in interface `Player`

    - #### release

          public void release()

      Calls `Player.release()` on the delegate.
      Specified by:
        `release` in interface `Player`

    - #### getCurrentTracks

          public Tracks getCurrentTracks()

      Calls `Player.getCurrentTracks()` on the delegate and returns the result.
      Specified by:
        `getCurrentTracks` in interface `Player`
      See Also:
        `Player.Listener.onTracksChanged(Tracks)`

    - #### getTrackSelectionParameters

          public TrackSelectionParameters getTrackSelectionParameters()

      Calls `Player.getTrackSelectionParameters()` on the delegate and returns the result.
      Specified by:
        `getTrackSelectionParameters` in interface `Player`
      See Also:
        `}`

    - #### setTrackSelectionParameters

          public void setTrackSelectionParameters​(TrackSelectionParameters parameters)

      Calls `Player.setTrackSelectionParameters(TrackSelectionParameters)` on the delegate.
      Specified by:
        `setTrackSelectionParameters` in interface `Player`

    - #### getMediaMetadata

          public MediaMetadata getMediaMetadata()

      Calls `Player.getMediaMetadata()` on the delegate and returns the result.
      Specified by:
        `getMediaMetadata` in interface `Player`

    - #### getPlaylistMetadata

          public MediaMetadata getPlaylistMetadata()

      Calls `Player.getPlaylistMetadata()` on the delegate and returns the result.
      Specified by:
        `getPlaylistMetadata` in interface `Player`

    - #### setPlaylistMetadata

          public void setPlaylistMetadata​(MediaMetadata mediaMetadata)

      Calls `Player.setPlaylistMetadata(MediaMetadata)` on the delegate.
      Specified by:
        `setPlaylistMetadata` in interface `Player`

    - #### getCurrentManifest

          @Nullable
          public Object getCurrentManifest()

      Calls `Player.getCurrentManifest()` on the delegate and returns the result.
      Specified by:
        `getCurrentManifest` in interface `Player`

    - #### getCurrentTimeline

          public Timeline getCurrentTimeline()

      Calls `Player.getCurrentTimeline()` on the delegate and returns the result.
      Specified by:
        `getCurrentTimeline` in interface `Player`
      See Also:
        `Player.Listener.onTimelineChanged(Timeline, int)`

    - #### getCurrentPeriodIndex

          public int getCurrentPeriodIndex()

      Calls `Player.getCurrentPeriodIndex()` on the delegate and returns the result.
      Specified by:
        `getCurrentPeriodIndex` in interface `Player`

    - #### getCurrentWindowIndex

          @Deprecated
          public int getCurrentWindowIndex()

      Deprecated.
      Use `getCurrentMediaItemIndex()` instead.
      Calls `Player.getCurrentWindowIndex()` on the delegate and returns the result.
      Specified by:
        `getCurrentWindowIndex` in interface `Player`

    - #### getCurrentMediaItemIndex

          public int getCurrentMediaItemIndex()

      Calls `Player.getCurrentMediaItemIndex()` on the delegate and returns the result.
      Specified by:
        `getCurrentMediaItemIndex` in interface `Player`

    - #### getNextWindowIndex

          @Deprecated
          public int getNextWindowIndex()

      Deprecated.
      Use `getNextMediaItemIndex()` instead.
      Calls `Player.getNextWindowIndex()` on the delegate and returns the result.
      Specified by:
        `getNextWindowIndex` in interface `Player`

    - #### getNextMediaItemIndex

          public int getNextMediaItemIndex()

      Calls `Player.getNextMediaItemIndex()` on the delegate and returns the result.
      Specified by:
        `getNextMediaItemIndex` in interface `Player`

    - #### getPreviousWindowIndex

          @Deprecated
          public int getPreviousWindowIndex()

      Deprecated.
      Use `getPreviousMediaItemIndex()` instead.
      Calls `Player.getPreviousWindowIndex()` on the delegate and returns the result.
      Specified by:
        `getPreviousWindowIndex` in interface `Player`

    - #### getPreviousMediaItemIndex

          public int getPreviousMediaItemIndex()

      Calls `Player.getPreviousMediaItemIndex()` on the delegate and returns the result.
      Specified by:
        `getPreviousMediaItemIndex` in interface `Player`

    - #### getCurrentMediaItem

          @Nullable
          public MediaItem getCurrentMediaItem()

      Calls `Player.getCurrentMediaItem()` on the delegate and returns the result.
      Specified by:
        `getCurrentMediaItem` in interface `Player`
      See Also:
        `Player.Listener.onMediaItemTransition(MediaItem, int)`

    - #### getMediaItemCount

          public int getMediaItemCount()

      Calls `Player.getMediaItemCount()` on the delegate and returns the result.
      Specified by:
        `getMediaItemCount` in interface `Player`

    - #### getMediaItemAt

          public MediaItem getMediaItemAt​(int index)

      Calls `Player.getMediaItemAt(int)` on the delegate and returns the result.
      Specified by:
        `getMediaItemAt` in interface `Player`

    - #### getDuration

          public long getDuration()

      Calls `Player.getDuration()` on the delegate and returns the result.
      Specified by:
        `getDuration` in interface `Player`

    - #### getCurrentPosition

          public long getCurrentPosition()

      Calls `Player.getCurrentPosition()` on the delegate and returns the result.
      Specified by:
        `getCurrentPosition` in interface `Player`

    - #### getBufferedPosition

          public long getBufferedPosition()

      Calls `Player.getBufferedPosition()` on the delegate and returns the result.
      Specified by:
        `getBufferedPosition` in interface `Player`

    - #### getBufferedPercentage

          public int getBufferedPercentage()

      Calls `Player.getBufferedPercentage()` on the delegate and returns the result.
      Specified by:
        `getBufferedPercentage` in interface `Player`

    - #### getTotalBufferedDuration

          public long getTotalBufferedDuration()

      Calls `Player.getTotalBufferedDuration()` on the delegate and returns the result.
      Specified by:
        `getTotalBufferedDuration` in interface `Player`

    - #### isCurrentWindowDynamic

          @Deprecated
          public boolean isCurrentWindowDynamic()

      Deprecated.
      Use `isCurrentMediaItemDynamic()` instead.
      Calls `Player.isCurrentWindowDynamic()` on the delegate and returns the result.
      Specified by:
        `isCurrentWindowDynamic` in interface `Player`

    - #### isCurrentMediaItemDynamic

          public boolean isCurrentMediaItemDynamic()

      Calls `Player.isCurrentMediaItemDynamic()` on the delegate and returns the result.
      Specified by:
        `isCurrentMediaItemDynamic` in interface `Player`
      See Also:
        `Timeline.Window.isDynamic`

    - #### isCurrentWindowLive

          @Deprecated
          public boolean isCurrentWindowLive()

      Deprecated.
      Use `isCurrentMediaItemLive()` instead.
      Calls `Player.isCurrentWindowLive()` on the delegate and returns the result.
      Specified by:
        `isCurrentWindowLive` in interface `Player`

    - #### isCurrentMediaItemLive

          public boolean isCurrentMediaItemLive()

      Calls `Player.isCurrentMediaItemLive()` on the delegate and returns the result.
      Specified by:
        `isCurrentMediaItemLive` in interface `Player`
      See Also:
        `Timeline.Window.isLive()`

    - #### getCurrentLiveOffset

          public long getCurrentLiveOffset()

      Calls `Player.getCurrentLiveOffset()` on the delegate and returns the result.
      Specified by:
        `getCurrentLiveOffset` in interface `Player`

    - #### isCurrentWindowSeekable

          @Deprecated
          public boolean isCurrentWindowSeekable()

      Deprecated.
      Use `isCurrentMediaItemSeekable()` instead.
      Calls `Player.isCurrentWindowSeekable()` on the delegate and returns the result.
      Specified by:
        `isCurrentWindowSeekable` in interface `Player`

    - #### isCurrentMediaItemSeekable

          public boolean isCurrentMediaItemSeekable()

      Calls `Player.isCurrentMediaItemSeekable()` on the delegate and returns the result.
      Specified by:
        `isCurrentMediaItemSeekable` in interface `Player`
      See Also:
        `Timeline.Window.isSeekable`

    - #### isPlayingAd

          public boolean isPlayingAd()

      Calls `Player.isPlayingAd()` on the delegate and returns the result.
      Specified by:
        `isPlayingAd` in interface `Player`

    - #### getCurrentAdGroupIndex

          public int getCurrentAdGroupIndex()

      Calls `Player.getCurrentAdGroupIndex()` on the delegate and returns the result.
      Specified by:
        `getCurrentAdGroupIndex` in interface `Player`

    - #### getCurrentAdIndexInAdGroup

          public int getCurrentAdIndexInAdGroup()

      Calls `Player.getCurrentAdIndexInAdGroup()` on the delegate and returns the result.
      Specified by:
        `getCurrentAdIndexInAdGroup` in interface `Player`

    - #### getContentDuration

          public long getContentDuration()

      Calls `Player.getContentDuration()` on the delegate and returns the result.
      Specified by:
        `getContentDuration` in interface `Player`

    - #### getContentPosition

          public long getContentPosition()

      Calls `Player.getContentPosition()` on the delegate and returns the result.
      Specified by:
        `getContentPosition` in interface `Player`

    - #### getContentBufferedPosition

          public long getContentBufferedPosition()

      Calls `Player.getContentBufferedPosition()` on the delegate and returns the result.
      Specified by:
        `getContentBufferedPosition` in interface `Player`

    - #### getAudioAttributes

          public AudioAttributes getAudioAttributes()

      Calls `Player.getAudioAttributes()` on the delegate and returns the result.
      Specified by:
        `getAudioAttributes` in interface `Player`

    - #### setVolume

          public void setVolume​(float volume)

      Calls `Player.setVolume(float)` on the delegate.
      Specified by:
        `setVolume` in interface `Player`
      Parameters:
        `volume` - Linear output gain to apply to all audio channels.

    - #### getVolume

          public float getVolume()

      Calls `Player.getVolume()` on the delegate and returns the result.
      Specified by:
        `getVolume` in interface `Player`
      Returns:
        The linear gain applied to all audio channels.

    - #### getVideoSize

          public VideoSize getVideoSize()

      Calls `Player.getVideoSize()` on the delegate and returns the result.
      Specified by:
        `getVideoSize` in interface `Player`
      See Also:
        `Player.Listener.onVideoSizeChanged(VideoSize)`

    - #### getSurfaceSize

          public Size getSurfaceSize()

      Calls `Player.getSurfaceSize()` on the delegate and returns the result.
      Specified by:
        `getSurfaceSize` in interface `Player`
      See Also:
        `Player.Listener.onSurfaceSizeChanged(int, int)`

    - #### clearVideoSurface

          public void clearVideoSurface()

      Calls `Player.clearVideoSurface()` on the delegate.
      Specified by:
        `clearVideoSurface` in interface `Player`

    - #### clearVideoSurface

          public void clearVideoSurface​(@Nullable
                                        Surface surface)

      Calls `Player.clearVideoSurface(Surface)` on the delegate.
      Specified by:
        `clearVideoSurface` in interface `Player`
      Parameters:
        `surface` - The surface to clear.

    - #### setVideoSurface

          public void setVideoSurface​(@Nullable
                                      Surface surface)

      Calls `Player.setVideoSurface(Surface)` on the delegate.
      Specified by:
        `setVideoSurface` in interface `Player`
      Parameters:
        `surface` - The `Surface`.

    - #### setVideoSurfaceHolder

          public void setVideoSurfaceHolder​(@Nullable
                                            SurfaceHolder surfaceHolder)

      Calls `Player.setVideoSurfaceHolder(SurfaceHolder)` on the delegate.
      Specified by:
        `setVideoSurfaceHolder` in interface `Player`
      Parameters:
        `surfaceHolder` - The surface holder.

    - #### clearVideoSurfaceHolder

          public void clearVideoSurfaceHolder​(@Nullable
                                              SurfaceHolder surfaceHolder)

      Calls `Player.clearVideoSurfaceHolder(SurfaceHolder)` on the delegate.
      Specified by:
        `clearVideoSurfaceHolder` in interface `Player`
      Parameters:
        `surfaceHolder` - The surface holder to clear.

    - #### setVideoSurfaceView

          public void setVideoSurfaceView​(@Nullable
                                          SurfaceView surfaceView)

      Calls `Player.setVideoSurfaceView(SurfaceView)` on the delegate.
      Specified by:
        `setVideoSurfaceView` in interface `Player`
      Parameters:
        `surfaceView` - The surface view.

    - #### clearVideoSurfaceView

          public void clearVideoSurfaceView​(@Nullable
                                            SurfaceView surfaceView)

      Calls `Player.clearVideoSurfaceView(SurfaceView)` on the delegate.
      Specified by:
        `clearVideoSurfaceView` in interface `Player`
      Parameters:
        `surfaceView` - The texture view to clear.

    - #### setVideoTextureView

          public void setVideoTextureView​(@Nullable
                                          TextureView textureView)

      Calls `Player.setVideoTextureView(TextureView)` on the delegate.
      Specified by:
        `setVideoTextureView` in interface `Player`
      Parameters:
        `textureView` - The texture view.

    - #### clearVideoTextureView

          public void clearVideoTextureView​(@Nullable
                                            TextureView textureView)

      Calls `Player.clearVideoTextureView(TextureView)` on the delegate.
      Specified by:
        `clearVideoTextureView` in interface `Player`
      Parameters:
        `textureView` - The texture view to clear.

    - #### getCurrentCues

          public CueGroup getCurrentCues()

      Calls `Player.getCurrentCues()` on the delegate and returns the result.
      Specified by:
        `getCurrentCues` in interface `Player`

    - #### getDeviceInfo

          public DeviceInfo getDeviceInfo()

      Calls `Player.getDeviceInfo()` on the delegate and returns the result.
      Specified by:
        `getDeviceInfo` in interface `Player`

    - #### getDeviceVolume

          public int getDeviceVolume()

      Calls `Player.getDeviceVolume()` on the delegate and returns the result.
      Specified by:
        `getDeviceVolume` in interface `Player`

    - #### isDeviceMuted

          public boolean isDeviceMuted()

      Calls `Player.isDeviceMuted()` on the delegate and returns the result.
      Specified by:
        `isDeviceMuted` in interface `Player`

    - #### setDeviceVolume

          public void setDeviceVolume​(int volume)

      Calls `Player.setDeviceVolume(int)` on the delegate.
      Specified by:
        `setDeviceVolume` in interface `Player`
      Parameters:
        `volume` - The volume to set.

    - #### increaseDeviceVolume

          public void increaseDeviceVolume()

      Calls `Player.increaseDeviceVolume()` on the delegate.
      Specified by:
        `increaseDeviceVolume` in interface `Player`

    - #### decreaseDeviceVolume

          public void decreaseDeviceVolume()

      Calls `Player.decreaseDeviceVolume()` on the delegate.
      Specified by:
        `decreaseDeviceVolume` in interface `Player`

    - #### setDeviceMuted

          public void setDeviceMuted​(boolean muted)

      Calls `Player.setDeviceMuted(boolean)` on the delegate.
      Specified by:
        `setDeviceMuted` in interface `Player`

    - #### getWrappedPlayer

          public Player getWrappedPlayer()

      Returns the `Player` to which operations are forwarded.