From f3adc5a5d28ffbd7e1382eb256a2b822e8b84324 Mon Sep 17 00:00:00 2001 From: andrewlewis Date: Fri, 26 Aug 2022 23:08:53 +0000 Subject: [PATCH] Log instead of throwing for transfer mismatch PiperOrigin-RevId: 470354448 (cherry picked from commit dbe66775518a02c138e138a990939729bd9a3b23) --- .../media3/transformer/DefaultCodec.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultCodec.java b/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultCodec.java index 99ec6ece72..a4266842d5 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultCodec.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultCodec.java @@ -36,6 +36,7 @@ import androidx.media3.common.C; import androidx.media3.common.ColorInfo; import androidx.media3.common.Format; import androidx.media3.common.MimeTypes; +import androidx.media3.common.util.Log; import androidx.media3.common.util.MediaFormatUtil; import androidx.media3.common.util.TraceUtil; import androidx.media3.common.util.UnstableApi; @@ -51,6 +52,9 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; /** A default {@link Codec} implementation that uses {@link MediaCodec}. */ @UnstableApi public final class DefaultCodec implements Codec { + + private static final String TAG = "DefaultCodec"; + // MediaCodec decoders always output 16 bit PCM, unless configured to output PCM float. // https://developer.android.com/reference/android/media/MediaCodec#raw-audio-buffers. private static final int MEDIA_CODEC_PCM_ENCODING = C.ENCODING_PCM_16BIT; @@ -325,16 +329,15 @@ public final class DefaultCodec implements Codec { ColorInfo expectedColorInfo = isToneMappingEnabled ? ColorInfo.SDR_BT709_LIMITED : configurationFormat.colorInfo; if (!areColorTransfersEqual(expectedColorInfo, outputFormat.colorInfo)) { - // TODO(b/237674316): These exceptions throw when the container ColorInfo doesn't match - // the video ColorInfo. Instead of throwing when seeing unexpected ColorInfos, consider - // reconfiguring downstream components (ex. FrameProcessor and encoder) when different - // ColorInfo values are output. - throw createTransformationException( - new IllegalStateException( - "Codec output color format does not match configured color format. Expected: " - + expectedColorInfo - + ". Actual: " - + outputFormat.colorInfo)); + // TODO(b/237674316): The container ColorInfo's transfer doesn't match the decoder output + // MediaFormat, or we requested tone-mapping but it hasn't bee applied. We should + // reconfigure downstream components for this case instead. + Log.w( + TAG, + "Codec output color format does not match configured color format. Expected: " + + expectedColorInfo + + ". Actual: " + + outputFormat.colorInfo); } } return false;