From dbc4dcf0f2ca7ffbd3e6d8f202fb484d2b0ba4ba Mon Sep 17 00:00:00 2001 From: hschlueter Date: Wed, 19 Jan 2022 12:22:08 +0000 Subject: [PATCH] Merge muxer and encoder output format error codes. After implementing fallback, it won't always be possible to differentiate between muxer and encoder as the cause of an output format not being supported. PiperOrigin-RevId: 422780443 --- .../transformer/DefaultCodecFactory.java | 2 +- .../transformer/TransformationException.java | 27 +++++++------------ .../transformer/TransformerAudioRenderer.java | 2 +- .../transformer/TransformerVideoRenderer.java | 2 +- .../transformer/TransformerTest.java | 8 +++--- 5 files changed, 17 insertions(+), 24 deletions(-) diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/DefaultCodecFactory.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/DefaultCodecFactory.java index c7ce23cf9e..503b7af725 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/DefaultCodecFactory.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/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/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformationException.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformationException.java index c74901730a..0c4fcef310 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformationException.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformationException.java @@ -69,10 +69,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 {} @@ -146,8 +145,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). @@ -157,16 +161,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() @@ -185,12 +181,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/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerAudioRenderer.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerAudioRenderer.java index 5eac1382ee..7925a0ec45 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerAudioRenderer.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerAudioRenderer.java @@ -75,7 +75,7 @@ import com.google.android.exoplayer2.source.SampleStream.ReadDataResult; "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/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerVideoRenderer.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerVideoRenderer.java index 82968f888f..18d3cb996f 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerVideoRenderer.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/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/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/TransformerTest.java b/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/TransformerTest.java index 376a0e08b4..3dc75ca189 100644 --- a/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/TransformerTest.java +++ b/library/transformer/src/test/java/com/google/android/exoplayer2/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