diff --git a/demos/transformer/build.gradle b/demos/transformer/build.gradle
index a745fcea1f..5cf69d2b77 100644
--- a/demos/transformer/build.gradle
+++ b/demos/transformer/build.gradle
@@ -76,6 +76,7 @@ dependencies {
implementation 'androidx.constraintlayout:constraintlayout:' + androidxConstraintLayoutVersion
implementation 'androidx.multidex:multidex:' + androidxMultidexVersion
implementation 'com.google.android.material:material:' + androidxMaterialVersion
+ implementation project(modulePrefix + 'lib-effect')
implementation project(modulePrefix + 'lib-exoplayer')
implementation project(modulePrefix + 'lib-exoplayer-dash')
implementation project(modulePrefix + 'lib-transformer')
diff --git a/demos/transformer/src/main/java/androidx/media3/demo/transformer/BitmapOverlayProcessor.java b/demos/transformer/src/main/java/androidx/media3/demo/transformer/BitmapOverlayProcessor.java
index 90e2676e15..72b7c8b817 100644
--- a/demos/transformer/src/main/java/androidx/media3/demo/transformer/BitmapOverlayProcessor.java
+++ b/demos/transformer/src/main/java/androidx/media3/demo/transformer/BitmapOverlayProcessor.java
@@ -33,7 +33,7 @@ import androidx.media3.common.C;
import androidx.media3.common.FrameProcessingException;
import androidx.media3.common.util.GlProgram;
import androidx.media3.common.util.GlUtil;
-import androidx.media3.transformer.SingleFrameGlTextureProcessor;
+import androidx.media3.effect.SingleFrameGlTextureProcessor;
import java.io.IOException;
import java.util.Locale;
diff --git a/demos/transformer/src/main/java/androidx/media3/demo/transformer/MatrixTransformationFactory.java b/demos/transformer/src/main/java/androidx/media3/demo/transformer/MatrixTransformationFactory.java
index 2aded6a470..0f31a589c9 100644
--- a/demos/transformer/src/main/java/androidx/media3/demo/transformer/MatrixTransformationFactory.java
+++ b/demos/transformer/src/main/java/androidx/media3/demo/transformer/MatrixTransformationFactory.java
@@ -18,8 +18,8 @@ package androidx.media3.demo.transformer;
import android.graphics.Matrix;
import androidx.media3.common.C;
import androidx.media3.common.util.Util;
-import androidx.media3.transformer.GlMatrixTransformation;
-import androidx.media3.transformer.MatrixTransformation;
+import androidx.media3.effect.GlMatrixTransformation;
+import androidx.media3.effect.MatrixTransformation;
/**
* Factory for {@link GlMatrixTransformation GlMatrixTransformations} and {@link
diff --git a/demos/transformer/src/main/java/androidx/media3/demo/transformer/PeriodicVignetteProcessor.java b/demos/transformer/src/main/java/androidx/media3/demo/transformer/PeriodicVignetteProcessor.java
index be24e57383..eb4f07e892 100644
--- a/demos/transformer/src/main/java/androidx/media3/demo/transformer/PeriodicVignetteProcessor.java
+++ b/demos/transformer/src/main/java/androidx/media3/demo/transformer/PeriodicVignetteProcessor.java
@@ -23,7 +23,7 @@ import android.util.Pair;
import androidx.media3.common.FrameProcessingException;
import androidx.media3.common.util.GlProgram;
import androidx.media3.common.util.GlUtil;
-import androidx.media3.transformer.SingleFrameGlTextureProcessor;
+import androidx.media3.effect.SingleFrameGlTextureProcessor;
import java.io.IOException;
/**
diff --git a/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java b/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java
index b580b1b625..aa243ff187 100644
--- a/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java
+++ b/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java
@@ -41,12 +41,12 @@ import androidx.media3.common.Effect;
import androidx.media3.common.MediaItem;
import androidx.media3.common.util.Log;
import androidx.media3.common.util.Util;
+import androidx.media3.effect.Contrast;
+import androidx.media3.effect.GlEffect;
+import androidx.media3.effect.GlTextureProcessor;
import androidx.media3.exoplayer.ExoPlayer;
import androidx.media3.exoplayer.util.DebugTextViewHelper;
-import androidx.media3.transformer.Contrast;
import androidx.media3.transformer.DefaultEncoderFactory;
-import androidx.media3.transformer.GlEffect;
-import androidx.media3.transformer.GlTextureProcessor;
import androidx.media3.transformer.ProgressHolder;
import androidx.media3.transformer.TransformationException;
import androidx.media3.transformer.TransformationRequest;
@@ -279,7 +279,7 @@ public final class TransformerActivity extends AppCompatActivity {
Class> clazz = Class.forName("androidx.media3.demo.transformer.MediaPipeProcessor");
Constructor> constructor =
clazz.getConstructor(
- Context.class, Boolean.class, String.class, String.class, String.class);
+ Context.class, boolean.class, String.class, String.class, String.class);
effects.add(
(GlEffect)
(Context context, boolean useHdr) -> {
diff --git a/demos/transformer/src/withMediaPipe/java/androidx/media3/demo/transformer/MediaPipeProcessor.java b/demos/transformer/src/withMediaPipe/java/androidx/media3/demo/transformer/MediaPipeProcessor.java
index c93caf2665..8eaf1f19a5 100644
--- a/demos/transformer/src/withMediaPipe/java/androidx/media3/demo/transformer/MediaPipeProcessor.java
+++ b/demos/transformer/src/withMediaPipe/java/androidx/media3/demo/transformer/MediaPipeProcessor.java
@@ -28,8 +28,8 @@ import androidx.media3.common.C;
import androidx.media3.common.FrameProcessingException;
import androidx.media3.common.util.LibraryLoader;
import androidx.media3.common.util.Util;
-import androidx.media3.transformer.GlTextureProcessor;
-import androidx.media3.transformer.TextureInfo;
+import androidx.media3.effect.GlTextureProcessor;
+import androidx.media3.effect.TextureInfo;
import com.google.mediapipe.components.FrameProcessor;
import com.google.mediapipe.framework.AppTextureFrame;
import com.google.mediapipe.framework.TextureFrame;
diff --git a/libraries/effect/build.gradle b/libraries/effect/build.gradle
index 2ec6d301d1..e3e319a801 100644
--- a/libraries/effect/build.gradle
+++ b/libraries/effect/build.gradle
@@ -35,6 +35,24 @@ android {
}
}
+dependencies {
+ implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion
+ implementation project(modulePrefix + 'lib-common')
+ compileOnly 'com.google.errorprone:error_prone_annotations:' + errorProneVersion
+ compileOnly 'org.checkerframework:checker-qual:' + checkerframeworkVersion
+ compileOnly 'org.checkerframework:checker-compat-qual:' + checkerframeworkCompatVersion
+ compileOnly 'org.jetbrains.kotlin:kotlin-annotations-jvm:' + kotlinAnnotationsVersion
+ testImplementation project(modulePrefix + 'test-utils-robolectric')
+ testImplementation project(modulePrefix + 'test-utils')
+ testImplementation project(modulePrefix + 'test-data')
+ testImplementation 'org.robolectric:robolectric:' + robolectricVersion
+ testImplementation 'com.google.truth:truth:' + truthVersion
+ androidTestImplementation 'junit:junit:' + junitVersion
+ androidTestImplementation 'androidx.test:runner:' + androidxTestRunnerVersion
+ androidTestImplementation 'com.google.truth:truth:' + truthVersion
+ androidTestImplementation project(modulePrefix + 'test-utils')
+}
+
ext {
javadocTitle = 'Effect module'
}
diff --git a/libraries/effect/src/androidTest/AndroidManifest.xml b/libraries/effect/src/androidTest/AndroidManifest.xml
new file mode 100644
index 0000000000..76bf2cda9b
--- /dev/null
+++ b/libraries/effect/src/androidTest/AndroidManifest.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/BitmapTestUtil.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/BitmapTestUtil.java
similarity index 99%
rename from libraries/transformer/src/androidTest/java/androidx/media3/transformer/BitmapTestUtil.java
rename to libraries/effect/src/androidTest/java/androidx/media3/effect/BitmapTestUtil.java
index 05c4e59e6d..e9b6693e43 100644
--- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/BitmapTestUtil.java
+++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/BitmapTestUtil.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
import static com.google.common.truth.Truth.assertThat;
diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/ContrastPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/ContrastPixelTest.java
similarity index 98%
rename from libraries/transformer/src/androidTest/java/androidx/media3/transformer/ContrastPixelTest.java
rename to libraries/effect/src/androidTest/java/androidx/media3/effect/ContrastPixelTest.java
index eb6133b0f9..3353be35bd 100644
--- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/ContrastPixelTest.java
+++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/ContrastPixelTest.java
@@ -14,10 +14,10 @@
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static androidx.media3.common.util.Assertions.checkNotNull;
-import static androidx.media3.transformer.BitmapTestUtil.MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE;
+import static androidx.media3.effect.BitmapTestUtil.MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE;
import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
import static com.google.common.truth.Truth.assertThat;
diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/CropPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/CropPixelTest.java
similarity index 98%
rename from libraries/transformer/src/androidTest/java/androidx/media3/transformer/CropPixelTest.java
rename to libraries/effect/src/androidTest/java/androidx/media3/effect/CropPixelTest.java
index a5558aa1b1..80a3a4b78d 100644
--- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/CropPixelTest.java
+++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/CropPixelTest.java
@@ -13,10 +13,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static androidx.media3.common.util.Assertions.checkNotNull;
-import static androidx.media3.transformer.BitmapTestUtil.MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE;
+import static androidx.media3.effect.BitmapTestUtil.MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE;
import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
import static com.google.common.truth.Truth.assertThat;
diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/GlEffectsFrameProcessorPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/GlEffectsFrameProcessorPixelTest.java
similarity index 99%
rename from libraries/transformer/src/androidTest/java/androidx/media3/transformer/GlEffectsFrameProcessorPixelTest.java
rename to libraries/effect/src/androidTest/java/androidx/media3/effect/GlEffectsFrameProcessorPixelTest.java
index 48dc50822a..f36270b2cd 100644
--- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/GlEffectsFrameProcessorPixelTest.java
+++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/GlEffectsFrameProcessorPixelTest.java
@@ -13,11 +13,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static androidx.media3.common.util.Assertions.checkNotNull;
import static androidx.media3.common.util.Assertions.checkStateNotNull;
-import static androidx.media3.transformer.BitmapTestUtil.MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE;
+import static androidx.media3.effect.BitmapTestUtil.MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE;
import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
import static com.google.common.truth.Truth.assertThat;
import static java.util.Arrays.asList;
diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/MatrixTransformationProcessorPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/MatrixTransformationProcessorPixelTest.java
similarity index 98%
rename from libraries/transformer/src/androidTest/java/androidx/media3/transformer/MatrixTransformationProcessorPixelTest.java
rename to libraries/effect/src/androidTest/java/androidx/media3/effect/MatrixTransformationProcessorPixelTest.java
index 4fab3251c9..826e9ed923 100644
--- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/MatrixTransformationProcessorPixelTest.java
+++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/MatrixTransformationProcessorPixelTest.java
@@ -13,9 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
-import static androidx.media3.transformer.BitmapTestUtil.MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE;
+import static androidx.media3.effect.BitmapTestUtil.MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE;
import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
import static com.google.common.truth.Truth.assertThat;
diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/PresentationPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/PresentationPixelTest.java
similarity index 99%
rename from libraries/transformer/src/androidTest/java/androidx/media3/transformer/PresentationPixelTest.java
rename to libraries/effect/src/androidTest/java/androidx/media3/effect/PresentationPixelTest.java
index 9469fa0382..a44b087d76 100644
--- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/PresentationPixelTest.java
+++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/PresentationPixelTest.java
@@ -13,10 +13,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static androidx.media3.common.util.Assertions.checkNotNull;
-import static androidx.media3.transformer.BitmapTestUtil.MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE;
+import static androidx.media3.effect.BitmapTestUtil.MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE;
import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
import static com.google.common.truth.Truth.assertThat;
diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/RgbaMatrixPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/RgbaMatrixPixelTest.java
similarity index 98%
rename from libraries/transformer/src/androidTest/java/androidx/media3/transformer/RgbaMatrixPixelTest.java
rename to libraries/effect/src/androidTest/java/androidx/media3/effect/RgbaMatrixPixelTest.java
index 08962cb24d..1af29d6950 100644
--- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/RgbaMatrixPixelTest.java
+++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/RgbaMatrixPixelTest.java
@@ -14,10 +14,10 @@
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static androidx.media3.common.util.Assertions.checkNotNull;
-import static androidx.media3.transformer.BitmapTestUtil.MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE;
+import static androidx.media3.effect.BitmapTestUtil.MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE;
import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
import static com.google.common.truth.Truth.assertThat;
diff --git a/libraries/transformer/src/main/assets/shaders/fragment_shader_contrast_es2.glsl b/libraries/effect/src/main/assets/shaders/fragment_shader_contrast_es2.glsl
similarity index 100%
rename from libraries/transformer/src/main/assets/shaders/fragment_shader_contrast_es2.glsl
rename to libraries/effect/src/main/assets/shaders/fragment_shader_contrast_es2.glsl
diff --git a/libraries/transformer/src/main/assets/shaders/fragment_shader_copy_es2.glsl b/libraries/effect/src/main/assets/shaders/fragment_shader_copy_es2.glsl
similarity index 100%
rename from libraries/transformer/src/main/assets/shaders/fragment_shader_copy_es2.glsl
rename to libraries/effect/src/main/assets/shaders/fragment_shader_copy_es2.glsl
diff --git a/libraries/transformer/src/main/assets/shaders/fragment_shader_copy_external_es2.glsl b/libraries/effect/src/main/assets/shaders/fragment_shader_copy_external_es2.glsl
similarity index 100%
rename from libraries/transformer/src/main/assets/shaders/fragment_shader_copy_external_es2.glsl
rename to libraries/effect/src/main/assets/shaders/fragment_shader_copy_external_es2.glsl
diff --git a/libraries/transformer/src/main/assets/shaders/fragment_shader_copy_external_yuv_es3.glsl b/libraries/effect/src/main/assets/shaders/fragment_shader_copy_external_yuv_es3.glsl
similarity index 100%
rename from libraries/transformer/src/main/assets/shaders/fragment_shader_copy_external_yuv_es3.glsl
rename to libraries/effect/src/main/assets/shaders/fragment_shader_copy_external_yuv_es3.glsl
diff --git a/libraries/transformer/src/main/assets/shaders/fragment_shader_hlg_eotf_es3.glsl b/libraries/effect/src/main/assets/shaders/fragment_shader_hlg_eotf_es3.glsl
similarity index 100%
rename from libraries/transformer/src/main/assets/shaders/fragment_shader_hlg_eotf_es3.glsl
rename to libraries/effect/src/main/assets/shaders/fragment_shader_hlg_eotf_es3.glsl
diff --git a/libraries/transformer/src/main/assets/shaders/fragment_shader_transformation_es2.glsl b/libraries/effect/src/main/assets/shaders/fragment_shader_transformation_es2.glsl
similarity index 100%
rename from libraries/transformer/src/main/assets/shaders/fragment_shader_transformation_es2.glsl
rename to libraries/effect/src/main/assets/shaders/fragment_shader_transformation_es2.glsl
diff --git a/libraries/transformer/src/main/assets/shaders/vertex_shader_transformation_es2.glsl b/libraries/effect/src/main/assets/shaders/vertex_shader_transformation_es2.glsl
similarity index 100%
rename from libraries/transformer/src/main/assets/shaders/vertex_shader_transformation_es2.glsl
rename to libraries/effect/src/main/assets/shaders/vertex_shader_transformation_es2.glsl
diff --git a/libraries/transformer/src/main/assets/shaders/vertex_shader_transformation_es3.glsl b/libraries/effect/src/main/assets/shaders/vertex_shader_transformation_es3.glsl
similarity index 100%
rename from libraries/transformer/src/main/assets/shaders/vertex_shader_transformation_es3.glsl
rename to libraries/effect/src/main/assets/shaders/vertex_shader_transformation_es3.glsl
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/ChainingGlTextureProcessorListener.java b/libraries/effect/src/main/java/androidx/media3/effect/ChainingGlTextureProcessorListener.java
similarity index 99%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/ChainingGlTextureProcessorListener.java
rename to libraries/effect/src/main/java/androidx/media3/effect/ChainingGlTextureProcessorListener.java
index 7f7fd8ca04..f9dc0ece4c 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/ChainingGlTextureProcessorListener.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/ChainingGlTextureProcessorListener.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import android.util.Pair;
import androidx.annotation.Nullable;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/Contrast.java b/libraries/effect/src/main/java/androidx/media3/effect/Contrast.java
similarity index 97%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/Contrast.java
rename to libraries/effect/src/main/java/androidx/media3/effect/Contrast.java
index b4399d8ed0..7bbcae2caf 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/Contrast.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/Contrast.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static androidx.media3.common.util.Assertions.checkArgument;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/ContrastProcessor.java b/libraries/effect/src/main/java/androidx/media3/effect/ContrastProcessor.java
similarity index 98%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/ContrastProcessor.java
rename to libraries/effect/src/main/java/androidx/media3/effect/ContrastProcessor.java
index 101928895a..17f8b067b9 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/ContrastProcessor.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/ContrastProcessor.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import android.content.Context;
import android.opengl.GLES20;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/Crop.java b/libraries/effect/src/main/java/androidx/media3/effect/Crop.java
similarity index 99%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/Crop.java
rename to libraries/effect/src/main/java/androidx/media3/effect/Crop.java
index 2318d87397..fc0745a56b 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/Crop.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/Crop.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static androidx.media3.common.util.Assertions.checkArgument;
import static androidx.media3.common.util.Assertions.checkStateNotNull;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/ExternalTextureProcessor.java b/libraries/effect/src/main/java/androidx/media3/effect/ExternalTextureProcessor.java
similarity index 97%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/ExternalTextureProcessor.java
rename to libraries/effect/src/main/java/androidx/media3/effect/ExternalTextureProcessor.java
index f31c7682ad..16194da5f3 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/ExternalTextureProcessor.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/ExternalTextureProcessor.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
/**
* Interface for a {@link GlTextureProcessor} that samples from an external texture.
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/FinalMatrixTransformationProcessorWrapper.java b/libraries/effect/src/main/java/androidx/media3/effect/FinalMatrixTransformationProcessorWrapper.java
similarity index 99%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/FinalMatrixTransformationProcessorWrapper.java
rename to libraries/effect/src/main/java/androidx/media3/effect/FinalMatrixTransformationProcessorWrapper.java
index b22ae5c0ba..70cfbb3aa5 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/FinalMatrixTransformationProcessorWrapper.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/FinalMatrixTransformationProcessorWrapper.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static androidx.media3.common.util.Assertions.checkState;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/FrameProcessingTask.java b/libraries/effect/src/main/java/androidx/media3/effect/FrameProcessingTask.java
similarity index 96%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/FrameProcessingTask.java
rename to libraries/effect/src/main/java/androidx/media3/effect/FrameProcessingTask.java
index e12bcae923..46d1da45e5 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/FrameProcessingTask.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/FrameProcessingTask.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import androidx.media3.common.FrameProcessingException;
import androidx.media3.common.util.GlUtil;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/FrameProcessingTaskExecutor.java b/libraries/effect/src/main/java/androidx/media3/effect/FrameProcessingTaskExecutor.java
similarity index 99%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/FrameProcessingTaskExecutor.java
rename to libraries/effect/src/main/java/androidx/media3/effect/FrameProcessingTaskExecutor.java
index 8272e543e4..a87356e965 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/FrameProcessingTaskExecutor.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/FrameProcessingTaskExecutor.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/GlEffect.java b/libraries/effect/src/main/java/androidx/media3/effect/GlEffect.java
similarity index 98%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/GlEffect.java
rename to libraries/effect/src/main/java/androidx/media3/effect/GlEffect.java
index 6b57d4d607..b93da70075 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/GlEffect.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/GlEffect.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import android.content.Context;
import androidx.media3.common.Effect;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/GlEffectsFrameProcessor.java b/libraries/effect/src/main/java/androidx/media3/effect/GlEffectsFrameProcessor.java
similarity index 99%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/GlEffectsFrameProcessor.java
rename to libraries/effect/src/main/java/androidx/media3/effect/GlEffectsFrameProcessor.java
index c1e31fbed4..b5bcafd530 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/GlEffectsFrameProcessor.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/GlEffectsFrameProcessor.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static androidx.media3.common.util.Assertions.checkArgument;
import static androidx.media3.common.util.Assertions.checkState;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/GlMatrixTransformation.java b/libraries/effect/src/main/java/androidx/media3/effect/GlMatrixTransformation.java
similarity index 98%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/GlMatrixTransformation.java
rename to libraries/effect/src/main/java/androidx/media3/effect/GlMatrixTransformation.java
index 94db69e9ae..4ae5a62646 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/GlMatrixTransformation.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/GlMatrixTransformation.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import android.content.Context;
import android.opengl.Matrix;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/GlTextureProcessor.java b/libraries/effect/src/main/java/androidx/media3/effect/GlTextureProcessor.java
similarity index 99%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/GlTextureProcessor.java
rename to libraries/effect/src/main/java/androidx/media3/effect/GlTextureProcessor.java
index a935b8f187..04a3e836d6 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/GlTextureProcessor.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/GlTextureProcessor.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import androidx.media3.common.FrameProcessingException;
import androidx.media3.common.util.UnstableApi;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/MatrixTransformation.java b/libraries/effect/src/main/java/androidx/media3/effect/MatrixTransformation.java
similarity index 97%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/MatrixTransformation.java
rename to libraries/effect/src/main/java/androidx/media3/effect/MatrixTransformation.java
index 2bfd1b4946..5473485cae 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/MatrixTransformation.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/MatrixTransformation.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import android.graphics.Matrix;
import androidx.media3.common.util.UnstableApi;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/MatrixTransformationProcessor.java b/libraries/effect/src/main/java/androidx/media3/effect/MatrixTransformationProcessor.java
similarity index 99%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/MatrixTransformationProcessor.java
rename to libraries/effect/src/main/java/androidx/media3/effect/MatrixTransformationProcessor.java
index 1107888575..eb206ba12a 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/MatrixTransformationProcessor.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/MatrixTransformationProcessor.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static androidx.media3.common.util.Assertions.checkState;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/MatrixUtils.java b/libraries/effect/src/main/java/androidx/media3/effect/MatrixUtils.java
similarity index 99%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/MatrixUtils.java
rename to libraries/effect/src/main/java/androidx/media3/effect/MatrixUtils.java
index 5a4ac664b4..9cd2ded72b 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/MatrixUtils.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/MatrixUtils.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static androidx.media3.common.util.Assertions.checkArgument;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/Presentation.java b/libraries/effect/src/main/java/androidx/media3/effect/Presentation.java
similarity index 99%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/Presentation.java
rename to libraries/effect/src/main/java/androidx/media3/effect/Presentation.java
index 98fbed9cb1..6e28ea1975 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/Presentation.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/Presentation.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static androidx.media3.common.util.Assertions.checkArgument;
import static androidx.media3.common.util.Assertions.checkStateNotNull;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/RgbaMatrix.java b/libraries/effect/src/main/java/androidx/media3/effect/RgbaMatrix.java
similarity index 97%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/RgbaMatrix.java
rename to libraries/effect/src/main/java/androidx/media3/effect/RgbaMatrix.java
index b46e6a363b..7e9674e432 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/RgbaMatrix.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/RgbaMatrix.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import android.content.Context;
import androidx.media3.common.FrameProcessingException;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/RgbaMatrixProcessor.java b/libraries/effect/src/main/java/androidx/media3/effect/RgbaMatrixProcessor.java
similarity index 98%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/RgbaMatrixProcessor.java
rename to libraries/effect/src/main/java/androidx/media3/effect/RgbaMatrixProcessor.java
index 5694451b9a..7130ceb995 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/RgbaMatrixProcessor.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/RgbaMatrixProcessor.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import android.content.Context;
import android.opengl.GLES20;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/ScaleToFitTransformation.java b/libraries/effect/src/main/java/androidx/media3/effect/ScaleToFitTransformation.java
similarity index 99%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/ScaleToFitTransformation.java
rename to libraries/effect/src/main/java/androidx/media3/effect/ScaleToFitTransformation.java
index bef1747072..c6d3a333e6 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/ScaleToFitTransformation.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/ScaleToFitTransformation.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static androidx.media3.common.util.Assertions.checkArgument;
import static androidx.media3.common.util.Assertions.checkStateNotNull;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/SingleFrameGlTextureProcessor.java b/libraries/effect/src/main/java/androidx/media3/effect/SingleFrameGlTextureProcessor.java
similarity index 99%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/SingleFrameGlTextureProcessor.java
rename to libraries/effect/src/main/java/androidx/media3/effect/SingleFrameGlTextureProcessor.java
index cb015b5029..90cd0ede74 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/SingleFrameGlTextureProcessor.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/SingleFrameGlTextureProcessor.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import android.util.Pair;
import androidx.annotation.CallSuper;
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/TextureInfo.java b/libraries/effect/src/main/java/androidx/media3/effect/TextureInfo.java
similarity index 97%
rename from libraries/transformer/src/main/java/androidx/media3/transformer/TextureInfo.java
rename to libraries/effect/src/main/java/androidx/media3/effect/TextureInfo.java
index 9e96c8e923..b929e22233 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/TextureInfo.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/TextureInfo.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import androidx.media3.common.util.UnstableApi;
diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/ChainingGlTextureProcessorListenerTest.java b/libraries/effect/src/test/java/androidx/media3/effect/ChainingGlTextureProcessorListenerTest.java
similarity index 99%
rename from libraries/transformer/src/test/java/androidx/media3/transformer/ChainingGlTextureProcessorListenerTest.java
rename to libraries/effect/src/test/java/androidx/media3/effect/ChainingGlTextureProcessorListenerTest.java
index 37b00cd902..cc81ffc50e 100644
--- a/libraries/transformer/src/test/java/androidx/media3/transformer/ChainingGlTextureProcessorListenerTest.java
+++ b/libraries/effect/src/test/java/androidx/media3/effect/ChainingGlTextureProcessorListenerTest.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/CropTest.java b/libraries/effect/src/test/java/androidx/media3/effect/CropTest.java
similarity index 98%
rename from libraries/transformer/src/test/java/androidx/media3/transformer/CropTest.java
rename to libraries/effect/src/test/java/androidx/media3/effect/CropTest.java
index 3f09142775..33582476b1 100644
--- a/libraries/transformer/src/test/java/androidx/media3/transformer/CropTest.java
+++ b/libraries/effect/src/test/java/androidx/media3/effect/CropTest.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static com.google.common.truth.Truth.assertThat;
diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/MatrixUtilsTest.java b/libraries/effect/src/test/java/androidx/media3/effect/MatrixUtilsTest.java
similarity index 99%
rename from libraries/transformer/src/test/java/androidx/media3/transformer/MatrixUtilsTest.java
rename to libraries/effect/src/test/java/androidx/media3/effect/MatrixUtilsTest.java
index 8c80ef6103..e548002f0a 100644
--- a/libraries/transformer/src/test/java/androidx/media3/transformer/MatrixUtilsTest.java
+++ b/libraries/effect/src/test/java/androidx/media3/effect/MatrixUtilsTest.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertThrows;
diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/PresentationTest.java b/libraries/effect/src/test/java/androidx/media3/effect/PresentationTest.java
similarity index 98%
rename from libraries/transformer/src/test/java/androidx/media3/transformer/PresentationTest.java
rename to libraries/effect/src/test/java/androidx/media3/effect/PresentationTest.java
index 80df57767a..4bcf78a388 100644
--- a/libraries/transformer/src/test/java/androidx/media3/transformer/PresentationTest.java
+++ b/libraries/effect/src/test/java/androidx/media3/effect/PresentationTest.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static com.google.common.truth.Truth.assertThat;
diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/ScaleToFitTransformationTest.java b/libraries/effect/src/test/java/androidx/media3/effect/ScaleToFitTransformationTest.java
similarity index 99%
rename from libraries/transformer/src/test/java/androidx/media3/transformer/ScaleToFitTransformationTest.java
rename to libraries/effect/src/test/java/androidx/media3/effect/ScaleToFitTransformationTest.java
index d122ba3dfe..efc18b7741 100644
--- a/libraries/transformer/src/test/java/androidx/media3/transformer/ScaleToFitTransformationTest.java
+++ b/libraries/effect/src/test/java/androidx/media3/effect/ScaleToFitTransformationTest.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.media3.transformer;
+package androidx.media3.effect;
import static com.google.common.truth.Truth.assertThat;
diff --git a/libraries/transformer/build.gradle b/libraries/transformer/build.gradle
index 00dfc401ab..58e979af83 100644
--- a/libraries/transformer/build.gradle
+++ b/libraries/transformer/build.gradle
@@ -38,6 +38,7 @@ android {
dependencies {
implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion
implementation project(modulePrefix + 'lib-exoplayer')
+ implementation project(modulePrefix + 'lib-effect')
compileOnly 'com.google.errorprone:error_prone_annotations:' + errorProneVersion
compileOnly 'org.checkerframework:checker-qual:' + checkerframeworkVersion
compileOnly 'org.checkerframework:checker-compat-qual:' + checkerframeworkCompatVersion
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java
index c70eda8bed..3f4402f0a3 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java
+++ b/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java
@@ -48,6 +48,9 @@ import androidx.media3.common.util.Clock;
import androidx.media3.common.util.ListenerSet;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.common.util.Util;
+import androidx.media3.effect.GlEffect;
+import androidx.media3.effect.GlEffectsFrameProcessor;
+import androidx.media3.effect.GlMatrixTransformation;
import androidx.media3.exoplayer.DefaultLoadControl;
import androidx.media3.exoplayer.ExoPlayer;
import androidx.media3.exoplayer.Renderer;
@@ -198,9 +201,9 @@ public final class Transformer {
* {@linkplain Effect effects} to the video frames.
*
*
This factory will be used to create the {@link FrameProcessor} used for applying the
- * {@link Effect} instances passed to {@link #setVideoEffects(List)} and any additional
- * {@link GlMatrixTransformation} instances derived from the {@link TransformationRequest} set
- * using {@link #setTransformationRequest(TransformationRequest)}.
+ * {@link Effect} instances passed to {@link #setVideoEffects(List)} and any additional {@link
+ * GlMatrixTransformation} instances derived from the {@link TransformationRequest} set using
+ * {@link #setTransformationRequest(TransformationRequest)}.
*
* The default is {@link GlEffectsFrameProcessor.Factory}.
*
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/VideoTranscodingSamplePipeline.java b/libraries/transformer/src/main/java/androidx/media3/transformer/VideoTranscodingSamplePipeline.java
index cf50c5a82b..f48046c5b6 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/VideoTranscodingSamplePipeline.java
+++ b/libraries/transformer/src/main/java/androidx/media3/transformer/VideoTranscodingSamplePipeline.java
@@ -34,6 +34,8 @@ import androidx.media3.common.FrameProcessor;
import androidx.media3.common.SurfaceInfo;
import androidx.media3.common.util.Util;
import androidx.media3.decoder.DecoderInputBuffer;
+import androidx.media3.effect.Presentation;
+import androidx.media3.effect.ScaleToFitTransformation;
import com.google.common.collect.ImmutableList;
import java.nio.ByteBuffer;
import java.util.ArrayList;