Commit b66af202 by claincly Committed by Ian Baker

Add logging for exceptions thrown while configuring MediaCodec.

PiperOrigin-RevId: 427728320
parent 3540b9d7
...@@ -106,7 +106,7 @@ public final class DefaultCodec implements Codec { ...@@ -106,7 +106,7 @@ public final class DefaultCodec implements Codec {
} }
throw createInitializationTransformationException( throw createInitializationTransformationException(
e, configurationFormat, isVideo, isDecoder, mediaCodecName); e, mediaFormat, configurationFormat, isVideo, isDecoder, mediaCodecName);
} }
this.mediaCodec = mediaCodec; this.mediaCodec = mediaCodec;
this.inputSurface = inputSurface; this.inputSurface = inputSurface;
...@@ -297,6 +297,7 @@ public final class DefaultCodec implements Codec { ...@@ -297,6 +297,7 @@ public final class DefaultCodec implements Codec {
private static TransformationException createInitializationTransformationException( private static TransformationException createInitializationTransformationException(
Exception cause, Exception cause,
MediaFormat mediaFormat,
Format format, Format format,
boolean isVideo, boolean isVideo,
boolean isDecoder, boolean isDecoder,
...@@ -304,6 +305,7 @@ public final class DefaultCodec implements Codec { ...@@ -304,6 +305,7 @@ public final class DefaultCodec implements Codec {
if (cause instanceof IOException || cause instanceof MediaCodec.CodecException) { if (cause instanceof IOException || cause instanceof MediaCodec.CodecException) {
return TransformationException.createForCodec( return TransformationException.createForCodec(
cause, cause,
mediaFormat,
format, format,
isVideo, isVideo,
isDecoder, isDecoder,
...@@ -315,6 +317,7 @@ public final class DefaultCodec implements Codec { ...@@ -315,6 +317,7 @@ public final class DefaultCodec implements Codec {
if (cause instanceof IllegalArgumentException) { if (cause instanceof IllegalArgumentException) {
return TransformationException.createForCodec( return TransformationException.createForCodec(
cause, cause,
mediaFormat,
format, format,
isVideo, isVideo,
isDecoder, isDecoder,
......
...@@ -18,6 +18,7 @@ package com.google.android.exoplayer2.transformer; ...@@ -18,6 +18,7 @@ package com.google.android.exoplayer2.transformer;
import static java.lang.annotation.ElementType.TYPE_USE; import static java.lang.annotation.ElementType.TYPE_USE;
import android.media.MediaCodec; import android.media.MediaCodec;
import android.media.MediaFormat;
import android.os.SystemClock; import android.os.SystemClock;
import androidx.annotation.IntDef; import androidx.annotation.IntDef;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
...@@ -205,7 +206,9 @@ public final class TransformationException extends Exception { ...@@ -205,7 +206,9 @@ public final class TransformationException extends Exception {
* Creates an instance for a decoder or encoder related exception. * Creates an instance for a decoder or encoder related exception.
* *
* @param cause The cause of the failure. * @param cause The cause of the failure.
* @param format The {@link Format} used for configuring the decoder/encoder. * @param mediaFormat The {@link MediaFormat} used for configuring the underlying {@link
* MediaCodec}, if known.
* @param format The {@link Format} used for configuring the {@link Codec}.
* @param isVideo Whether the decoder or encoder is configured for video. * @param isVideo Whether the decoder or encoder is configured for video.
* @param isDecoder Whether the exception is created for a decoder. * @param isDecoder Whether the exception is created for a decoder.
* @param mediaCodecName The name of the {@link MediaCodec} used, if known. * @param mediaCodecName The name of the {@link MediaCodec} used, if known.
...@@ -214,16 +217,44 @@ public final class TransformationException extends Exception { ...@@ -214,16 +217,44 @@ public final class TransformationException extends Exception {
*/ */
public static TransformationException createForCodec( public static TransformationException createForCodec(
Throwable cause, Throwable cause,
@Nullable MediaFormat mediaFormat,
Format format, Format format,
boolean isVideo, boolean isVideo,
boolean isDecoder, boolean isDecoder,
@Nullable String mediaCodecName, @Nullable String mediaCodecName,
int errorCode) { int errorCode) {
String componentName = (isVideo ? "Video" : "Audio") + (isDecoder ? "Decoder" : "Encoder"); String componentName = (isVideo ? "Video" : "Audio") + (isDecoder ? "Decoder" : "Encoder");
return new TransformationException( String errorMessage =
componentName + " error, format = " + format + ", mediaCodecName=" + mediaCodecName, componentName
cause, + " error, format="
errorCode); + format
+ ", mediaCodecName="
+ mediaCodecName
+ ", mediaFormat="
+ (mediaFormat == null ? "no configured MediaFormat" : mediaFormat.toString());
return new TransformationException(errorMessage, cause, errorCode);
}
/**
* Creates an instance for a decoder or encoder related exception.
*
* @param cause The cause of the failure.
* @param format The {@link Format} used for configuring the {@link Codec}.
* @param isVideo Whether the decoder or encoder is configured for video.
* @param isDecoder Whether the exception is created for a decoder.
* @param mediaCodecName The name of the {@link MediaCodec} used, if known.
* @param errorCode See {@link #errorCode}.
* @return The created instance.
*/
public static TransformationException createForCodec(
Throwable cause,
Format format,
boolean isVideo,
boolean isDecoder,
@Nullable String mediaCodecName,
int errorCode) {
return createForCodec(
cause, /* mediaFormat= */ null, format, isVideo, isDecoder, mediaCodecName, errorCode);
} }
/** /**
......
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