diff options
author | Andreas Huber <andih@google.com> | 2010-11-04 11:50:27 -0700 |
---|---|---|
committer | James Dong <jdong@google.com> | 2010-11-05 17:03:17 -0700 |
commit | 85d9b4225d024bb0d602b48bd6d5219cbebd7b8e (patch) | |
tree | 4d9ebf6a8b1ecfe51c312d7f2cfa7b2eda6fe5cf /media/libmedia | |
parent | aca1fe35480ae76dd6bae167ade40adc955e2d0d (diff) | |
download | frameworks_av-85d9b4225d024bb0d602b48bd6d5219cbebd7b8e.zip frameworks_av-85d9b4225d024bb0d602b48bd6d5219cbebd7b8e.tar.gz frameworks_av-85d9b4225d024bb0d602b48bd6d5219cbebd7b8e.tar.bz2 |
Support post-decode video rotation.
Change-Id: Ia371316e73a57e44610de86adce3eaa560afbf84
Diffstat (limited to 'media/libmedia')
-rw-r--r-- | media/libmedia/IOMX.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/media/libmedia/IOMX.cpp b/media/libmedia/IOMX.cpp index f3804b8..ae6c2bf 100644 --- a/media/libmedia/IOMX.cpp +++ b/media/libmedia/IOMX.cpp @@ -38,11 +38,13 @@ sp<IOMXRenderer> IOMX::createRenderer( const char *componentName, OMX_COLOR_FORMATTYPE colorFormat, size_t encodedWidth, size_t encodedHeight, - size_t displayWidth, size_t displayHeight) { + size_t displayWidth, size_t displayHeight, + int32_t rotationDegrees) { return createRenderer( surface->getISurface(), componentName, colorFormat, encodedWidth, encodedHeight, - displayWidth, displayHeight); + displayWidth, displayHeight, + rotationDegrees); } sp<IOMXRenderer> IOMX::createRendererFromJavaSurface( @@ -50,7 +52,8 @@ sp<IOMXRenderer> IOMX::createRendererFromJavaSurface( const char *componentName, OMX_COLOR_FORMATTYPE colorFormat, size_t encodedWidth, size_t encodedHeight, - size_t displayWidth, size_t displayHeight) { + size_t displayWidth, size_t displayHeight, + int32_t rotationDegrees) { jclass surfaceClass = env->FindClass("android/view/Surface"); if (surfaceClass == NULL) { LOGE("Can't find android/view/Surface"); @@ -67,7 +70,8 @@ sp<IOMXRenderer> IOMX::createRendererFromJavaSurface( return createRenderer( surface, componentName, colorFormat, encodedWidth, - encodedHeight, displayWidth, displayHeight); + encodedHeight, displayWidth, displayHeight, + rotationDegrees); } class BpOMX : public BpInterface<IOMX> { @@ -349,7 +353,8 @@ public: const char *componentName, OMX_COLOR_FORMATTYPE colorFormat, size_t encodedWidth, size_t encodedHeight, - size_t displayWidth, size_t displayHeight) { + size_t displayWidth, size_t displayHeight, + int32_t rotationDegrees) { Parcel data, reply; data.writeInterfaceToken(IOMX::getInterfaceDescriptor()); @@ -360,6 +365,7 @@ public: data.writeInt32(encodedHeight); data.writeInt32(displayWidth); data.writeInt32(displayHeight); + data.writeInt32(rotationDegrees); remote()->transact(CREATE_RENDERER, data, &reply); @@ -682,11 +688,13 @@ status_t BnOMX::onTransact( size_t encodedHeight = (size_t)data.readInt32(); size_t displayWidth = (size_t)data.readInt32(); size_t displayHeight = (size_t)data.readInt32(); + int32_t rotationDegrees = data.readInt32(); sp<IOMXRenderer> renderer = createRenderer(isurface, componentName, colorFormat, encodedWidth, encodedHeight, - displayWidth, displayHeight); + displayWidth, displayHeight, + rotationDegrees); reply->writeStrongBinder(renderer->asBinder()); |