Commit 179eafb2 by andrewlewis Committed by microkatz

Log instead of throwing for transfer mismatch

PiperOrigin-RevId: 470354448
(cherry picked from commit f1a3a40e)
parent 0f271c20
...@@ -35,6 +35,7 @@ import androidx.annotation.VisibleForTesting; ...@@ -35,6 +35,7 @@ import androidx.annotation.VisibleForTesting;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.decoder.DecoderInputBuffer; import com.google.android.exoplayer2.decoder.DecoderInputBuffer;
import com.google.android.exoplayer2.util.Log;
import com.google.android.exoplayer2.util.MediaFormatUtil; import com.google.android.exoplayer2.util.MediaFormatUtil;
import com.google.android.exoplayer2.util.MimeTypes; import com.google.android.exoplayer2.util.MimeTypes;
import com.google.android.exoplayer2.util.TraceUtil; import com.google.android.exoplayer2.util.TraceUtil;
...@@ -49,6 +50,9 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; ...@@ -49,6 +50,9 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
/** A default {@link Codec} implementation that uses {@link MediaCodec}. */ /** A default {@link Codec} implementation that uses {@link MediaCodec}. */
public final class DefaultCodec implements Codec { 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. // MediaCodec decoders always output 16 bit PCM, unless configured to output PCM float.
// https://developer.android.com/reference/android/media/MediaCodec#raw-audio-buffers. // https://developer.android.com/reference/android/media/MediaCodec#raw-audio-buffers.
private static final int MEDIA_CODEC_PCM_ENCODING = C.ENCODING_PCM_16BIT; private static final int MEDIA_CODEC_PCM_ENCODING = C.ENCODING_PCM_16BIT;
...@@ -323,16 +327,15 @@ public final class DefaultCodec implements Codec { ...@@ -323,16 +327,15 @@ public final class DefaultCodec implements Codec {
ColorInfo expectedColorInfo = ColorInfo expectedColorInfo =
isToneMappingEnabled ? ColorInfo.SDR_BT709_LIMITED : configurationFormat.colorInfo; isToneMappingEnabled ? ColorInfo.SDR_BT709_LIMITED : configurationFormat.colorInfo;
if (!areColorTransfersEqual(expectedColorInfo, outputFormat.colorInfo)) { if (!areColorTransfersEqual(expectedColorInfo, outputFormat.colorInfo)) {
// TODO(b/237674316): These exceptions throw when the container ColorInfo doesn't match // TODO(b/237674316): The container ColorInfo's transfer doesn't match the decoder output
// the video ColorInfo. Instead of throwing when seeing unexpected ColorInfos, consider // MediaFormat, or we requested tone-mapping but it hasn't bee applied. We should
// reconfiguring downstream components (ex. FrameProcessor and encoder) when different // reconfigure downstream components for this case instead.
// ColorInfo values are output. Log.w(
throw createTransformationException( TAG,
new IllegalStateException(
"Codec output color format does not match configured color format. Expected: " "Codec output color format does not match configured color format. Expected: "
+ expectedColorInfo + expectedColorInfo
+ ". Actual: " + ". Actual: "
+ outputFormat.colorInfo)); + outputFormat.colorInfo);
} }
} }
return false; return false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment