From 5228dd1b7468bfc86a807a299f515d33048f96ac Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Thu, 17 Sep 2009 11:16:52 -0700 Subject: Another stagefright test-case and ignore end-of-stream notifications while we're flushing. --- cmds/stagefright/stagefright.cpp | 60 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) (limited to 'cmds/stagefright/stagefright.cpp') diff --git a/cmds/stagefright/stagefright.cpp b/cmds/stagefright/stagefright.cpp index 73215d3..5397a69 100644 --- a/cmds/stagefright/stagefright.cpp +++ b/cmds/stagefright/stagefright.cpp @@ -61,6 +61,66 @@ static void playSource(OMXClient *client, const sp &source) { decoder->start(); + if (gReproduceBug == 3) { + status_t err; + MediaBuffer *buffer; + MediaSource::ReadOptions options; + int64_t seekTimeUs = -1; + for (;;) { + err = decoder->read(&buffer, &options); + options.clearSeekTo(); + + bool shouldSeek = false; + if (err != OK) { + printf("reached EOF.\n"); + + shouldSeek = true; + } else { + int32_t units, scale; + CHECK(buffer->meta_data()->findInt32(kKeyTimeUnits, &units)); + CHECK(buffer->meta_data()->findInt32(kKeyTimeScale, &scale)); + int64_t timestamp = ((OMX_TICKS)units * 1000000) / scale; + + bool failed = false; + if (seekTimeUs >= 0) { + int64_t diff = timestamp - seekTimeUs; + + if (diff > 500000) { + printf("ERROR: "); + failed = true; + } + } + + printf("buffer has timestamp %lld us (%.2f secs)\n", + timestamp, timestamp / 1E6); + + buffer->release(); + buffer = NULL; + + if (failed) { + break; + } + + shouldSeek = ((double)rand() / RAND_MAX) < 0.1; + shouldSeek = false; + } + + seekTimeUs = -1; + + if (shouldSeek) { + seekTimeUs = (rand() * 30E6) / RAND_MAX; + options.setSeekTo(seekTimeUs); + + printf("seeking to %lld us (%.2f secs)\n", + seekTimeUs, seekTimeUs / 1E6); + } + } + + decoder->stop(); + + return; + } + int n = 0; int64_t startTime = getNowUs(); -- cgit v1.1