diff options
author | Lajos Molnar <lajos@google.com> | 2013-06-12 09:29:43 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-06-12 09:29:43 -0700 |
commit | f8af99b7c10f1441d9a52676724b168f20752270 (patch) | |
tree | c04a7333f15e86d260c4c207a9fd06cd23d2b195 /media | |
parent | bb35be24239f05f59715960a93cd491a4cd3b4d6 (diff) | |
parent | 0662f7b6735df0a140f6512285d05f8f9a38bb98 (diff) | |
download | frameworks_av-f8af99b7c10f1441d9a52676724b168f20752270.zip frameworks_av-f8af99b7c10f1441d9a52676724b168f20752270.tar.gz frameworks_av-f8af99b7c10f1441d9a52676724b168f20752270.tar.bz2 |
am 0662f7b6: Merge "stagefright: synchronously change nativewindow crop" into jb-mr2-dev
* commit '0662f7b6735df0a140f6512285d05f8f9a38bb98':
stagefright: synchronously change nativewindow crop
Diffstat (limited to 'media')
-rw-r--r-- | media/libstagefright/ACodec.cpp | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp index 64e3885..cf41cf2 100644 --- a/media/libstagefright/ACodec.cpp +++ b/media/libstagefright/ACodec.cpp @@ -2229,7 +2229,7 @@ void ACodec::processDeferredMessages() { } } -void ACodec::sendFormatChange() { +void ACodec::sendFormatChange(const sp<AMessage> &reply) { sp<AMessage> notify = mNotify->dup(); notify->setInt32("what", kWhatOutputFormatChanged); @@ -2294,14 +2294,12 @@ void ACodec::sendFormatChange() { rect.nTop + rect.nHeight - 1); if (mNativeWindow != NULL) { - android_native_rect_t crop; - crop.left = rect.nLeft; - crop.top = rect.nTop; - crop.right = rect.nLeft + rect.nWidth; - crop.bottom = rect.nTop + rect.nHeight; - - CHECK_EQ(0, native_window_set_crop( - mNativeWindow.get(), &crop)); + reply->setRect( + "crop", + rect.nLeft, + rect.nTop, + rect.nLeft + rect.nWidth, + rect.nTop + rect.nHeight); } } break; @@ -3057,8 +3055,11 @@ bool ACodec::BaseState::onOMXFillBufferDone( break; } + sp<AMessage> reply = + new AMessage(kWhatOutputBufferDrained, mCodec->id()); + if (!mCodec->mSentFormat) { - mCodec->sendFormatChange(); + mCodec->sendFormatChange(reply); } info->mData->setRange(rangeOffset, rangeLength); @@ -3081,9 +3082,6 @@ bool ACodec::BaseState::onOMXFillBufferDone( notify->setBuffer("buffer", info->mData); notify->setInt32("flags", flags); - sp<AMessage> reply = - new AMessage(kWhatOutputBufferDrained, mCodec->id()); - reply->setPointer("buffer-id", info->mBufferID); notify->setMessage("reply", reply); @@ -3127,6 +3125,13 @@ void ACodec::BaseState::onOutputBufferDrained(const sp<AMessage> &msg) { mCodec->findBufferByID(kPortIndexOutput, bufferID, &index); CHECK_EQ((int)info->mStatus, (int)BufferInfo::OWNED_BY_DOWNSTREAM); + android_native_rect_t crop; + if (msg->findRect("crop", + &crop.left, &crop.top, &crop.right, &crop.bottom)) { + CHECK_EQ(0, native_window_set_crop( + mCodec->mNativeWindow.get(), &crop)); + } + int32_t render; if (mCodec->mNativeWindow != NULL && msg->findInt32("render", &render) && render != 0 |