diff --git a/libraries/effect/src/main/java/androidx/media3/effect/OverlayShaderProgram.java b/libraries/effect/src/main/java/androidx/media3/effect/OverlayShaderProgram.java index 60e55aef3b..19aaa23efb 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/OverlayShaderProgram.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/OverlayShaderProgram.java @@ -181,14 +181,14 @@ import com.google.common.collect.ImmutableList; .append(" }\n") .append("}\n") .append("\n") - .append("float getMixAlpha(float videoAlpha, float overlayAlpha) {\n") - .append(" if (videoAlpha == 0.0) {\n") - .append(" return 1.0;\n") - .append(" } else {\n") - .append(" return clamp(overlayAlpha/videoAlpha, 0.0, 1.0);\n") - .append(" }\n") + .append("vec4 getMixColor(vec4 videoColor, vec4 overlayColor) {\n") + .append(" vec4 outputColor;\n") + .append(" outputColor.rgb = overlayColor.rgb * overlayColor.a\n") + .append(" + videoColor.rgb * (1.0 - overlayColor.a);\n") + .append(" outputColor.a = overlayColor.a + videoColor.a * (1.0 - overlayColor.a);\n") + .append(" return outputColor;\n") .append("}\n") - .append("") + .append("\n") .append("float srgbEotfSingleChannel(float srgb) {\n") .append(" return srgb <= 0.04045 ? srgb / 12.92 : pow((srgb + 0.055) / 1.055, 2.4);\n") .append("}\n") @@ -232,12 +232,9 @@ import com.google.common.collect.ImmutableList; formatInvariant( " applyEotf(electricalOverlayColor%d.rgb), electricalOverlayColor%d.a);\n", texUnitIndex, texUnitIndex)) - .append(" fragColor = mix(\n") .append( formatInvariant( - " fragColor, opticalOverlayColor%d, getMixAlpha(videoColor.a," - + " opticalOverlayColor%d.a));\n", - texUnitIndex, texUnitIndex)); + " fragColor = getMixColor(fragColor, opticalOverlayColor%d);\n", texUnitIndex)); } shader.append(" gl_FragColor = fragColor;\n").append("}\n"); diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/input_grayscale_0s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/input_grayscale_0s.png index 6f1278444c..7f42f77115 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/input_grayscale_0s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/input_grayscale_0s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/input_rotate180_1s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/input_rotate180_1s.png index 334d8fa02b..ef63b66754 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/input_rotate180_1s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/input_rotate180_1s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/input_transparent.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/input_transparent.png index 3c4e8cbb05..22437c2064 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/input_transparent.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/input_transparent.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_0s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_0s.png index a87a3ddd7e..ec3b7b2027 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_0s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_0s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_1s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_1s.png index 34ccee5297..109ef9e569 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_1s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_1s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_1s_0s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_1s_0s.png index 2a3525e510..c5df6ca319 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_1s_0s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_1s_0s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_1s_transparent.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_1s_transparent.png index 51bbe590c2..df00593bae 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_1s_transparent.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_1s_transparent.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_transparent_1s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_transparent_1s.png index 2dd11f444d..315369ae02 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_transparent_1s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_0s_transparent_1s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_1s_0s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_1s_0s.png index 732d359ebb..5c26fccab4 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_1s_0s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_1s_0s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_1s_1s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_1s_1s.png index cca0f9761b..538fd66cef 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_1s_1s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_1s_1s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_1s_1s_0s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_1s_1s_0s.png index eb6a1284dc..6a7502ea65 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_1s_1s_0s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_1s_1s_0s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_2s_0s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_2s_0s.png index 5fe353edd0..cfa71091bf 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_2s_0s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_2s_0s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_2s_1s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_2s_1s.png index fe1918f43c..91ace39c70 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_2s_1s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_2s_1s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_2s_1s_2s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_2s_1s_2s.png index 7c0990f0c0..9c37542ab3 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_2s_1s_2s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_2s_1s_2s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_2s_2s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_2s_2s.png index d8832fc703..e5e29e80f4 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_2s_2s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_2s_2s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_3s_0s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_3s_0s.png index d2031a8419..e64cb5cd4b 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_3s_0s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_3s_0s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_3s_2s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_3s_2s.png index 084c7ecf8a..967aebf82d 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_3s_2s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_3s_2s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_3s_3s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_3s_3s.png index 76b583d6f0..300c69910d 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_3s_3s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_3s_3s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_4s_0s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_4s_0s.png index ce32c11cfa..230e30b5cd 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_4s_0s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_4s_0s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_4s_4s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_4s_4s.png index 8b27c7f9df..9576c71d06 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_4s_4s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_4s_4s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_different_dimensions.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_different_dimensions.png index a97da19841..2fa23c1de6 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_different_dimensions.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_different_dimensions.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_grayscale_opaque_0s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_grayscale_opaque_0s.png index 22a0ddbdf3..dcd111a738 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_grayscale_opaque_0s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_grayscale_opaque_0s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_grayscale_opaque_1s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_grayscale_opaque_1s.png index 7e8196a62b..a656b4e811 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_grayscale_opaque_1s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_grayscale_opaque_1s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_grayscale_opaque_2s.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_grayscale_opaque_2s.png index 10039b5628..66d707956f 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_grayscale_opaque_2s.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_grayscale_opaque_2s.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_picture_in_picture.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_picture_in_picture.png index f6126f22d2..914d183cd4 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_picture_in_picture.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_picture_in_picture.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_stacked.png b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_stacked.png index 77827e8f13..19e34ba28d 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_stacked.png and b/libraries/test_data/src/test/assets/media/bitmap/CompositorTestTimestamps/output_stacked.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_FrameProcessor.png b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_FrameProcessor.png index 43108d73ef..48c269d62d 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_FrameProcessor.png and b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_FrameProcessor.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_anchored.png b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_anchored.png index 57a259d97b..9e94b82d50 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_anchored.png and b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_anchored.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_default.png b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_default.png index bc7dfb4ced..73e4ee6c8e 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_default.png and b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_default.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_overlayAnchored.png b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_overlayAnchored.png index 2a1898db8e..caa8f2b8dc 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_overlayAnchored.png and b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_overlayAnchored.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_rotated90.png b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_rotated90.png index 9789de8bfc..237eee6066 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_rotated90.png and b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_rotated90.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_scaled.png b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_scaled.png index c6b5d3bd19..1708b8ec80 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_scaled.png and b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_scaled.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_translucent.png b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_translucent.png index dad57a8dde..ededf07f55 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_translucent.png and b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_bitmap_translucent.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_multiple.png b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_multiple.png index 1a219b2c8b..5c7188ecbe 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_multiple.png and b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_multiple.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_overlap.png b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_overlap.png index 30d794096d..88c4ae4424 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_overlap.png and b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_overlap.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_text_default.png b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_text_default.png index 293eb1158c..e6a8eb5b22 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_text_default.png and b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_text_default.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_text_span_scaled.png b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_text_span_scaled.png index 162590a98f..12a45262e6 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_text_span_scaled.png and b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_text_span_scaled.png differ diff --git a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_text_translate.png b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_text_translate.png index 5857dca95d..8ac729ad06 100644 Binary files a/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_text_translate.png and b/libraries/test_data/src/test/assets/media/bitmap/sample_mp4_first_frame/electrical_colors/overlay_text_translate.png differ