diff options
Diffstat (limited to 'media/libstagefright/rtsp/MyHandler.h')
-rw-r--r-- | media/libstagefright/rtsp/MyHandler.h | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/media/libstagefright/rtsp/MyHandler.h b/media/libstagefright/rtsp/MyHandler.h index e64a7a1..0d0baf3 100644 --- a/media/libstagefright/rtsp/MyHandler.h +++ b/media/libstagefright/rtsp/MyHandler.h @@ -98,6 +98,7 @@ struct MyHandler : public AHandler { enum { kWhatConnected = 'conn', kWhatDisconnected = 'disc', + kWhatSeekPaused = 'spau', kWhatSeekDone = 'sdon', kWhatAccessUnit = 'accU', @@ -220,6 +221,12 @@ struct MyHandler : public AHandler { msg->post(); } + void continueSeekAfterPause(int64_t timeUs) { + sp<AMessage> msg = new AMessage('see1', this); + msg->setInt64("time", timeUs); + msg->post(); + } + bool isSeekable() const { return mSeekable; } @@ -1180,7 +1187,7 @@ struct MyHandler : public AHandler { mCheckPending = true; ++mCheckGeneration; - sp<AMessage> reply = new AMessage('see1', this); + sp<AMessage> reply = new AMessage('see0', this); reply->setInt64("time", timeUs); if (mPausing) { @@ -1203,9 +1210,26 @@ struct MyHandler : public AHandler { break; } - case 'see1': + case 'see0': { // Session is paused now. + status_t err = OK; + msg->findInt32("result", &err); + + int64_t timeUs; + CHECK(msg->findInt64("time", &timeUs)); + + sp<AMessage> notify = mNotify->dup(); + notify->setInt32("what", kWhatSeekPaused); + notify->setInt32("err", err); + notify->setInt64("time", timeUs); + notify->post(); + break; + + } + + case 'see1': + { for (size_t i = 0; i < mTracks.size(); ++i) { TrackInfo *info = &mTracks.editItemAt(i); |