diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultCodecFactory.java b/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultCodecFactory.java index c65caf545d..ef0443a8b0 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultCodecFactory.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultCodecFactory.java @@ -294,7 +294,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; mediaCodecName, isDecoder ? TransformationException.ERROR_CODE_DECODING_FORMAT_UNSUPPORTED - : TransformationException.ERROR_CODE_ENCODING_FORMAT_UNSUPPORTED); + : TransformationException.ERROR_CODE_OUTPUT_FORMAT_UNSUPPORTED); } return TransformationException.createForUnexpected(cause); } diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformationException.java b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformationException.java index db780db91f..270205258a 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformationException.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformationException.java @@ -71,10 +71,9 @@ public final class TransformationException extends Exception { ERROR_CODE_DECODING_FORMAT_UNSUPPORTED, ERROR_CODE_ENCODER_INIT_FAILED, ERROR_CODE_ENCODING_FAILED, - ERROR_CODE_ENCODING_FORMAT_UNSUPPORTED, + ERROR_CODE_OUTPUT_FORMAT_UNSUPPORTED, ERROR_CODE_GL_INIT_FAILED, ERROR_CODE_GL_PROCESSING_FAILED, - ERROR_CODE_MUXER_SAMPLE_MIME_TYPE_UNSUPPORTED, ERROR_CODE_MUXING_FAILED, }) public @interface ErrorCode {} @@ -148,8 +147,13 @@ public final class TransformationException extends Exception { public static final int ERROR_CODE_ENCODER_INIT_FAILED = 4001; /** Caused by a failure while trying to encode media samples. */ public static final int ERROR_CODE_ENCODING_FAILED = 4002; - /** Caused by requesting to encode content in a format that is not supported by the device. */ - public static final int ERROR_CODE_ENCODING_FORMAT_UNSUPPORTED = 4003; + /** + * Caused by the output format for a track not being supported. + * + *

Supported output formats are limited by the muxer's capabilities and the {@link + * Codec.DecoderFactory encoders} available. + */ + public static final int ERROR_CODE_OUTPUT_FORMAT_UNSUPPORTED = 4003; // Video editing errors (5xxx). @@ -159,16 +163,8 @@ public final class TransformationException extends Exception { public static final int ERROR_CODE_GL_PROCESSING_FAILED = 5002; // Muxing errors (6xxx). - - /** - * Caused by an output sample MIME type inferred from the input not being supported by the muxer. - * - *

Use {@link TransformationRequest.Builder#setAudioMimeType(String)} or {@link - * TransformationRequest.Builder#setVideoMimeType(String)} to transcode to a supported MIME type. - */ - public static final int ERROR_CODE_MUXER_SAMPLE_MIME_TYPE_UNSUPPORTED = 6001; /** Caused by a failure while muxing media samples. */ - public static final int ERROR_CODE_MUXING_FAILED = 6002; + public static final int ERROR_CODE_MUXING_FAILED = 6001; private static final ImmutableBiMap NAME_TO_ERROR_CODE = new ImmutableBiMap.Builder() @@ -187,12 +183,9 @@ public final class TransformationException extends Exception { .put("ERROR_CODE_DECODING_FORMAT_UNSUPPORTED", ERROR_CODE_DECODING_FORMAT_UNSUPPORTED) .put("ERROR_CODE_ENCODER_INIT_FAILED", ERROR_CODE_ENCODER_INIT_FAILED) .put("ERROR_CODE_ENCODING_FAILED", ERROR_CODE_ENCODING_FAILED) - .put("ERROR_CODE_ENCODING_FORMAT_UNSUPPORTED", ERROR_CODE_ENCODING_FORMAT_UNSUPPORTED) + .put("ERROR_CODE_OUTPUT_FORMAT_UNSUPPORTED", ERROR_CODE_OUTPUT_FORMAT_UNSUPPORTED) .put("ERROR_CODE_GL_INIT_FAILED", ERROR_CODE_GL_INIT_FAILED) .put("ERROR_CODE_GL_PROCESSING_FAILED", ERROR_CODE_GL_PROCESSING_FAILED) - .put( - "ERROR_CODE_MUXER_SAMPLE_MIME_TYPE_UNSUPPORTED", - ERROR_CODE_MUXER_SAMPLE_MIME_TYPE_UNSUPPORTED) .put("ERROR_CODE_MUXING_FAILED", ERROR_CODE_MUXING_FAILED) .buildOrThrow(); diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerAudioRenderer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerAudioRenderer.java index c17285bd69..35d9c3b87d 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerAudioRenderer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerAudioRenderer.java @@ -75,7 +75,7 @@ import androidx.media3.extractor.metadata.mp4.SlowMotionData; "The output sample MIME inferred from the input format is not supported by the muxer." + " Sample MIME type: " + sampleMimeType), - TransformationException.ERROR_CODE_MUXER_SAMPLE_MIME_TYPE_UNSUPPORTED); + TransformationException.ERROR_CODE_OUTPUT_FORMAT_UNSUPPORTED); } if (shouldPassthrough(inputFormat)) { samplePipeline = new PassthroughSamplePipeline(inputFormat); diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerVideoRenderer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerVideoRenderer.java index cf7c3622c9..6b067bfec1 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerVideoRenderer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerVideoRenderer.java @@ -84,7 +84,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; "The output sample MIME inferred from the input format is not supported by the muxer." + " Sample MIME type: " + sampleMimeType), - TransformationException.ERROR_CODE_MUXER_SAMPLE_MIME_TYPE_UNSUPPORTED); + TransformationException.ERROR_CODE_OUTPUT_FORMAT_UNSUPPORTED); } if (shouldPassthrough(inputFormat)) { samplePipeline = new PassthroughSamplePipeline(inputFormat); diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerTest.java index bc7fe5a9cb..fffa5ba9f6 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerTest.java @@ -359,7 +359,7 @@ public final class TransformerTest { assertThat(exception).hasCauseThat().isInstanceOf(IllegalArgumentException.class); assertThat(exception.errorCode) - .isEqualTo(TransformationException.ERROR_CODE_ENCODING_FORMAT_UNSUPPORTED); + .isEqualTo(TransformationException.ERROR_CODE_OUTPUT_FORMAT_UNSUPPORTED); } @Test @@ -403,7 +403,7 @@ public final class TransformerTest { assertThat(exception).hasCauseThat().isInstanceOf(IllegalArgumentException.class); assertThat(exception.errorCode) - .isEqualTo(TransformationException.ERROR_CODE_ENCODING_FORMAT_UNSUPPORTED); + .isEqualTo(TransformationException.ERROR_CODE_OUTPUT_FORMAT_UNSUPPORTED); } @Test @@ -434,7 +434,7 @@ public final class TransformerTest { assertThat(exception).hasCauseThat().isInstanceOf(IllegalArgumentException.class); assertThat(exception).hasCauseThat().hasMessageThat().contains("audio"); assertThat(exception.errorCode) - .isEqualTo(TransformationException.ERROR_CODE_MUXER_SAMPLE_MIME_TYPE_UNSUPPORTED); + .isEqualTo(TransformationException.ERROR_CODE_OUTPUT_FORMAT_UNSUPPORTED); } @Test @@ -453,7 +453,7 @@ public final class TransformerTest { assertThat(exception).hasCauseThat().isInstanceOf(IllegalArgumentException.class); assertThat(exception).hasCauseThat().hasMessageThat().contains("video"); assertThat(exception.errorCode) - .isEqualTo(TransformationException.ERROR_CODE_MUXER_SAMPLE_MIME_TYPE_UNSUPPORTED); + .isEqualTo(TransformationException.ERROR_CODE_OUTPUT_FORMAT_UNSUPPORTED); } @Test