summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2014-08-01 13:39:30 -0700
committerLajos Molnar <lajos@google.com>2014-08-01 13:41:10 -0700
commit18def1b8b8cdc91695ebb75bb392a84bb1b9c9be (patch)
treec3ea8561d53f3934f18f803f934aaaa920b66a20 /media
parent16513e84b7ee558f57bb8a79b35a3e8614548a5d (diff)
parente1009a0ff7fedf0b260929299bb23cf27e52c701 (diff)
downloadframeworks_av-18def1b8b8cdc91695ebb75bb392a84bb1b9c9be.zip
frameworks_av-18def1b8b8cdc91695ebb75bb392a84bb1b9c9be.tar.gz
frameworks_av-18def1b8b8cdc91695ebb75bb392a84bb1b9c9be.tar.bz2
resolved conflicts for merge of e1009a0f to master
Diffstat (limited to 'media')
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp33
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayerDriver.h1
2 files changed, 28 insertions, 6 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp
index 20703f3..6cfbcdc 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp
@@ -42,6 +42,7 @@ NuPlayerDriver::NuPlayerDriver()
mLooper(new ALooper),
mPlayerFlags(0),
mAtEOS(false),
+ mLooping(false),
mStartupSeekTimeUs(-1) {
mLooper->setName("NuPlayerDriver Looper");
@@ -76,6 +77,7 @@ status_t NuPlayerDriver::setDataSource(
const KeyedVector<String8, String8> *headers) {
Mutex::Autolock autoLock(mLock);
+ ALOGV("setDataSource: url=%s", url);
if (mState != STATE_IDLE) {
return INVALID_OPERATION;
}
@@ -94,6 +96,7 @@ status_t NuPlayerDriver::setDataSource(
status_t NuPlayerDriver::setDataSource(int fd, int64_t offset, int64_t length) {
Mutex::Autolock autoLock(mLock);
+ ALOGV("setDataSource: fd=%d", fd);
if (mState != STATE_IDLE) {
return INVALID_OPERATION;
}
@@ -112,6 +115,7 @@ status_t NuPlayerDriver::setDataSource(int fd, int64_t offset, int64_t length) {
status_t NuPlayerDriver::setDataSource(const sp<IStreamSource> &source) {
Mutex::Autolock autoLock(mLock);
+ ALOGV("setDataSource: stream source");
if (mState != STATE_IDLE) {
return INVALID_OPERATION;
}
@@ -378,12 +382,14 @@ status_t NuPlayerDriver::reset() {
mDurationUs = -1;
mPositionUs = -1;
mStartupSeekTimeUs = -1;
+ mLooping = false;
return OK;
}
-status_t NuPlayerDriver::setLooping(int /* loop */) {
- return INVALID_OPERATION;
+status_t NuPlayerDriver::setLooping(int loop) {
+ mLooping = loop != 0;
+ return OK;
}
player_type NuPlayerDriver::playerType() {
@@ -534,11 +540,26 @@ status_t NuPlayerDriver::dump(
void NuPlayerDriver::notifyListener(
int msg, int ext1, int ext2, const Parcel *in) {
- if (msg == MEDIA_PLAYBACK_COMPLETE || msg == MEDIA_ERROR) {
- mAtEOS = true;
- if (msg == MEDIA_PLAYBACK_COMPLETE) {
- mState = STATE_PAUSED;
+ switch (msg) {
+ case MEDIA_PLAYBACK_COMPLETE:
+ {
+ if (mLooping) {
+ mPlayer->seekToAsync(0);
+ break;
+ } else {
+ mState = STATE_PAUSED;
+ }
+ // fall through
}
+
+ case MEDIA_ERROR:
+ {
+ mAtEOS = true;
+ break;
+ }
+
+ default:
+ break;
}
sendEvent(msg, ext1, ext2, in);
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.h b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.h
index 0148fb1..9424aae 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.h
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.h
@@ -111,6 +111,7 @@ private:
uint32_t mPlayerFlags;
bool mAtEOS;
+ bool mLooping;
int64_t mStartupSeekTimeUs;