diff options
author | Lakshman Gowda <lakshman79@ti.com> | 2011-09-29 17:47:35 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2011-10-05 10:29:27 -0700 |
commit | db62a245f968159ea5ff8ad99afb4cd035e2304d (patch) | |
tree | 09cbb61511de7a81a17b57edb11e8898ee38f2c5 /media | |
parent | b4e7d4ca7502bb8ff599229ec90c1bf5b481f2f7 (diff) | |
download | frameworks_base-db62a245f968159ea5ff8ad99afb4cd035e2304d.zip frameworks_base-db62a245f968159ea5ff8ad99afb4cd035e2304d.tar.gz frameworks_base-db62a245f968159ea5ff8ad99afb4cd035e2304d.tar.bz2 |
Set crop params to ANative Window during Initialization.
The native_window_set_crop() is called when port reconfig event callback comes from decoder's and
crop parameters are changed from default getconfig() OMX_IndexConfigCommonOutputCrop values.
Since the default crop params are same as port reconfig crop params, the native_window_set_crop()
is not called, hence resulting in displaying the whole frame(paddedWidth x paddedHeight).
By calling native_window_set_crop() during initilaization of output port of decoder ensures
in setting up ANative window to crop region.
Change-Id: I68926464a1f5c7e6053804615c8b9bd32ea85688
Signed-off-by: Lakshman Gowda <lakshman79@ti.com>
Diffstat (limited to 'media')
-rwxr-xr-x | media/libstagefright/OMXCodec.cpp | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp index ccc8a18..7c34257 100755 --- a/media/libstagefright/OMXCodec.cpp +++ b/media/libstagefright/OMXCodec.cpp @@ -2351,22 +2351,6 @@ void OMXCodec::onEvent(OMX_EVENTTYPE event, OMX_U32 data1, OMX_U32 data2) { formatHasNotablyChanged(oldOutputFormat, mOutputFormat)) { mOutputPortSettingsHaveChanged = true; - if (mNativeWindow != NULL) { - int32_t left, top, right, bottom; - CHECK(mOutputFormat->findRect( - kKeyCropRect, - &left, &top, &right, &bottom)); - - android_native_rect_t crop; - crop.left = left; - crop.top = top; - crop.right = right + 1; - crop.bottom = bottom + 1; - - // We'll ignore any errors here, if the surface is - // already invalid, we'll know soon enough. - native_window_set_crop(mNativeWindow.get(), &crop); - } } else if (data2 == OMX_IndexConfigCommonScale) { OMX_CONFIG_SCALEFACTORTYPE scale; InitOMXParams(&scale); @@ -4183,6 +4167,24 @@ status_t OMXCodec::initNativeWindow() { return OK; } +void OMXCodec::initNativeWindowCrop() { + int32_t left, top, right, bottom; + + CHECK(mOutputFormat->findRect( + kKeyCropRect, + &left, &top, &right, &bottom)); + + android_native_rect_t crop; + crop.left = left; + crop.top = top; + crop.right = right + 1; + crop.bottom = bottom + 1; + + // We'll ignore any errors here, if the surface is + // already invalid, we'll know soon enough. + native_window_set_crop(mNativeWindow.get(), &crop); +} + void OMXCodec::initOutputFormat(const sp<MetaData> &inputFormat) { mOutputFormat = new MetaData; mOutputFormat->setCString(kKeyDecoderComponent, mComponentName); @@ -4366,6 +4368,10 @@ void OMXCodec::initOutputFormat(const sp<MetaData> &inputFormat) { video_def->nFrameWidth - 1, video_def->nFrameHeight - 1); } + + if (mNativeWindow != NULL) { + initNativeWindowCrop(); + } } break; } |