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

Commit affb904d authored by Xiao Huang's avatar Xiao Huang Committed by Automerger Merge Worker
Browse files

Merge "Replace Vector by std::vector in ACodec" am: 037845be am: ad302bc6...

Merge "Replace Vector by std::vector in ACodec" am: 037845be am: ad302bc6 am: 8277c616 am: 588c6c32 am: 3d65f441

Original change: https://android-review.googlesource.com/c/platform/frameworks/av/+/2211456



Change-Id: I92b0f2a3200338bc75637e81fe0e20febad7d5a0
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents dde073d2 3d65f441
Loading
Loading
Loading
Loading
+26 −25
Original line number Diff line number Diff line
@@ -785,7 +785,7 @@ status_t ACodec::handleSetSurface(const sp<Surface> &surface) {

    // we cannot change the number of output buffers while OMX is running
    // set up surface to the same count
    Vector<BufferInfo> &buffers = mBuffers[kPortIndexOutput];
    std::vector<BufferInfo> &buffers = mBuffers[kPortIndexOutput];
    ALOGV("setting up surface for %zu buffers", buffers.size());

    err = native_window_set_buffer_count(nativeWindow, buffers.size());
@@ -825,7 +825,7 @@ status_t ACodec::handleSetSurface(const sp<Surface> &surface) {
    // cancel undequeued buffers to new surface
    if (!storingMetadataInDecodedBuffers()) {
        for (size_t i = 0; i < buffers.size(); ++i) {
            BufferInfo &info = buffers.editItemAt(i);
            BufferInfo &info = buffers[i];
            if (info.mStatus == BufferInfo::OWNED_BY_NATIVE_WINDOW) {
                ALOGV("canceling buffer %p", info.mGraphicBuffer->getNativeBuffer());
                err = nativeWindow->cancelBuffer(
@@ -872,7 +872,7 @@ status_t ACodec::allocateBuffersOnPort(OMX_U32 portIndex) {
    CHECK(portIndex == kPortIndexInput || portIndex == kPortIndexOutput);

    CHECK(mAllocator[portIndex] == NULL);
    CHECK(mBuffers[portIndex].isEmpty());
    CHECK(mBuffers[portIndex].empty());

    status_t err;
    if (mNativeWindow != NULL && portIndex == kPortIndexOutput) {
@@ -951,6 +951,7 @@ status_t ACodec::allocateBuffersOnPort(OMX_U32 portIndex) {

            const sp<AMessage> &format =
                    portIndex == kPortIndexInput ? mInputFormat : mOutputFormat;
            mBuffers[portIndex].reserve(def.nBufferCountActual);
            for (OMX_U32 i = 0; i < def.nBufferCountActual && err == OK; ++i) {
                hidl_memory hidlMemToken;
                sp<TMemory> hidlMem;
@@ -1039,7 +1040,7 @@ status_t ACodec::allocateBuffersOnPort(OMX_U32 portIndex) {
                    }
                }

                mBuffers[portIndex].push(info);
                mBuffers[portIndex].push_back(info);
            }
        }
    }
@@ -1250,6 +1251,7 @@ status_t ACodec::allocateOutputBuffersFromNativeWindow() {
         mComponentName.c_str(), bufferCount, bufferSize);

    // Dequeue buffers and send them to OMX
    mBuffers[kPortIndexOutput].reserve(bufferCount);
    for (OMX_U32 i = 0; i < bufferCount; i++) {
        ANativeWindowBuffer *buf;
        int fenceFd;
@@ -1275,7 +1277,7 @@ status_t ACodec::allocateOutputBuffersFromNativeWindow() {
        info.mData = new MediaCodecBuffer(mOutputFormat, new ABuffer(bufferSize));
        info.mCodecData = info.mData;

        mBuffers[kPortIndexOutput].push(info);
        mBuffers[kPortIndexOutput].push_back(info);

        IOMX::buffer_id bufferId;
        err = mOMXNode->useBuffer(kPortIndexOutput, graphicBuffer, &bufferId);
@@ -1285,7 +1287,7 @@ status_t ACodec::allocateOutputBuffersFromNativeWindow() {
            break;
        }

        mBuffers[kPortIndexOutput].editItemAt(i).mBufferID = bufferId;
        mBuffers[kPortIndexOutput][i].mBufferID = bufferId;

        ALOGV("[%s] Registered graphic buffer with ID %u (pointer = %p)",
             mComponentName.c_str(),
@@ -1307,7 +1309,7 @@ status_t ACodec::allocateOutputBuffersFromNativeWindow() {
    }

    for (OMX_U32 i = cancelStart; i < cancelEnd; i++) {
        BufferInfo *info = &mBuffers[kPortIndexOutput].editItemAt(i);
        BufferInfo *info = &mBuffers[kPortIndexOutput][i];
        if (info->mStatus == BufferInfo::OWNED_BY_US) {
            status_t error = cancelBufferToNativeWindow(info);
            if (err == 0) {
@@ -1336,6 +1338,7 @@ status_t ACodec::allocateOutputMetadataBuffers() {
    ALOGV("[%s] Allocating %u meta buffers on output port",
         mComponentName.c_str(), bufferCount);

    mBuffers[kPortIndexOutput].reserve(bufferCount);
    for (OMX_U32 i = 0; i < bufferCount; i++) {
        BufferInfo info;
        info.mStatus = BufferInfo::OWNED_BY_NATIVE_WINDOW;
@@ -1353,7 +1356,7 @@ status_t ACodec::allocateOutputMetadataBuffers() {
        info.mCodecData = info.mData;

        err = mOMXNode->useBuffer(kPortIndexOutput, OMXBuffer::sPreset, &info.mBufferID);
        mBuffers[kPortIndexOutput].push(info);
        mBuffers[kPortIndexOutput].push_back(info);

        ALOGV("[%s] allocated meta buffer with ID %u",
                mComponentName.c_str(), info.mBufferID);
@@ -1462,7 +1465,7 @@ void ACodec::notifyOfRenderedFrames(bool dropIncomplete, FrameRenderTracker::Inf
            it != done.cend(); ++it) {
        ssize_t index = it->getIndex();
        if (index >= 0 && (size_t)index < mBuffers[kPortIndexOutput].size()) {
            mBuffers[kPortIndexOutput].editItemAt(index).mRenderInfo = NULL;
            mBuffers[kPortIndexOutput][index].mRenderInfo = NULL;
        } else if (index >= 0) {
            // THIS SHOULD NEVER HAPPEN
            ALOGE("invalid index %zd in %zu", index, mBuffers[kPortIndexOutput].size());
@@ -1502,7 +1505,7 @@ ACodec::BufferInfo *ACodec::dequeueBufferFromNativeWindow() {
        bool stale = false;
        for (size_t i = mBuffers[kPortIndexOutput].size(); i > 0;) {
            i--;
            BufferInfo *info = &mBuffers[kPortIndexOutput].editItemAt(i);
            BufferInfo *info = &mBuffers[kPortIndexOutput][i];

            if (info->mGraphicBuffer != NULL &&
                    info->mGraphicBuffer->handle == buf->handle) {
@@ -1550,8 +1553,7 @@ ACodec::BufferInfo *ACodec::dequeueBufferFromNativeWindow() {
    BufferInfo *oldest = NULL;
    for (size_t i = mBuffers[kPortIndexOutput].size(); i > 0;) {
        i--;
        BufferInfo *info =
            &mBuffers[kPortIndexOutput].editItemAt(i);
        BufferInfo *info = &mBuffers[kPortIndexOutput][i];
        if (info->mStatus == BufferInfo::OWNED_BY_NATIVE_WINDOW &&
            (oldest == NULL ||
             // avoid potential issues from counter rolling over
@@ -1608,8 +1610,7 @@ status_t ACodec::freeOutputBuffersNotOwnedByComponent() {
    status_t err = OK;
    for (size_t i = mBuffers[kPortIndexOutput].size(); i > 0;) {
        i--;
        BufferInfo *info =
            &mBuffers[kPortIndexOutput].editItemAt(i);
        BufferInfo *info = &mBuffers[kPortIndexOutput][i];

        // At this time some buffers may still be with the component
        // or being drained.
@@ -1626,7 +1627,7 @@ status_t ACodec::freeOutputBuffersNotOwnedByComponent() {
}

status_t ACodec::freeBuffer(OMX_U32 portIndex, size_t i) {
    BufferInfo *info = &mBuffers[portIndex].editItemAt(i);
    BufferInfo *info = &mBuffers[portIndex][i];
    status_t err = OK;

    // there should not be any fences in the metadata
@@ -1666,14 +1667,14 @@ status_t ACodec::freeBuffer(OMX_U32 portIndex, size_t i) {
    }

    // remove buffer even if mOMXNode->freeBuffer fails
    mBuffers[portIndex].removeAt(i);
    mBuffers[portIndex].erase(mBuffers[portIndex].begin() + i);
    return err;
}

ACodec::BufferInfo *ACodec::findBufferByID(
        uint32_t portIndex, IOMX::buffer_id bufferID, ssize_t *index) {
    for (size_t i = 0; i < mBuffers[portIndex].size(); ++i) {
        BufferInfo *info = &mBuffers[portIndex].editItemAt(i);
        BufferInfo *info = &mBuffers[portIndex][i];

        if (info->mBufferID == bufferID) {
            if (index != NULL) {
@@ -5102,7 +5103,7 @@ size_t ACodec::countBuffersOwnedByComponent(OMX_U32 portIndex) const {
    size_t n = 0;

    for (size_t i = 0; i < mBuffers[portIndex].size(); ++i) {
        const BufferInfo &info = mBuffers[portIndex].itemAt(i);
        const BufferInfo &info = mBuffers[portIndex][i];

        if (info.mStatus == BufferInfo::OWNED_BY_COMPONENT) {
            ++n;
@@ -5116,7 +5117,7 @@ size_t ACodec::countBuffersOwnedByNativeWindow() const {
    size_t n = 0;

    for (size_t i = 0; i < mBuffers[kPortIndexOutput].size(); ++i) {
        const BufferInfo &info = mBuffers[kPortIndexOutput].itemAt(i);
        const BufferInfo &info = mBuffers[kPortIndexOutput][i];

        if (info.mStatus == BufferInfo::OWNED_BY_NATIVE_WINDOW) {
            ++n;
@@ -5143,7 +5144,7 @@ void ACodec::waitUntilAllPossibleNativeWindowBuffersAreReturnedToUs() {
bool ACodec::allYourBuffersAreBelongToUs(
        OMX_U32 portIndex) {
    for (size_t i = 0; i < mBuffers[portIndex].size(); ++i) {
        BufferInfo *info = &mBuffers[portIndex].editItemAt(i);
        BufferInfo *info = &mBuffers[portIndex][i];

        if (info->mStatus != BufferInfo::OWNED_BY_US
                && info->mStatus != BufferInfo::OWNED_BY_NATIVE_WINDOW) {
@@ -6482,7 +6483,7 @@ void ACodec::BaseState::getMoreInputDataIfPossible() {
    BufferInfo *eligible = NULL;

    for (size_t i = 0; i < mCodec->mBuffers[kPortIndexInput].size(); ++i) {
        BufferInfo *info = &mCodec->mBuffers[kPortIndexInput].editItemAt(i);
        BufferInfo *info = &mCodec->mBuffers[kPortIndexInput][i];

#if 0
        if (info->mStatus == BufferInfo::OWNED_BY_UPSTREAM) {
@@ -7514,7 +7515,7 @@ void ACodec::ExecutingState::submitOutputMetaBuffers() {
    // submit as many buffers as there are input buffers with the codec
    // in case we are in port reconfiguring
    for (size_t i = 0; i < mCodec->mBuffers[kPortIndexInput].size(); ++i) {
        BufferInfo *info = &mCodec->mBuffers[kPortIndexInput].editItemAt(i);
        BufferInfo *info = &mCodec->mBuffers[kPortIndexInput][i];

        if (info->mStatus == BufferInfo::OWNED_BY_COMPONENT) {
            if (mCodec->submitOutputMetadataBuffer() != OK)
@@ -7532,7 +7533,7 @@ void ACodec::ExecutingState::submitOutputMetaBuffers() {
void ACodec::ExecutingState::submitRegularOutputBuffers() {
    bool failed = false;
    for (size_t i = 0; i < mCodec->mBuffers[kPortIndexOutput].size(); ++i) {
        BufferInfo *info = &mCodec->mBuffers[kPortIndexOutput].editItemAt(i);
        BufferInfo *info = &mCodec->mBuffers[kPortIndexOutput][i];

        if (mCodec->mNativeWindow != NULL) {
            if (info->mStatus != BufferInfo::OWNED_BY_US
@@ -7589,7 +7590,7 @@ void ACodec::ExecutingState::resume() {
    }

    for (size_t i = 0; i < mCodec->mBuffers[kPortIndexInput].size(); i++) {
        BufferInfo *info = &mCodec->mBuffers[kPortIndexInput].editItemAt(i);
        BufferInfo *info = &mCodec->mBuffers[kPortIndexInput][i];
        if (info->mStatus == BufferInfo::OWNED_BY_US) {
            postFillThisBuffer(info);
        }
@@ -8593,7 +8594,7 @@ bool ACodec::OutputPortSettingsChangedState::onOMXEvent(
                ALOGV("[%s] Output port now disabled.", mCodec->mComponentName.c_str());

                status_t err = OK;
                if (!mCodec->mBuffers[kPortIndexOutput].isEmpty()) {
                if (!mCodec->mBuffers[kPortIndexOutput].empty()) {
                    ALOGE("disabled port should be empty, but has %zu buffers",
                            mCodec->mBuffers[kPortIndexOutput].size());
                    err = FAILED_TRANSACTION;
+2 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@

#include <stdint.h>
#include <list>
#include <vector>
#include <android/native_window.h>
#include <media/hardware/MetadataBufferType.h>
#include <media/MediaCodecInfo.h>
@@ -266,7 +267,7 @@ private:
    sp<AMessage> mBaseOutputFormat;

    FrameRenderTracker mRenderTracker; // render information for buffers rendered by ACodec
    Vector<BufferInfo> mBuffers[2];
    std::vector<BufferInfo> mBuffers[2];
    bool mPortEOS[2];
    status_t mInputEOSResult;