From ba2c32738fe0c3b2eb2594328dd8be11fddd92b3 Mon Sep 17 00:00:00 2001 From: andrewlewis Date: Tue, 11 Apr 2023 13:09:18 +0100 Subject: [PATCH] Improve error logging Log at debug level immediately when MediaCodec throws. This logging will be output closer to the time when the error actually happened so should make it easier to identify the order of components failing. Downgrade logging of errors after export ends to warning level, as output may still be fine if there was a problem after exporting completed (though it's still worth logging a warning as the device may not be in a good state). PiperOrigin-RevId: 523370457 --- .../java/androidx/media3/transformer/DefaultCodec.java | 9 +++++++++ .../androidx/media3/transformer/TransformerInternal.java | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) 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 262036e578..ea3da47883 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultCodec.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultCodec.java @@ -126,6 +126,8 @@ public final class DefaultCodec implements Codec { } startCodec(mediaCodec); } catch (Exception e) { + Log.d(TAG, "MediaCodec error", e); + if (inputSurface != null) { inputSurface.release(); } @@ -181,6 +183,7 @@ public final class DefaultCodec implements Codec { try { inputBufferIndex = mediaCodec.dequeueInputBuffer(/* timeoutUs= */ 0); } catch (RuntimeException e) { + Log.d(TAG, "MediaCodec error", e); throw createExportException(e); } if (inputBufferIndex < 0) { @@ -189,6 +192,7 @@ public final class DefaultCodec implements Codec { try { inputBuffer.data = mediaCodec.getInputBuffer(inputBufferIndex); } catch (RuntimeException e) { + Log.d(TAG, "MediaCodec error", e); throw createExportException(e); } inputBuffer.clear(); @@ -216,6 +220,7 @@ public final class DefaultCodec implements Codec { try { mediaCodec.queueInputBuffer(inputBufferIndex, offset, size, inputBuffer.timeUs, flags); } catch (RuntimeException e) { + Log.d(TAG, "MediaCodec error", e); throw createExportException(e); } inputBufferIndex = C.INDEX_UNSET; @@ -227,6 +232,7 @@ public final class DefaultCodec implements Codec { try { mediaCodec.signalEndOfInputStream(); } catch (RuntimeException e) { + Log.d(TAG, "MediaCodec error", e); throw createExportException(e); } } @@ -272,6 +278,7 @@ public final class DefaultCodec implements Codec { mediaCodec.releaseOutputBuffer(outputBufferIndex, /* render= */ false); } } catch (RuntimeException e) { + Log.d(TAG, "MediaCodec error", e); throw createExportException(e); } outputBufferIndex = C.INDEX_UNSET; @@ -329,6 +336,7 @@ public final class DefaultCodec implements Codec { try { outputBufferIndex = mediaCodec.dequeueOutputBuffer(outputBufferInfo, /* timeoutUs= */ 0); } catch (RuntimeException e) { + Log.d(TAG, "MediaCodec error", e); throw createExportException(e); } if (outputBufferIndex < 0) { @@ -370,6 +378,7 @@ public final class DefaultCodec implements Codec { try { outputBuffer = checkNotNull(mediaCodec.getOutputBuffer(outputBufferIndex)); } catch (RuntimeException e) { + Log.d(TAG, "MediaCodec error", e); throw createExportException(e); } outputBuffer.position(outputBufferInfo.offset); diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java index bf612f2973..494cf283f5 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java @@ -398,7 +398,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; if (exception != null) { if (releasedPreviously) { - Log.e(TAG, "Export error after export ended: ", exception); + Log.w(TAG, "Export error after export ended", exception); return; } ExportException finalException = exception;