mirror of
https://github.com/androidx/media.git
synced 2025-05-17 04:29:55 +08:00
Rename androidX MediaItem to media2 MediaItem
In AndroidX, both media1 and media2 have MediaItem classes, so change the naming to remove ambiguity. PiperOrigin-RevId: 327261260
This commit is contained in:
parent
e6d36e8b92
commit
4782e227eb
@ -29,27 +29,27 @@ import com.google.android.exoplayer2.util.Assertions;
|
|||||||
public final class DefaultMediaItemConverter implements MediaItemConverter {
|
public final class DefaultMediaItemConverter implements MediaItemConverter {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MediaItem convertToExoPlayerMediaItem(androidx.media2.common.MediaItem androidXMediaItem) {
|
public MediaItem convertToExoPlayerMediaItem(androidx.media2.common.MediaItem media2MediaItem) {
|
||||||
if (androidXMediaItem instanceof FileMediaItem) {
|
if (media2MediaItem instanceof FileMediaItem) {
|
||||||
throw new IllegalStateException("FileMediaItem isn't supported");
|
throw new IllegalStateException("FileMediaItem isn't supported");
|
||||||
}
|
}
|
||||||
if (androidXMediaItem instanceof CallbackMediaItem) {
|
if (media2MediaItem instanceof CallbackMediaItem) {
|
||||||
throw new IllegalStateException("CallbackMediaItem isn't supported");
|
throw new IllegalStateException("CallbackMediaItem isn't supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
MediaItem.Builder exoPlayerMediaItemBuilder = new MediaItem.Builder();
|
MediaItem.Builder exoPlayerMediaItemBuilder = new MediaItem.Builder();
|
||||||
|
|
||||||
// Set mediaItem as tag for creating MediaSource via MediaSourceFactory methods.
|
// Set mediaItem as tag for creating MediaSource via MediaSourceFactory methods.
|
||||||
exoPlayerMediaItemBuilder.setTag(androidXMediaItem);
|
exoPlayerMediaItemBuilder.setTag(media2MediaItem);
|
||||||
|
|
||||||
// Media ID or URI must be present. Get it from androidx.MediaItem if possible.
|
// Media ID or URI must be present. Get it from media2 MediaItem if possible.
|
||||||
@Nullable Uri uri = null;
|
@Nullable Uri uri = null;
|
||||||
@Nullable String mediaId = null;
|
@Nullable String mediaId = null;
|
||||||
if (androidXMediaItem instanceof UriMediaItem) {
|
if (media2MediaItem instanceof UriMediaItem) {
|
||||||
UriMediaItem uriMediaItem = (UriMediaItem) androidXMediaItem;
|
UriMediaItem uriMediaItem = (UriMediaItem) media2MediaItem;
|
||||||
uri = uriMediaItem.getUri();
|
uri = uriMediaItem.getUri();
|
||||||
}
|
}
|
||||||
@Nullable MediaMetadata metadata = androidXMediaItem.getMetadata();
|
@Nullable MediaMetadata metadata = media2MediaItem.getMetadata();
|
||||||
if (metadata != null) {
|
if (metadata != null) {
|
||||||
mediaId = metadata.getString(MediaMetadata.METADATA_KEY_MEDIA_ID);
|
mediaId = metadata.getString(MediaMetadata.METADATA_KEY_MEDIA_ID);
|
||||||
@Nullable String uriString = metadata.getString(MediaMetadata.METADATA_KEY_MEDIA_URI);
|
@Nullable String uriString = metadata.getString(MediaMetadata.METADATA_KEY_MEDIA_URI);
|
||||||
@ -59,17 +59,17 @@ public final class DefaultMediaItemConverter implements MediaItemConverter {
|
|||||||
}
|
}
|
||||||
if (uri == null) {
|
if (uri == null) {
|
||||||
// Generate a Uri to make it non-null. If not, tag will be ignored.
|
// Generate a Uri to make it non-null. If not, tag will be ignored.
|
||||||
uri = Uri.parse("exoplayer://" + androidXMediaItem.hashCode());
|
uri = Uri.parse("exoplayer://" + media2MediaItem.hashCode());
|
||||||
}
|
}
|
||||||
exoPlayerMediaItemBuilder.setUri(uri);
|
exoPlayerMediaItemBuilder.setUri(uri);
|
||||||
exoPlayerMediaItemBuilder.setMediaId(mediaId);
|
exoPlayerMediaItemBuilder.setMediaId(mediaId);
|
||||||
|
|
||||||
if (androidXMediaItem.getStartPosition() != androidx.media2.common.MediaItem.POSITION_UNKNOWN) {
|
if (media2MediaItem.getStartPosition() != androidx.media2.common.MediaItem.POSITION_UNKNOWN) {
|
||||||
exoPlayerMediaItemBuilder.setClipStartPositionMs(androidXMediaItem.getStartPosition());
|
exoPlayerMediaItemBuilder.setClipStartPositionMs(media2MediaItem.getStartPosition());
|
||||||
exoPlayerMediaItemBuilder.setClipRelativeToDefaultPosition(true);
|
exoPlayerMediaItemBuilder.setClipRelativeToDefaultPosition(true);
|
||||||
}
|
}
|
||||||
if (androidXMediaItem.getEndPosition() != androidx.media2.common.MediaItem.POSITION_UNKNOWN) {
|
if (media2MediaItem.getEndPosition() != androidx.media2.common.MediaItem.POSITION_UNKNOWN) {
|
||||||
exoPlayerMediaItemBuilder.setClipEndPositionMs(androidXMediaItem.getEndPosition());
|
exoPlayerMediaItemBuilder.setClipEndPositionMs(media2MediaItem.getEndPosition());
|
||||||
exoPlayerMediaItemBuilder.setClipRelativeToDefaultPosition(true);
|
exoPlayerMediaItemBuilder.setClipRelativeToDefaultPosition(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,7 +77,7 @@ public final class DefaultMediaItemConverter implements MediaItemConverter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public androidx.media2.common.MediaItem convertToAndroidXMediaItem(MediaItem exoPlayerMediaItem) {
|
public androidx.media2.common.MediaItem convertToMedia2MediaItem(MediaItem exoPlayerMediaItem) {
|
||||||
Assertions.checkNotNull(exoPlayerMediaItem);
|
Assertions.checkNotNull(exoPlayerMediaItem);
|
||||||
MediaItem.PlaybackProperties playbackProperties =
|
MediaItem.PlaybackProperties playbackProperties =
|
||||||
Assertions.checkNotNull(exoPlayerMediaItem.playbackProperties);
|
Assertions.checkNotNull(exoPlayerMediaItem.playbackProperties);
|
||||||
|
@ -19,19 +19,19 @@ package com.google.android.exoplayer2.ext.media2;
|
|||||||
import com.google.android.exoplayer2.MediaItem;
|
import com.google.android.exoplayer2.MediaItem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converter for between {@link MediaItem AndroidX MediaItem} and {@link
|
* Converter between {@link MediaItem Media2 MediaItem} and {@link
|
||||||
* com.google.android.exoplayer2.MediaItem ExoPlayer MediaItem}.
|
* com.google.android.exoplayer2.MediaItem ExoPlayer MediaItem}.
|
||||||
*/
|
*/
|
||||||
public interface MediaItemConverter {
|
public interface MediaItemConverter {
|
||||||
/**
|
/**
|
||||||
* Converts {@link androidx.media2.common.MediaItem AndroidX MediaItem} to {@link MediaItem
|
* Converts {@link androidx.media2.common.MediaItem Media2 MediaItem} to {@link MediaItem
|
||||||
* ExoPlayer MediaItem}.
|
* ExoPlayer MediaItem}.
|
||||||
*/
|
*/
|
||||||
MediaItem convertToExoPlayerMediaItem(androidx.media2.common.MediaItem androidXMediaItem);
|
MediaItem convertToExoPlayerMediaItem(androidx.media2.common.MediaItem media2MediaItem);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts {@link MediaItem ExoPlayer MediaItem} to {@link androidx.media2.common.MediaItem
|
* Converts {@link MediaItem ExoPlayer MediaItem} to {@link androidx.media2.common.MediaItem
|
||||||
* AndroidX MediaItem}.
|
* Media2 MediaItem}.
|
||||||
*/
|
*/
|
||||||
androidx.media2.common.MediaItem convertToAndroidXMediaItem(MediaItem exoPlayerMediaItem);
|
androidx.media2.common.MediaItem convertToMedia2MediaItem(MediaItem exoPlayerMediaItem);
|
||||||
}
|
}
|
||||||
|
@ -56,30 +56,30 @@ import java.util.List;
|
|||||||
void onPlayerStateChanged(/* @SessionPlayer.PlayerState */ int playerState);
|
void onPlayerStateChanged(/* @SessionPlayer.PlayerState */ int playerState);
|
||||||
|
|
||||||
/** Called when the player is prepared. */
|
/** Called when the player is prepared. */
|
||||||
void onPrepared(androidx.media2.common.MediaItem androidXMediaItem, int bufferingPercentage);
|
void onPrepared(androidx.media2.common.MediaItem media2MediaItem, int bufferingPercentage);
|
||||||
|
|
||||||
/** Called when a seek request has completed. */
|
/** Called when a seek request has completed. */
|
||||||
void onSeekCompleted();
|
void onSeekCompleted();
|
||||||
|
|
||||||
/** Called when the player rebuffers. */
|
/** Called when the player rebuffers. */
|
||||||
void onBufferingStarted(androidx.media2.common.MediaItem androidXMediaItem);
|
void onBufferingStarted(androidx.media2.common.MediaItem media2MediaItem);
|
||||||
|
|
||||||
/** Called when the player becomes ready again after rebuffering. */
|
/** Called when the player becomes ready again after rebuffering. */
|
||||||
void onBufferingEnded(
|
void onBufferingEnded(
|
||||||
androidx.media2.common.MediaItem androidXMediaItem, int bufferingPercentage);
|
androidx.media2.common.MediaItem media2MediaItem, int bufferingPercentage);
|
||||||
|
|
||||||
/** Called periodically with the player's buffered position as a percentage. */
|
/** Called periodically with the player's buffered position as a percentage. */
|
||||||
void onBufferingUpdate(
|
void onBufferingUpdate(
|
||||||
androidx.media2.common.MediaItem androidXMediaItem, int bufferingPercentage);
|
androidx.media2.common.MediaItem media2MediaItem, int bufferingPercentage);
|
||||||
|
|
||||||
/** Called when current media item is changed. */
|
/** Called when current media item is changed. */
|
||||||
void onCurrentMediaItemChanged(androidx.media2.common.MediaItem androidXMediaItem);
|
void onCurrentMediaItemChanged(androidx.media2.common.MediaItem media2MediaItem);
|
||||||
|
|
||||||
/** Called when playback of the item list has ended. */
|
/** Called when playback of the item list has ended. */
|
||||||
void onPlaybackEnded();
|
void onPlaybackEnded();
|
||||||
|
|
||||||
/** Called when the player encounters an error. */
|
/** Called when the player encounters an error. */
|
||||||
void onError(@Nullable androidx.media2.common.MediaItem androidXMediaItem);
|
void onError(@Nullable androidx.media2.common.MediaItem media2MediaItem);
|
||||||
|
|
||||||
/** Called when the playlist is changed. */
|
/** Called when the playlist is changed. */
|
||||||
void onPlaylistChanged();
|
void onPlaylistChanged();
|
||||||
@ -111,7 +111,7 @@ import java.util.List;
|
|||||||
@Nullable private MediaMetadata playlistMetadata;
|
@Nullable private MediaMetadata playlistMetadata;
|
||||||
|
|
||||||
// These should be only updated in TimelineChanges.
|
// These should be only updated in TimelineChanges.
|
||||||
private final List<androidx.media2.common.MediaItem> androidXPlaylist;
|
private final List<androidx.media2.common.MediaItem> media2Playlist;
|
||||||
private final List<MediaItem> exoPlayerPlaylist;
|
private final List<MediaItem> exoPlayerPlaylist;
|
||||||
|
|
||||||
private boolean prepared;
|
private boolean prepared;
|
||||||
@ -147,7 +147,7 @@ import java.util.List;
|
|||||||
handler = new PlayerHandler(player.getApplicationLooper());
|
handler = new PlayerHandler(player.getApplicationLooper());
|
||||||
pollBufferRunnable = new PollBufferRunnable();
|
pollBufferRunnable = new PollBufferRunnable();
|
||||||
|
|
||||||
androidXPlaylist = new ArrayList<>();
|
media2Playlist = new ArrayList<>();
|
||||||
exoPlayerPlaylist = new ArrayList<>();
|
exoPlayerPlaylist = new ArrayList<>();
|
||||||
currentWindowIndex = C.INDEX_UNSET;
|
currentWindowIndex = C.INDEX_UNSET;
|
||||||
|
|
||||||
@ -157,25 +157,24 @@ import java.util.List;
|
|||||||
updatePlaylist(player.getCurrentTimeline());
|
updatePlaylist(player.getCurrentTimeline());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setMediaItem(androidx.media2.common.MediaItem androidXMediaItem) {
|
public boolean setMediaItem(androidx.media2.common.MediaItem media2MediaItem) {
|
||||||
return setPlaylist(Collections.singletonList(androidXMediaItem), /* metadata= */ null);
|
return setPlaylist(Collections.singletonList(media2MediaItem), /* metadata= */ null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setPlaylist(
|
public boolean setPlaylist(
|
||||||
List<androidx.media2.common.MediaItem> playlist, @Nullable MediaMetadata metadata) {
|
List<androidx.media2.common.MediaItem> playlist, @Nullable MediaMetadata metadata) {
|
||||||
// Check for duplication.
|
// Check for duplication.
|
||||||
for (int i = 0; i < playlist.size(); i++) {
|
for (int i = 0; i < playlist.size(); i++) {
|
||||||
androidx.media2.common.MediaItem androidXMediaItem = playlist.get(i);
|
androidx.media2.common.MediaItem media2MediaItem = playlist.get(i);
|
||||||
Assertions.checkArgument(playlist.indexOf(androidXMediaItem) == i);
|
Assertions.checkArgument(playlist.indexOf(media2MediaItem) == i);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.playlistMetadata = metadata;
|
this.playlistMetadata = metadata;
|
||||||
List<MediaItem> exoPlayerMediaItems = new ArrayList<>();
|
List<MediaItem> exoPlayerMediaItems = new ArrayList<>();
|
||||||
for (int i = 0; i < playlist.size(); i++) {
|
for (int i = 0; i < playlist.size(); i++) {
|
||||||
androidx.media2.common.MediaItem androidXMediaItem = playlist.get(i);
|
androidx.media2.common.MediaItem media2MediaItem = playlist.get(i);
|
||||||
MediaItem exoPlayerMediaItem =
|
MediaItem exoPlayerMediaItem =
|
||||||
Assertions.checkNotNull(
|
Assertions.checkNotNull(mediaItemConverter.convertToExoPlayerMediaItem(media2MediaItem));
|
||||||
mediaItemConverter.convertToExoPlayerMediaItem(androidXMediaItem));
|
|
||||||
exoPlayerMediaItems.add(exoPlayerMediaItem);
|
exoPlayerMediaItems.add(exoPlayerMediaItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,12 +184,12 @@ import java.util.List;
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean addPlaylistItem(int index, androidx.media2.common.MediaItem androidXMediaItem) {
|
public boolean addPlaylistItem(int index, androidx.media2.common.MediaItem media2MediaItem) {
|
||||||
Assertions.checkArgument(!androidXPlaylist.contains(androidXMediaItem));
|
Assertions.checkArgument(!media2Playlist.contains(media2MediaItem));
|
||||||
index = Util.constrainValue(index, 0, androidXPlaylist.size());
|
index = Util.constrainValue(index, 0, media2Playlist.size());
|
||||||
|
|
||||||
MediaItem exoPlayerMediaItem =
|
MediaItem exoPlayerMediaItem =
|
||||||
Assertions.checkNotNull(mediaItemConverter.convertToExoPlayerMediaItem(androidXMediaItem));
|
Assertions.checkNotNull(mediaItemConverter.convertToExoPlayerMediaItem(media2MediaItem));
|
||||||
player.addMediaItem(index, exoPlayerMediaItem);
|
player.addMediaItem(index, exoPlayerMediaItem);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -200,13 +199,12 @@ import java.util.List;
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean replacePlaylistItem(
|
public boolean replacePlaylistItem(int index, androidx.media2.common.MediaItem media2MediaItem) {
|
||||||
int index, androidx.media2.common.MediaItem androidXMediaItem) {
|
Assertions.checkArgument(!media2Playlist.contains(media2MediaItem));
|
||||||
Assertions.checkArgument(!androidXPlaylist.contains(androidXMediaItem));
|
index = Util.constrainValue(index, 0, media2Playlist.size());
|
||||||
index = Util.constrainValue(index, 0, androidXPlaylist.size());
|
|
||||||
|
|
||||||
MediaItem exoPlayerMediaItemToAdd =
|
MediaItem exoPlayerMediaItemToAdd =
|
||||||
Assertions.checkNotNull(mediaItemConverter.convertToExoPlayerMediaItem(androidXMediaItem));
|
Assertions.checkNotNull(mediaItemConverter.convertToExoPlayerMediaItem(media2MediaItem));
|
||||||
|
|
||||||
ignoreTimelineUpdates = true;
|
ignoreTimelineUpdates = true;
|
||||||
player.removeMediaItem(index);
|
player.removeMediaItem(index);
|
||||||
@ -266,7 +264,7 @@ import java.util.List;
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public List<androidx.media2.common.MediaItem> getPlaylist() {
|
public List<androidx.media2.common.MediaItem> getPlaylist() {
|
||||||
return new ArrayList<>(androidXPlaylist);
|
return new ArrayList<>(media2Playlist);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@ -283,7 +281,7 @@ import java.util.List;
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int getCurrentMediaItemIndex() {
|
public int getCurrentMediaItemIndex() {
|
||||||
return androidXPlaylist.isEmpty() ? C.INDEX_UNSET : player.getCurrentWindowIndex();
|
return media2Playlist.isEmpty() ? C.INDEX_UNSET : player.getCurrentWindowIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getPreviousMediaItemIndex() {
|
public int getPreviousMediaItemIndex() {
|
||||||
@ -297,7 +295,7 @@ import java.util.List;
|
|||||||
@Nullable
|
@Nullable
|
||||||
public androidx.media2.common.MediaItem getCurrentMediaItem() {
|
public androidx.media2.common.MediaItem getCurrentMediaItem() {
|
||||||
int index = getCurrentMediaItemIndex();
|
int index = getCurrentMediaItemIndex();
|
||||||
return (index != C.INDEX_UNSET) ? androidXPlaylist.get(index) : null;
|
return (index != C.INDEX_UNSET) ? media2Playlist.get(index) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean prepare() {
|
public boolean prepare() {
|
||||||
@ -522,9 +520,9 @@ import java.util.List;
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updatePlaylist(Timeline timeline) {
|
private void updatePlaylist(Timeline timeline) {
|
||||||
List<androidx.media2.common.MediaItem> androidXMediaItemToBeRemoved =
|
List<androidx.media2.common.MediaItem> media2MediaItemToBeRemoved =
|
||||||
new ArrayList<>(androidXPlaylist);
|
new ArrayList<>(media2Playlist);
|
||||||
androidXPlaylist.clear();
|
media2Playlist.clear();
|
||||||
exoPlayerPlaylist.clear();
|
exoPlayerPlaylist.clear();
|
||||||
|
|
||||||
Timeline.Window window = new Timeline.Window();
|
Timeline.Window window = new Timeline.Window();
|
||||||
@ -532,15 +530,14 @@ import java.util.List;
|
|||||||
for (int i = 0; i < windowCount; i++) {
|
for (int i = 0; i < windowCount; i++) {
|
||||||
timeline.getWindow(i, window);
|
timeline.getWindow(i, window);
|
||||||
MediaItem exoPlayerMediaItem = window.mediaItem;
|
MediaItem exoPlayerMediaItem = window.mediaItem;
|
||||||
androidx.media2.common.MediaItem androidXMediaItem =
|
androidx.media2.common.MediaItem media2MediaItem =
|
||||||
Assertions.checkNotNull(
|
Assertions.checkNotNull(mediaItemConverter.convertToMedia2MediaItem(exoPlayerMediaItem));
|
||||||
mediaItemConverter.convertToAndroidXMediaItem(exoPlayerMediaItem));
|
|
||||||
exoPlayerPlaylist.add(exoPlayerMediaItem);
|
exoPlayerPlaylist.add(exoPlayerMediaItem);
|
||||||
androidXPlaylist.add(androidXMediaItem);
|
media2Playlist.add(media2MediaItem);
|
||||||
androidXMediaItemToBeRemoved.remove(androidXMediaItem);
|
media2MediaItemToBeRemoved.remove(media2MediaItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (androidx.media2.common.MediaItem item : androidXMediaItemToBeRemoved) {
|
for (androidx.media2.common.MediaItem item : media2MediaItemToBeRemoved) {
|
||||||
releaseMediaItem(item);
|
releaseMediaItem(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -550,35 +547,35 @@ import java.util.List;
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateBufferingAndScheduleNextPollBuffer() {
|
private void updateBufferingAndScheduleNextPollBuffer() {
|
||||||
androidx.media2.common.MediaItem androidXMediaItem =
|
androidx.media2.common.MediaItem media2MediaItem =
|
||||||
Assertions.checkNotNull(getCurrentMediaItem());
|
Assertions.checkNotNull(getCurrentMediaItem());
|
||||||
listener.onBufferingUpdate(androidXMediaItem, player.getBufferedPercentage());
|
listener.onBufferingUpdate(media2MediaItem, player.getBufferedPercentage());
|
||||||
handler.removeCallbacks(pollBufferRunnable);
|
handler.removeCallbacks(pollBufferRunnable);
|
||||||
handler.postDelayed(pollBufferRunnable, POLL_BUFFER_INTERVAL_MS);
|
handler.postDelayed(pollBufferRunnable, POLL_BUFFER_INTERVAL_MS);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void maybeNotifyBufferingEvents() {
|
private void maybeNotifyBufferingEvents() {
|
||||||
androidx.media2.common.MediaItem androidXMediaItem =
|
androidx.media2.common.MediaItem media2MediaItem =
|
||||||
Assertions.checkNotNull(getCurrentMediaItem());
|
Assertions.checkNotNull(getCurrentMediaItem());
|
||||||
if (prepared && !rebuffering) {
|
if (prepared && !rebuffering) {
|
||||||
rebuffering = true;
|
rebuffering = true;
|
||||||
listener.onBufferingStarted(androidXMediaItem);
|
listener.onBufferingStarted(media2MediaItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void maybeNotifyReadyEvents() {
|
private void maybeNotifyReadyEvents() {
|
||||||
androidx.media2.common.MediaItem androidXMediaItem =
|
androidx.media2.common.MediaItem media2MediaItem =
|
||||||
Assertions.checkNotNull(getCurrentMediaItem());
|
Assertions.checkNotNull(getCurrentMediaItem());
|
||||||
boolean prepareComplete = !prepared;
|
boolean prepareComplete = !prepared;
|
||||||
if (prepareComplete) {
|
if (prepareComplete) {
|
||||||
prepared = true;
|
prepared = true;
|
||||||
handlePositionDiscontinuity(Player.DISCONTINUITY_REASON_PERIOD_TRANSITION);
|
handlePositionDiscontinuity(Player.DISCONTINUITY_REASON_PERIOD_TRANSITION);
|
||||||
listener.onPlayerStateChanged(SessionPlayer.PLAYER_STATE_PAUSED);
|
listener.onPlayerStateChanged(SessionPlayer.PLAYER_STATE_PAUSED);
|
||||||
listener.onPrepared(androidXMediaItem, player.getBufferedPercentage());
|
listener.onPrepared(media2MediaItem, player.getBufferedPercentage());
|
||||||
}
|
}
|
||||||
if (rebuffering) {
|
if (rebuffering) {
|
||||||
rebuffering = false;
|
rebuffering = false;
|
||||||
listener.onBufferingEnded(androidXMediaItem, player.getBufferedPercentage());
|
listener.onBufferingEnded(media2MediaItem, player.getBufferedPercentage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -590,13 +587,13 @@ import java.util.List;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void releaseMediaItem(androidx.media2.common.MediaItem androidXMediaItem) {
|
private void releaseMediaItem(androidx.media2.common.MediaItem media2MediaItem) {
|
||||||
try {
|
try {
|
||||||
if (androidXMediaItem instanceof CallbackMediaItem) {
|
if (media2MediaItem instanceof CallbackMediaItem) {
|
||||||
((CallbackMediaItem) androidXMediaItem).getDataSourceCallback().close();
|
((CallbackMediaItem) media2MediaItem).getDataSourceCallback().close();
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Log.w(TAG, "Error releasing media item " + androidXMediaItem, e);
|
Log.w(TAG, "Error releasing media item " + media2MediaItem, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user