From fc4dffe36da6f883bb5ccc29f94f2e6521f4b3ec Mon Sep 17 00:00:00 2001 From: FongMi Date: Fri, 25 Nov 2022 01:02:38 +0800 Subject: [PATCH] Update IjkVideoView.java --- .../ijk/media/player/ui/IjkVideoView.java | 38 ++++++------------- 1 file changed, 12 insertions(+), 26 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 9418f215c..cb3e35064 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 @@ -10,7 +10,6 @@ import android.util.AttributeSet; import android.util.Log; import android.util.Size; import android.view.Gravity; -import android.view.View; import android.widget.FrameLayout; import android.widget.MediaController; import android.widget.TextView; @@ -43,13 +42,11 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl private static final int format = IjkMediaPlayer.OPT_CATEGORY_FORMAT; private static final int player = IjkMediaPlayer.OPT_CATEGORY_PLAYER; - public static final int RENDER_NONE = -1; public static final int RENDER_SURFACE_VIEW = 0; public static final int RENDER_TEXTURE_VIEW = 1; private float mCurrentSpeed = 1; private int mCurrentAspectRatio; - private int mCurrentRender; private int mCurrentDecode; private int mStartPosition; @@ -108,44 +105,34 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl subtitleDisplay = new TextView(context); subtitleDisplay.setTextSize(24); subtitleDisplay.setGravity(Gravity.CENTER); - FrameLayout.LayoutParams layoutParams_txt = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM); - addView(subtitleDisplay, layoutParams_txt); + addView(subtitleDisplay, new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM)); } private void setRenderView(IRenderView renderView) { - if (mRenderView != null) { - if (mIjkPlayer != null) mIjkPlayer.setDisplay(null); - View renderUIView = mRenderView.getView(); - mRenderView.removeRenderCallback(mSHCallback); - mRenderView = null; - removeView(renderUIView); - } - if (renderView == null) return; mRenderView = renderView; setResizeMode(mCurrentAspectRatio); - if (mVideoWidth > 0 && mVideoHeight > 0) renderView.setVideoSize(mVideoWidth, mVideoHeight); - if (mVideoSarNum > 0 && mVideoSarDen > 0) renderView.setVideoSampleAspectRatio(mVideoSarNum, mVideoSarDen); - View renderUIView = mRenderView.getView(); - FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.CENTER); - renderUIView.setLayoutParams(lp); - addView(renderUIView); + addView(mRenderView.getView(), new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER)); mRenderView.addRenderCallback(mSHCallback); mRenderView.setVideoRotation(mVideoRotationDegree); } + private void clearRender() { + if (mRenderView != null) { + removeView(mRenderView.getView()); + mRenderView.removeRenderCallback(mSHCallback); + mRenderView = null; + } + } + public void setRender(int render) { + clearRender(); switch (render) { - case RENDER_NONE: - setRenderView(null); - break; case RENDER_TEXTURE_VIEW: - mCurrentRender = render; TextureRenderView texture = new TextureRenderView(getContext()); if (mIjkPlayer != null) texture.getSurfaceHolder().bindToMediaPlayer(mIjkPlayer); setRenderView(texture); break; case RENDER_SURFACE_VIEW: - mCurrentRender = render; setRenderView(new SurfaceRenderView(getContext())); break; } @@ -169,8 +156,8 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl } public void stopPlayback() { + if (mRenderView != null) mRenderView.getView().invalidate(); if (mIjkPlayer == null) return; - setRender(RENDER_NONE); mIjkPlayer.stop(); mIjkPlayer.release(); mIjkPlayer = null; @@ -190,7 +177,6 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl createPlayer(); fixUserAgent(); setSpeed(mCurrentSpeed); - setRender(mCurrentRender); mCurrentBufferPosition = 0; mCurrentBufferPercentage = 0; mIjkPlayer.setDataSource(mAppContext, mUri, mHeaders);