Loading media/java/android/media/MediaPlayer2.java +15 −39 Original line number Diff line number Diff line Loading @@ -883,15 +883,6 @@ public abstract class MediaPlayer2 implements SubtitleController.Listener // This is a synchronous call. public abstract void clearPendingCommands(); /** * Stops playback after playback has been started or paused. * * @throws IllegalStateException if the internal player engine has not been * initialized. * @hide */ public void stop() { } //-------------------------------------------------------------------------- // Explicit Routing //-------------------- Loading Loading @@ -1714,7 +1705,7 @@ public abstract class MediaPlayer2 implements SubtitleController.Listener * @param dsd the DataSourceDesc of this data source * @param timestamp the new media clock. */ public void onMediaTimeChanged( public void onMediaTimeDiscontinuity( MediaPlayer2 mp, DataSourceDesc dsd, MediaTimestamp timestamp) { } /** Loading @@ -1725,44 +1716,34 @@ public abstract class MediaPlayer2 implements SubtitleController.Listener * {@link #notifyWhenCommandLabelReached(Object)}. */ public void onCommandLabelReached(MediaPlayer2 mp, @NonNull Object label) { } /** * Called when when a player subtitle track has new subtitle data available. * @param mp the player that reports the new subtitle data * @param dsd the DataSourceDesc of this data source * @param data the subtitle data */ public void onSubtitleData( MediaPlayer2 mp, DataSourceDesc dsd, @NonNull SubtitleData data) { } } /** * Sets the callback to be invoked when the media source is ready for playback. * * @param eventCallback the callback that will be run * @param executor the executor through which the callback should be invoked * @param eventCallback the callback that will be run */ // This is a synchronous call. public abstract void setEventCallback(@NonNull @CallbackExecutor Executor executor, public abstract void registerEventCallback(@NonNull @CallbackExecutor Executor executor, @NonNull EventCallback eventCallback); /** * Clears the {@link EventCallback}. */ // This is a synchronous call. public abstract void clearEventCallback(); /** * Interface definition of a callback to be invoked when a * track has data available. * Unregisters the {@link EventCallback}. * * @hide */ public interface OnSubtitleDataListener { public void onSubtitleData(MediaPlayer2 mp, SubtitleData data); } /** * Register a callback to be invoked when a track has data available. * * @param listener the callback that will be run * * @hide * @param eventCallback the callback to be unregistered */ // This is a synchronous call. public void setOnSubtitleDataListener(OnSubtitleDataListener listener) { } public abstract void unregisterEventCallback(EventCallback eventCallback); /* Do not change these values without updating their counterparts Loading Loading @@ -2056,11 +2037,6 @@ public abstract class MediaPlayer2 implements SubtitleController.Listener */ public static final int CALL_COMPLETED_SET_PLAYBACK_PARAMS = 24; /** The player just completed a call {@link #setPlaybackSpeed}. * @see android.media.MediaPlayer2.EventCallback#onCallCompleted */ public static final int CALL_COMPLETED_SET_PLAYBACK_SPEED = 25; /** The player just completed a call {@link #setPlayerVolume}. * @see android.media.MediaPlayer2.EventCallback#onCallCompleted */ Loading media/java/android/media/MediaPlayer2Impl.java +20 −43 Original line number Diff line number Diff line Loading @@ -998,20 +998,6 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { private native int _getAudioStreamType() throws IllegalStateException; /** * Stops playback after playback has been started or paused. * * @throws IllegalStateException if the internal player engine has not been * initialized. * #hide */ @Override public void stop() { stayAwake(false); _stop(); } private native void _stop() throws IllegalStateException; //-------------------------------------------------------------------------- // Explicit Routing Loading Loading @@ -2059,9 +2045,9 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { private int mSelectedSubtitleTrackIndex = -1; private Vector<InputStream> mOpenSubtitleSources; private OnSubtitleDataListener mSubtitleDataListener = new OnSubtitleDataListener() { private EventCallback mSubtitleDataCallback = new EventCallback() { @Override public void onSubtitleData(MediaPlayer2 mp, SubtitleData data) { public void onSubtitleData(MediaPlayer2 mp, DataSourceDesc dsd, SubtitleData data) { int index = data.getTrackIndex(); synchronized (mIndexTrackPairs) { for (Pair<Integer, SubtitleTrack> p : mIndexTrackPairs) { Loading @@ -2085,7 +2071,7 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { } mSelectedSubtitleTrackIndex = -1; } setOnSubtitleDataListener(null); unregisterEventCallback(mSubtitleDataCallback); if (track == null) { return; } Loading @@ -2105,7 +2091,8 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { selectOrDeselectInbandTrack(mSelectedSubtitleTrackIndex, true); } catch (IllegalStateException e) { } setOnSubtitleDataListener(mSubtitleDataListener); final Executor executor = (runnable) -> mEventHandler.post(runnable); registerEventCallback(executor, mSubtitleDataCallback); } // no need to select out-of-band tracks } Loading Loading @@ -2628,7 +2615,6 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { mTimeProvider.close(); mTimeProvider = null; } mOnSubtitleDataListener = null; // Modular DRM clean up mOnDrmConfigHelper = null; Loading Loading @@ -2969,7 +2955,8 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { synchronized (mEventCbLock) { for (Pair<Executor, EventCallback> cb : mEventCallbackRecords) { cb.first.execute(() -> cb.second.onTimedText(mMediaPlayer, mCurrentDSD, text)); cb.first.execute(() -> cb.second.onTimedText( mMediaPlayer, mCurrentDSD, text)); } } return; Loading @@ -2977,15 +2964,16 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { case MEDIA_SUBTITLE_DATA: { OnSubtitleDataListener onSubtitleDataListener = mOnSubtitleDataListener; if (onSubtitleDataListener == null) { return; } if (msg.obj instanceof Parcel) { Parcel parcel = (Parcel) msg.obj; SubtitleData data = new SubtitleData(parcel); parcel.recycle(); onSubtitleDataListener.onSubtitleData(mMediaPlayer, data); synchronized (mEventCbLock) { for (Pair<Executor, EventCallback> cb : mEventCallbackRecords) { cb.first.execute(() -> cb.second.onSubtitleData( mMediaPlayer, mCurrentDSD, data)); } } } return; } Loading Loading @@ -3118,7 +3106,7 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { * @param executor the executor through which the callback should be invoked */ @Override public void setEventCallback(@NonNull @CallbackExecutor Executor executor, public void registerEventCallback(@NonNull @CallbackExecutor Executor executor, @NonNull EventCallback eventCallback) { if (eventCallback == null) { throw new IllegalArgumentException("Illegal null EventCallback"); Loading @@ -3136,26 +3124,15 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { * Clears the {@link EventCallback}. */ @Override public void clearEventCallback() { public void unregisterEventCallback(EventCallback eventCallback) { synchronized (mEventCbLock) { mEventCallbackRecords.clear(); for (Pair<Executor, EventCallback> cb : mEventCallbackRecords) { if (cb.second == eventCallback) { mEventCallbackRecords.remove(cb); } } } /** * Register a callback to be invoked when a track has data available. * * @param listener the callback that will be run * * @hide */ @Override public void setOnSubtitleDataListener(OnSubtitleDataListener listener) { mOnSubtitleDataListener = listener; } private OnSubtitleDataListener mOnSubtitleDataListener; // Modular DRM begin Loading media/jni/android_media_MediaPlayer2.cpp +0 −13 Original line number Diff line number Diff line Loading @@ -567,18 +567,6 @@ android_media_MediaPlayer2_start(JNIEnv *env, jobject thiz) process_media_player_call( env, thiz, mp->start(), NULL, NULL ); } static void android_media_MediaPlayer2_stop(JNIEnv *env, jobject thiz) { ALOGV("stop"); sp<MediaPlayer2> mp = getMediaPlayer(env, thiz); if (mp == NULL ) { jniThrowException(env, "java/lang/IllegalStateException", NULL); return; } process_media_player_call( env, thiz, mp->stop(), NULL, NULL ); } static void android_media_MediaPlayer2_pause(JNIEnv *env, jobject thiz) { Loading Loading @@ -1501,7 +1489,6 @@ static const JNINativeMethod gMethods[] = { {"_setBufferingParams", "(Landroid/media/BufferingParams;)V", (void *)android_media_MediaPlayer2_setBufferingParams}, {"_prepare", "()V", (void *)android_media_MediaPlayer2_prepare}, {"_start", "()V", (void *)android_media_MediaPlayer2_start}, {"_stop", "()V", (void *)android_media_MediaPlayer2_stop}, {"native_getState", "()I", (void *)android_media_MediaPlayer2_getState}, {"getVideoWidth", "()I", (void *)android_media_MediaPlayer2_getVideoWidth}, {"getVideoHeight", "()I", (void *)android_media_MediaPlayer2_getVideoHeight}, Loading Loading
media/java/android/media/MediaPlayer2.java +15 −39 Original line number Diff line number Diff line Loading @@ -883,15 +883,6 @@ public abstract class MediaPlayer2 implements SubtitleController.Listener // This is a synchronous call. public abstract void clearPendingCommands(); /** * Stops playback after playback has been started or paused. * * @throws IllegalStateException if the internal player engine has not been * initialized. * @hide */ public void stop() { } //-------------------------------------------------------------------------- // Explicit Routing //-------------------- Loading Loading @@ -1714,7 +1705,7 @@ public abstract class MediaPlayer2 implements SubtitleController.Listener * @param dsd the DataSourceDesc of this data source * @param timestamp the new media clock. */ public void onMediaTimeChanged( public void onMediaTimeDiscontinuity( MediaPlayer2 mp, DataSourceDesc dsd, MediaTimestamp timestamp) { } /** Loading @@ -1725,44 +1716,34 @@ public abstract class MediaPlayer2 implements SubtitleController.Listener * {@link #notifyWhenCommandLabelReached(Object)}. */ public void onCommandLabelReached(MediaPlayer2 mp, @NonNull Object label) { } /** * Called when when a player subtitle track has new subtitle data available. * @param mp the player that reports the new subtitle data * @param dsd the DataSourceDesc of this data source * @param data the subtitle data */ public void onSubtitleData( MediaPlayer2 mp, DataSourceDesc dsd, @NonNull SubtitleData data) { } } /** * Sets the callback to be invoked when the media source is ready for playback. * * @param eventCallback the callback that will be run * @param executor the executor through which the callback should be invoked * @param eventCallback the callback that will be run */ // This is a synchronous call. public abstract void setEventCallback(@NonNull @CallbackExecutor Executor executor, public abstract void registerEventCallback(@NonNull @CallbackExecutor Executor executor, @NonNull EventCallback eventCallback); /** * Clears the {@link EventCallback}. */ // This is a synchronous call. public abstract void clearEventCallback(); /** * Interface definition of a callback to be invoked when a * track has data available. * Unregisters the {@link EventCallback}. * * @hide */ public interface OnSubtitleDataListener { public void onSubtitleData(MediaPlayer2 mp, SubtitleData data); } /** * Register a callback to be invoked when a track has data available. * * @param listener the callback that will be run * * @hide * @param eventCallback the callback to be unregistered */ // This is a synchronous call. public void setOnSubtitleDataListener(OnSubtitleDataListener listener) { } public abstract void unregisterEventCallback(EventCallback eventCallback); /* Do not change these values without updating their counterparts Loading Loading @@ -2056,11 +2037,6 @@ public abstract class MediaPlayer2 implements SubtitleController.Listener */ public static final int CALL_COMPLETED_SET_PLAYBACK_PARAMS = 24; /** The player just completed a call {@link #setPlaybackSpeed}. * @see android.media.MediaPlayer2.EventCallback#onCallCompleted */ public static final int CALL_COMPLETED_SET_PLAYBACK_SPEED = 25; /** The player just completed a call {@link #setPlayerVolume}. * @see android.media.MediaPlayer2.EventCallback#onCallCompleted */ Loading
media/java/android/media/MediaPlayer2Impl.java +20 −43 Original line number Diff line number Diff line Loading @@ -998,20 +998,6 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { private native int _getAudioStreamType() throws IllegalStateException; /** * Stops playback after playback has been started or paused. * * @throws IllegalStateException if the internal player engine has not been * initialized. * #hide */ @Override public void stop() { stayAwake(false); _stop(); } private native void _stop() throws IllegalStateException; //-------------------------------------------------------------------------- // Explicit Routing Loading Loading @@ -2059,9 +2045,9 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { private int mSelectedSubtitleTrackIndex = -1; private Vector<InputStream> mOpenSubtitleSources; private OnSubtitleDataListener mSubtitleDataListener = new OnSubtitleDataListener() { private EventCallback mSubtitleDataCallback = new EventCallback() { @Override public void onSubtitleData(MediaPlayer2 mp, SubtitleData data) { public void onSubtitleData(MediaPlayer2 mp, DataSourceDesc dsd, SubtitleData data) { int index = data.getTrackIndex(); synchronized (mIndexTrackPairs) { for (Pair<Integer, SubtitleTrack> p : mIndexTrackPairs) { Loading @@ -2085,7 +2071,7 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { } mSelectedSubtitleTrackIndex = -1; } setOnSubtitleDataListener(null); unregisterEventCallback(mSubtitleDataCallback); if (track == null) { return; } Loading @@ -2105,7 +2091,8 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { selectOrDeselectInbandTrack(mSelectedSubtitleTrackIndex, true); } catch (IllegalStateException e) { } setOnSubtitleDataListener(mSubtitleDataListener); final Executor executor = (runnable) -> mEventHandler.post(runnable); registerEventCallback(executor, mSubtitleDataCallback); } // no need to select out-of-band tracks } Loading Loading @@ -2628,7 +2615,6 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { mTimeProvider.close(); mTimeProvider = null; } mOnSubtitleDataListener = null; // Modular DRM clean up mOnDrmConfigHelper = null; Loading Loading @@ -2969,7 +2955,8 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { synchronized (mEventCbLock) { for (Pair<Executor, EventCallback> cb : mEventCallbackRecords) { cb.first.execute(() -> cb.second.onTimedText(mMediaPlayer, mCurrentDSD, text)); cb.first.execute(() -> cb.second.onTimedText( mMediaPlayer, mCurrentDSD, text)); } } return; Loading @@ -2977,15 +2964,16 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { case MEDIA_SUBTITLE_DATA: { OnSubtitleDataListener onSubtitleDataListener = mOnSubtitleDataListener; if (onSubtitleDataListener == null) { return; } if (msg.obj instanceof Parcel) { Parcel parcel = (Parcel) msg.obj; SubtitleData data = new SubtitleData(parcel); parcel.recycle(); onSubtitleDataListener.onSubtitleData(mMediaPlayer, data); synchronized (mEventCbLock) { for (Pair<Executor, EventCallback> cb : mEventCallbackRecords) { cb.first.execute(() -> cb.second.onSubtitleData( mMediaPlayer, mCurrentDSD, data)); } } } return; } Loading Loading @@ -3118,7 +3106,7 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { * @param executor the executor through which the callback should be invoked */ @Override public void setEventCallback(@NonNull @CallbackExecutor Executor executor, public void registerEventCallback(@NonNull @CallbackExecutor Executor executor, @NonNull EventCallback eventCallback) { if (eventCallback == null) { throw new IllegalArgumentException("Illegal null EventCallback"); Loading @@ -3136,26 +3124,15 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { * Clears the {@link EventCallback}. */ @Override public void clearEventCallback() { public void unregisterEventCallback(EventCallback eventCallback) { synchronized (mEventCbLock) { mEventCallbackRecords.clear(); for (Pair<Executor, EventCallback> cb : mEventCallbackRecords) { if (cb.second == eventCallback) { mEventCallbackRecords.remove(cb); } } } /** * Register a callback to be invoked when a track has data available. * * @param listener the callback that will be run * * @hide */ @Override public void setOnSubtitleDataListener(OnSubtitleDataListener listener) { mOnSubtitleDataListener = listener; } private OnSubtitleDataListener mOnSubtitleDataListener; // Modular DRM begin Loading
media/jni/android_media_MediaPlayer2.cpp +0 −13 Original line number Diff line number Diff line Loading @@ -567,18 +567,6 @@ android_media_MediaPlayer2_start(JNIEnv *env, jobject thiz) process_media_player_call( env, thiz, mp->start(), NULL, NULL ); } static void android_media_MediaPlayer2_stop(JNIEnv *env, jobject thiz) { ALOGV("stop"); sp<MediaPlayer2> mp = getMediaPlayer(env, thiz); if (mp == NULL ) { jniThrowException(env, "java/lang/IllegalStateException", NULL); return; } process_media_player_call( env, thiz, mp->stop(), NULL, NULL ); } static void android_media_MediaPlayer2_pause(JNIEnv *env, jobject thiz) { Loading Loading @@ -1501,7 +1489,6 @@ static const JNINativeMethod gMethods[] = { {"_setBufferingParams", "(Landroid/media/BufferingParams;)V", (void *)android_media_MediaPlayer2_setBufferingParams}, {"_prepare", "()V", (void *)android_media_MediaPlayer2_prepare}, {"_start", "()V", (void *)android_media_MediaPlayer2_start}, {"_stop", "()V", (void *)android_media_MediaPlayer2_stop}, {"native_getState", "()I", (void *)android_media_MediaPlayer2_getState}, {"getVideoWidth", "()I", (void *)android_media_MediaPlayer2_getVideoWidth}, {"getVideoHeight", "()I", (void *)android_media_MediaPlayer2_getVideoHeight}, Loading