summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/colorconversion
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2015-02-05 12:46:32 -0800
committerLajos Molnar <lajos@google.com>2015-02-05 12:56:09 -0800
commit9578a90c214e430334b8696999f921290c35d067 (patch)
treedc7eabad7058949f8b70be3b462c3565ceddee86 /media/libstagefright/colorconversion
parent5a52a060fcbe4804bcf4f61b8a457fe0e18a9014 (diff)
downloadframeworks_av-9578a90c214e430334b8696999f921290c35d067.zip
frameworks_av-9578a90c214e430334b8696999f921290c35d067.tar.gz
frameworks_av-9578a90c214e430334b8696999f921290c35d067.tar.bz2
stagefright: add software renderer support to OMX_COLOR_YUV420SemiPlanar
Bug: 19179927 Change-Id: I3accaa655e9bad2b0efcac98c5dd95a23f8d6671
Diffstat (limited to 'media/libstagefright/colorconversion')
-rw-r--r--media/libstagefright/colorconversion/SoftwareRenderer.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/media/libstagefright/colorconversion/SoftwareRenderer.cpp b/media/libstagefright/colorconversion/SoftwareRenderer.cpp
index 6ce6d9f..4e75250 100644
--- a/media/libstagefright/colorconversion/SoftwareRenderer.cpp
+++ b/media/libstagefright/colorconversion/SoftwareRenderer.cpp
@@ -104,6 +104,7 @@ void SoftwareRenderer::resetFormatIfChanged(const sp<AMessage> &format) {
switch (mColorFormat) {
case OMX_COLOR_FormatYUV420Planar:
case OMX_TI_COLOR_FormatYUV420PackedSemiPlanar:
+ case OMX_COLOR_FormatYUV420SemiPlanar:
{
if (!runningInEmulator()) {
halFormat = HAL_PIXEL_FORMAT_YV12;
@@ -209,7 +210,6 @@ void SoftwareRenderer::render(
buf->stride, buf->height,
0, 0, mCropWidth - 1, mCropHeight - 1);
} else if (mColorFormat == OMX_COLOR_FormatYUV420Planar) {
- // YV12 really
const uint8_t *src_y = (const uint8_t *)data;
const uint8_t *src_u = (const uint8_t *)data + mWidth * mHeight;
const uint8_t *src_v = src_u + (mWidth / 2 * mHeight / 2);
@@ -237,9 +237,8 @@ void SoftwareRenderer::render(
dst_u += dst_c_stride;
dst_v += dst_c_stride;
}
- } else {
- CHECK_EQ(mColorFormat, OMX_TI_COLOR_FormatYUV420PackedSemiPlanar);
-
+ } else if (mColorFormat == OMX_TI_COLOR_FormatYUV420PackedSemiPlanar
+ || mColorFormat == OMX_COLOR_FormatYUV420SemiPlanar) {
const uint8_t *src_y =
(const uint8_t *)data;
@@ -272,6 +271,8 @@ void SoftwareRenderer::render(
dst_u += dst_c_stride;
dst_v += dst_c_stride;
}
+ } else {
+ LOG_ALWAYS_FATAL("bad color format %#x", mColorFormat);
}
CHECK_EQ(0, mapper.unlock(buf->handle));