summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/AwesomePlayer.cpp
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2012-04-30 14:38:12 -0700
committerJames Dong <jdong@google.com>2012-05-01 10:30:58 -0700
commit4f6eed0d1c7972a983c075bdcf03089569e13fe1 (patch)
tree6eebbc397b99bf33e8c9991fada609d86d144caf /media/libstagefright/AwesomePlayer.cpp
parent27431de020e535c31365884316f656bc60b4fe4f (diff)
downloadframeworks_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.cpp26
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);