diff --git a/MIGRATION.md b/MIGRATION.md
index c486df89..4fbcc68f 100644
--- a/MIGRATION.md
+++ b/MIGRATION.md
@@ -134,16 +134,18 @@ Might be used in the future to speed up development.
- Default `Facing` value is not `BACK` anymore but rather a value that guarantees that you have cameras (if possible).
If device has no `BACK` cameras, defaults to `FRONT`.
+
+TODO: think bout getPreviewSize() being removed, and think about adding a setPreviewSize().
+ If adding getPreviewSize() back, update this doc.
+TODO: fix video recording rotation: with front camera, it does not work.
+TODO: opencollective
+
TODO: document cameraGridColor
TODO: document setVideoBitRate
TODO: document setAudioBitRate
TODO: document takeVideoSnapshot
TODO: document that takePictureSnaphot works while taking videos, if GL_SURFACE
TODO: document the camera previews
-TODO: think bout getPreviewSize() being removed, and think about adding a setPreviewSize().
- If adding getPreviewSize() back, update this doc.
-TODO: fix video recording rotation: with front camera, it does not work.
-TODO: opencollective
TODO: new docs?
diff --git a/cameraview/src/main/gles/com/otaliastudios/cameraview/EglViewport.java b/cameraview/src/main/gles/com/otaliastudios/cameraview/EglViewport.java
index 7f437ed6..20556e99 100644
--- a/cameraview/src/main/gles/com/otaliastudios/cameraview/EglViewport.java
+++ b/cameraview/src/main/gles/com/otaliastudios/cameraview/EglViewport.java
@@ -29,12 +29,26 @@ class EglViewport extends EglElement {
" vTextureScale = uTextureScale.xy;\n" +
"}\n";
- // Circle fragment shader for use with external 2D textures
- // We draw as transparent all the pixels outside the circle of center (0.5, 0.5)
- // and radius 0.5. Works well! But we have:
- // - black in the preview. Solved with canvas.clipPath and a custom GlSurfaceView.
- // - black in picture snapshots, UNLESS we use PNG which is super slow
- // - black in videos because they have no alpha channel
+ // Simple fragment shader for use with external 2D textures
+ private static final String SIMPLE_FRAGMENT_SHADER =
+ "#extension GL_OES_EGL_image_external : require\n" +
+ "precision mediump float;\n" +
+ "varying vec2 vTextureCoord;\n" +
+ "uniform samplerExternalOES sTexture;\n" +
+ "void main() {\n" +
+ " gl_FragColor = texture2D(sTexture, vTextureCoord);\n" +
+ "}\n";
+
+ /**
+ * EXPERIMENT:
+ * An oval fragment shader. We draw all the pixels outside the circle of center (0.5, 0.5)
+ * and radius 0.5 as transparent. Works well, but we have:
+ *
+ * 1. black in the preview: This can be solved with a custom GlSurfaceView that overrides
+ * dispatchDraw, and, before calling super, clips the canvas with an oval path (canvas.clipPath).
+ * 2. black in picture snapshot: This can be solved by using PNG, but it is suepr slow.
+ * 3. black in videos: No way to solve this AFAIK.
+ */
private static final String CIRCLE_FRAGMENT_SHADER =
"#extension GL_OES_EGL_image_external : require\n" +
"precision mediump float;\n" +
@@ -52,16 +66,6 @@ class EglViewport extends EglElement {
" }\n" +
"}\n";
- // Simple fragment shader for use with external 2D textures
- private static final String SIMPLE_FRAGMENT_SHADER =
- "#extension GL_OES_EGL_image_external : require\n" +
- "precision mediump float;\n" +
- "varying vec2 vTextureCoord;\n" +
- "uniform samplerExternalOES sTexture;\n" +
- "void main() {\n" +
- " gl_FragColor = texture2D(sTexture, vTextureCoord);\n" +
- "}\n";
-
// Stuff from Drawable2d.FULL_RECTANGLE
// A full square, extending from -1 to +1 in both dimensions.
// When the model/view/projection matrix is identity, this will exactly cover the viewport.
@@ -102,7 +106,7 @@ class EglViewport extends EglElement {
EglViewport() {
mTextureTarget = GLES11Ext.GL_TEXTURE_EXTERNAL_OES;
- mProgramHandle = createProgram(SIMPLE_VERTEX_SHADER, CIRCLE_FRAGMENT_SHADER);
+ mProgramHandle = createProgram(SIMPLE_VERTEX_SHADER, SIMPLE_FRAGMENT_SHADER);
maPositionLocation = GLES20.glGetAttribLocation(mProgramHandle, "aPosition");
checkLocation(maPositionLocation, "aPosition");
maTextureCoordLocation = GLES20.glGetAttribLocation(mProgramHandle, "aTextureCoord");
diff --git a/cameraview/src/main/res/layout/cameraview_gl_view.xml b/cameraview/src/main/res/layout/cameraview_gl_view.xml
index 88b19411..0525ee6e 100644
--- a/cameraview/src/main/res/layout/cameraview_gl_view.xml
+++ b/cameraview/src/main/res/layout/cameraview_gl_view.xml
@@ -6,8 +6,7 @@
android:layout_gravity="center"
android:gravity="center">
-
diff --git a/cameraview/src/main/views/com/otaliastudios/cameraview/GlCameraPreview.java b/cameraview/src/main/views/com/otaliastudios/cameraview/GlCameraPreview.java
index 65c3c3af..9672f90b 100644
--- a/cameraview/src/main/views/com/otaliastudios/cameraview/GlCameraPreview.java
+++ b/cameraview/src/main/views/com/otaliastudios/cameraview/GlCameraPreview.java
@@ -75,32 +75,6 @@ class GlCameraPreview extends CameraPreview imple
super(context, parent, callback);
}
- static class ClippingSurfaceView extends GLSurfaceView {
-
- private Path path = new Path();
- private RectF rect = new RectF();
-
- public ClippingSurfaceView(Context context) {
- super(context);
- }
- public ClippingSurfaceView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- protected void dispatchDraw(Canvas canvas) {
- if (false) {
- if (getWidth() != rect.width() || getHeight() != rect.height()) {
- rect.set(0, 0, getWidth(), getHeight());
- path.rewind();
- path.addOval(rect, Path.Direction.CW);
- }
- canvas.clipPath(path);
- }
- super.dispatchDraw(canvas);
- }
- }
-
@NonNull
@Override
protected GLSurfaceView onCreateView(@NonNull Context context, @NonNull ViewGroup parent) {