summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/colorconversion/SoftwareRenderer.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2010-11-16 15:26:30 -0800
committerAndreas Huber <andih@google.com>2010-11-16 15:26:30 -0800
commitba529e486dde15fe75ea1b48570f9d60a4cf3c48 (patch)
tree081f61aca5f4967c1ee3a741414b58ca4a39ffd3 /media/libstagefright/colorconversion/SoftwareRenderer.cpp
parent0a5ca668c6f7d45706e9aec4a1dfec0aacc6d233 (diff)
downloadframeworks_av-ba529e486dde15fe75ea1b48570f9d60a4cf3c48.zip
frameworks_av-ba529e486dde15fe75ea1b48570f9d60a4cf3c48.tar.gz
frameworks_av-ba529e486dde15fe75ea1b48570f9d60a4cf3c48.tar.bz2
Support post-decode video rotation.
Change-Id: I9ac90871269c5e132e98a9bf3ad8cae00f329f17
Diffstat (limited to 'media/libstagefright/colorconversion/SoftwareRenderer.cpp')
-rw-r--r--media/libstagefright/colorconversion/SoftwareRenderer.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/media/libstagefright/colorconversion/SoftwareRenderer.cpp b/media/libstagefright/colorconversion/SoftwareRenderer.cpp
index 662a84a..3d507ca 100644
--- a/media/libstagefright/colorconversion/SoftwareRenderer.cpp
+++ b/media/libstagefright/colorconversion/SoftwareRenderer.cpp
@@ -35,7 +35,8 @@ SoftwareRenderer::SoftwareRenderer(
OMX_COLOR_FORMATTYPE colorFormat,
const sp<Surface> &surface,
size_t displayWidth, size_t displayHeight,
- size_t decodedWidth, size_t decodedHeight)
+ size_t decodedWidth, size_t decodedHeight,
+ int32_t rotationDegrees)
: mColorFormat(colorFormat),
mConverter(NULL),
mYUVMode(None),
@@ -95,6 +96,20 @@ SoftwareRenderer::SoftwareRenderer(
CHECK_EQ(0, native_window_set_buffers_geometry(
mSurface.get(), mDecodedWidth, mDecodedHeight,
halFormat));
+
+ uint32_t transform;
+ switch (rotationDegrees) {
+ case 0: transform = 0; break;
+ case 90: transform = HAL_TRANSFORM_ROT_90; break;
+ case 180: transform = HAL_TRANSFORM_ROT_180; break;
+ case 270: transform = HAL_TRANSFORM_ROT_270; break;
+ default: transform = 0; break;
+ }
+
+ if (transform) {
+ CHECK_EQ(0, native_window_set_buffers_transform(
+ mSurface.get(), transform));
+ }
}
SoftwareRenderer::~SoftwareRenderer() {