library/core/src/main/java/com/google/android/exoplayer2/trackselection/TrackSelection.java
/**
   * Updates the selected track for sources that load media in discrete {@link MediaChunk}s.
   *
   * <p>This method will only be called when the selection is enabled.
   *
   * @param playbackPositionUs The current playback position in microseconds. If playback of the
   *     period to which this track selection belongs has not yet started, the value will be the
   *     starting position in the period minus the duration of any media in previous periods still
   *     to be played.
   * @param bufferedDurationUs The duration of media currently buffered from the current playback
   *     position, in microseconds. Note that the next load position can be calculated as {@code
   *     (playbackPositionUs + bufferedDurationUs)}.
   * @param availableDurationUs The duration of media available for buffering from the current
   *     playback position, in microseconds, or {@link C#TIME_UNSET} if media can be buffered to the
   *     end of the current period. Note that if not set to {@link C#TIME_UNSET}, the position up to
   *     which media is available for buffering can be calculated as {@code (playbackPositionUs +
   *     availableDurationUs)}.
   * @param queue The queue of already buffered {@link MediaChunk}s. Must not be modified.
   * @param mediaChunkIterators An array of {@link MediaChunkIterator}s providing information about
   *     the sequence of upcoming media chunks for each track in the selection. All iterators start
   *     from the media chunk which will be loaded next if the respective track is selected. Note
   *     that this information may not be available for all tracks, and so some iterators may be
   *     empty.
   */
Updates the selected track for sources that load media in discrete  MediaChunks.
This method will only be called when the selection is enabled.

@param playbackPositionUs The current playback position in microseconds. If playback of the
period to which this track selection belongs has not yet started, the value will be the
starting position in the period minus the duration of any media in previous periods still
to be played.
@param bufferedDurationUs The duration of media currently buffered from the current playback
position, in microseconds. Note that the next load position can be calculated as {@code
(playbackPositionUs + bufferedDurationUs)}.
@param availableDurationUs The duration of media available for buffering from the current
playback position, in microseconds, or  C#TIME_UNSET if media can be buffered to the
end of the current period. Note that if not set to  C#TIME_UNSET, the position up to
which media is available for buffering can be calculated as {@code (playbackPositionUs +
availableDurationUs)}.
@param queue The queue of already buffered  MediaChunks. Must not be modified.
@param mediaChunkIterators An array of  MediaChunkIterators providing information about
the sequence of upcoming media chunks for each track in the selection. All iterators start
from the media chunk which will be loaded next if the respective track is selected. Note
that this information may not be available for all tracks, and so some iterators may be
empty.
Updates the selected track for sources that load media in discrete MediaChunks . This method will only be called when the selection is enabled . @param playbackPositionUs The current playback position in microseconds . If playback of the period to which this track selection belongs has not yet started the value will be the starting position in the period minus the duration of any media in previous periods still to be played . @param bufferedDurationUs The duration of media currently buffered from the current playback position in microseconds . Note that the next load position can be calculated as { @code ( playbackPositionUs + bufferedDurationUs ) } . @param availableDurationUs The duration of media available for buffering from the current playback position in microseconds or C#TIME_UNSET if media can be buffered to the end of the current period . Note that if not set to C#TIME_UNSET the position up to which media is available for buffering can be calculated as { @code ( playbackPositionUs + availableDurationUs ) } . @param queue The queue of already buffered MediaChunks . Must not be modified . @param mediaChunkIterators An array of MediaChunkIterators providing information about the sequence of upcoming media chunks for each track in the selection . All iterators start from the media chunk which will be loaded next if the respective track is selected . Note that this information may not be available for all tracks and so some iterators may be empty .
void updateSelectedTrack(
      long playbackPositionUs,
      long bufferedDurationUs,
      long availableDurationUs,
      List<? extends MediaChunk> queue,
      MediaChunkIterator[] mediaChunkIterators);
void updateSelectedTrack ( long playbackPositionUs , long bufferedDurationUs , long availableDurationUs , List < ? extends MediaChunk > queue , MediaChunkIterator [ ] mediaChunkIterators ) ;
Updates the selected track for sources that load media in discrete {@link MediaChunk}s.
 <p>This method will only be called when the selection is enabled.
Updates the selected track for sources that load media in discrete { @link MediaChunk } s . <p > This method will only be called when the selection is enabled .