summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/nuplayer/RTSPSource.cpp
diff options
context:
space:
mode:
authorRoger Jönsson <roger1.jonsson@sonymobile.com>2013-01-21 17:15:45 +0100
committerAndreas Huber <andih@google.com>2013-02-06 13:37:09 -0800
commit46d13e3606b87d71379287672b54b50d0d9aa5cc (patch)
treee8109ccba1377865e831847f4ad81542671dd815 /media/libmediaplayerservice/nuplayer/RTSPSource.cpp
parentcfc3083927df14bf82403b20a45ae303a01c39f5 (diff)
downloadframeworks_av-46d13e3606b87d71379287672b54b50d0d9aa5cc.zip
frameworks_av-46d13e3606b87d71379287672b54b50d0d9aa5cc.tar.gz
frameworks_av-46d13e3606b87d71379287672b54b50d0d9aa5cc.tar.bz2
Enable pause/resume for RTSP streaming
When a stream is paused, RTSP Pause is also sent to the server. Otherwise the buffering might continue until the memory runs out. When the stream is resumed, RTSP Play will be sent in order to resume the buffering. Change-Id: I5dc1761140827c532451638c3fd3f34271e5b9ab
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/RTSPSource.cpp')
-rw-r--r--media/libmediaplayerservice/nuplayer/RTSPSource.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/media/libmediaplayerservice/nuplayer/RTSPSource.cpp b/media/libmediaplayerservice/nuplayer/RTSPSource.cpp
index b70d550..a5ff0ca 100644
--- a/media/libmediaplayerservice/nuplayer/RTSPSource.cpp
+++ b/media/libmediaplayerservice/nuplayer/RTSPSource.cpp
@@ -119,6 +119,25 @@ void NuPlayer::RTSPSource::stop() {
msg->postAndAwaitResponse(&dummy);
}
+void NuPlayer::RTSPSource::pause() {
+ int64_t mediaDurationUs = 0;
+ getDuration(&mediaDurationUs);
+ for (size_t index = 0; index < mTracks.size(); index++) {
+ TrackInfo *info = &mTracks.editItemAt(index);
+ sp<AnotherPacketSource> source = info->mSource;
+
+ // Check if EOS or ERROR is received
+ if (source != NULL && source->isFinished(mediaDurationUs)) {
+ return;
+ }
+ }
+ mHandler->pause();
+}
+
+void NuPlayer::RTSPSource::resume() {
+ mHandler->resume();
+}
+
status_t NuPlayer::RTSPSource::feedMoreTSData() {
return mFinalResult;
}