From e7768d52b00eb6082376715cefe585e31af07053 Mon Sep 17 00:00:00 2001 From: Jeffrey Tinker Date: Wed, 27 Apr 2011 19:31:18 -0700 Subject: [PATCH] Fix for b/4279535 Seeking in a video causes it to start form beginning Use a longer timeout than normal when seeking Change-Id: I8c1306818e5fffefc15c33bd4f412f9346e8dc7e --- proprietary/wvm/WVMMediaSource.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/proprietary/wvm/WVMMediaSource.cpp b/proprietary/wvm/WVMMediaSource.cpp index ab344640..00ebbbd6 100644 --- a/proprietary/wvm/WVMMediaSource.cpp +++ b/proprietary/wvm/WVMMediaSource.cpp @@ -158,8 +158,15 @@ status_t WVMMediaSource::read(MediaBuffer **buffer, const ReadOptions *options) bool seekNextSync = false; int64_t seekTimeUs; + + int retryLimit = 500; // Limit on number of retries before timeout, 10ms per retry + ReadOptions::SeekMode mode; if (options && options->getSeekTo(&seekTimeUs, &mode)) { + + // When doing a seek, use a longer timeout since we need to set up a new connection + retryLimit = 1500; + //LOGD("%s seek mode=%d, seek time=%lld lateby=%lld", // (mESSelector == WV_EsSelector_Video) ? "video" : "audio", // mode, seekTimeUs, options->getLateBy()); @@ -196,7 +203,7 @@ status_t WVMMediaSource::read(MediaBuffer **buffer, const ReadOptions *options) int64_t keyTime; bool syncFrame; - int retryLimit = 0; + int retryCount = 0; // Pull full access units. Since we aren't sure how big they might be, // start with initial buffer size, then allocate a larger buffer if we @@ -258,7 +265,7 @@ status_t WVMMediaSource::read(MediaBuffer **buffer, const ReadOptions *options) } if (bytesRead == 0) { - if (retryLimit++ >= 500) { + if (retryCount++ >= retryLimit) { // If no data received within the retry limit, return ERROR_IO // This prevents the player from becoming unresponsive mediaBuf->release();