From 01cc1b523ee265f867f9f631f106f590b87a34a8 Mon Sep 17 00:00:00 2001 From: FongMi Date: Tue, 9 May 2023 18:04:39 +0800 Subject: [PATCH] Clean ijk code --- .../ijk/media/player/ui/IjkVideoView.java | 51 +++++++++---------- 1 file changed, 25 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 b6921e25a..8cbf94a9b 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 @@ -23,7 +23,7 @@ import tv.danmaku.ijk.media.player.R; import tv.danmaku.ijk.media.player.misc.ITrackInfo; import tv.danmaku.ijk.media.player.misc.IjkTrackInfo; -public class IjkVideoView extends FrameLayout implements MediaController.MediaPlayerControl, IMediaPlayer.Listener { +public class IjkVideoView extends FrameLayout implements MediaController.MediaPlayerControl, IMediaPlayer.Listener, IRenderView.IRenderCallback { private final String TAG = IjkVideoView.class.getSimpleName(); @@ -97,6 +97,9 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl public void setRender(int render) { mCurrentRender = render; + } + + private void setRenderView(int render) { switch (render) { case RENDER_TEXTURE_VIEW: setRenderView(new TextureRenderView(getContext())); @@ -112,14 +115,14 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl mRenderView = renderView; setResizeMode(mCurrentAspectRatio); mContentFrame.addView(mRenderView.getView(), 0, new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER)); - mRenderView.addRenderCallback(mSHCallback); + mRenderView.addRenderCallback(this); mRenderView.setVideoRotation(mVideoRotationDegree); } private void removeRenderView() { if (mRenderView == null) return; mContentFrame.removeView(mRenderView.getView()); - mRenderView.removeRenderCallback(mSHCallback); + mRenderView.removeRenderCallback(this); mRenderView = null; } @@ -132,7 +135,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl setVideoURI(Uri.parse(path.trim().replace("\\", "")), headers); } - public void setVideoURI(Uri uri, Map headers) { + private void setVideoURI(Uri uri, Map headers) { openVideo(uri, headers); requestLayout(); invalidate(); @@ -144,7 +147,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl setOption(uri); fixUserAgent(headers); setSpeed(mCurrentSpeed); - setRender(mCurrentRender); + setRenderView(mCurrentRender); mAudioManager.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN); mPlayer.setDataSource(getContext(), uri, headers); mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); @@ -170,27 +173,6 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl holder.bindToMediaPlayer(mp); } - IRenderView.IRenderCallback mSHCallback = new IRenderView.IRenderCallback() { - @Override - public void onSurfaceChanged(@NonNull IRenderView.ISurfaceHolder holder, int format, int w, int h) { - boolean isValidState = mTargetState == STATE_PLAYING; - boolean hasValidSize = !mRenderView.shouldWaitForResize() || (mVideoWidth == w && mVideoHeight == h); - if (mPlayer != null && isValidState && hasValidSize) { - start(); - } - } - - @Override - public void onSurfaceCreated(@NonNull IRenderView.ISurfaceHolder holder, int width, int height) { - if (mPlayer != null) bindSurfaceHolder(mPlayer, holder); - } - - @Override - public void onSurfaceDestroyed(@NonNull IRenderView.ISurfaceHolder holder) { - if (mPlayer != null) mPlayer.setDisplay(null); - } - }; - public void stop() { if (mPlayer == null) return; mPlayer.stop(); @@ -409,6 +391,23 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl } } + @Override + public void onSurfaceCreated(@NonNull IRenderView.ISurfaceHolder holder, int width, int height) { + if (mPlayer != null) bindSurfaceHolder(mPlayer, holder); + } + + @Override + public void onSurfaceChanged(@NonNull IRenderView.ISurfaceHolder holder, int format, int width, int height) { + boolean isValidState = mTargetState == STATE_PLAYING; + boolean hasValidSize = !mRenderView.shouldWaitForResize() || (mVideoWidth == width && mVideoHeight == height); + if (mPlayer != null && isValidState && hasValidSize) start(); + } + + @Override + public void onSurfaceDestroyed(@NonNull IRenderView.ISurfaceHolder holder) { + if (mPlayer != null) mPlayer.setDisplay(null); + } + @Override public void onPrepared(IMediaPlayer mp) { setPreferredTextLanguage();