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

Commit ca9f7f2d authored by James Dong's avatar James Dong Committed by Android Git Automerger
Browse files

am 5264f600: Merge "Bail out after kMaxColorFormatSupported calls to...

am 5264f600: Merge "Bail out after kMaxColorFormatSupported calls to OMX_GetParameter(). Avoid infinite loop in querying omx component about the supported color format." into ics-mr0

* commit '5264f6003bbcb8ca70df034379154914260cc322':
  Bail out after kMaxColorFormatSupported calls to OMX_GetParameter(). Avoid infinite loop in querying omx component about the supported color format.
parents 2ce99907 c4ff709b
Loading
Loading
Loading
Loading
+16 −7
Original line number Diff line number Diff line
@@ -52,6 +52,13 @@ namespace android {
// buffers after 3 seconds.
const static int64_t kBufferFilledEventTimeOutNs = 3000000000LL;

// OMX Spec defines less than 50 color formats. If the query for
// color format is executed for more than kMaxColorFormatSupported,
// the query will fail to avoid looping forever.
// 1000 is more than enough for us to tell whether the omx
// component in question is buggy or not.
const static uint32_t kMaxColorFormatSupported = 1000;

struct CodecInfo {
    const char *mime;
    const char *codec;
@@ -819,6 +826,11 @@ status_t OMXCodec::setVideoPortFormatType(
        }

        ++index;
        if (index >= kMaxColorFormatSupported) {
            CODEC_LOGE("color format %d or compression format %d is not supported",
                colorFormat, compressionFormat);
            return UNKNOWN_ERROR;
        }
    }

    if (!found) {
@@ -902,22 +914,19 @@ status_t OMXCodec::isColorFormatSupported(
        // the incremented index (bug 2897413).
        CHECK_EQ(index, portFormat.nIndex);
        if (portFormat.eColorFormat == colorFormat) {
            LOGV("Found supported color format: %d", portFormat.eColorFormat);
            CODEC_LOGV("Found supported color format: %d", portFormat.eColorFormat);
            return OK;  // colorFormat is supported!
        }
        ++index;
        portFormat.nIndex = index;

        // OMX Spec defines less than 50 color formats
        // 1000 is more than enough for us to tell whether the omx
        // component in question is buggy or not.
        if (index >= 1000) {
            LOGE("More than %ld color formats are supported???", index);
        if (index >= kMaxColorFormatSupported) {
            CODEC_LOGE("More than %ld color formats are supported???", index);
            break;
        }
    }

    LOGE("color format %d is not supported", colorFormat);
    CODEC_LOGE("color format %d is not supported", colorFormat);
    return UNKNOWN_ERROR;
}