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

Commit cd74c0d5 authored by Andreas Huber's avatar Andreas Huber
Browse files

The vendor is about to check in a fix for this issue, the workaround is no longer needed

parent 4f9a7d42
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -90,7 +90,6 @@ private:
        kRequiresFlushCompleteEmulation      = 16,
        kRequiresAllocateBufferOnOutputPorts = 32,
        kRequiresFlushBeforeShutdown         = 64,
        kAlwaysAllocateOutputWithPadding     = 128,
    };

    struct BufferInfo {
+0 −33
Original line number Diff line number Diff line
@@ -219,11 +219,6 @@ sp<OMXCodec> OMXCodec::Create(
    if (!strcmp(componentName, "OMX.TI.AAC.decode")) {
        quirks |= kNeedsFlushBeforeDisable;
        quirks |= kRequiresFlushCompleteEmulation;

        // The following is currently necessary for proper shutdown
        // behaviour, but NOT enabled by default in order to make the
        // bug reproducible...
        // quirks |= kRequiresFlushBeforeShutdown;
    }
    if (!strncmp(componentName, "OMX.qcom.video.encoder.", 23)) {
        quirks |= kRequiresLoadedToIdleAfterAllocation;
@@ -245,15 +240,6 @@ sp<OMXCodec> OMXCodec::Create(
        quirks |= kRequiresAllocateBufferOnOutputPorts;
    }

    if (!strcmp(componentName, "OMX.qcom.video.decoder.avc")) {
        // This decoder misreports the required output buffer size if
        // the content in question is not a multiple-16 width/height.

        // XXX Not enabled by default to make the bug reproducible by
        // the vendor.
        // quirks |= kAlwaysAllocateOutputWithPadding;
    }

    sp<OMXCodec> codec = new OMXCodec(
            omx, node, quirks, createEncoder, mime, componentName,
            source);
@@ -848,25 +834,6 @@ status_t OMXCodec::allocateBuffersOnPort(OMX_U32 portIndex) {
        return err;
    }

    if ((portIndex == kPortIndexOutput)
            && (mQuirks & kAlwaysAllocateOutputWithPadding)) {
        CHECK_EQ(def.eDomain, OMX_PortDomainVideo);
        const OMX_VIDEO_PORTDEFINITIONTYPE *videoDef = &def.format.video;
        CHECK_EQ(videoDef->eColorFormat, OMX_QCOM_COLOR_FormatYVU420SemiPlanar);

        OMX_U32 width = (videoDef->nFrameWidth + 15) & ~0x0f;
        OMX_U32 height = (videoDef->nFrameHeight + 15) & ~0x0f;

        size_t newBufferSize = (width * height * 3) / 2;
        CHECK(newBufferSize >= def.nBufferSize);
        if (newBufferSize > def.nBufferSize) {
            CODEC_LOGV("Rounding up output buffersize from %ld to %ld "
                       "to accomodate multiple-of-16 alignment.",
                       def.nBufferSize, newBufferSize);
        }
        def.nBufferSize = newBufferSize;
    }

    size_t totalSize = def.nBufferCountActual * def.nBufferSize;
    mDealer[portIndex] = new MemoryDealer(totalSize);