提交 3ddccbee 编写于 作者: G guoshuyu

调整render代码

上级 ede9fa3e
......@@ -219,11 +219,11 @@ public class DetailFilterActivity extends GSYBaseActivityDetail<StandardGSYVideo
percentageType = 1;
}
//水印图动起来
/*cancelTask2();
cancelTask2();
mTimerTask2 = new TaskLocal2();
timer.schedule(mTimerTask2, 0, 400);
moveBitmap = !moveBitmap;*/
moveBitmap = !moveBitmap;
}
});
......
......@@ -214,7 +214,7 @@ public class GSYVideoGLViewCustomRender extends GSYVideoGLViewSimpleRender {
}
}
public float[] getMVPMatrix() {
public float[] getCurrentMVPMatrix() {
return mMVPMatrix;
}
......
......@@ -82,8 +82,7 @@ public class GSYRenderView {
if (GSYVideoType.getRenderType() == GSYVideoType.SUFRACE) {
mShowView = GSYSurfaceView.addSurfaceView(context, textureViewContainer, rotate, gsySurfaceListener);
} else if (GSYVideoType.getRenderType() == GSYVideoType.GLSURFACE) {
mShowView = GSYVideoGLView.addGLView(context, textureViewContainer, rotate, gsySurfaceListener, effect, transform, customRender);
setGLRenderMode(mode);
mShowView = GSYVideoGLView.addGLView(context, textureViewContainer, rotate, gsySurfaceListener, effect, transform, customRender, mode);
} else {
mShowView = GSYTextureView.addTextureView(context, textureViewContainer, rotate, gsySurfaceListener);
}
......@@ -93,7 +92,11 @@ public class GSYRenderView {
/*************************ShowView function start *************************/
/**
* 主要针对TextureView,设置旋转
*/
public void setTransform(Matrix transform) {
if (mShowView != null)
mShowView.setRenderTransform(transform);
}
......@@ -101,14 +104,18 @@ public class GSYRenderView {
* 暂停时初始化位图
*/
public Bitmap initCover() {
if (mShowView != null)
return mShowView.initCover();
return null;
}
/**
* 暂停时初始化位图
*/
public Bitmap initCoverHigh() {
if (mShowView != null)
return mShowView.initCoverHigh();
return null;
}
/**
......@@ -125,6 +132,7 @@ public class GSYRenderView {
* @param shotHigh 是否需要高清的
*/
public void taskShotPic(GSYVideoShotListener gsyVideoShotListener, boolean shotHigh) {
if (mShowView != null)
mShowView.taskShotPic(gsyVideoShotListener, shotHigh);
}
......@@ -141,25 +149,69 @@ public class GSYRenderView {
* @param high 是否需要高清的
*/
public void saveFrame(final File file, final boolean high, final GSYVideoShotSaveListener gsyVideoShotSaveListener) {
if (mShowView != null)
mShowView.saveFrame(file, high, gsyVideoShotSaveListener);
}
/**
* 主要针对GL
*/
public void onResume() {
if (mShowView != null)
mShowView.onRenderResume();
}
/**
* 主要针对GL
*/
public void onPause() {
if (mShowView != null)
mShowView.onRenderPause();
}
/**
* 主要针对GL
*/
public void releaseAll() {
if (mShowView != null)
mShowView.releaseRenderAll();
}
/**
* 主要针对GL
*/
public void setGLRenderMode(int mode) {
if (mShowView != null)
mShowView.setRenderMode(mode);
}
/**
* 自定义GL的渲染render
*/
public void setGLRenderer(GSYVideoGLViewBaseRender renderer) {
if (mShowView != null)
mShowView.setGLRenderer(renderer);
}
/**
* GL模式下的画面matrix效果
*
* @param matrixGL 16位长度
*/
public void setMatrixGL(float[] matrixGL) {
if (mShowView != null)
mShowView.setGLMVPMatrix(matrixGL);
}
/**
* 设置滤镜效果
*/
public void setEffectFilter(GSYVideoGLView.ShaderInterface effectFilter) {
if (mShowView != null)
mShowView.setGLEffectFilter(effectFilter);
}
/*************************ShowView function end *************************/
......
......@@ -12,7 +12,9 @@ import android.view.ViewGroup;
import com.shuyu.gsyvideoplayer.listener.GSYVideoShotListener;
import com.shuyu.gsyvideoplayer.listener.GSYVideoShotSaveListener;
import com.shuyu.gsyvideoplayer.render.GSYRenderView;
import com.shuyu.gsyvideoplayer.render.glrender.GSYVideoGLViewBaseRender;
import com.shuyu.gsyvideoplayer.render.view.listener.IGSYSurfaceListener;
import com.shuyu.gsyvideoplayer.utils.Debuger;
import com.shuyu.gsyvideoplayer.utils.MeasureHelper;
import java.io.File;
......@@ -97,11 +99,13 @@ public class GSYSurfaceView extends SurfaceView implements SurfaceHolder.Callbac
@Override
public Bitmap initCover() {
Debuger.printfLog(getClass().getSimpleName() + " not support initCover now");
return null;
}
@Override
public Bitmap initCoverHigh() {
Debuger.printfLog(getClass().getSimpleName() + " not support initCoverHigh now");
return null;
}
......@@ -111,7 +115,7 @@ public class GSYSurfaceView extends SurfaceView implements SurfaceHolder.Callbac
* @param shotHigh 是否需要高清的
*/
public void taskShotPic(GSYVideoShotListener gsyVideoShotListener, boolean shotHigh) {
Debuger.printfLog(getClass().getSimpleName() + " not support taskShotPic now");
}
/**
......@@ -120,7 +124,7 @@ public class GSYSurfaceView extends SurfaceView implements SurfaceHolder.Callbac
* @param high 是否需要高清的
*/
public void saveFrame(final File file, final boolean high, final GSYVideoShotSaveListener gsyVideoShotSaveListener) {
Debuger.printfLog(getClass().getSimpleName() + " not support saveFrame now");
}
@Override
......@@ -130,30 +134,49 @@ public class GSYSurfaceView extends SurfaceView implements SurfaceHolder.Callbac
@Override
public void onRenderResume() {
Debuger.printfLog(getClass().getSimpleName() + " not support onRenderResume now");
}
@Override
public void onRenderPause() {
Debuger.printfLog(getClass().getSimpleName() + " not support onRenderPause now");
}
@Override
public void releaseRenderAll() {
Debuger.printfLog(getClass().getSimpleName() + " not support releaseRenderAll now");
}
@Override
public void setRenderMode(int mode) {
Debuger.printfLog(getClass().getSimpleName() + " not support setRenderMode now");
}
@Override
public void setRenderTransform(Matrix transform){
Debuger.printfLog(getClass().getSimpleName() + " not support setRenderTransform now");
}
@Override
public void setGLRenderer(GSYVideoGLViewBaseRender renderer) {
Debuger.printfLog(getClass().getSimpleName() + " not support setGLRenderer now");
}
@Override
public void setGLMVPMatrix(float[] MVPMatrix) {
Debuger.printfLog(getClass().getSimpleName() + " not support setGLMVPMatrix now");
}
/**
* 设置滤镜效果
*/
@Override
public void setGLEffectFilter(GSYVideoGLView.ShaderInterface effectFilter) {
Debuger.printfLog(getClass().getSimpleName() + " not support setGLEffectFilter now");
}
/**
* 添加播放的view
*/
......
......@@ -13,7 +13,9 @@ import android.view.ViewGroup;
import com.shuyu.gsyvideoplayer.listener.GSYVideoShotListener;
import com.shuyu.gsyvideoplayer.listener.GSYVideoShotSaveListener;
import com.shuyu.gsyvideoplayer.render.GSYRenderView;
import com.shuyu.gsyvideoplayer.render.glrender.GSYVideoGLViewBaseRender;
import com.shuyu.gsyvideoplayer.render.view.listener.IGSYSurfaceListener;
import com.shuyu.gsyvideoplayer.utils.Debuger;
import com.shuyu.gsyvideoplayer.utils.FileUtils;
import com.shuyu.gsyvideoplayer.utils.MeasureHelper;
......@@ -176,22 +178,22 @@ public class GSYTextureView extends TextureView implements TextureView.SurfaceTe
@Override
public void onRenderResume() {
Debuger.printfLog(getClass().getSimpleName() + " not support onRenderResume now");
}
@Override
public void onRenderPause() {
Debuger.printfLog(getClass().getSimpleName() + " not support onRenderPause now");
}
@Override
public void releaseRenderAll() {
Debuger.printfLog(getClass().getSimpleName() + " not support releaseRenderAll now");
}
@Override
public void setRenderMode(int mode) {
Debuger.printfLog(getClass().getSimpleName() + " not support setRenderMode now");
}
@Override
......@@ -199,6 +201,24 @@ public class GSYTextureView extends TextureView implements TextureView.SurfaceTe
setTransform(transform);
}
@Override
public void setGLRenderer(GSYVideoGLViewBaseRender renderer) {
Debuger.printfLog(getClass().getSimpleName() + " not support setGLRenderer now");
}
@Override
public void setGLMVPMatrix(float[] MVPMatrix) {
Debuger.printfLog(getClass().getSimpleName() + " not support setGLMVPMatrix now");
}
/**
* 设置滤镜效果
*/
@Override
public void setGLEffectFilter(GSYVideoGLView.ShaderInterface effectFilter) {
Debuger.printfLog(getClass().getSimpleName() + " not support setGLEffectFilter now");
}
/**
* 添加播放的view
*/
......
......@@ -19,6 +19,7 @@ import com.shuyu.gsyvideoplayer.render.glrender.GSYVideoGLViewBaseRender;
import com.shuyu.gsyvideoplayer.render.glrender.GSYVideoGLViewSimpleRender;
import com.shuyu.gsyvideoplayer.render.view.listener.GLSurfaceListener;
import com.shuyu.gsyvideoplayer.render.view.listener.IGSYSurfaceListener;
import com.shuyu.gsyvideoplayer.utils.Debuger;
import com.shuyu.gsyvideoplayer.utils.FileUtils;
import com.shuyu.gsyvideoplayer.utils.MeasureHelper;
import com.shuyu.gsyvideoplayer.render.effect.NoEffect;
......@@ -130,6 +131,108 @@ public class GSYVideoGLView extends GLSurfaceView implements GLSurfaceListener,
return measureHelper.getMeasuredWidth();
}
@Override
public Bitmap initCover() {
Debuger.printfLog(getClass().getSimpleName() + " not support initCover now");
return null;
}
@Override
public Bitmap initCoverHigh() {
Debuger.printfLog(getClass().getSimpleName() + " not support initCoverHigh now");
return null;
}
/**
* 获取截图
*
* @param shotHigh 是否需要高清的
*/
@Override
public void taskShotPic(GSYVideoShotListener gsyVideoShotListener, boolean shotHigh) {
if (gsyVideoShotListener != null) {
setGSYVideoShotListener(gsyVideoShotListener, shotHigh);
takeShotPic();
}
}
/**
* 保存截图
*
* @param high 是否需要高清的
*/
@Override
public void saveFrame(final File file, final boolean high, final GSYVideoShotSaveListener gsyVideoShotSaveListener) {
GSYVideoShotListener gsyVideoShotListener = new GSYVideoShotListener() {
@Override
public void getBitmap(Bitmap bitmap) {
if (bitmap == null) {
gsyVideoShotSaveListener.result(false, file);
} else {
FileUtils.saveBitmap(bitmap, file);
gsyVideoShotSaveListener.result(true, file);
}
}
};
setGSYVideoShotListener(gsyVideoShotListener, high);
takeShotPic();
}
@Override
public View getRenderView() {
return this;
}
@Override
public void onRenderResume() {
requestLayout();
onResume();
}
@Override
public void onRenderPause() {
requestLayout();
onPause();
}
@Override
public void releaseRenderAll() {
requestLayout();
releaseAll();
}
@Override
public void setRenderMode(int mode) {
setMode(mode);
}
@Override
public void setRenderTransform(Matrix transform) {
Debuger.printfLog(getClass().getSimpleName() + " not support setRenderTransform now");
}
@Override
public void setGLRenderer(GSYVideoGLViewBaseRender renderer) {
setCustomRenderer(renderer);
}
@Override
public void setGLMVPMatrix(float[] MVPMatrix) {
setMVPMatrix(MVPMatrix);
}
/**
* 设置滤镜效果
*/
@Override
public void setGLEffectFilter(GSYVideoGLView.ShaderInterface effectFilter) {
setEffect(effectFilter);
}
protected void initRenderMeasure() {
if (GSYVideoManager.instance().getMediaPlayer() != null && mMode == MODE_RENDER_SIZE) {
......@@ -215,7 +318,6 @@ public class GSYVideoGLView extends GLSurfaceView implements GLSurfaceListener,
}
}
public GSYVideoGLViewBaseRender getRenderer() {
return mRenderer;
}
......@@ -228,96 +330,13 @@ public class GSYVideoGLView extends GLSurfaceView implements GLSurfaceListener,
return mMVPMatrix;
}
@Override
public Bitmap initCover() {
return null;
}
@Override
public Bitmap initCoverHigh() {
return null;
}
/**
* 获取截图
*
* @param shotHigh 是否需要高清的
*/
public void taskShotPic(GSYVideoShotListener gsyVideoShotListener, boolean shotHigh) {
if (gsyVideoShotListener != null) {
setGSYVideoShotListener(gsyVideoShotListener, shotHigh);
takeShotPic();
}
}
/**
* 保存截图
*
* @param high 是否需要高清的
*/
public void saveFrame(final File file, final boolean high, final GSYVideoShotSaveListener gsyVideoShotSaveListener) {
GSYVideoShotListener gsyVideoShotListener = new GSYVideoShotListener() {
@Override
public void getBitmap(Bitmap bitmap) {
if (bitmap == null) {
gsyVideoShotSaveListener.result(false, file);
} else {
FileUtils.saveBitmap(bitmap, file);
gsyVideoShotSaveListener.result(true, file);
}
}
};
setGSYVideoShotListener(gsyVideoShotListener, high);
takeShotPic();
}
@Override
public View getRenderView() {
return this;
}
@Override
public void onRenderResume() {
requestLayout();
onResume();
}
@Override
public void onRenderPause() {
requestLayout();
onPause();
}
@Override
public void releaseRenderAll() {
requestLayout();
releaseAll();
}
@Override
public void setRenderMode(int mode) {
setMode(mode);
}
@Override
public void setRenderTransform(Matrix transform) {
}
/**
* 添加播放的view
*/
public static GSYVideoGLView addGLView(final Context context, final ViewGroup textureViewContainer, final int rotate,
final IGSYSurfaceListener gsySurfaceListener,
final GSYVideoGLView.ShaderInterface effect, final float[] transform,
final GSYVideoGLViewBaseRender customRender) {
final GSYVideoGLViewBaseRender customRender, final int renderMode) {
if (textureViewContainer.getChildCount() > 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);
}
});
......
......@@ -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);
}
......@@ -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);
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册