diff --git a/app/src/main/java/com/example/gsyvideoplayer/DetailFilterActivity.java b/app/src/main/java/com/example/gsyvideoplayer/DetailFilterActivity.java index be869ed226f07d87bc85b07872bf92ad2eb4155b..819aca0eac16efb0e4300867bb94df2f4176df0f 100644 --- a/app/src/main/java/com/example/gsyvideoplayer/DetailFilterActivity.java +++ b/app/src/main/java/com/example/gsyvideoplayer/DetailFilterActivity.java @@ -219,11 +219,11 @@ public class DetailFilterActivity extends GSYBaseActivityDetail 0) { textureViewContainer.removeAllViews(); } @@ -326,6 +345,7 @@ public class GSYVideoGLView extends GLSurfaceView implements GLSurfaceListener, gsyVideoGLView.setCustomRenderer(customRender); } gsyVideoGLView.setEffect(effect); + gsyVideoGLView.setRenderMode(renderMode); gsyVideoGLView.setIGSYSurfaceListener(gsySurfaceListener); gsyVideoGLView.setRotation(rotate); gsyVideoGLView.initRender(); @@ -339,7 +359,7 @@ public class GSYVideoGLView extends GLSurfaceView implements GLSurfaceListener, gsySurfaceListener, render.getEffect(), render.getMVPMatrix(), - render); + render, renderMode); } }); diff --git a/gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/render/view/IGSYRenderView.java b/gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/render/view/IGSYRenderView.java index ceaea13c4beee8448f95858b9a9052d06b601be4..c3660b5f87b7fc7ab13a9d3008991b4d1f8f3455 100644 --- a/gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/render/view/IGSYRenderView.java +++ b/gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/render/view/IGSYRenderView.java @@ -3,11 +3,11 @@ package com.shuyu.gsyvideoplayer.render.view; import android.graphics.Bitmap; import android.graphics.Matrix; -import android.view.TextureView; import android.view.View; import com.shuyu.gsyvideoplayer.listener.GSYVideoShotListener; import com.shuyu.gsyvideoplayer.listener.GSYVideoShotSaveListener; +import com.shuyu.gsyvideoplayer.render.glrender.GSYVideoGLViewBaseRender; import com.shuyu.gsyvideoplayer.render.view.listener.IGSYSurfaceListener; import java.io.File; @@ -46,4 +46,10 @@ public interface IGSYRenderView { void setRenderTransform(Matrix transform); + void setGLRenderer(GSYVideoGLViewBaseRender renderer); + + void setGLMVPMatrix(float[] MVPMatrix); + + void setGLEffectFilter(GSYVideoGLView.ShaderInterface effectFilter); + } diff --git a/gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/video/base/GSYTextureRenderView.java b/gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/video/base/GSYTextureRenderView.java index e5965866b3305bca156dd0b77660e669dc7d6cee..cf279afcd2c98bcf7966df695ac6c619ce21372e 100644 --- a/gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/video/base/GSYTextureRenderView.java +++ b/gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/video/base/GSYTextureRenderView.java @@ -10,6 +10,7 @@ import android.view.Surface; import android.view.TextureView; import android.view.ViewGroup; import android.widget.FrameLayout; + import com.shuyu.gsyvideoplayer.render.GSYRenderView; import com.shuyu.gsyvideoplayer.render.view.GSYVideoGLView; import com.shuyu.gsyvideoplayer.render.effect.NoEffect; @@ -36,17 +37,19 @@ public abstract class GSYTextureRenderView extends FrameLayout implements IGSYSu //满屏填充暂停为徒 protected Bitmap mFullPauseBitmap; - //滤镜 + //GL的滤镜 protected GSYVideoGLView.ShaderInterface mEffectFilter = new NoEffect(); + //GL的自定义渲染 + protected GSYVideoGLViewBaseRender mRenderer; + + //GL的角度 protected float[] mMatrixGL = null; //画面选择角度 protected int mRotate; - //自定义渲染 - protected GSYVideoGLViewBaseRender mRenderer; - + //GL的布局模式 protected int mMode = GSYVideoGLView.MODE_LAYOUT_SIZE; public GSYTextureRenderView(@NonNull Context context) { @@ -150,33 +153,8 @@ public abstract class GSYTextureRenderView extends FrameLayout implements IGSYSu mTextureViewContainer.setOnTouchListener(onTouchListener); mTextureViewContainer.setOnClickListener(null); setSmallVideoTextureView(); - } - protected GSYVideoGLView getGSYVideoGLSView() { - if (mTextureView != null && mTextureView.getShowView() instanceof GSYVideoGLView) { - return (GSYVideoGLView) mTextureView.getShowView(); - } - return null; - } - - - //暂停时使用绘制画面显示暂停、避免黑屏 - protected abstract void showPauseCover(); - - //清除暂停画面 - protected abstract void releasePauseCover(); - - //小屏幕绘制层 - protected abstract void setSmallVideoTextureView(); - - //设置播放 - protected abstract void setDisplay(Surface surface); - - //释放 - protected abstract void releaseSurface(Surface surface); - - public GSYVideoGLView.ShaderInterface getEffectFilter() { return mEffectFilter; } @@ -193,10 +171,8 @@ public abstract class GSYTextureRenderView extends FrameLayout implements IGSYSu */ public void setEffectFilter(GSYVideoGLView.ShaderInterface effectFilter) { this.mEffectFilter = effectFilter; - if (mTextureView != null && mTextureView.getShowView() instanceof GSYVideoGLView) { - GSYVideoGLView gsyVideoGLView = - (GSYVideoGLView) mTextureView.getShowView(); - gsyVideoGLView.setEffect(effectFilter); + if (mTextureView != null) { + mTextureView.setEffectFilter(effectFilter); } } @@ -207,11 +183,8 @@ public abstract class GSYTextureRenderView extends FrameLayout implements IGSYSu */ public void setMatrixGL(float[] matrixGL) { this.mMatrixGL = matrixGL; - if (mTextureView != null && mTextureView.getShowView() instanceof GSYVideoGLView - && mMatrixGL != null && mMatrixGL.length == 16) { - GSYVideoGLView gsyVideoGLView = - (GSYVideoGLView) mTextureView.getShowView(); - gsyVideoGLView.setMVPMatrix(mMatrixGL); + if (mTextureView != null) { + mTextureView.setMatrixGL(mMatrixGL); } } @@ -220,11 +193,8 @@ public abstract class GSYTextureRenderView extends FrameLayout implements IGSYSu */ public void setCustomGLRenderer(GSYVideoGLViewBaseRender renderer) { this.mRenderer = renderer; - if (mTextureView != null && mRenderer != null && - mTextureView.getShowView() instanceof GSYVideoGLView) { - GSYVideoGLView gsyVideoGLView = - (GSYVideoGLView) mTextureView.getShowView(); - gsyVideoGLView.setCustomRenderer(mRenderer); + if (mTextureView != null) { + mTextureView.setGLRenderer(renderer); } } @@ -235,11 +205,24 @@ public abstract class GSYTextureRenderView extends FrameLayout implements IGSYSu */ public void setGLRenderMode(int mode) { mMode = mode; - if (mTextureView != null && mRenderer != null && - mTextureView.getShowView() instanceof GSYVideoGLView) { - GSYVideoGLView gsyVideoGLView = (GSYVideoGLView) mTextureView.getShowView(); - gsyVideoGLView.setMode(mode); + if (mTextureView != null) { + mTextureView.setGLRenderMode(mode); } } + + //暂停时使用绘制画面显示暂停、避免黑屏 + protected abstract void showPauseCover(); + + //清除暂停画面 + protected abstract void releasePauseCover(); + + //小屏幕绘制层 + protected abstract void setSmallVideoTextureView(); + + //设置播放 + protected abstract void setDisplay(Surface surface); + + //释放 + protected abstract void releaseSurface(Surface surface); }