summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2014-09-24 13:55:10 -0700
committerLajos Molnar <lajos@google.com>2014-09-24 13:59:54 -0700
commitb32ebac7e3afb49b41eeccf130c8a96c1dae85d1 (patch)
tree1c7c314eaa3622227122c0129b0e2c4e744c284d /media
parent846202f5483c30ff380fc997c7d4461cce090098 (diff)
downloadframeworks_av-b32ebac7e3afb49b41eeccf130c8a96c1dae85d1.zip
frameworks_av-b32ebac7e3afb49b41eeccf130c8a96c1dae85d1.tar.gz
frameworks_av-b32ebac7e3afb49b41eeccf130c8a96c1dae85d1.tar.bz2
stagefright: use frame height if slice height is 0
This is a workaround for some vendors that set slice height to 0. Android uses slice height is the vertical stride for YUV planar and semiplanar formats. Bug: 13433554 Change-Id: I4da038e7a768dcd8360c33fa1a9ce95a172f16bb
Diffstat (limited to 'media')
-rw-r--r--media/libstagefright/ACodec.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp
index 3c04859..4589ed1 100644
--- a/media/libstagefright/ACodec.cpp
+++ b/media/libstagefright/ACodec.cpp
@@ -2933,13 +2933,6 @@ bool ACodec::describeDefaultColorFormat(DescribeColorFormatParams &params) {
image.mNumPlanes = 0;
const OMX_COLOR_FORMATTYPE fmt = params.eColorFormat;
- // we need stride and slice-height to be non-zero
- if (params.nStride == 0 || params.nSliceHeight == 0) {
- ALOGW("cannot describe color format 0x%x = %d with stride=%u and sliceHeight=%u",
- fmt, fmt, params.nStride, params.nSliceHeight);
- return false;
- }
-
image.mWidth = params.nFrameWidth;
image.mHeight = params.nFrameHeight;
@@ -2952,6 +2945,20 @@ bool ACodec::describeDefaultColorFormat(DescribeColorFormatParams &params) {
return false;
}
+ // TEMPORARY FIX for some vendors that advertise sliceHeight as 0
+ if (params.nStride != 0 && params.nSliceHeight == 0) {
+ ALOGW("using sliceHeight=%u instead of what codec advertised (=0)",
+ params.nFrameHeight);
+ params.nSliceHeight = params.nFrameHeight;
+ }
+
+ // we need stride and slice-height to be non-zero
+ if (params.nStride == 0 || params.nSliceHeight == 0) {
+ ALOGW("cannot describe color format 0x%x = %d with stride=%u and sliceHeight=%u",
+ fmt, fmt, params.nStride, params.nSliceHeight);
+ return false;
+ }
+
// set-up YUV format
image.mType = MediaImage::MEDIA_IMAGE_TYPE_YUV;
image.mNumPlanes = 3;