[go: nahoru, domu]

Move onSubtitleData from MediaPlayer to SessionPlayer

It also moves SubtitleData to media2-common.

Bug: 130514014
Test: ./gradlew -p media2 check connectedCheck &&
      ./media2/session/version-compat-tests/runtest.sh 1
Change-Id: I5d10411050fd6b1e3569a40f5f40c7a933bb54ac
diff --git a/media2/common/build.gradle b/media2/common/build.gradle
index d6aa841..a8a5b68 100644
--- a/media2/common/build.gradle
+++ b/media2/common/build.gradle
@@ -15,6 +15,11 @@
     implementation("androidx.collection:collection:1.0.0")
     compileOnly(CHECKER_FRAMEWORK)
 
+    androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
+    androidTestImplementation(ANDROIDX_TEST_CORE)
+    androidTestImplementation(ANDROIDX_TEST_RUNNER)
+    androidTestImplementation(ESPRESSO_CORE, libs.exclude_for_espresso)
+    androidTestImplementation project(':internal-testutils')
     annotationProcessor(project(":versionedparcelable-annotation"))
 }
 
diff --git a/media2/common/src/androidTest/AndroidManifest.xml b/media2/common/src/androidTest/AndroidManifest.xml
new file mode 100644
index 0000000..86d2b82
--- /dev/null
+++ b/media2/common/src/androidTest/AndroidManifest.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright 2019 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="androidx.media2.common.test">
+    <uses-sdk android:targetSdkVersion="${target-sdk-version}"/>
+</manifest>
diff --git a/media2/player/src/androidTest/java/androidx/media2/player/SubtitleDataTest.java b/media2/common/src/androidTest/java/androidx/media2/common/SubtitleDataTest.java
similarity index 90%
rename from media2/player/src/androidTest/java/androidx/media2/player/SubtitleDataTest.java
rename to media2/common/src/androidTest/java/androidx/media2/common/SubtitleDataTest.java
index d0a327d..92e282c 100644
--- a/media2/player/src/androidTest/java/androidx/media2/player/SubtitleDataTest.java
+++ b/media2/common/src/androidTest/java/androidx/media2/common/SubtitleDataTest.java
@@ -14,13 +14,13 @@
  * limitations under the License.
  */
 
-package androidx.media2.player;
+package androidx.media2.common;
 
 import static junit.framework.Assert.assertEquals;
 
 import android.media.MediaFormat;
 
-import androidx.media2.player.MediaPlayer.TrackInfo;
+import androidx.media2.common.SessionPlayer.TrackInfo;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
@@ -32,7 +32,7 @@
  */
 @RunWith(AndroidJUnit4.class)
 @SmallTest
-public class SubtitleDataTest extends MediaTestBase {
+public class SubtitleDataTest {
 
     @Test
     public void testConstructor() {
diff --git a/media2/common/src/main/java/androidx/media2/common/SessionPlayer.java b/media2/common/src/main/java/androidx/media2/common/SessionPlayer.java
index 6910da9..f3307a2 100644
--- a/media2/common/src/main/java/androidx/media2/common/SessionPlayer.java
+++ b/media2/common/src/main/java/androidx/media2/common/SessionPlayer.java
@@ -1196,6 +1196,19 @@
         public void onVideoSizeChangedInternal(
                 @NonNull SessionPlayer player, @NonNull MediaItem item, @NonNull VideoSize size) {
         }
+
+        /**
+         * Called when the player's subtitle track has new subtitle data available.
+         * @param player the player that reports the new subtitle data
+         * @param item the MediaItem of this media item
+         * @param data the subtitle data
+         *
+         * @hide
+         */
+        @RestrictTo(LIBRARY_GROUP)
+        public void onSubtitleData(@NonNull SessionPlayer player,
+                @NonNull MediaItem item, @NonNull SubtitleData data) {
+        }
     }
 
     /**
diff --git a/media2/player/src/main/java/androidx/media2/player/SubtitleData.java b/media2/common/src/main/java/androidx/media2/common/SubtitleData.java
similarity index 67%
rename from media2/player/src/main/java/androidx/media2/player/SubtitleData.java
rename to media2/common/src/main/java/androidx/media2/common/SubtitleData.java
index 32e08b3..02d445b 100644
--- a/media2/player/src/main/java/androidx/media2/player/SubtitleData.java
+++ b/media2/common/src/main/java/androidx/media2/common/SubtitleData.java
@@ -14,21 +14,19 @@
  * limitations under the License.
  */
 
-package androidx.media2.player;
+package androidx.media2.common;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.RestrictTo;
-import androidx.media2.common.MediaItem;
-import androidx.media2.common.SessionPlayer;
-import androidx.media2.player.MediaPlayer.TrackInfo;
+import androidx.media2.common.SessionPlayer.TrackInfo;
 
 import java.util.concurrent.Executor;
 
 /**
  * Class encapsulating subtitle data, as received through the
- * {@link MediaPlayer.PlayerCallback#onSubtitleData} interface.
+ * {@link SessionPlayer.PlayerCallback#onSubtitleData} interface.
  * The subtitle data includes:
  * <ul>
  * <li> the track index</li>
@@ -38,40 +36,17 @@
  * </ul>
  * The data is stored in a byte-array, and is encoded in one of the supported in-band
  * subtitle formats. The subtitle encoding is determined by the MIME type of the
- * {@link MediaPlayer.TrackInfo} of the subtitle track, one of
+ * {@link SessionPlayer.TrackInfo} of the subtitle track, one of
  * {@link #MIMETYPE_TEXT_CEA_608}, {@link #MIMETYPE_TEXT_CEA_708},
  * {@link #MIMETYPE_TEXT_VTT}.
- * <p>
- * Here is an example of iterating over the tracks of a {@link MediaPlayer}, and checking which
- * encoding is used for the subtitle tracks:
- * <p>
- * <pre class="prettyprint">
- * MediaPlayer mp = new MediaPlayer(context);
- * // prepare the player with a valid media item.
- * &hellip;
  *
- * final TrackInfo[] trackInfos = mp.getTrackInfo();
- * for (TrackInfo info : trackInfo) {
- *     if (info.getTrackType() == TrackInfo.MEDIA_TRACK_TYPE_SUBTITLE) {
- *         final String mime = info.getFormat().getString(MediaFormat.KEY_MIME);
- *         if (SubtitleData.MIMETYPE_TEXT_CEA_608.equals(mime) {
- *             // subtitle encoding is CEA 608
- *         } else if (SubtitleData.MIMETYPE_TEXT_CEA_708.equals(mime) {
- *             // subtitle encoding is CEA 708
- *         } else if (SubtitleData.MIMETYPE_TEXT_VTT.equals(mime) {
- *             // subtitle encoding is WebVTT
- *         }
- *     }
- * }
- * </pre>
- * <p>
- * @see MediaPlayer#registerPlayerCallback(Executor, SessionPlayer.PlayerCallback)
- * @see MediaPlayer.PlayerCallback#onSubtitleData(MediaPlayer, MediaItem, SubtitleData)
+ * @see SessionPlayer#registerPlayerCallback(Executor, SessionPlayer.PlayerCallback)
+ * @see SessionPlayer.PlayerCallback#onSubtitleData(SessionPlayer, MediaItem, SubtitleData)
  *
  * @hide
  */
 // TODO: replace this byte oriented data with structured data (b/130312596)
-@RestrictTo(LIBRARY_GROUP_PREFIX)
+@RestrictTo(LIBRARY_GROUP)
 public final class SubtitleData {
     private static final String TAG = "SubtitleData";
 
@@ -96,7 +71,7 @@
     private byte[] mData;
 
     /** @hide */
-    @RestrictTo(LIBRARY_GROUP_PREFIX)
+    @RestrictTo(LIBRARY_GROUP)
     public SubtitleData(@NonNull TrackInfo trackInfo,
             long startTimeUs, long durationUs, byte[] data) {
         mTrackInfo = trackInfo;
@@ -106,8 +81,8 @@
     }
 
     /**
-     * Returns metadata of the {@link MediaPlayer} track which contains this subtitle data.
-     * @return metadata of the {@link MediaPlayer} track which contains this subtitle data.
+     * Gets the track which contains this subtitle data.
+     * @return the {@link TrackInfo} which contains this subtitle data.
      */
     @NonNull
     public TrackInfo getTrackInfo() {
diff --git a/media2/player/src/androidTest/java/androidx/media2/player/MediaPlayer2Test.java b/media2/player/src/androidTest/java/androidx/media2/player/MediaPlayer2Test.java
index cb511c1..a699825 100644
--- a/media2/player/src/androidTest/java/androidx/media2/player/MediaPlayer2Test.java
+++ b/media2/player/src/androidTest/java/androidx/media2/player/MediaPlayer2Test.java
@@ -44,6 +44,7 @@
 import androidx.media2.common.DataSourceCallback;
 import androidx.media2.common.FileMediaItem;
 import androidx.media2.common.MediaItem;
+import androidx.media2.common.SubtitleData;
 import androidx.media2.common.UriMediaItem;
 import androidx.media2.player.TestUtils.Monitor;
 import androidx.media2.player.test.R;
diff --git a/media2/player/src/androidTest/java/androidx/media2/player/MediaPlayer2TestBase.java b/media2/player/src/androidTest/java/androidx/media2/player/MediaPlayer2TestBase.java
index 4df62a3..27defee 100644
--- a/media2/player/src/androidTest/java/androidx/media2/player/MediaPlayer2TestBase.java
+++ b/media2/player/src/androidTest/java/androidx/media2/player/MediaPlayer2TestBase.java
@@ -40,6 +40,7 @@
 import androidx.media.AudioAttributesCompat;
 import androidx.media2.common.FileMediaItem;
 import androidx.media2.common.MediaItem;
+import androidx.media2.common.SubtitleData;
 import androidx.media2.common.UriMediaItem;
 import androidx.media2.player.TestUtils.Monitor;
 import androidx.test.platform.app.InstrumentationRegistry;
diff --git a/media2/player/src/androidTest/java/androidx/media2/player/MediaPlayerTest.java b/media2/player/src/androidTest/java/androidx/media2/player/MediaPlayerTest.java
index de69fc9..7b4df7b 100644
--- a/media2/player/src/androidTest/java/androidx/media2/player/MediaPlayerTest.java
+++ b/media2/player/src/androidTest/java/androidx/media2/player/MediaPlayerTest.java
@@ -43,6 +43,7 @@
 import androidx.media2.common.MediaItem;
 import androidx.media2.common.SessionPlayer;
 import androidx.media2.common.SessionPlayer.PlayerResult;
+import androidx.media2.common.SubtitleData;
 import androidx.media2.player.MediaPlayer.TrackInfo;
 import androidx.media2.player.TestUtils.Monitor;
 import androidx.media2.player.test.R;
@@ -608,7 +609,7 @@
             }
 
             @Override
-            public void onSubtitleData(MediaPlayer mp, MediaItem dsd, SubtitleData data) {
+            public void onSubtitleData(SessionPlayer player, MediaItem item, SubtitleData data) {
                 if (data != null && data.getData() != null) {
                     mOnSubtitleDataCalled.signal();
                 }
@@ -665,7 +666,7 @@
 
             @Override
             public void onSubtitleData(
-                    MediaPlayer mp, MediaItem dsd, SubtitleData data) {
+                    SessionPlayer player, MediaItem item, SubtitleData data) {
                 if (data != null && data.getData() != null) {
                     mOnSubtitleDataCalled.signal();
                 }
diff --git a/media2/player/src/main/java/androidx/media2/player/MediaPlayer.java b/media2/player/src/main/java/androidx/media2/player/MediaPlayer.java
index 2b0b881..8471482 100644
--- a/media2/player/src/main/java/androidx/media2/player/MediaPlayer.java
+++ b/media2/player/src/main/java/androidx/media2/player/MediaPlayer.java
@@ -55,6 +55,7 @@
 import androidx.media2.common.MediaItem;
 import androidx.media2.common.MediaMetadata;
 import androidx.media2.common.SessionPlayer;
+import androidx.media2.common.SubtitleData;
 import androidx.media2.common.UriMediaItem;
 
 import com.google.common.util.concurrent.ListenableFuture;
@@ -2842,9 +2843,9 @@
         @Override
         public void onSubtitleData(
                 MediaPlayer2 mp, final MediaItem item, final SubtitleData data) {
-            notifyMediaPlayerCallback(new MediaPlayerCallbackNotifier() {
+            notifySessionPlayerCallback(new SessionPlayerCallbackNotifier() {
                 @Override
-                public void callCallback(PlayerCallback callback) {
+                public void callCallback(SessionPlayer.PlayerCallback callback) {
                     callback.onSubtitleData(MediaPlayer.this, item, data);
                 }
             });
@@ -2952,18 +2953,6 @@
                 @NonNull MediaItem item, @NonNull MediaTimestamp timestamp) { }
 
         /**
-         * Called when when a player subtitle track has new subtitle data available.
-         * @param mp the player that reports the new subtitle data
-         * @param item the MediaItem of this media item
-         * @param data the subtitle data
-         *
-         * @hide
-         */
-        @RestrictTo(LIBRARY_GROUP_PREFIX)
-        public void onSubtitleData(@NonNull MediaPlayer mp,
-                @NonNull MediaItem item, @NonNull SubtitleData data) { }
-
-        /**
          * Called to indicate DRM info is available
          *
          * @param mp the {@code MediaPlayer2} associated with this callback
diff --git a/media2/player/src/main/java/androidx/media2/player/MediaPlayer2.java b/media2/player/src/main/java/androidx/media2/player/MediaPlayer2.java
index 5840926..3a8035a 100644
--- a/media2/player/src/main/java/androidx/media2/player/MediaPlayer2.java
+++ b/media2/player/src/main/java/androidx/media2/player/MediaPlayer2.java
@@ -37,6 +37,7 @@
 import androidx.media.AudioAttributesCompat;
 import androidx.media2.common.FileMediaItem;
 import androidx.media2.common.MediaItem;
+import androidx.media2.common.SubtitleData;
 import androidx.media2.player.exoplayer.ExoPlayerMediaPlayer2Impl;
 
 import java.lang.annotation.Retention;
diff --git a/media2/player/src/main/java/androidx/media2/player/MediaPlayer2Impl.java b/media2/player/src/main/java/androidx/media2/player/MediaPlayer2Impl.java
index bf1a24b..8dee893 100644
--- a/media2/player/src/main/java/androidx/media2/player/MediaPlayer2Impl.java
+++ b/media2/player/src/main/java/androidx/media2/player/MediaPlayer2Impl.java
@@ -52,6 +52,7 @@
 import androidx.media2.common.SessionPlayer;
 import androidx.media2.common.SessionPlayer.BuffState;
 import androidx.media2.common.SessionPlayer.PlayerState;
+import androidx.media2.common.SubtitleData;
 import androidx.media2.common.UriMediaItem;
 import androidx.media2.player.common.TrackInfoImpl;
 
@@ -1111,7 +1112,11 @@
                         final long durationUs = data.getDurationUs();
                         final byte[] bytes = data.getData();
                         androidx.media2.player.MediaPlayer.TrackInfo info = getTrackInfo(idx);
-                        SubtitleData sub = new SubtitleData(info, startTimeUs, durationUs, bytes);
+                        SessionPlayer.TrackInfo infoInternal = new SessionPlayer.TrackInfo(
+                                info.getId(), info.getMediaItem(), info.getTrackType(),
+                                info.getFormat());
+                        SubtitleData sub = new SubtitleData(infoInternal, startTimeUs, durationUs,
+                                bytes);
                         cb.onSubtitleData(MediaPlayer2Impl.this, src.getDSD(), sub);
                     }
                 });
diff --git a/media2/player/src/main/java/androidx/media2/player/exoplayer/ExoPlayerMediaPlayer2Impl.java b/media2/player/src/main/java/androidx/media2/player/exoplayer/ExoPlayerMediaPlayer2Impl.java
index 69e00e0..56da916 100644
--- a/media2/player/src/main/java/androidx/media2/player/exoplayer/ExoPlayerMediaPlayer2Impl.java
+++ b/media2/player/src/main/java/androidx/media2/player/exoplayer/ExoPlayerMediaPlayer2Impl.java
@@ -38,11 +38,11 @@
 import androidx.core.util.Preconditions;
 import androidx.media.AudioAttributesCompat;
 import androidx.media2.common.MediaItem;
+import androidx.media2.common.SubtitleData;
 import androidx.media2.exoplayer.external.Player;
 import androidx.media2.player.MediaPlayer2;
 import androidx.media2.player.MediaTimestamp;
 import androidx.media2.player.PlaybackParams;
-import androidx.media2.player.SubtitleData;
 import androidx.media2.player.TimedMetaData;
 
 import java.io.IOException;
diff --git a/media2/player/src/main/java/androidx/media2/player/exoplayer/ExoPlayerUtils.java b/media2/player/src/main/java/androidx/media2/player/exoplayer/ExoPlayerUtils.java
index 5399fa0..aaad228 100644
--- a/media2/player/src/main/java/androidx/media2/player/exoplayer/ExoPlayerUtils.java
+++ b/media2/player/src/main/java/androidx/media2/player/exoplayer/ExoPlayerUtils.java
@@ -17,6 +17,8 @@
 package androidx.media2.player.exoplayer;
 
 import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;
+import static androidx.media2.common.SubtitleData.MIMETYPE_TEXT_CEA_608;
+import static androidx.media2.common.SubtitleData.MIMETYPE_TEXT_CEA_708;
 import static androidx.media2.player.MediaPlayer2.MEDIA_ERROR_IO;
 import static androidx.media2.player.MediaPlayer2.MEDIA_ERROR_MALFORMED;
 import static androidx.media2.player.MediaPlayer2.MEDIA_ERROR_TIMED_OUT;
@@ -27,8 +29,6 @@
 import static androidx.media2.player.MediaPlayer2.TrackInfo.MEDIA_TRACK_TYPE_TIMEDTEXT;
 import static androidx.media2.player.MediaPlayer2.TrackInfo.MEDIA_TRACK_TYPE_UNKNOWN;
 import static androidx.media2.player.MediaPlayer2.TrackInfo.MEDIA_TRACK_TYPE_VIDEO;
-import static androidx.media2.player.SubtitleData.MIMETYPE_TEXT_CEA_608;
-import static androidx.media2.player.SubtitleData.MIMETYPE_TEXT_CEA_708;
 
 import android.annotation.SuppressLint;
 import android.content.ContentResolver;
diff --git a/media2/player/src/main/java/androidx/media2/player/exoplayer/ExoPlayerWrapper.java b/media2/player/src/main/java/androidx/media2/player/exoplayer/ExoPlayerWrapper.java
index 6fb88df..61f94dc 100644
--- a/media2/player/src/main/java/androidx/media2/player/exoplayer/ExoPlayerWrapper.java
+++ b/media2/player/src/main/java/androidx/media2/player/exoplayer/ExoPlayerWrapper.java
@@ -37,6 +37,8 @@
 import androidx.media2.common.CallbackMediaItem;
 import androidx.media2.common.FileMediaItem;
 import androidx.media2.common.MediaItem;
+import androidx.media2.common.SessionPlayer;
+import androidx.media2.common.SubtitleData;
 import androidx.media2.common.UriMediaItem;
 import androidx.media2.exoplayer.external.C;
 import androidx.media2.exoplayer.external.DefaultLoadControl;
@@ -67,12 +69,10 @@
 import androidx.media2.exoplayer.external.util.MimeTypes;
 import androidx.media2.exoplayer.external.util.Util;
 import androidx.media2.exoplayer.external.video.VideoRendererEventListener;
-import androidx.media2.player.MediaPlayer;
 import androidx.media2.player.MediaPlayer2;
 import androidx.media2.player.MediaPlayer2.TrackInfo;
 import androidx.media2.player.MediaTimestamp;
 import androidx.media2.player.PlaybackParams;
-import androidx.media2.player.SubtitleData;
 import androidx.media2.player.TimedMetaData;
 
 import java.io.FileDescriptor;
@@ -610,7 +610,7 @@
         int trackIndex = mTrackSelector.getSelectedTrack(MEDIA_TRACK_TYPE_SUBTITLE);
         TrackInfo info2 = mTrackSelector.getTrackInfos().get(trackIndex);
         final MediaItem currentMediaItem = getCurrentMediaItem();
-        MediaPlayer.TrackInfo info = new MediaPlayer.TrackInfo(trackIndex,
+        SessionPlayer.TrackInfo info = new SessionPlayer.TrackInfo(trackIndex,
                 currentMediaItem, info2.getTrackType(), info2.getFormat());
         mListener.onSubtitleData(currentMediaItem,
                 new SubtitleData(info, timeUs, /* durationUs= */ 0L, data));
diff --git a/media2/player/src/main/java/androidx/media2/player/subtitle/SubtitleTrack.java b/media2/player/src/main/java/androidx/media2/player/subtitle/SubtitleTrack.java
index 7398792..f95c4f5 100644
--- a/media2/player/src/main/java/androidx/media2/player/subtitle/SubtitleTrack.java
+++ b/media2/player/src/main/java/androidx/media2/player/subtitle/SubtitleTrack.java
@@ -27,7 +27,7 @@
 import android.util.Pair;
 
 import androidx.annotation.RestrictTo;
-import androidx.media2.player.SubtitleData;
+import androidx.media2.common.SubtitleData;
 
 import java.util.ArrayList;
 import java.util.Iterator;
diff --git a/media2/widget/src/main/java/androidx/media2/widget/VideoView.java b/media2/widget/src/main/java/androidx/media2/widget/VideoView.java
index 2fb75be..7d6a0cd 100644
--- a/media2/widget/src/main/java/androidx/media2/widget/VideoView.java
+++ b/media2/widget/src/main/java/androidx/media2/widget/VideoView.java
@@ -46,10 +46,10 @@
 import androidx.media2.common.MediaItem;
 import androidx.media2.common.MediaMetadata;
 import androidx.media2.common.SessionPlayer;
+import androidx.media2.common.SessionPlayer.TrackInfo;
+import androidx.media2.common.SubtitleData;
 import androidx.media2.common.UriMediaItem;
 import androidx.media2.player.MediaPlayer;
-import androidx.media2.player.MediaPlayer.TrackInfo;
-import androidx.media2.player.SubtitleData;
 import androidx.media2.player.VideoSize;
 import androidx.media2.player.subtitle.Cea708CaptionRenderer;
 import androidx.media2.player.subtitle.ClosedCaptionRenderer;
@@ -691,7 +691,7 @@
                 @Override
                 public void onSubtitleTrackSelected(SubtitleTrack track) {
                     if (track == null) {
-                        mMediaPlayer.deselectTrack(mSelectedSubtitleTrackInfo);
+                        mMediaPlayer.deselectTrackInternal(mSelectedSubtitleTrackInfo);
                         mSelectedSubtitleTrackInfo = null;
                         mSubtitleAnchorView.setVisibility(View.GONE);
 
@@ -709,7 +709,7 @@
                         indexInSubtitleTrackList++;
                     }
                     if (info != null) {
-                        mMediaPlayer.selectTrack(info);
+                        mMediaPlayer.selectTrackInternal(info);
                         mSelectedSubtitleTrackInfo = info;
                         mSubtitleAnchorView.setVisibility(View.VISIBLE);
 
@@ -781,7 +781,7 @@
             throw new IllegalStateException(
                     "extractTrackInfo() is unexpectedly called. Media item is not prepared");
         }
-        List<MediaPlayer.TrackInfo> trackInfos = mMediaPlayer.getTrackInfo();
+        List<TrackInfo> trackInfos = mMediaPlayer.getTrackInfoInternal();
         mVideoTrackCount = 0;
         mAudioTrackInfos = new ArrayList<>();
         mSubtitleTracks = new LinkedHashMap<>();
@@ -933,25 +933,25 @@
 
                 @Override
                 public void onSubtitleData(
-                        @NonNull MediaPlayer mp, @NonNull MediaItem dsd,
+                        @NonNull SessionPlayer player, @NonNull MediaItem item,
                         @NonNull SubtitleData data) {
                     final TrackInfo trackInfo = data.getTrackInfo();
                     if (DEBUG) {
                         Log.d(TAG, "onSubtitleData():"
                                 + " getTrackInfo: " + trackInfo
-                                + ", getCurrentPosition: " + mp.getCurrentPosition()
+                                + ", getCurrentPosition: " + player.getCurrentPosition()
                                 + ", getStartTimeUs(): " + data.getStartTimeUs()
                                 + ", diff: "
-                                + (data.getStartTimeUs() / 1000 - mp.getCurrentPosition())
+                                + (data.getStartTimeUs() / 1000 - player.getCurrentPosition())
                                 + "ms, getDurationUs(): " + data.getDurationUs());
                     }
-                    if (mp != mMediaPlayer) {
+                    if (player != mMediaPlayer) {
                         if (DEBUG) {
-                            Log.w(TAG, "onSubtitleData() is ignored. mp is already gone.");
+                            Log.w(TAG, "onSubtitleData() is ignored. player is already gone.");
                         }
                         return;
                     }
-                    if (dsd != mMediaItem) {
+                    if (item != mMediaItem) {
                         if (DEBUG) {
                             Log.w(TAG, "onSubtitleData() is ignored. Media item is changed.");
                         }
@@ -1125,7 +1125,7 @@
                         TrackInfo audioTrackInfo = mAudioTrackInfos.get(audioIndex);
                         if (!audioTrackInfo.equals(mSelectedAudioTrackInfo)) {
                             mSelectedAudioTrackInfo = audioTrackInfo;
-                            mMediaPlayer.selectTrack(mSelectedAudioTrackInfo);
+                            mMediaPlayer.selectTrackInternal(mSelectedAudioTrackInfo);
                         }
                     }
                     break;