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:
jaewan 2020-08-18 18:50:47 +01:00 committed by Oliver Woodman
parent e6d36e8b92
commit 4782e227eb
3 changed files with 63 additions and 66 deletions

View File

@ -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);

View File

@ -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);
} }

View File

@ -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);
} }
} }