Clean ijk code

pull/123/head
FongMi 3 years ago
parent c418ed6457
commit 01cc1b523e
  1. 51
      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<String, String> headers) {
private void setVideoURI(Uri uri, Map<String, String> 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();

Loading…
Cancel
Save