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

Commit 463b0418 authored by Lajos Molnar's avatar Lajos Molnar Committed by android-build-team Robot
Browse files

Revert "omx: don't try to memcpy from/to opaque pointer/native handle."

This reverts commit a9f89038.

Bug: 78104183
Reason for revert: Breaks encoders

Change-Id: Iec7e0d3dd98e8d95d636b8bb50c2a6fdb55f5df4
(cherry picked from commit ef777c71)
parent 7e04f11a
Loading
Loading
Loading
Loading
+4 −16
Original line number Diff line number Diff line
@@ -131,34 +131,22 @@ struct BufferMeta {
                static_cast<void*>(mHidlMemory->getPointer())) : nullptr;
    }

    void CopyFromOMX(const OMX_BUFFERHEADERTYPE *header, OMXNodeInstance::SecureBufferType type) {
    void CopyFromOMX(const OMX_BUFFERHEADERTYPE *header) {
        if (!mCopyFromOmx) {
            return;
        }

        if (type != OMXNodeInstance::kSecureBufferTypeUnknown) {
            ALOGE("b/77486542");
            android_errorWriteLog(0x534e4554, "77486542");
            return;
        }

        // check component returns proper range
        sp<ABuffer> codec = getBuffer(header, true /* limit */);

        memcpy(getPointer() + header->nOffset, codec->data(), codec->size());
    }

    void CopyToOMX(const OMX_BUFFERHEADERTYPE *header, OMXNodeInstance::SecureBufferType type) {
    void CopyToOMX(const OMX_BUFFERHEADERTYPE *header) {
        if (!mCopyToOmx) {
            return;
        }

        if (type != OMXNodeInstance::kSecureBufferTypeUnknown) {
            ALOGE("b/77486542");
            android_errorWriteLog(0x534e4554, "77486542");
            return;
        }

        memcpy(header->pBuffer + header->nOffset,
                getPointer() + header->nOffset,
                header->nFilledLen);
@@ -1705,7 +1693,7 @@ status_t OMXNodeInstance::emptyBuffer_l(
        header->nFilledLen = rangeLength;
        header->nOffset = rangeOffset;

        buffer_meta->CopyToOMX(header, mSecureBufferType[kPortIndexInput]);
        buffer_meta->CopyToOMX(header);
    }

    return emptyBuffer_l(header, flags, timestamp, (intptr_t)buffer, fenceFd);
@@ -1993,7 +1981,7 @@ bool OMXNodeInstance::handleMessage(omx_message &msg) {
            CLOG_ERROR(onFillBufferDone, OMX_ErrorBadParameter,
                    FULL_BUFFER(NULL, buffer, msg.fenceFd));
        }
        buffer_meta->CopyFromOMX(buffer, mSecureBufferType[kPortIndexOutput]);
        buffer_meta->CopyFromOMX(buffer);

        // fix up the buffer info (especially timestamp) if needed
        codecBufferFilled(msg);
+5 −6
Original line number Diff line number Diff line
@@ -117,12 +117,6 @@ struct OMXNodeInstance : public BnOMXNode {

    static OMX_CALLBACKTYPE kCallbacks;

    enum SecureBufferType {
        kSecureBufferTypeUnknown,
        kSecureBufferTypeOpaque,
        kSecureBufferTypeNativeHandle,
    };

private:
    struct CallbackDispatcherThread;
    struct CallbackDispatcher;
@@ -161,6 +155,11 @@ private:
    IOMX::PortMode mPortMode[2];
    // metadata and secure buffer types and graphic buffer mode tracking
    MetadataBufferType mMetadataType[2];
    enum SecureBufferType {
        kSecureBufferTypeUnknown,
        kSecureBufferTypeOpaque,
        kSecureBufferTypeNativeHandle,
    };
    SecureBufferType mSecureBufferType[2];
    bool mGraphicBufferEnabled[2];