From 1534b3c02408e49dce48a90eae9bd489f5f343fa Mon Sep 17 00:00:00 2001 From: FongMi Date: Fri, 9 Jun 2023 12:45:30 +0800 Subject: [PATCH] Update IjkVideoView.java --- .../danmaku/ijk/media/player/ui/IjkVideoView.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java index 8cd87488f..3626214c2 100644 --- a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java +++ b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java @@ -42,6 +42,10 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl private static final int STATE_PAUSED = 4; private static final int STATE_PLAYBACK_COMPLETED = 5; + private static final int PLAYER_NONE = -1; + private static final int PLAYER_SYS = 0; + private static final int PLAYER_IJK = 1; + private static final int RENDER_SURFACE_VIEW = 0; private static final int RENDER_TEXTURE_VIEW = 1; @@ -52,6 +56,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl private int mCurrentState; private int mCurrentDecode; private int mCurrentRender; + private int mCurrentPlayer; private int mCurrentAspectRatio; private int mStartPosition; @@ -85,6 +90,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl if (attrs != null) initAttr(context, attrs, defStyleAttr); mContentFrame = findViewById(R.id.ijk_content_frame); mSubtitleView = findViewById(R.id.ijk_subtitle); + mCurrentPlayer = PLAYER_NONE; mCurrentState = STATE_IDLE; mTargetState = STATE_IDLE; mCurrentSpeed = 1.0f; @@ -110,11 +116,14 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl } public void setPlayer(int type) { + if (mCurrentPlayer == type) return; + if (mPlayer != null) release(); + mCurrentPlayer = type; switch (type) { - case 0: + case PLAYER_SYS: mPlayer = new AndroidMediaPlayer().setListener(this); break; - case 1: + case PLAYER_IJK: mPlayer = new IjkMediaPlayer().setListener(this); break; } @@ -214,6 +223,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl public void release() { if (mPlayer == null) return; + mCurrentPlayer = PLAYER_NONE; mPlayer.release(); mPlayer = null; reset();