mediaplayer: add buffering settings API
Test: compiles, checked that params is passed all the way to source.
Bug:32524218
Change-Id: I637d1ab09f94a3830a33a39e7e9f1b3efb22357f
diff --git a/include/media/BufferingSettings.h b/include/media/BufferingSettings.h
index 281a5c1..e812d2a 100644
--- a/include/media/BufferingSettings.h
+++ b/include/media/BufferingSettings.h
@@ -66,6 +66,7 @@
status_t writeToParcel(Parcel* parcel) const override;
status_t readFromParcel(const Parcel* parcel) override;
+ String8 toString() const;
};
} // namespace android
diff --git a/include/media/mediaplayer.h b/include/media/mediaplayer.h
index be34d02..9130159 100644
--- a/include/media/mediaplayer.h
+++ b/include/media/mediaplayer.h
@@ -219,6 +219,8 @@
status_t setVideoSurfaceTexture(
const sp<IGraphicBufferProducer>& bufferProducer);
status_t setListener(const sp<MediaPlayerListener>& listener);
+ status_t getDefaultBufferingSettings(BufferingSettings* buffering /* nonnull */);
+ status_t setBufferingSettings(const BufferingSettings& buffering);
status_t prepare();
status_t prepareAsync();
status_t start();
diff --git a/media/libmedia/BufferingSettings.cpp b/media/libmedia/BufferingSettings.cpp
index 5d6e03d..a69497e 100644
--- a/media/libmedia/BufferingSettings.cpp
+++ b/media/libmedia/BufferingSettings.cpp
@@ -80,4 +80,15 @@
return OK;
}
+String8 BufferingSettings::toString() const {
+ String8 s;
+ s.appendFormat("initialMode(%d), rebufferingMode(%d), "
+ "initialMarks(%d ms, %d KB), rebufferingMarks(%d, %d)ms, (%d, %d)KB",
+ mInitialBufferingMode, mRebufferingMode,
+ mInitialWatermarkMs, mInitialWatermarkKB,
+ mRebufferingWatermarkLowMs, mRebufferingWatermarkHighMs,
+ mRebufferingWatermarkLowKB, mRebufferingWatermarkHighKB);
+ return s;
+}
+
} // namespace android
diff --git a/media/libmedia/mediaplayer.cpp b/media/libmedia/mediaplayer.cpp
index 699172b..6bba1f1 100644
--- a/media/libmedia/mediaplayer.cpp
+++ b/media/libmedia/mediaplayer.cpp
@@ -244,6 +244,28 @@
return mPlayer->setVideoSurfaceTexture(bufferProducer);
}
+status_t MediaPlayer::getDefaultBufferingSettings(BufferingSettings* buffering /* nonnull */)
+{
+ ALOGV("getDefaultBufferingSettings");
+
+ Mutex::Autolock _l(mLock);
+ if (mPlayer == 0) {
+ return NO_INIT;
+ }
+ return mPlayer->getDefaultBufferingSettings(buffering);
+}
+
+status_t MediaPlayer::setBufferingSettings(const BufferingSettings& buffering)
+{
+ ALOGV("setBufferingSettings");
+
+ Mutex::Autolock _l(mLock);
+ if (mPlayer == 0) {
+ return NO_INIT;
+ }
+ return mPlayer->setBufferingSettings(buffering);
+}
+
// must call with lock held
status_t MediaPlayer::prepareAsync_l()
{
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index 065738e..3199495 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -975,13 +975,8 @@
status_t MediaPlayerService::Client::setBufferingSettings(
const BufferingSettings& buffering)
{
- ALOGV("[%d] setBufferingSettings(%d, %d, %d, %d, %d, %d, %d, %d)",
- mConnId, buffering.mInitialBufferingMode, buffering.mRebufferingMode,
- buffering.mInitialWatermarkMs, buffering.mInitialWatermarkKB,
- buffering.mRebufferingWatermarkLowMs,
- buffering.mRebufferingWatermarkHighMs,
- buffering.mRebufferingWatermarkLowKB,
- buffering.mRebufferingWatermarkHighKB);
+ ALOGV("[%d] setBufferingSettings{%s}",
+ mConnId, buffering.toString().string());
sp<MediaPlayerBase> p = getPlayer();
if (p == 0) return UNKNOWN_ERROR;
return p->setBufferingSettings(buffering);
@@ -995,13 +990,8 @@
if (p == 0) return UNKNOWN_ERROR;
status_t ret = p->getDefaultBufferingSettings(buffering);
if (ret == NO_ERROR) {
- ALOGV("[%d] getDefaultBufferingSettings(%d, %d, %d, %d, %d, %d, %d, %d)",
- mConnId, buffering->mInitialBufferingMode, buffering->mRebufferingMode,
- buffering->mInitialWatermarkMs, buffering->mInitialWatermarkKB,
- buffering->mRebufferingWatermarkLowMs,
- buffering->mRebufferingWatermarkHighMs,
- buffering->mRebufferingWatermarkLowKB,
- buffering->mRebufferingWatermarkHighKB);
+ ALOGV("[%d] getDefaultBufferingSettings{%s}",
+ mConnId, buffering->toString().string());
} else {
ALOGV("[%d] getDefaultBufferingSettings returned %d", mConnId, ret);
}
diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.cpp b/media/libmediaplayerservice/nuplayer/GenericSource.cpp
index 407a5bf..91a2b7b 100644
--- a/media/libmediaplayerservice/nuplayer/GenericSource.cpp
+++ b/media/libmediaplayerservice/nuplayer/GenericSource.cpp
@@ -1495,10 +1495,16 @@
buffering->mRebufferingWatermarkHighMs = kHighWaterMarkRebufferMs;
buffering->mRebufferingWatermarkLowKB = kLowWaterMarkKB;
buffering->mRebufferingWatermarkHighKB = kHighWaterMarkKB;
+
+ ALOGV("BufferingMonitor::getDefaultBufferingSettings{%s}",
+ buffering->toString().string());
}
status_t NuPlayer::GenericSource::BufferingMonitor::setBufferingSettings(
const BufferingSettings &buffering) {
+ ALOGV("BufferingMonitor::setBufferingSettings{%s}",
+ buffering.toString().string());
+
Mutex::Autolock _l(mLock);
if (buffering.IsSizeBasedBufferingMode(buffering.mInitialBufferingMode)
|| (buffering.IsTimeBasedBufferingMode(buffering.mRebufferingMode)
diff --git a/media/libstagefright/Utils.cpp b/media/libstagefright/Utils.cpp
index 68a5b86..ec02fb9 100644
--- a/media/libstagefright/Utils.cpp
+++ b/media/libstagefright/Utils.cpp
@@ -1783,28 +1783,28 @@
void readFromAMessage(const sp<AMessage> &msg, BufferingSettings *buffering /* nonnull */) {
int32_t value;
- if (msg->findInt32("init-mode", &value) == OK) {
+ if (msg->findInt32("init-mode", &value)) {
buffering->mInitialBufferingMode = (BufferingMode)value;
}
- if (msg->findInt32("rebuffer-mode", &value) == OK) {
+ if (msg->findInt32("rebuffer-mode", &value)) {
buffering->mRebufferingMode = (BufferingMode)value;
}
- if (msg->findInt32("init-ms", &value) == OK) {
+ if (msg->findInt32("init-ms", &value)) {
buffering->mInitialWatermarkMs = value;
}
- if (msg->findInt32("init-kb", &value) == OK) {
+ if (msg->findInt32("init-kb", &value)) {
buffering->mInitialWatermarkKB = value;
}
- if (msg->findInt32("rebuffer-low-ms", &value) == OK) {
+ if (msg->findInt32("rebuffer-low-ms", &value)) {
buffering->mRebufferingWatermarkLowMs = value;
}
- if (msg->findInt32("rebuffer-high-ms", &value) == OK) {
+ if (msg->findInt32("rebuffer-high-ms", &value)) {
buffering->mRebufferingWatermarkHighMs = value;
}
- if (msg->findInt32("rebuffer-low-kb", &value) == OK) {
+ if (msg->findInt32("rebuffer-low-kb", &value)) {
buffering->mRebufferingWatermarkLowKB = value;
}
- if (msg->findInt32("rebuffer-high-kb", &value) == OK) {
+ if (msg->findInt32("rebuffer-high-kb", &value)) {
buffering->mRebufferingWatermarkHighKB = value;
}
}