summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorChong Zhang <chz@google.com>2015-07-18 04:52:50 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-07-18 04:52:51 +0000
commitf8f669d7a727e4ad5505cd85741f4d50dbaffbf9 (patch)
tree5e6a28a6a6ead0798be7bab2e61eff08def18303 /media
parent51390b48d311d1164a6638d3fe0b4a48aaa9028f (diff)
parent505aab41c0e8e79a49d4506344fcd9d220d5965b (diff)
downloadframeworks_av-f8f669d7a727e4ad5505cd85741f4d50dbaffbf9.zip
frameworks_av-f8f669d7a727e4ad5505cd85741f4d50dbaffbf9.tar.gz
frameworks_av-f8f669d7a727e4ad5505cd85741f4d50dbaffbf9.tar.bz2
Merge "fix soft renderer rotation" into mnc-dev
Diffstat (limited to 'media')
-rw-r--r--media/libstagefright/MediaCodec.cpp6
-rw-r--r--media/libstagefright/colorconversion/SoftwareRenderer.cpp8
-rw-r--r--media/libstagefright/include/SoftwareRenderer.h4
3 files changed, 13 insertions, 5 deletions
diff --git a/media/libstagefright/MediaCodec.cpp b/media/libstagefright/MediaCodec.cpp
index 09742a4..b444687 100644
--- a/media/libstagefright/MediaCodec.cpp
+++ b/media/libstagefright/MediaCodec.cpp
@@ -247,6 +247,7 @@ MediaCodec::MediaCodec(const sp<ALooper> &looper)
mIsVideo(false),
mVideoWidth(0),
mVideoHeight(0),
+ mRotationDegrees(0),
mDequeueInputTimeoutGeneration(0),
mDequeueInputReplyID(0),
mDequeueOutputTimeoutGeneration(0),
@@ -409,6 +410,9 @@ status_t MediaCodec::configure(
if (mIsVideo) {
format->findInt32("width", &mVideoWidth);
format->findInt32("height", &mVideoHeight);
+ if (!format->findInt32("rotation-degrees", &mRotationDegrees)) {
+ mRotationDegrees = 0;
+ }
}
msg->setMessage("format", format);
@@ -1309,7 +1313,7 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
CHECK(msg->findString("mime", &mime));
if (mime.startsWithIgnoreCase("video/")) {
- mSoftRenderer = new SoftwareRenderer(mSurface);
+ mSoftRenderer = new SoftwareRenderer(mSurface, mRotationDegrees);
}
}
diff --git a/media/libstagefright/colorconversion/SoftwareRenderer.cpp b/media/libstagefright/colorconversion/SoftwareRenderer.cpp
index d22451b..e92c192 100644
--- a/media/libstagefright/colorconversion/SoftwareRenderer.cpp
+++ b/media/libstagefright/colorconversion/SoftwareRenderer.cpp
@@ -38,7 +38,8 @@ static int ALIGN(int x, int y) {
return (x + y - 1) & ~(y - 1);
}
-SoftwareRenderer::SoftwareRenderer(const sp<ANativeWindow> &nativeWindow)
+SoftwareRenderer::SoftwareRenderer(
+ const sp<ANativeWindow> &nativeWindow, int32_t rotation)
: mColorFormat(OMX_COLOR_FormatUnused),
mConverter(NULL),
mYUVMode(None),
@@ -50,7 +51,8 @@ SoftwareRenderer::SoftwareRenderer(const sp<ANativeWindow> &nativeWindow)
mCropRight(0),
mCropBottom(0),
mCropWidth(0),
- mCropHeight(0) {
+ mCropHeight(0),
+ mRotationDegrees(rotation) {
}
SoftwareRenderer::~SoftwareRenderer() {
@@ -181,7 +183,7 @@ void SoftwareRenderer::resetFormatIfChanged(const sp<AMessage> &format) {
int32_t rotationDegrees;
if (!format->findInt32("rotation-degrees", &rotationDegrees)) {
- rotationDegrees = 0;
+ rotationDegrees = mRotationDegrees;
}
uint32_t transform;
switch (rotationDegrees) {
diff --git a/media/libstagefright/include/SoftwareRenderer.h b/media/libstagefright/include/SoftwareRenderer.h
index 9e652d5..757b308 100644
--- a/media/libstagefright/include/SoftwareRenderer.h
+++ b/media/libstagefright/include/SoftwareRenderer.h
@@ -31,7 +31,8 @@ struct AMessage;
class SoftwareRenderer {
public:
- explicit SoftwareRenderer(const sp<ANativeWindow> &nativeWindow);
+ explicit SoftwareRenderer(
+ const sp<ANativeWindow> &nativeWindow, int32_t rotation = 0);
~SoftwareRenderer();
@@ -52,6 +53,7 @@ private:
int32_t mWidth, mHeight;
int32_t mCropLeft, mCropTop, mCropRight, mCropBottom;
int32_t mCropWidth, mCropHeight;
+ int32_t mRotationDegrees;
FrameRenderTracker mRenderTracker;
SoftwareRenderer(const SoftwareRenderer &);