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

Commit 2d295a96 authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change Iedebfe8d into eclair-mr2

* changes:
  Some decoders will return an error on OMX_EmptyThisBuffer to indicate that they don't support the media format, deal with this.
parents c33623a0 3f42707c
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -84,9 +84,9 @@ public:
    virtual status_t observe_node(
            node_id node, const sp<IOMXObserver> &observer) = 0;

    virtual void fill_buffer(node_id node, buffer_id buffer) = 0;
    virtual status_t fill_buffer(node_id node, buffer_id buffer) = 0;

    virtual void empty_buffer(
    virtual status_t empty_buffer(
            node_id node,
            buffer_id buffer,
            OMX_U32 range_offset, OMX_U32 range_length,
+13 −8
Original line number Diff line number Diff line
@@ -289,15 +289,17 @@ public:
        return reply.readInt32();
    }

    virtual void fill_buffer(node_id node, buffer_id buffer) {
    virtual status_t fill_buffer(node_id node, buffer_id buffer) {
        Parcel data, reply;
        data.writeInterfaceToken(IOMX::getInterfaceDescriptor());
        data.writeIntPtr((intptr_t)node);
        data.writeIntPtr((intptr_t)buffer);
        remote()->transact(FILL_BUFFER, data, &reply, IBinder::FLAG_ONEWAY);
        remote()->transact(FILL_BUFFER, data, &reply);

        return reply.readInt32();
    }

    virtual void empty_buffer(
    virtual status_t empty_buffer(
            node_id node,
            buffer_id buffer,
            OMX_U32 range_offset, OMX_U32 range_length,
@@ -310,7 +312,9 @@ public:
        data.writeInt32(range_length);
        data.writeInt32(flags);
        data.writeInt64(timestamp);
        remote()->transact(EMPTY_BUFFER, data, &reply, IBinder::FLAG_ONEWAY);
        remote()->transact(EMPTY_BUFFER, data, &reply);

        return reply.readInt32();
    }

    virtual status_t get_extension_index(
@@ -601,7 +605,7 @@ status_t BnOMX::onTransact(

            node_id node = (void*)data.readIntPtr();
            buffer_id buffer = (void*)data.readIntPtr();
            fill_buffer(node, buffer);
            reply->writeInt32(fill_buffer(node, buffer));

            return NO_ERROR;
        }
@@ -617,9 +621,10 @@ status_t BnOMX::onTransact(
            OMX_U32 flags = data.readInt32();
            OMX_TICKS timestamp = data.readInt64();

            reply->writeInt32(
                    empty_buffer(
                        node, buffer, range_offset, range_length,
                    flags, timestamp);
                        flags, timestamp));

            return NO_ERROR;
        }
+15 −8
Original line number Diff line number Diff line
@@ -1412,10 +1412,11 @@ void OMXCodec::drainInputBuffer(BufferInfo *info) {
            memcpy(info->mMem->pointer(), specific->mData, specific->mSize);
        }

        mOMX->empty_buffer(
        status_t err = mOMX->empty_buffer(
                mNode, info->mBuffer, 0, size,
                OMX_BUFFERFLAG_ENDOFFRAME | OMX_BUFFERFLAG_CODECCONFIG,
                0);
        CHECK_EQ(err, OK);

        info->mOwnedByComponent = true;

@@ -1468,16 +1469,21 @@ void OMXCodec::drainInputBuffer(BufferInfo *info) {
        }
    }

    mOMX->empty_buffer(
            mNode, info->mBuffer, 0, srcLength,
            flags, timestamp);

    info->mOwnedByComponent = true;

    if (srcBuffer != NULL) {
        srcBuffer->release();
        srcBuffer = NULL;
    }

    err = mOMX->empty_buffer(
            mNode, info->mBuffer, 0, srcLength,
            flags, timestamp);

    if (err != OK) {
        setState(ERROR);
        return;
    }

    info->mOwnedByComponent = true;
}

void OMXCodec::fillOutputBuffer(BufferInfo *info) {
@@ -1490,7 +1496,8 @@ void OMXCodec::fillOutputBuffer(BufferInfo *info) {
    }

    CODEC_LOGV("Calling fill_buffer on buffer %p", info->mBuffer);
    mOMX->fill_buffer(mNode, info->mBuffer);
    status_t err = mOMX->fill_buffer(mNode, info->mBuffer);
    CHECK_EQ(err, OK);

    info->mOwnedByComponent = true;
}
+6 −4
Original line number Diff line number Diff line
@@ -529,7 +529,7 @@ status_t OMX::observe_node(
    return OK;
}

void OMX::fill_buffer(node_id node, buffer_id buffer) {
status_t OMX::fill_buffer(node_id node, buffer_id buffer) {
    OMX_BUFFERHEADERTYPE *header = (OMX_BUFFERHEADERTYPE *)buffer;
    header->nFilledLen = 0;
    header->nOffset = 0;
@@ -539,10 +539,11 @@ void OMX::fill_buffer(node_id node, buffer_id buffer) {

    OMX_ERRORTYPE err =
        OMX_FillThisBuffer(node_meta->handle(), header);
    CHECK_EQ(err, OMX_ErrorNone);

    return (err == OMX_ErrorNone) ? OK : UNKNOWN_ERROR;
}

void OMX::empty_buffer(
status_t OMX::empty_buffer(
        node_id node,
        buffer_id buffer,
        OMX_U32 range_offset, OMX_U32 range_length,
@@ -561,7 +562,8 @@ void OMX::empty_buffer(

    OMX_ERRORTYPE err =
        OMX_EmptyThisBuffer(node_meta->handle(), header);
    CHECK_EQ(err, OMX_ErrorNone);

    return (err == OMX_ErrorNone) ? OK : UNKNOWN_ERROR;
}

status_t OMX::get_extension_index(
+2 −2
Original line number Diff line number Diff line
@@ -70,9 +70,9 @@ public:
    virtual status_t observe_node(
            node_id node, const sp<IOMXObserver> &observer);

    virtual void fill_buffer(node_id node, buffer_id buffer);
    virtual status_t fill_buffer(node_id node, buffer_id buffer);

    virtual void empty_buffer(
    virtual status_t empty_buffer(
            node_id node,
            buffer_id buffer,
            OMX_U32 range_offset, OMX_U32 range_length,