diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java index 6c582eb6e7..e0f5647a7f 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java @@ -28,10 +28,10 @@ import static androidx.media3.transformer.AndroidTestUtil.PNG_ASSET_URI_STRING; import static androidx.media3.transformer.AndroidTestUtil.createOpenGlObjects; import static androidx.media3.transformer.AndroidTestUtil.generateTextureFromBitmap; import static androidx.media3.transformer.AndroidTestUtil.recordTestSkipped; +import static androidx.media3.transformer.ExportResult.OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT_OPTIMAL_FOR_TRIM; +import static androidx.media3.transformer.ExportResult.OPTIMIZATION_ABANDONED_TRIM_AND_TRANSCODING_TRANSFORMATION_REQUESTED; import static androidx.media3.transformer.ExportResult.OPTIMIZATION_FAILED_FORMAT_MISMATCH; import static androidx.media3.transformer.ExportResult.OPTIMIZATION_SUCCEEDED; -import static androidx.media3.transformer.ExportResult.TRIM_OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT; -import static androidx.media3.transformer.ExportResult.TRIM_OPTIMIZATION_ABANDONED_TRANSCODING_EFFECTS_REQUESTED; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertThrows; import static org.junit.Assume.assumeFalse; @@ -514,7 +514,7 @@ public class TransformerEndToEndTest { .run(testId, mediaItem); assertThat(result.exportResult.optimizationResult) - .isEqualTo(TRIM_OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT); + .isEqualTo(OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT_OPTIMAL_FOR_TRIM); assertThat(result.exportResult.durationMs).isAtMost(clippingEndMs - clippingStartMs); } @@ -549,7 +549,7 @@ public class TransformerEndToEndTest { .run(testId, mediaItem); assertThat(result.exportResult.optimizationResult) - .isEqualTo(TRIM_OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT); + .isEqualTo(OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT_OPTIMAL_FOR_TRIM); // The asset is 15 s 537 ms long. assertThat(result.exportResult.durationMs).isAtMost(1_017); } @@ -620,7 +620,7 @@ public class TransformerEndToEndTest { .run(testId, editedMediaItem); assertThat(result.exportResult.optimizationResult) - .isEqualTo(TRIM_OPTIMIZATION_ABANDONED_TRANSCODING_EFFECTS_REQUESTED); + .isEqualTo(OPTIMIZATION_ABANDONED_TRIM_AND_TRANSCODING_TRANSFORMATION_REQUESTED); } @Test diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/ExportResult.java b/libraries/transformer/src/main/java/androidx/media3/transformer/ExportResult.java index aa44961329..faa6122d1c 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/ExportResult.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/ExportResult.java @@ -294,8 +294,8 @@ public final class ExportResult { *
The trim optimization does not improve performance when the video starts at a key frame, or - * when there is no key frames between the requested {@link + *
The trim optimization does not improve performance when the requested {@link + * androidx.media3.common.MediaItem.ClippingConfiguration#startPositionUs} is at a key frame, or + * when there are no key frames between the requested {@link * androidx.media3.common.MediaItem.ClippingConfiguration#startPositionUs} and {@link * androidx.media3.common.MediaItem.ClippingConfiguration#endPositionUs} */ - public static final int TRIM_OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT = 2; + public static final int OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT_OPTIMAL_FOR_TRIM = 2; /** * {@linkplain Transformer.Builder#experimentalSetTrimOptimizationEnabled Trim optimization was - * requested}, but it would not improve performance because an effect that requires transcoding - * was also requested. The optimization was abandoned and normal export proceeded. + * requested}, but it would not improve performance because another transformation that requires + * transcoding was also requested. The optimization was abandoned and normal export proceeded. */ - public static final int TRIM_OPTIMIZATION_ABANDONED_TRANSCODING_EFFECTS_REQUESTED = 3; + public static final int OPTIMIZATION_ABANDONED_TRIM_AND_TRANSCODING_TRANSFORMATION_REQUESTED = 3; /** * The requested optimization would not improve performance for a reason other than the ones 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 92f43ddab3..5745f78e0d 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java @@ -20,11 +20,11 @@ import static androidx.media3.common.util.Assertions.checkArgument; import static androidx.media3.common.util.Assertions.checkNotNull; import static androidx.media3.common.util.Assertions.checkState; import static androidx.media3.transformer.Composition.HDR_MODE_EXPERIMENTAL_FORCE_INTERPRET_HDR_AS_SDR; +import static androidx.media3.transformer.ExportResult.OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT_OPTIMAL_FOR_TRIM; import static androidx.media3.transformer.ExportResult.OPTIMIZATION_ABANDONED_OTHER; +import static androidx.media3.transformer.ExportResult.OPTIMIZATION_ABANDONED_TRIM_AND_TRANSCODING_TRANSFORMATION_REQUESTED; import static androidx.media3.transformer.ExportResult.OPTIMIZATION_FAILED_EXTRACTION_FAILED; import static androidx.media3.transformer.ExportResult.OPTIMIZATION_FAILED_FORMAT_MISMATCH; -import static androidx.media3.transformer.ExportResult.TRIM_OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT; -import static androidx.media3.transformer.ExportResult.TRIM_OPTIMIZATION_ABANDONED_TRANSCODING_EFFECTS_REQUESTED; import static androidx.media3.transformer.TransformerUtil.shouldTranscodeAudio; import static androidx.media3.transformer.TransformerUtil.shouldTranscodeVideo; import static androidx.media3.transformer.TransmuxTranscodeHelper.buildNewCompositionWithClipTimes; @@ -1253,7 +1253,7 @@ public final class Transformer { || (trimEndTimeUs != C.TIME_END_OF_SOURCE && trimEndTimeUs < mp4MetadataInfo.firstSyncSampleTimestampUsAfterTimeUs)) { exportResultBuilder.setOptimizationResult( - TRIM_OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT); + OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT_OPTIMAL_FOR_TRIM); processFullInput(); return; } @@ -1269,7 +1269,7 @@ public final class Transformer { mp4MetadataInfo.durationUs, /* startsAtKeyFrame= */ true); exportResultBuilder.setOptimizationResult( - TRIM_OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT); + OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT_OPTIMAL_FOR_TRIM); processFullInput(); return; } @@ -1296,7 +1296,7 @@ public final class Transformer { remuxingMuxerWrapper))) { remuxingMuxerWrapper = null; exportResultBuilder.setOptimizationResult( - TRIM_OPTIMIZATION_ABANDONED_TRANSCODING_EFFECTS_REQUESTED); + OPTIMIZATION_ABANDONED_TRIM_AND_TRANSCODING_TRANSFORMATION_REQUESTED); processFullInput(); return; } diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/MediaItemExportTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/MediaItemExportTest.java index 079bfe1520..0b47d162c3 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/MediaItemExportTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/MediaItemExportTest.java @@ -19,8 +19,8 @@ package androidx.media3.transformer; import static androidx.media3.test.utils.robolectric.RobolectricUtil.runLooperUntil; import static androidx.media3.transformer.AssetLoader.SUPPORTED_OUTPUT_TYPE_DECODED; import static androidx.media3.transformer.AssetLoader.SUPPORTED_OUTPUT_TYPE_ENCODED; +import static androidx.media3.transformer.ExportResult.OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT_OPTIMAL_FOR_TRIM; import static androidx.media3.transformer.ExportResult.OPTIMIZATION_FAILED_EXTRACTION_FAILED; -import static androidx.media3.transformer.ExportResult.TRIM_OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT; import static androidx.media3.transformer.TestUtil.ASSET_URI_PREFIX; import static androidx.media3.transformer.TestUtil.FILE_AUDIO_AMR_NB; import static androidx.media3.transformer.TestUtil.FILE_AUDIO_AMR_WB; @@ -170,7 +170,7 @@ public final class MediaItemExportTest { ExportResult exportResult = TransformerTestRunner.runLooper(transformer); assertThat(exportResult.optimizationResult) - .isEqualTo(TRIM_OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT); + .isEqualTo(OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT_OPTIMAL_FOR_TRIM); // Asserts against file generated when experimentalSetTrimOptimizationEnabled is set to false. DumpFileAsserts.assertOutput( context, @@ -199,7 +199,7 @@ public final class MediaItemExportTest { ExportResult exportResult = TransformerTestRunner.runLooper(transformer); assertThat(exportResult.optimizationResult) - .isEqualTo(TRIM_OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT); + .isEqualTo(OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT_OPTIMAL_FOR_TRIM); DumpFileAsserts.assertOutput( context, muxerFactory.getCreatedMuxer(),