summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/wifi-display/source/MediaPuller.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2012-11-29 14:32:21 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2012-11-29 14:32:21 -0800
commitf59ab0eb162cc32df4fc0af8d1a4500c5bce3ecc (patch)
tree6851003e7af892906473b96685a03767068b6168 /media/libstagefright/wifi-display/source/MediaPuller.cpp
parent4aefd5fc4dde13a8f3c9c27ec4055b771c0ee341 (diff)
parent53faa7ee457eb9b27be1fd814e42ffe43c8520a0 (diff)
downloadframeworks_av-f59ab0eb162cc32df4fc0af8d1a4500c5bce3ecc.zip
frameworks_av-f59ab0eb162cc32df4fc0af8d1a4500c5bce3ecc.tar.gz
frameworks_av-f59ab0eb162cc32df4fc0af8d1a4500c5bce3ecc.tar.bz2
am 2f6107ec: am b64def9a: Merge "[wfd] Support a low(er) power state by triggering PAUSE/RESUME." into jb-mr1.1-dev
* commit '2f6107ec8e67eea1f73b9558a5ad34caec52867f': [wfd] Support a low(er) power state by triggering PAUSE/RESUME.
Diffstat (limited to 'media/libstagefright/wifi-display/source/MediaPuller.cpp')
-rw-r--r--media/libstagefright/wifi-display/source/MediaPuller.cpp34
1 files changed, 32 insertions, 2 deletions
diff --git a/media/libstagefright/wifi-display/source/MediaPuller.cpp b/media/libstagefright/wifi-display/source/MediaPuller.cpp
index ab69c4a..189bea3 100644
--- a/media/libstagefright/wifi-display/source/MediaPuller.cpp
+++ b/media/libstagefright/wifi-display/source/MediaPuller.cpp
@@ -34,7 +34,8 @@ MediaPuller::MediaPuller(
: mSource(source),
mNotify(notify),
mPullGeneration(0),
- mIsAudio(false) {
+ mIsAudio(false),
+ mPaused(false) {
sp<MetaData> meta = source->getFormat();
const char *mime;
CHECK(meta->findCString(kKeyMIMEType, &mime));
@@ -71,6 +72,14 @@ void MediaPuller::stopAsync(const sp<AMessage> &notify) {
msg->post();
}
+void MediaPuller::pause() {
+ (new AMessage(kWhatPause, id()))->post();
+}
+
+void MediaPuller::resume() {
+ (new AMessage(kWhatResume, id()))->post();
+}
+
void MediaPuller::onMessageReceived(const sp<AMessage> &msg) {
switch (msg->what()) {
case kWhatStart:
@@ -95,7 +104,6 @@ void MediaPuller::onMessageReceived(const sp<AMessage> &msg) {
uint32_t replyID;
CHECK(msg->senderAwaitsResponse(&replyID));
-
response->postReply(replyID);
break;
}
@@ -130,6 +138,16 @@ void MediaPuller::onMessageReceived(const sp<AMessage> &msg) {
MediaBuffer *mbuf;
status_t err = mSource->read(&mbuf);
+ if (mPaused) {
+ if (err == OK) {
+ mbuf->release();
+ mbuf = NULL;
+ }
+
+ schedulePull();
+ break;
+ }
+
if (err != OK) {
if (err == ERROR_END_OF_STREAM) {
ALOGI("stream ended.");
@@ -176,6 +194,18 @@ void MediaPuller::onMessageReceived(const sp<AMessage> &msg) {
break;
}
+ case kWhatPause:
+ {
+ mPaused = true;
+ break;
+ }
+
+ case kWhatResume:
+ {
+ mPaused = false;
+ break;
+ }
+
default:
TRESPASS();
}