summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/OMXCodec.cpp
diff options
context:
space:
mode:
authorLakshman Gowda <lakshman79@ti.com>2011-09-29 17:47:35 -0700
committerAndreas Huber <andih@google.com>2011-10-05 10:29:27 -0700
commitd20bf0676d6db8f12edcd2307f82409c076c7015 (patch)
treef8d91ec301e522a273fae3bf85cf8e6483cb66ed /media/libstagefright/OMXCodec.cpp
parentd3523f89a867afa111bb332887bf006ec3ae93e6 (diff)
downloadframeworks_av-d20bf0676d6db8f12edcd2307f82409c076c7015.zip
frameworks_av-d20bf0676d6db8f12edcd2307f82409c076c7015.tar.gz
frameworks_av-d20bf0676d6db8f12edcd2307f82409c076c7015.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/libstagefright/OMXCodec.cpp')
-rwxr-xr-xmedia/libstagefright/OMXCodec.cpp38
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;
}