AdaptivePlaybackTest: verify flush doesn't trigger output format change
Bug: 149751672
Test: atest CtsMediaTestCases:AdaptivePlaybackTest
Change-Id: I313d1358fc9d87fb71e82b70580b80dc9584d18f
diff --git a/tests/tests/media/src/android/media/cts/AdaptivePlaybackTest.java b/tests/tests/media/src/android/media/cts/AdaptivePlaybackTest.java
index b814046..c7c6c5b 100644
--- a/tests/tests/media/src/android/media/cts/AdaptivePlaybackTest.java
+++ b/tests/tests/media/src/android/media/cts/AdaptivePlaybackTest.java
@@ -479,6 +479,9 @@
warn(mDecoder.getWarnings());
mDecoder.clearWarnings();
mDecoder.flush();
+ // First run will trigger output format change exactly once,
+ // and subsequent runs should not trigger format change.
+ assertEquals(1, mDecoder.getOutputFormatChangeCount());
}
});
if (verify) {
@@ -897,6 +900,8 @@
int mFramesNotifiedRendered;
// True iff previous dequeue request returned INFO_OUTPUT_FORMAT_CHANGED.
boolean mOutputFormatChanged;
+ // Number of output format change event
+ int mOutputFormatChangeCount;
// Save the timestamps of the first frame of each sequence.
// Note: this is the only time output format change could happen.
ArrayList<Long> mFirstQueueTimestamps;
@@ -918,6 +923,7 @@
mLastRenderNanoTime = System.nanoTime();
mFramesNotifiedRendered = 0;
mOutputFormatChanged = false;
+ mOutputFormatChangeCount = 0;
mFirstQueueTimestamps = new ArrayList<Long>();
codec.setOnFrameRenderedListener(this, null);
@@ -952,6 +958,10 @@
mWarnings.clear();
}
+ public int getOutputFormatChangeCount() {
+ return mOutputFormatChangeCount;
+ }
+
public void configureAndStart(MediaFormat format, TestSurface surface) {
mSurface = surface;
Log.i(TAG, "configure(" + format + ", " + mSurface.getSurface() + ")");
@@ -1009,6 +1019,7 @@
int colorFormat = format.getInteger(MediaFormat.KEY_COLOR_FORMAT);
mDoChecksum = isRecognizedFormat(colorFormat);
mOutputFormatChanged = true;
+ ++mOutputFormatChangeCount;
return null;
} else if (ix < 0) {
Log.v(TAG, "no output");