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

Commit 21b46588 authored by Chong Zhang's avatar Chong Zhang
Browse files

IOMX: remove allocateBufferWithBackup

Only keep useBuffer. Pass in quirks requirement for now, once
we have access to MediaCodecList XML info in OMX, we can remove
the quirks from IOMX.

Also remove a few unused variables on BufferMeta.

bug: 31399200
Change-Id: I93bef964ce034d4aeb1f5d13a75f130108e4e648
parent 8922c251
Loading
Loading
Loading
Loading
+3 −6
Original line number Diff line number Diff line
@@ -150,12 +150,6 @@ public:
            OMX_U32 port_index, size_t size, buffer_id *buffer,
            void **buffer_data, sp<NativeHandle> *native_handle) = 0;

    // Allocate an OMX buffer of size |allotedSize|. Use |params| as the backup buffer, which
    // may be larger.
    virtual status_t allocateBufferWithBackup(
            OMX_U32 port_index, const sp<IMemory> &params,
            buffer_id *buffer, OMX_U32 allottedSize) = 0;

    virtual status_t freeBuffer(
            OMX_U32 port_index, buffer_id buffer) = 0;

@@ -189,6 +183,9 @@ public:
            OMX_INDEXTYPE *index) = 0;

    virtual status_t dispatchMessage(const omx_message &msg) = 0;

    // TODO: this is temporary, will be removed when quirks move to OMX side
    virtual status_t setQuirks(OMX_U32 quirks) = 0;
};

struct omx_message {
+0 −1
Original line number Diff line number Diff line
@@ -242,7 +242,6 @@ private:

    AString mComponentName;
    uint32_t mFlags;
    uint32_t mQuirks;
    sp<IOMX> mOMX;
    sp<IOMXNode> mOMXNode;
    int32_t mNodeGeneration;
+22 −51
Original line number Diff line number Diff line
@@ -50,7 +50,6 @@ enum {
    STORE_META_DATA_IN_BUFFERS,
    PREPARE_FOR_ADAPTIVE_PLAYBACK,
    ALLOC_SECURE_BUFFER,
    ALLOC_BUFFER_WITH_BACKUP,
    FREE_BUFFER,
    FILL_BUFFER,
    EMPTY_BUFFER,
@@ -62,6 +61,7 @@ enum {
    CONFIGURE_VIDEO_TUNNEL_MODE,
    UPDATE_NATIVE_HANDLE_IN_META,
    DISPATCH_MESSAGE,
    SET_QUIRKS,
};

class BpOMX : public BpInterface<IOMX> {
@@ -478,28 +478,6 @@ public:
        return err;
    }

    virtual status_t allocateBufferWithBackup(
            OMX_U32 port_index, const sp<IMemory> &params,
            buffer_id *buffer, OMX_U32 allottedSize) {
        Parcel data, reply;
        data.writeInterfaceToken(IOMXNode::getInterfaceDescriptor());
        data.writeInt32(port_index);
        data.writeStrongBinder(IInterface::asBinder(params));
        data.writeInt32(allottedSize);
        remote()->transact(ALLOC_BUFFER_WITH_BACKUP, data, &reply);

        status_t err = reply.readInt32();
        if (err != OK) {
            *buffer = 0;

            return err;
        }

        *buffer = (buffer_id)reply.readInt32();

        return err;
    }

    virtual status_t freeBuffer(
            OMX_U32 port_index, buffer_id buffer) {
        Parcel data, reply;
@@ -597,6 +575,16 @@ public:

        return reply.readInt32();
    }

    virtual status_t setQuirks(OMX_U32 quirks) {
        Parcel data, reply;
        data.writeInterfaceToken(IOMXNode::getInterfaceDescriptor());
        data.writeInt32(quirks);

        remote()->transact(SET_QUIRKS, data, &reply);

        return reply.readInt32();
    }
};

IMPLEMENT_META_INTERFACE(OMX, "android.hardware.IOMX");
@@ -1050,34 +1038,6 @@ status_t BnOMXNode::onTransact(
            return NO_ERROR;
        }

        case ALLOC_BUFFER_WITH_BACKUP:
        {
            CHECK_OMX_INTERFACE(IOMXNode, data, reply);

            OMX_U32 port_index = data.readInt32();
            sp<IMemory> params =
                interface_cast<IMemory>(data.readStrongBinder());
            OMX_U32 allottedSize = data.readInt32();

            if (params == NULL) {
                ALOGE("b/26392700");
                reply->writeInt32(INVALID_OPERATION);
                return NO_ERROR;
            }

            buffer_id buffer;
            status_t err = allocateBufferWithBackup(
                    port_index, params, &buffer, allottedSize);

            reply->writeInt32(err);

            if (err == OK) {
                reply->writeInt32((int32_t)buffer);
            }

            return NO_ERROR;
        }

        case FREE_BUFFER:
        {
            CHECK_OMX_INTERFACE(IOMXNode, data, reply);
@@ -1178,6 +1138,17 @@ status_t BnOMXNode::onTransact(
            return NO_ERROR;
        }

        case SET_QUIRKS:
        {
            CHECK_OMX_INTERFACE(IOMXNode, data, reply);

            OMX_U32 quirks = data.readInt32();

            reply->writeInt32(setQuirks(quirks));

            return NO_ERROR;
        }

        default:
            return BBinder::onTransact(code, data, reply, flags);
    }
+3 −12
Original line number Diff line number Diff line
@@ -510,7 +510,6 @@ void ACodec::BufferInfo::checkReadFence(const char *dbg) {

ACodec::ACodec()
    : mSampleRate(0),
      mQuirks(0),
      mNodeGeneration(0),
      mUsingNativeWindow(false),
      mNativeWindowUsageBits(0),
@@ -881,11 +880,6 @@ status_t ACodec::allocateBuffersOnPort(OMX_U32 portIndex) {
                info.mRenderInfo = NULL;
                info.mNativeHandle = NULL;

                uint32_t requiresAllocateBufferBit =
                    (portIndex == kPortIndexInput)
                        ? kRequiresAllocateBufferOnInputPorts
                        : kRequiresAllocateBufferOnOutputPorts;

                if (portIndex == kPortIndexInput && (mFlags & kFlagIsSecure)) {
                    mem.clear();

@@ -909,11 +903,9 @@ status_t ACodec::allocateBuffersOnPort(OMX_U32 portIndex) {
                            new ABuffer(ptr != NULL ? ptr : (void *)native_handle_ptr, bufSize));
                    info.mNativeHandle = native_handle;
                    info.mCodecData = info.mData;
                } else if (mQuirks & requiresAllocateBufferBit) {
                    err = mOMXNode->allocateBufferWithBackup(
                            portIndex, mem, &info.mBufferID, allottedSize);
                } else {
                    err = mOMXNode->useBuffer(portIndex, mem, &info.mBufferID, allottedSize);
                    err = mOMXNode->useBuffer(
                            portIndex, mem, &info.mBufferID, allottedSize);
                }

                if (mem != NULL) {
@@ -6233,7 +6225,6 @@ void ACodec::UninitializedState::stateEntered() {
    mCodec->mNativeWindowUsageBits = 0;
    mCodec->mOMX.clear();
    mCodec->mOMXNode.clear();
    mCodec->mQuirks = 0;
    mCodec->mFlags = 0;
    mCodec->mInputMetadataType = kMetadataBufferTypeInvalid;
    mCodec->mOutputMetadataType = kMetadataBufferTypeInvalid;
@@ -6407,7 +6398,7 @@ bool ACodec::UninitializedState::onAllocateComponent(const sp<AMessage> &msg) {
        mCodec->mFlags |= kFlagPushBlankBuffersToNativeWindowOnShutdown;
    }

    mCodec->mQuirks = quirks;
    omxNode->setQuirks(quirks);
    mCodec->mOMX = omx;
    mCodec->mOMXNode = omxNode;

+4 −5
Original line number Diff line number Diff line
@@ -101,10 +101,6 @@ struct OMXNodeInstance : public BnOMXNode {
            OMX_U32 portIndex, size_t size, OMX::buffer_id *buffer,
            void **buffer_data, sp<NativeHandle> *native_handle);

    status_t allocateBufferWithBackup(
            OMX_U32 portIndex, const sp<IMemory> &params,
            OMX::buffer_id *buffer, OMX_U32 allottedSize);

    status_t freeBuffer(OMX_U32 portIndex, OMX::buffer_id buffer);

    status_t fillBuffer(OMX::buffer_id buffer, int fenceFd);
@@ -122,6 +118,8 @@ struct OMXNodeInstance : public BnOMXNode {
    status_t getExtensionIndex(
            const char *parameterName, OMX_INDEXTYPE *index);

    status_t setQuirks(OMX_U32 quirks);

    bool isSecure() const {
        return mIsSecure;
    }
@@ -150,6 +148,7 @@ private:
    bool mQueriedProhibitedExtensions;
    SortedVector<OMX_INDEXTYPE> mProhibitedExtensions;
    bool mIsSecure;
    uint32_t mQuirks;

    // Lock only covers mOMXBufferSource and mOMXOutputListener.  We can't always
    // use mLock because of rare instances where we'd end up locking it recursively.
@@ -251,7 +250,7 @@ private:
    // buffer.)
    status_t updateGraphicBufferInMeta_l(
            OMX_U32 portIndex, const sp<GraphicBuffer> &graphicBuffer,
            OMX::buffer_id buffer, OMX_BUFFERHEADERTYPE *header, bool updateCodecBuffer);
            OMX::buffer_id buffer, OMX_BUFFERHEADERTYPE *header);

    status_t createGraphicBufferSource(
            OMX_U32 portIndex, android_dataspace dataSpace,
Loading