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

Commit 740a259a authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 12304452 from d1f8c488 to 24Q4-release

Change-Id: Ifde61641c3e0cd23a96ae1e518651553f5d10aeb
parents 097ad655 d1f8c488
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -133,3 +133,10 @@ flag {
  description: "Feature flag to track teamfood population"
  bug: "328770262"
}

flag {
  name: "thumbnail_block_model"
  namespace: "codec_fwk"
  description: "Feature flag for using block model decoder in thumbnail generation"
  bug: "329521645"
}
+1 −0
Original line number Diff line number Diff line
@@ -96,6 +96,7 @@ private:
    uint64_t mBqId;
    int32_t mMaxDequeueBufferCount;
    std::shared_ptr<int> mOwner;
    std::shared_ptr<int> mConsumerAttachCount;
    // To migrate existing buffers
    sp<GraphicBuffer> mBuffers[BufferQueueDefs::NUM_BUFFER_SLOTS]; // find a better way
    std::weak_ptr<_C2BlockPoolData> mPoolDatas[BufferQueueDefs::NUM_BUFFER_SLOTS];
+33 −3
Original line number Diff line number Diff line
@@ -261,6 +261,7 @@ bool OutputBufferQueue::configure(const sp<IGraphicBufferProducer>& igbp,
        mGeneration = generation;
        mBqId = bqId;
        mOwner = std::make_shared<int>(0);
        mConsumerAttachCount = std::make_shared<int>(0);
        mMaxDequeueBufferCount = maxDequeueBufferCount;
        if (igbp == nullptr) {
            return false;
@@ -522,6 +523,7 @@ void OutputBufferQueue::onBufferReleased(uint32_t generation) {
    std::shared_ptr<C2SurfaceSyncMemory> syncMem;
    sp<IGraphicBufferProducer> outputIgbp;
    uint32_t outputGeneration = 0;
    std::shared_ptr<int> consumerAttachCount;
    {
        std::unique_lock<std::mutex> l(mMutex);
        if (mStopped) {
@@ -529,6 +531,7 @@ void OutputBufferQueue::onBufferReleased(uint32_t generation) {
        }
        outputIgbp = mIgbp;
        outputGeneration = mGeneration;
        consumerAttachCount = mConsumerAttachCount;
        syncMem = mSyncMem;
    }

@@ -536,15 +539,42 @@ void OutputBufferQueue::onBufferReleased(uint32_t generation) {
        auto syncVar = syncMem ? syncMem->mem() : nullptr;
        if (syncVar) {
            syncVar->lock();
            if (consumerAttachCount && *consumerAttachCount > 0) {
                (*consumerAttachCount)--;
            } else {
                syncVar->notifyQueuedLocked();
            }
            syncVar->unlock();
        }
    }
}

void OutputBufferQueue::onBufferAttached(uint32_t generation) {
    // TODO
    (void) generation;
    std::shared_ptr<C2SurfaceSyncMemory> syncMem;
    sp<IGraphicBufferProducer> outputIgbp;
    uint32_t outputGeneration = 0;
    std::shared_ptr<int> consumerAttachCount;
    {
        std::unique_lock<std::mutex> l(mMutex);
        if (mStopped) {
            return;
        }
        outputIgbp = mIgbp;
        outputGeneration = mGeneration;
        consumerAttachCount = mConsumerAttachCount;
        syncMem = mSyncMem;
    }

    if (outputIgbp && generation == outputGeneration) {
        auto syncVar = syncMem ? syncMem->mem() : nullptr;
        if (syncVar) {
            syncVar->lock();
            if (consumerAttachCount) {
                (*consumerAttachCount)++;
            }
            syncVar->unlock();
        }
    }
}

void OutputBufferQueue::pollForRenderedFrames(FrameEventHistoryDelta* delta) {
+3 −2
Original line number Diff line number Diff line
@@ -1896,7 +1896,8 @@ ReflectedParamUpdater::Dict CCodecConfig::getReflectedFormat(
                std::vector<C2QpOffsetRectStruct> c2QpOffsetRects;
                char mutableStrQpOffsetRects[strlen(qpOffsetRects.c_str()) + 1];
                strcpy(mutableStrQpOffsetRects, qpOffsetRects.c_str());
                char* box = strtok(mutableStrQpOffsetRects, ";");
                char* savePtr;
                char* box = strtok_r(mutableStrQpOffsetRects, ";", &savePtr);
                while (box != nullptr) {
                    int top, left, bottom, right, offset;
                    if (sscanf(box, "%d,%d-%d,%d=%d", &top, &left, &bottom, &right, &offset) == 5) {
@@ -1914,7 +1915,7 @@ ReflectedParamUpdater::Dict CCodecConfig::getReflectedFormat(
                    } else {
                        ALOGE("Rects configuration %s doesn't follow the string pattern.", box);
                    }
                    box = strtok(nullptr, ";");
                    box = strtok_r(nullptr, ";", &savePtr);
                }
                if (c2QpOffsetRects.size() != 0) {
                    const std::unique_ptr<C2StreamQpOffsetRects::output> regions =
+1 −2
Original line number Diff line number Diff line
@@ -1311,8 +1311,7 @@ public:
                for (size_t planeIx = 0; planeIx < mLayout.numPlanes; ++planeIx) {
                    const uint32_t colSampling = mLayout.planes[planeIx].colSampling;
                    const uint32_t rowSampling = mLayout.planes[planeIx].rowSampling;
                    if (crop.left % colSampling || crop.right() % colSampling
                            || crop.top % rowSampling || crop.bottom() % rowSampling) {
                    if (crop.left % colSampling || crop.top % rowSampling) {
                        // cannot calculate data pointer
                        mImpl->getAllocation()->unmap(mData, crop, nullptr);
                        memset(&mLayout, 0, sizeof(mLayout));
Loading