cts: VideoEncoderTest: increase 1st frame timeout to 2sec
bug: 22793434
Change-Id: I4910f144f861b561957ed7be12065252a187d29c
diff --git a/tests/tests/media/src/android/media/cts/VideoEncoderTest.java b/tests/tests/media/src/android/media/cts/VideoEncoderTest.java
index 858e47c..e3d2f09 100644
--- a/tests/tests/media/src/android/media/cts/VideoEncoderTest.java
+++ b/tests/tests/media/src/android/media/cts/VideoEncoderTest.java
@@ -53,6 +53,8 @@
private static final int MAX_SAMPLE_SIZE = 256 * 1024;
private static final String TAG = "VideoEncoderTest";
private static final long FRAME_TIMEOUT_MS = 1000;
+ // use larger delay before we get first frame, some encoders may need more time
+ private static final long INIT_TIMEOUT_MS = 2000;
private static final String SOURCE_URL =
"android.resource://com.android.cts.media/raw/video_480x360_mp4_h264_871kbps_30fps";
@@ -172,6 +174,7 @@
private boolean mSignaledDecoderEOS;
protected boolean mCompleted;
+ protected boolean mEncodeOutputFormatUpdated;
protected final Object mCondition = new Object();
protected MediaFormat mDecFormat;
@@ -382,7 +385,8 @@
// wait for an encoder input buffer and a decoder output buffer
// Use a timeout to avoid stalling the test if it doesn't arrive.
if (!haveBuffers() && !mCompleted) {
- mCondition.wait(FRAME_TIMEOUT_MS);
+ mCondition.wait(mEncodeOutputFormatUpdated ?
+ FRAME_TIMEOUT_MS : INIT_TIMEOUT_MS);
}
} catch (InterruptedException ie) {
fail("wait interrupted"); // shouldn't happen
@@ -494,7 +498,7 @@
if (mEncInputBufferSize < 0) {
mEncInputBufferSize = mEncoder.getInputBuffer(encBuffer).capacity();
}
- Log.d(TAG, "queuing output #" + encBuffer + " for encoder (sz="
+ Log.d(TAG, "queuing input #" + encBuffer + " for encoder (sz="
+ mEncInputBufferSize + ", f=" + decBuffer.second.flags
+ ", ts=" + decBuffer.second.presentationTimeUs + ")");
mEncoder.queueInputBuffer(
@@ -515,6 +519,7 @@
public void onOutputFormatChanged(MediaCodec mediaCodec, MediaFormat mediaFormat) {
Log.i(TAG, mediaCodec.getName() + " got new output format " + mediaFormat);
if (mediaCodec == mEncoder) {
+ mEncodeOutputFormatUpdated = true;
saveEncoderFormat(mediaFormat);
}
}
@@ -596,7 +601,8 @@
// wait for mFrameAvailable, which is set by onFrameAvailable().
// Use a timeout to avoid stalling the test if it doesn't arrive.
if (!mFrameAvailable && !mCompleted && !mEncoderIsActive) {
- mCondition.wait(FRAME_TIMEOUT_MS);
+ mCondition.wait(mEncodeOutputFormatUpdated ?
+ FRAME_TIMEOUT_MS : INIT_TIMEOUT_MS);
}
} catch (InterruptedException ie) {
fail("wait interrupted"); // shouldn't happen
@@ -746,6 +752,7 @@
public void onOutputFormatChanged(MediaCodec mediaCodec, MediaFormat mediaFormat) {
Log.i(TAG, mediaCodec.getName() + " got new output format " + mediaFormat);
if (mediaCodec == mEncoder) {
+ mEncodeOutputFormatUpdated = true;
saveEncoderFormat(mediaFormat);
}
}