diff options
author | James Dong <jdong@google.com> | 2012-04-30 14:38:12 -0700 |
---|---|---|
committer | James Dong <jdong@google.com> | 2012-05-01 10:30:58 -0700 |
commit | 4f6eed0d1c7972a983c075bdcf03089569e13fe1 (patch) | |
tree | 6eebbc397b99bf33e8c9991fada609d86d144caf /media/libstagefright/AwesomePlayer.cpp | |
parent | 27431de020e535c31365884316f656bc60b4fe4f (diff) | |
download | frameworks_av-4f6eed0d1c7972a983c075bdcf03089569e13fe1.zip frameworks_av-4f6eed0d1c7972a983c075bdcf03089569e13fe1.tar.gz frameworks_av-4f6eed0d1c7972a983c075bdcf03089569e13fe1.tar.bz2 |
Impl for supporting two video scaling modes
o allows the video scaling mode to change at any time
o also remove the scaling mode logic in OMXCodec.cpp
o related-to-bug: 5454345
Change-Id: I6f1714eb0c2774591ce650d56c1e779b8afd085f
Diffstat (limited to 'media/libstagefright/AwesomePlayer.cpp')
-rw-r--r-- | media/libstagefright/AwesomePlayer.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index 1387e74..cc3fae6 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -184,6 +184,7 @@ AwesomePlayer::AwesomePlayer() mAudioPlayer(NULL), mDisplayWidth(0), mDisplayHeight(0), + mVideoScalingMode(NATIVE_WINDOW_SCALING_MODE_SCALE_TO_WINDOW), mFlags(0), mExtractorFlags(0), mVideoBuffer(NULL), @@ -1081,6 +1082,8 @@ void AwesomePlayer::initRenderer_l() { // before creating a new one. IPCThreadState::self()->flushCommands(); + // Even if set scaling mode fails, we will continue anyway + setVideoScalingMode_l(mVideoScalingMode); if (USE_SURFACE_ALLOC && !strncmp(component, "OMX.", 4) && strncmp(component, "OMX.google.", 11) @@ -2362,6 +2365,23 @@ size_t AwesomePlayer::countTracks() const { return mExtractor->countTracks() + mTextDriver->countExternalTracks(); } +status_t AwesomePlayer::setVideoScalingMode(int32_t mode) { + Mutex::Autolock lock(mLock); + return setVideoScalingMode_l(mode); +} + +status_t AwesomePlayer::setVideoScalingMode_l(int32_t mode) { + mVideoScalingMode = mode; + if (mNativeWindow != NULL) { + status_t err = native_window_set_scaling_mode( + mNativeWindow.get(), mVideoScalingMode); + if (err != OK) { + ALOGW("Failed to set scaling mode: %d", err); + } + } + return OK; +} + status_t AwesomePlayer::invoke(const Parcel &request, Parcel *reply) { if (NULL == reply) { return android::BAD_VALUE; @@ -2372,6 +2392,12 @@ status_t AwesomePlayer::invoke(const Parcel &request, Parcel *reply) { return ret; } switch(methodId) { + case INVOKE_ID_SET_VIDEO_SCALING_MODE: + { + int mode = request.readInt32(); + return setVideoScalingMode(mode); + } + case INVOKE_ID_GET_TRACK_INFO: { return getTrackInfo(reply); |