diff options
author | Andreas Huber <andih@google.com> | 2012-04-05 08:43:02 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-04-05 08:43:02 -0700 |
commit | 5faee0829f673f6147636820eafae2c0fa238c77 (patch) | |
tree | 0c052eb88e5d939c9c00b46bbc94fc9a1f4fbf00 | |
parent | 4762a5164a986bd6a7ca0e7aba43881b64f146dd (diff) | |
parent | 4e1c91dd07fad96ee2387eda510c6da45e5dff0a (diff) | |
download | frameworks_av-5faee0829f673f6147636820eafae2c0fa238c77.zip frameworks_av-5faee0829f673f6147636820eafae2c0fa238c77.tar.gz frameworks_av-5faee0829f673f6147636820eafae2c0fa238c77.tar.bz2 |
Merge "Fix a bug: WOULD_BLOCK handling in TimedTextPlayer."
-rw-r--r-- | media/libstagefright/timedtext/TimedTextPlayer.cpp | 25 | ||||
-rw-r--r-- | media/libstagefright/timedtext/TimedTextPlayer.h | 1 |
2 files changed, 25 insertions, 1 deletions
diff --git a/media/libstagefright/timedtext/TimedTextPlayer.cpp b/media/libstagefright/timedtext/TimedTextPlayer.cpp index 917c62a..dc5f6b8 100644 --- a/media/libstagefright/timedtext/TimedTextPlayer.cpp +++ b/media/libstagefright/timedtext/TimedTextPlayer.cpp @@ -75,6 +75,21 @@ void TimedTextPlayer::onMessageReceived(const sp<AMessage> &msg) { mSendSubtitleGeneration++; break; } + case kWhatRetryRead: { + int64_t seekTimeUs; + int seekMode; + if (msg->findInt64("seekTimeUs", &seekTimeUs) && + msg->findInt32("seekMode", &seekMode)) { + MediaSource::ReadOptions options; + options.setSeekTo( + seekTimeUs, + static_cast<MediaSource::ReadOptions::SeekMode>(seekMode)); + doRead(&options); + } else { + doRead(); + } + break; + } case kWhatSeek: { int64_t seekTimeUs = 0; msg->findInt64("seekTimeUs", &seekTimeUs); @@ -146,7 +161,15 @@ void TimedTextPlayer::doRead(MediaSource::ReadOptions* options) { status_t err = mSource->read(&startTimeUs, &endTimeUs, &(parcelEvent->parcel), options); if (err == WOULD_BLOCK) { - postTextEventDelayUs(NULL, kWaitTimeUsToRetryRead); + sp<AMessage> msg = new AMessage(kWhatRetryRead); + if (options != NULL) { + int64_t seekTimeUs; + MediaSource::ReadOptions::SeekMode seekMode; + CHECK(options->getSeekTo(&seekTimeUs, &seekMode)); + msg->setInt64("seekTimeUs", seekTimeUs); + msg->setInt32("seekMode", seekMode); + } + msg->post(kWaitTimeUsToRetryRead); return; } else if (err != OK) { notifyError(err); diff --git a/media/libstagefright/timedtext/TimedTextPlayer.h b/media/libstagefright/timedtext/TimedTextPlayer.h index 47aff03..b7e15f8 100644 --- a/media/libstagefright/timedtext/TimedTextPlayer.h +++ b/media/libstagefright/timedtext/TimedTextPlayer.h @@ -50,6 +50,7 @@ private: enum { kWhatPause = 'paus', kWhatSeek = 'seek', + kWhatRetryRead = 'read', kWhatSendSubtitle = 'send', kWhatSetSource = 'ssrc', }; |