Make DecoderCountersUtil error message clearer
By including the full counters in the failure message we have a clearer insight into the cause of the failure. PiperOrigin-RevId: 415982732
This commit is contained in:
parent
e01ef47db9
commit
7fca1a0876
@ -17,6 +17,8 @@ package com.google.android.exoplayer2.decoder;
|
||||
|
||||
import static java.lang.Math.max;
|
||||
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
|
||||
/**
|
||||
* Maintains decoder event counts, for debugging purposes only.
|
||||
*
|
||||
@ -154,4 +156,34 @@ public final class DecoderCounters {
|
||||
totalVideoFrameProcessingOffsetUs += totalProcessingOffsetUs;
|
||||
videoFrameProcessingOffsetCount += count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return Util.formatInvariant(
|
||||
"DecoderCounters {\n "
|
||||
+ "decoderInits=%s,\n "
|
||||
+ "decoderReleases=%s\n "
|
||||
+ "queuedInputBuffers=%s\n "
|
||||
+ "skippedInputBuffers=%s\n "
|
||||
+ "renderedOutputBuffers=%s\n "
|
||||
+ "skippedOutputBuffers=%s\n "
|
||||
+ "droppedBuffers=%s\n "
|
||||
+ "droppedInputBuffers=%s\n "
|
||||
+ "maxConsecutiveDroppedBuffers=%s\n "
|
||||
+ "droppedToKeyframeEvents=%s\n "
|
||||
+ "totalVideoFrameProcessingOffsetUs=%s\n "
|
||||
+ "videoFrameProcessingOffsetCount=%s\n}",
|
||||
decoderInitCount,
|
||||
decoderReleaseCount,
|
||||
queuedInputBufferCount,
|
||||
skippedInputBufferCount,
|
||||
renderedOutputBufferCount,
|
||||
skippedOutputBufferCount,
|
||||
droppedBufferCount,
|
||||
droppedInputBufferCount,
|
||||
maxConsecutiveDroppedBufferCount,
|
||||
droppedToKeyframeCount,
|
||||
totalVideoFrameProcessingOffsetUs,
|
||||
videoFrameProcessingOffsetCount);
|
||||
}
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ public final class DecoderCountersUtil {
|
||||
counters.ensureUpdated();
|
||||
int actual = counters.skippedOutputBufferCount;
|
||||
assertWithMessage(
|
||||
"Codec(" + name + ") skipped " + actual + " buffers. Expected " + expected + ".")
|
||||
"Codec(%s) skipped an unexpected number of buffers. Counters:\n%s", name, counters)
|
||||
.that(actual)
|
||||
.isEqualTo(expected);
|
||||
}
|
||||
@ -66,32 +66,19 @@ public final class DecoderCountersUtil {
|
||||
public static void assertTotalBufferCount(
|
||||
String name, DecoderCounters counters, int minCount, int maxCount) {
|
||||
int actual = getTotalBufferCount(counters);
|
||||
assertWithMessage(
|
||||
"Codec("
|
||||
+ name
|
||||
+ ") output "
|
||||
+ actual
|
||||
+ " buffers. Expected in range ["
|
||||
+ minCount
|
||||
+ ", "
|
||||
+ maxCount
|
||||
+ "].")
|
||||
.that(minCount <= actual && actual <= maxCount)
|
||||
.isTrue();
|
||||
assertWithMessage("Codec(%s) output too few buffers. Counters:\n%s", name, counters)
|
||||
.that(actual)
|
||||
.isAtLeast(minCount);
|
||||
assertWithMessage("Codec(%s) output too many buffers. Counters:\n%s", name, counters)
|
||||
.that(actual)
|
||||
.isAtMost(maxCount);
|
||||
}
|
||||
|
||||
public static void assertDroppedBufferLimit(String name, DecoderCounters counters, int limit) {
|
||||
counters.ensureUpdated();
|
||||
int actual = counters.droppedBufferCount;
|
||||
assertWithMessage(
|
||||
"Codec("
|
||||
+ name
|
||||
+ ") was late decoding: "
|
||||
+ actual
|
||||
+ " buffers. "
|
||||
+ "Limit: "
|
||||
+ limit
|
||||
+ ".")
|
||||
"Codec(%s) was late decoding too many buffers. Counters:\n%s: ", name, counters)
|
||||
.that(actual)
|
||||
.isAtMost(limit);
|
||||
}
|
||||
@ -101,14 +88,8 @@ public final class DecoderCountersUtil {
|
||||
counters.ensureUpdated();
|
||||
int actual = counters.maxConsecutiveDroppedBufferCount;
|
||||
assertWithMessage(
|
||||
"Codec("
|
||||
+ name
|
||||
+ ") was late decoding: "
|
||||
+ actual
|
||||
+ " buffers consecutively. "
|
||||
+ "Limit: "
|
||||
+ limit
|
||||
+ ".")
|
||||
"Codec(%s) was late decoding too many buffers consecutively. Counters:\n%s",
|
||||
name, counters)
|
||||
.that(actual)
|
||||
.isAtMost(limit);
|
||||
}
|
||||
@ -117,16 +98,14 @@ public final class DecoderCountersUtil {
|
||||
String name, DecoderCounters counters, int minCount, int maxCount) {
|
||||
int actual = counters.videoFrameProcessingOffsetCount;
|
||||
assertWithMessage(
|
||||
"Codec("
|
||||
+ name
|
||||
+ ") videoFrameProcessingOffsetSampleCount "
|
||||
+ actual
|
||||
+ ". Expected in range ["
|
||||
+ minCount
|
||||
+ ", "
|
||||
+ maxCount
|
||||
+ "].")
|
||||
.that(minCount <= actual && actual <= maxCount)
|
||||
.isTrue();
|
||||
"Codec(%s) videoFrameProcessingOffsetSampleCount too low. Counters:\n%s",
|
||||
name, counters)
|
||||
.that(actual)
|
||||
.isAtLeast(minCount);
|
||||
assertWithMessage(
|
||||
"Codec(%s) videoFrameProcessingOffsetSampleCount too high. Counters:\n%s",
|
||||
name, counters)
|
||||
.that(actual)
|
||||
.isAtMost(maxCount);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user