summaryrefslogtreecommitdiffstats
path: root/media/libmedia
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2010-11-04 11:50:27 -0700
committerJames Dong <jdong@google.com>2010-11-05 17:03:17 -0700
commit85d9b4225d024bb0d602b48bd6d5219cbebd7b8e (patch)
tree4d9ebf6a8b1ecfe51c312d7f2cfa7b2eda6fe5cf /media/libmedia
parentaca1fe35480ae76dd6bae167ade40adc955e2d0d (diff)
downloadframeworks_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.cpp20
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());