diff options
author | James Dong <jdong@google.com> | 2012-09-04 19:14:57 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-09-04 19:14:57 -0700 |
commit | d7a61ad1e9ad1e59b5ef5d8f6e37da400c01d01c (patch) | |
tree | 1ce0c2be6f4ac96499707d1338516d63a5b6f145 /media/libmediaplayerservice/nuplayer | |
parent | 09359d4e7b9186eec9ce744257a8d1dcb6cbbf15 (diff) | |
parent | 1f3cf60ccb8c7f0b8ab98d2f46ef67a50a98fce0 (diff) | |
download | frameworks_av-d7a61ad1e9ad1e59b5ef5d8f6e37da400c01d01c.zip frameworks_av-d7a61ad1e9ad1e59b5ef5d8f6e37da400c01d01c.tar.gz frameworks_av-d7a61ad1e9ad1e59b5ef5d8f6e37da400c01d01c.tar.bz2 |
am 05e73de0: am 0d268a3c: Add setVideoScalingMode support to NuPlayer
* commit '05e73de0664765a144414e73d4fcf4e1caf3c0f3':
Add setVideoScalingMode support to NuPlayer
Diffstat (limited to 'media/libmediaplayerservice/nuplayer')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayer.cpp | 20 | ||||
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayer.h | 4 | ||||
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp | 24 |
3 files changed, 46 insertions, 2 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp index 62381c1..c09f86f 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp @@ -68,7 +68,8 @@ NuPlayer::NuPlayer() mSkipRenderingVideoUntilMediaTimeUs(-1ll), mVideoLateByUs(0ll), mNumFramesTotal(0ll), - mNumFramesDropped(0ll) { + mNumFramesDropped(0ll), + mVideoScalingMode(NATIVE_WINDOW_SCALING_MODE_SCALE_TO_WINDOW) { } NuPlayer::~NuPlayer() { @@ -217,6 +218,9 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { CHECK(msg->findObject("native-window", &obj)); mNativeWindow = static_cast<NativeWindowWrapper *>(obj.get()); + + // XXX - ignore error from setVideoScalingMode for now + setVideoScalingMode(mVideoScalingMode); break; } @@ -955,4 +959,18 @@ sp<AMessage> NuPlayer::Source::getFormat(bool audio) { return NULL; } +status_t NuPlayer::setVideoScalingMode(int32_t mode) { + mVideoScalingMode = mode; + if (mNativeWindow != NULL) { + status_t ret = native_window_set_scaling_mode( + mNativeWindow->getNativeWindow().get(), mVideoScalingMode); + if (ret != OK) { + ALOGE("Failed to set scaling mode (%d): %s", + -ret, strerror(-ret)); + return ret; + } + } + return OK; +} + } // namespace android diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.h b/media/libmediaplayerservice/nuplayer/NuPlayer.h index 996806e..36d3a9c 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayer.h +++ b/media/libmediaplayerservice/nuplayer/NuPlayer.h @@ -55,6 +55,8 @@ struct NuPlayer : public AHandler { // Will notify the driver through "notifySeekComplete" once finished. void seekToAsync(int64_t seekTimeUs); + status_t setVideoScalingMode(int32_t mode); + protected: virtual ~NuPlayer(); @@ -130,6 +132,8 @@ private: int64_t mVideoLateByUs; int64_t mNumFramesTotal, mNumFramesDropped; + int32_t mVideoScalingMode; + status_t instantiateDecoder(bool audio, sp<Decoder> *decoder); status_t feedDecoderInputData(bool audio, const sp<AMessage> &msg); diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp index 441cbf3..d03601f 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp @@ -259,7 +259,29 @@ player_type NuPlayerDriver::playerType() { } status_t NuPlayerDriver::invoke(const Parcel &request, Parcel *reply) { - return INVALID_OPERATION; + if (reply == NULL) { + ALOGE("reply is a NULL pointer"); + return BAD_VALUE; + } + + int32_t methodId; + status_t ret = request.readInt32(&methodId); + if (ret != OK) { + ALOGE("Failed to retrieve the requested method to invoke"); + return ret; + } + + switch (methodId) { + case INVOKE_ID_SET_VIDEO_SCALING_MODE: + { + int mode = request.readInt32(); + return mPlayer->setVideoScalingMode(mode); + } + default: + { + return INVALID_OPERATION; + } + } } void NuPlayerDriver::setAudioSink(const sp<AudioSink> &audioSink) { |