From ea9982ad51d32a60efab25f52003b12e63295b25 Mon Sep 17 00:00:00 2001 From: FongMi Date: Fri, 25 Nov 2022 01:36:21 +0800 Subject: [PATCH] Update IjkVideoView.java --- .../danmaku/ijk/media/player/ui/IjkVideoView.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 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 d3d5e8421..647a75ec9 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 @@ -47,6 +47,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl private float mCurrentSpeed = 1; private int mCurrentAspectRatio; + private int mCurrentRender; private int mCurrentDecode; private int mStartPosition; @@ -109,6 +110,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl } private void setRenderView(IRenderView renderView) { + clearRender(); mRenderView = renderView; setResizeMode(mCurrentAspectRatio); addView(mRenderView.getView(), new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER)); @@ -125,7 +127,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl } public void setRender(int render) { - clearRender(); + mCurrentRender = render; switch (render) { case RENDER_TEXTURE_VIEW: TextureRenderView texture = new TextureRenderView(getContext()); @@ -156,8 +158,8 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl } public void stopPlayback() { - if (mRenderView != null) mRenderView.getView().invalidate(); if (mIjkPlayer == null) return; + clearRender(); mIjkPlayer.stop(); mIjkPlayer.release(); mIjkPlayer = null; @@ -177,6 +179,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl createPlayer(); fixUserAgent(); setSpeed(mCurrentSpeed); + setRender(mCurrentRender); mCurrentBufferPosition = 0; mCurrentBufferPercentage = 0; mIjkPlayer.setDataSource(mAppContext, mUri, mHeaders); @@ -362,9 +365,14 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl return; } mSurfaceHolder = null; + releaseWithoutStop(); } }; + public void releaseWithoutStop() { + if (mIjkPlayer != null) mIjkPlayer.setDisplay(null); + } + public void release(boolean clearState) { if (mIjkPlayer == null) return; mIjkPlayer.reset(); @@ -491,8 +499,6 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl mIjkPlayer.setOnTimedTextListener(mOnTimedTextListener); mIjkPlayer.setOption(codec, "skip_frame", 0); mIjkPlayer.setOption(codec, "skip_loop_filter", 48); - mIjkPlayer.setOption(format, "analyzeduration", 1); - mIjkPlayer.setOption(format, "analyzemaxduration", 10); mIjkPlayer.setOption(format, "buffer_size", 1024 * 1024); mIjkPlayer.setOption(format, "dns_cache_clear", 1); mIjkPlayer.setOption(format, "dns_cache_timeout", -1);