diff --git a/demos/transformer/src/main/assets/vertex_shader_copy_es2.glsl b/demos/transformer/src/main/assets/vertex_shader_copy_es2.glsl index b4c1673d25..c603e252ac 100644 --- a/demos/transformer/src/main/assets/vertex_shader_copy_es2.glsl +++ b/demos/transformer/src/main/assets/vertex_shader_copy_es2.glsl @@ -16,9 +16,8 @@ // ES 2 vertex shader that leaves the coordinates unchanged. attribute vec4 aFramePosition; -attribute vec4 aTexSamplingCoord; varying vec2 vTexSamplingCoord; void main() { gl_Position = aFramePosition; - vTexSamplingCoord = aTexSamplingCoord.xy; + vTexSamplingCoord = vec2(aFramePosition.x * 0.5 + 0.5, aFramePosition.y * 0.5 + 0.5); } diff --git a/demos/transformer/src/main/java/androidx/media3/demo/transformer/BitmapOverlayFrameProcessor.java b/demos/transformer/src/main/java/androidx/media3/demo/transformer/BitmapOverlayFrameProcessor.java index ca9d71f18c..c6cd2c39ec 100644 --- a/demos/transformer/src/main/java/androidx/media3/demo/transformer/BitmapOverlayFrameProcessor.java +++ b/demos/transformer/src/main/java/androidx/media3/demo/transformer/BitmapOverlayFrameProcessor.java @@ -102,8 +102,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; // Draw the frame on the entire normalized device coordinate space, from -1 to 1, for x and y. glProgram.setBufferAttribute( "aFramePosition", GlUtil.getNormalizedCoordinateBounds(), GlUtil.RECTANGLE_VERTICES_COUNT); - glProgram.setBufferAttribute( - "aTexSamplingCoord", GlUtil.getTextureCoordinateBounds(), GlUtil.RECTANGLE_VERTICES_COUNT); glProgram.setSamplerTexIdUniform("uTexSampler0", inputTexId, /* texUnitIndex= */ 0); glProgram.setSamplerTexIdUniform("uTexSampler1", bitmapTexId, /* texUnitIndex= */ 1); glProgram.setFloatUniform("uScaleX", bitmapScaleX); diff --git a/demos/transformer/src/main/java/androidx/media3/demo/transformer/PeriodicVignetteFrameProcessor.java b/demos/transformer/src/main/java/androidx/media3/demo/transformer/PeriodicVignetteFrameProcessor.java index 6faf7f4b71..6d4ff4289c 100644 --- a/demos/transformer/src/main/java/androidx/media3/demo/transformer/PeriodicVignetteFrameProcessor.java +++ b/demos/transformer/src/main/java/androidx/media3/demo/transformer/PeriodicVignetteFrameProcessor.java @@ -88,8 +88,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; // Draw the frame on the entire normalized device coordinate space, from -1 to 1, for x and y. glProgram.setBufferAttribute( "aFramePosition", GlUtil.getNormalizedCoordinateBounds(), GlUtil.RECTANGLE_VERTICES_COUNT); - glProgram.setBufferAttribute( - "aTexSamplingCoord", GlUtil.getTextureCoordinateBounds(), GlUtil.RECTANGLE_VERTICES_COUNT); } @Override diff --git a/demos/transformer/src/withMediaPipe/java/androidx/media3/demo/transformer/MediaPipeFrameProcessor.java b/demos/transformer/src/withMediaPipe/java/androidx/media3/demo/transformer/MediaPipeFrameProcessor.java index 9d9b0b9dd3..08e069fbd9 100644 --- a/demos/transformer/src/withMediaPipe/java/androidx/media3/demo/transformer/MediaPipeFrameProcessor.java +++ b/demos/transformer/src/withMediaPipe/java/androidx/media3/demo/transformer/MediaPipeFrameProcessor.java @@ -145,10 +145,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; "aFramePosition", GlUtil.getNormalizedCoordinateBounds(), GlUtil.RECTANGLE_VERTICES_COUNT); - glProgram.setBufferAttribute( - "aTexSamplingCoord", - GlUtil.getTextureCoordinateBounds(), - GlUtil.RECTANGLE_VERTICES_COUNT); glProgram.bindAttributesAndUniforms(); GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, /* first= */ 0, /* count= */ 4); GlUtil.checkGlError(); diff --git a/libraries/transformer/src/main/assets/shaders/vertex_shader_tex_transform_es2.glsl b/libraries/transformer/src/main/assets/shaders/vertex_shader_tex_transform_es2.glsl index f521d2fedb..20f3058ce2 100644 --- a/libraries/transformer/src/main/assets/shaders/vertex_shader_tex_transform_es2.glsl +++ b/libraries/transformer/src/main/assets/shaders/vertex_shader_tex_transform_es2.glsl @@ -18,10 +18,10 @@ // locations. attribute vec4 aFramePosition; -attribute vec4 aTexSamplingCoord; uniform mat4 uTexTransform; varying vec2 vTexSamplingCoord; void main() { gl_Position = aFramePosition; - vTexSamplingCoord = (uTexTransform * aTexSamplingCoord).xy; + vec4 texturePosition = vec4(aFramePosition.x * 0.5 + 0.5, aFramePosition.y * 0.5 + 0.5, 0.0, 1.0); + vTexSamplingCoord = (uTexTransform * texturePosition).xy; } diff --git a/libraries/transformer/src/main/assets/shaders/vertex_shader_tex_transform_es3.glsl b/libraries/transformer/src/main/assets/shaders/vertex_shader_tex_transform_es3.glsl index 00dd9bc711..f732294c90 100644 --- a/libraries/transformer/src/main/assets/shaders/vertex_shader_tex_transform_es3.glsl +++ b/libraries/transformer/src/main/assets/shaders/vertex_shader_tex_transform_es3.glsl @@ -18,10 +18,10 @@ // locations. in vec4 aFramePosition; -in vec4 aTexSamplingCoord; uniform mat4 uTexTransform; out vec2 vTexSamplingCoord; void main() { gl_Position = aFramePosition; - vTexSamplingCoord = (uTexTransform * aTexSamplingCoord).xy; + vec4 texturePosition = vec4(aFramePosition.x * 0.5 + 0.5, aFramePosition.y * 0.5 + 0.5, 0.0, 1.0); + vTexSamplingCoord = (uTexTransform * texturePosition).xy; } diff --git a/libraries/transformer/src/main/assets/shaders/vertex_shader_transformation_es2.glsl b/libraries/transformer/src/main/assets/shaders/vertex_shader_transformation_es2.glsl index 5ac512a0cb..2491e3d2a2 100644 --- a/libraries/transformer/src/main/assets/shaders/vertex_shader_transformation_es2.glsl +++ b/libraries/transformer/src/main/assets/shaders/vertex_shader_transformation_es2.glsl @@ -17,10 +17,9 @@ // uTransformationMatrix. attribute vec4 aFramePosition; -attribute vec4 aTexSamplingCoord; uniform mat4 uTransformationMatrix; varying vec2 vTexSamplingCoord; void main() { gl_Position = uTransformationMatrix * aFramePosition; - vTexSamplingCoord = aTexSamplingCoord.xy; + vTexSamplingCoord = vec2(aFramePosition.x * 0.5 + 0.5, aFramePosition.y * 0.5 + 0.5); } diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/ExternalCopyFrameProcessor.java b/libraries/transformer/src/main/java/androidx/media3/transformer/ExternalCopyFrameProcessor.java index 6559894a71..05835db6df 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/ExternalCopyFrameProcessor.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/ExternalCopyFrameProcessor.java @@ -80,8 +80,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; // Draw the frame on the entire normalized device coordinate space, from -1 to 1, for x and y. glProgram.setBufferAttribute( "aFramePosition", GlUtil.getNormalizedCoordinateBounds(), GlUtil.RECTANGLE_VERTICES_COUNT); - glProgram.setBufferAttribute( - "aTexSamplingCoord", GlUtil.getTextureCoordinateBounds(), GlUtil.RECTANGLE_VERTICES_COUNT); if (enableExperimentalHdrEditing) { // In HDR editing mode the decoder output is sampled in YUV. glProgram.setFloatsUniform("uColorTransform", MATRIX_YUV_TO_BT2020_COLOR_TRANSFORM); diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/MatrixTransformationFrameProcessor.java b/libraries/transformer/src/main/java/androidx/media3/transformer/MatrixTransformationFrameProcessor.java index 78888af90f..bcde12b504 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/MatrixTransformationFrameProcessor.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/MatrixTransformationFrameProcessor.java @@ -89,8 +89,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; // Draw the frame on the entire normalized device coordinate space, from -1 to 1, for x and y. glProgram.setBufferAttribute( "aFramePosition", GlUtil.getNormalizedCoordinateBounds(), GlUtil.RECTANGLE_VERTICES_COUNT); - glProgram.setBufferAttribute( - "aTexSamplingCoord", GlUtil.getTextureCoordinateBounds(), GlUtil.RECTANGLE_VERTICES_COUNT); } @Override