diff options
author | Lajos Molnar <lajos@google.com> | 2014-09-24 13:55:10 -0700 |
---|---|---|
committer | Lajos Molnar <lajos@google.com> | 2014-09-24 13:59:54 -0700 |
commit | b32ebac7e3afb49b41eeccf130c8a96c1dae85d1 (patch) | |
tree | 1c7c314eaa3622227122c0129b0e2c4e744c284d /media | |
parent | 846202f5483c30ff380fc997c7d4461cce090098 (diff) | |
download | frameworks_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.cpp | 21 |
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 ¶ms) { 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 ¶ms) { 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; |