Commit 4782e227 by jaewan Committed by Oliver Woodman

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
parent e6d36e8b
...@@ -29,27 +29,27 @@ import com.google.android.exoplayer2.util.Assertions; ...@@ -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 { ...@@ -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 { ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment