不定期更新,详情请参阅云笔记

http://note.youdao.com/noteshare?id=d6562c5aa0741d2bb7436d7890d96ae2

 

 

2017.3.2
工程里面的app->GLCameraInstaller可以直接使用。欢迎大家学习。
初步认识GLSurfaceView预览摄像头。然后就出现很多问题:
第一个问题就是 setRotationCamera 接口的flipVertical, flipHorizontal两个方向的翻转标识,为什么要互换?即以下关键代码:
private void setRotation(Rotation rotation,
boolean flipVertical, boolean flipHorizontal) {
mRotation = rotation;
//mFlipHorizontal = flipHorizontal;
//mFlipVertical = flipVertical;
mFlipVertical = flipHorizontal;
mFlipHorizontal = flipVertical;
adjustImageScaling();
}
之前复刻的时候,是使用注释的那部分,这样在切换前置摄像头的时候就会上下颠倒。后置没有异常
 
慢慢回想起Camera的三个方向,摄像头预览观察方向,拍照成像的方向,还是就是预览接口onPreviewFrame的data方向,即原生的每一帧数据的方向
首先第一个摄像头预览方向是用Camera.setDisplayOrientation方法是设置摄像头预览的方向
第二个拍照成像的方向,使用的是Camera.Parameters类的setRotation方法
至于第三个方向,是没有方法设置的,只能是每帧自己处理。
 
通过以上关联,我查看了代码,发现GPUImage是没有调用以上所说的任何方向的方法。我觉得就是摄像头预览方向这个原因,致使flipVertical, flipHorizontal互换了。至于怎么工作,且听下回分解。