Feed monotonic increasing timestamp to mediamuxer to make it happy.
Otherwise, MediaMuxer will hang.
Bug: 26928205
Change-Id: I7fffd4c8be069b365ae85bb337f813dcce5ab617
(cherry picked from commit b2b0665bf45fd8ef969ed9ecccb8a0f834ad8b63)
diff --git a/tests/tests/media/src/android/media/cts/EncoderTest.java b/tests/tests/media/src/android/media/cts/EncoderTest.java
index da81879..be6ed48 100644
--- a/tests/tests/media/src/android/media/cts/EncoderTest.java
+++ b/tests/tests/media/src/android/media/cts/EncoderTest.java
@@ -191,7 +191,7 @@
private int queueInputBuffer(
MediaCodec codec, ByteBuffer[] inputBuffers, int index,
- InputStream istream, int mode) {
+ InputStream istream, int mode, long timeUs) {
ByteBuffer buffer = inputBuffers[index];
buffer.rewind();
int size = buffer.limit();
@@ -238,7 +238,7 @@
}
}
- codec.queueInputBuffer(index, 0 /* offset */, size, 0 /* timeUs */, 0);
+ codec.queueInputBuffer(index, 0 /* offset */, size, timeUs, 0 /* flags */);
return size;
}
@@ -292,7 +292,8 @@
int muxidx = -1;
if (sSaveResults) {
try {
- String outFile = "/data/local/tmp/transcoded-" + componentName + "-" + outBitrate +
+ String outFile = "/data/local/tmp/transcoded-" + componentName +
+ "-" + sampleRate + "-" + channelCount + "-" + outBitrate +
"-" + mode + "-" + startSeed + ".mp4";
new File("outFile").delete();
muxer = new MediaMuxer(outFile, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4);
@@ -340,12 +341,14 @@
index = codec.dequeueInputBuffer(kTimeoutUs /* timeoutUs */);
if (index != MediaCodec.INFO_TRY_AGAIN_LATER) {
+ long timeUs =
+ (long)numBytesSubmitted * 1000000 / (2 * channelCount * sampleRate);
if (numBytesSubmitted >= kNumInputBytes) {
codec.queueInputBuffer(
index,
0 /* offset */,
0 /* size */,
- 0 /* timeUs */,
+ timeUs,
MediaCodec.BUFFER_FLAG_END_OF_STREAM);
if (VERBOSE) {
@@ -355,7 +358,7 @@
doneSubmittingInput = true;
} else {
int size = queueInputBuffer(
- codec, codecInputBuffers, index, istream, mode);
+ codec, codecInputBuffers, index, istream, mode, timeUs);
numBytesSubmitted += size;