Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b32ebac7 authored by Lajos Molnar's avatar Lajos Molnar
Browse files

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
parent 846202f5
Loading
Loading
Loading
Loading
+14 −7
Original line number Diff line number Diff line
@@ -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;