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

Commit a2481664 authored by Pawin Vongmasa's avatar Pawin Vongmasa Committed by android-build-merger
Browse files

Merge "Revert "DO NOT MERGE omx: don't try to memcpy from/to opaque...

Merge "Revert "DO NOT MERGE omx: don't try to memcpy from/to opaque pointer/native handle."" into oc-dev am: 2b37975b
am: 7812dae7

Change-Id: I2798145cdf49dc6d0df69c7a7f271e1379204ffa
parents af91a550 7812dae7
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 −5
Original line number Diff line number Diff line
@@ -116,11 +116,6 @@ struct OMXNodeInstance : public BnOMXNode {

    static OMX_CALLBACKTYPE kCallbacks;

    enum SecureBufferType {
        kSecureBufferTypeUnknown,
        kSecureBufferTypeOpaque,
        kSecureBufferTypeNativeHandle,
    };
private:
    struct CallbackDispatcherThread;
    struct CallbackDispatcher;
@@ -159,6 +154,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];