From 7db50a852617dd4d8aa48aff52168ceb7222f281 Mon Sep 17 00:00:00 2001 From: weixin_44700052 Date: Tue, 16 Sep 2025 22:24:20 +0800 Subject: [PATCH 1/7] =?UTF-8?q?update:=20=E6=9B=B4=E6=96=B0=E6=96=87?= =?UTF-8?q?=E4=BB=B6=20metadata=5Fgenerator=5Fvideo=5Fimpl.cpp=20=E3=80=90?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=B4=E6=98=8E=E3=80=91=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E7=94=9F=E6=88=90Buffer=E8=BD=AE?= =?UTF-8?q?=E8=BD=AC=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: weixin_44700052 --- .../metadata_generator_video_impl.cpp | 134 +++++++++--------- 1 file changed, 64 insertions(+), 70 deletions(-) diff --git a/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp b/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp index eccc634..60c60cc 100644 --- a/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp +++ b/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp @@ -122,9 +122,6 @@ int32_t MetadataGeneratorVideoImpl::AttachToNewSurface(sptr newSurface) int32_t MetadataGeneratorVideoImpl::GetReleaseOutBuffer() { std::lock_guard mapLock(renderQueMutex_); - for (RenderBufferAvilMapType::iterator it = renderBufferMapBak_.begin(); it != renderBufferMapBak_.end(); ++it) { - outputBufferAvilQue_.push(it->second); - } renderBufferMapBak_.clear(); return VPE_ALGO_ERR_OK; } @@ -145,6 +142,7 @@ int32_t MetadataGeneratorVideoImpl::SetOutputSurfaceConfig(sptr surface int32_t MetadataGeneratorVideoImpl::SetOutputSurfaceRunning(sptr newSurface) { + std::lock_guard outputLock(outputQueMutex_); std::lock_guard lockSurface(surfaceChangeMutex_); std::lock_guard lockSurface2(surfaceChangeMutex2_); uint64_t oldId = outputSurface_->GetUniqueId(); @@ -164,6 +162,7 @@ int32_t MetadataGeneratorVideoImpl::SetOutputSurfaceRunning(sptr newSur newSurface->SetQueueSize(outBufferCnt_); newSurface->Connect(); newSurface->CleanCache(); + newSurface->SetDefaultUsage(outputSurface_->GetDefaultUsage()); GetReleaseOutBuffer(); int32_t ret = AttachToNewSurface(newSurface); if (ret != VPE_ALGO_ERR_OK) { @@ -221,8 +220,6 @@ sptr MetadataGeneratorVideoImpl::CreateInputSurface() sptr producer = inputSurface_->GetProducer(); sptr producerSurface = Surface::CreateSurfaceAsProducer(producer); CHECK_AND_RETURN_RET_LOG(producerSurface != nullptr, nullptr, "CreateSurfaceAsProducer fail"); - producerSurface->SetDefaultUsage(BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_HW_RENDER | - BUFFER_USAGE_MEM_DMA); inputSurface_->SetQueueSize(inBufferCnt_); state_ = VPEAlgoState::CONFIGURING; @@ -268,16 +265,7 @@ void MetadataGeneratorVideoImpl::InitBuffers() flushCfg_.damage.y = 0; flushCfg_.damage.w = requestCfg_.width; flushCfg_.damage.h = requestCfg_.height; - for (uint32_t i = 0; i < outBufferCnt_; ++i) { - std::shared_ptr buffer = std::make_shared(); - GSError err = outputSurface_->RequestBuffer(buffer->memory, buffer->fence, requestCfg_); - if (err != GSERROR_OK || buffer->memory == nullptr) { - VPE_LOGW("RequestBuffer %{public}u failed, GSError=%{public}d", i, err); - continue; - } - outputBufferAvilQue_.push(buffer); - outputBufferAvilQueBak_.insert(std::make_pair(buffer->memory->GetSeqNum(), buffer)); - } + outputSurface_->CleanCache(true); } int32_t MetadataGeneratorVideoImpl::Start() @@ -379,53 +367,55 @@ int32_t MetadataGeneratorVideoImpl::Flush() } std::lock_guard mapLock(renderQueMutex_); - for (auto &[id, buffer] : renderBufferAvilMap_) { - VPE_LOGD("Reclaim buffer %{public}" PRIu64, id); - outputBufferAvilQue_.push(buffer); - } renderBufferAvilMap_.clear(); state_ = VPEAlgoState::FLUSHED; return VPE_ALGO_ERR_OK; } -void MetadataGeneratorVideoImpl::Process(std::shared_ptr inputBuffer, - std::shared_ptr outputBuffer) +void MetadataGeneratorVideoImpl::CheckRequestCfg(sptr inputBuffer) +{ + if (requestCfg_.width != inputBuffer->GetWidth() || requestCfg_.height != inputBuffer->GetHeight() || + requestCfg_.format != inputBuffer->GetFormat() || requestCfg_.usage != inputBuffer->GetUsage()) { + requestCfg_.width != inputBuffer->GetWidth(); + requestCfg_.height != inputBuffer->GetHeight(); + requestCfg_.format != inputBuffer->GetFormat(); + requestCfg_.usage != inputBuffer->GetUsage(); + outputSurface_->CleanCache(true); + outputSurface_->SetDefaultUsage(requestCfg_.usage); + std::lock_guard lock(outputBufferAvilQue_); + outputBufferAvilQueBak_.clear(); + } +} + +void MetadataGeneratorVideoImpl::Process(std::shared_ptr inputBuffer) { VPETrace videoTrace("MetadataGeneratorVideoImpl::Process"); int32_t ret = VPE_ALGO_ERR_EXTENSION_PROCESS_FAILED; - outputBuffer->timestamp = inputBuffer->timestamp; sptr surfaceInputBuffer = inputBuffer->memory; - sptr surfaceOutputBuffer = outputBuffer->memory; - surfaceInputBuffer->InvalidateCache(); - bool copyRet = AlgorithmUtils::CopySurfaceBufferToSurfaceBuffer(surfaceInputBuffer, surfaceOutputBuffer); - if (!copyRet) { - requestCfg_.width = surfaceInputBuffer->GetWidth(); - requestCfg_.height = surfaceInputBuffer->GetHeight(); - requestCfg_.format = surfaceInputBuffer->GetFormat(); - surfaceOutputBuffer->EraseMetadataKey(ATTRKEY_COLORSPACE_INFO); - surfaceOutputBuffer->EraseMetadataKey(ATTRKEY_HDR_METADATA_TYPE); - if (surfaceOutputBuffer->Alloc(requestCfg_) == GSERROR_OK) { - copyRet = AlgorithmUtils::CopySurfaceBufferToSurfaceBuffer(surfaceInputBuffer, surfaceOutputBuffer); - } + CheckRequestCfg(surfaceInputBuffer); + std::unique_lock outputLock(outputQueMutex_); + auto it = outputBufferAvilQueBak_.find(surfaceInputBuffer->GetSeqNum()); + if (it == outputBufferAvilQueBak_.end()) { + ret = outputSurface_->AttachBufferToQueue(surfaceInputBuffer); + CHECK_AND_RETURN_LOG(ret == GSERROR_OK, "AttachBufferToQueue failed %{public}d", ret); + outputBufferAvilQue_.emplace(surfaceInputBuffer->GetSeqNum(), inputBuffer); } - if (copyRet) { + outputLock.unlock(); + { VPETrace cscTrace("MetadataGeneratorVideoImpl::csc_->Process"); - ret = csc_->Process(surfaceOutputBuffer); + ret = csc_->Process(surfaceInputBuffer); } if (ret != 0 && cb_) { cb_->OnError(ret); + inputSurface_->ReleaseBuffer(surfaceInputBuffer, -1); } - inputSurface_->ReleaseBuffer(surfaceInputBuffer, -1); if (!ret) { std::unique_lock lockOnBq(renderQueMutex_); - renderBufferAvilMap_.emplace(outputBuffer->memory->GetSeqNum(), outputBuffer); - } else { - std::lock_guard renderLock(renderQueMutex_); - outputBufferAvilQue_.push(outputBuffer); - } - - if (!ret && cb_) { - cb_->OnOutputBufferAvailable(surfaceOutputBuffer->GetSeqNum(), outputBuffer->bufferFlag); + renderBufferAvilMap_.emplace(surfaceInputBuffer->GetSeqNum(), inputBuffer); + lockOnBq.unlock(); + if (cb_) { + cb_->OnOutputBufferAvailable(surfaceInputBuffer->GetSeqNum(), inputBuffer->bufferFlag) + } } } @@ -444,35 +434,30 @@ bool MetadataGeneratorVideoImpl::WaitProcessing() InitBuffers(); initBuffer_.store(false); } - return ((inputBufferAvilQue_.size() > 0 && outputBufferAvilQue_.size() > 0) || !isRunning_.load()); + return ((inputBufferAvilQue_.size() > 0) || !isRunning_.load()); }); } return true; } -bool MetadataGeneratorVideoImpl::AcquireInputOutputBuffers(std::shared_ptr& inputBuffer, - std::shared_ptr& outputBuffer) +bool MetadataGeneratorVideoImpl::AcquireInputBuffers(std::shared_ptr& inputBuffer) { std::lock_guard lockOnBq(onBqMutex_); - std::lock_guard mapLock(renderQueMutex_); - if (inputBufferAvilQue_.size() == 0 || outputBufferAvilQue_.size() == 0) { + if (inputBufferAvilQue_.size() == 0) { if (state_ == VPEAlgoState::STOPPED) { cb_->OnState(static_cast(state_.load())); } return false; } inputBuffer = inputBufferAvilQue_.front(); - outputBuffer = outputBufferAvilQue_.front(); inputBufferAvilQue_.pop(); - outputBufferAvilQue_.pop(); - return inputBuffer && outputBuffer; + return inputBuffer != nullptr; } void MetadataGeneratorVideoImpl::DoTask() { std::shared_ptr inputBuffer = nullptr; - std::shared_ptr outputBuffer = nullptr; while (true) { std::lock_guard lockTask(mtxTaskDone_); if (!isRunning_.load()) { @@ -480,20 +465,27 @@ void MetadataGeneratorVideoImpl::DoTask() } isProcessing_.store(true); - if (!AcquireInputOutputBuffers(inputBuffer, outputBuffer)) { + if (!AcquireInputOutputBuffers(inputBuffer)) { break; } if (inputBuffer->bufferFlag == MDG_BUFFER_FLAG_EOS) { + std::unique_lock outputLock(outputQueMutex_); + auto it = outputBufferAvilQueBak_.find(inputBuffer->memory->GetSeqNum()); + if (it == outputBufferAvilQueBak_.end()) { + int32_t ret = outputSurface_->AttachBufferToQueue(inputBuffer->memory); + CHECK_AND_RETURN_LOG(ret == GSERROR_OK, "AttachBufferToQueue failed %{public}d", ret); + } + outputLock.unlock(); { std::unique_lock lockOnBq(renderQueMutex_); - renderBufferAvilMap_.emplace(outputBuffer->memory->GetSeqNum(), outputBuffer); + renderBufferAvilMap_.emplace(inputBuffer->memory->GetSeqNum(), inputBuffer); } if (cb_) { - cb_->OnOutputBufferAvailable(outputBuffer->memory->GetSeqNum(), MDG_BUFFER_FLAG_EOS); + cb_->OnOutputBufferAvailable(inputBuffer->memory->GetSeqNum(), MDG_BUFFER_FLAG_EOS); } break; } - Process(inputBuffer, outputBuffer); + Process(inputBuffer); } isProcessing_.store(false); cvTaskDone_.notify_all(); @@ -539,8 +531,7 @@ int32_t MetadataGeneratorVideoImpl::ReleaseOutputBuffer(uint32_t index, bool ren std::lock_guard renderLock(renderQueMutex_); renderBufferMapBak_.emplace(buffer->memory->GetSeqNum(), buffer); } else { - std::lock_guard renderLock(renderQueMutex_); - outputBufferAvilQue_.push(buffer); + inputSurface_->ReleaseBuffer(buffer->memory, -1); } return VPE_ALGO_ERR_OK; } @@ -580,15 +571,16 @@ GSError MetadataGeneratorVideoImpl::OnProducerBufferReleased() lockSurface.unlock(); outputBufferAvilQue_.push(buf); auto bufSeqNum = buf->memory->GetSeqNum(); - lastSurfaceSequence_ = bufSeqNum; - renderBufferMapBak_.erase(bufSeqNum); - auto it = outputBufferAvilQueBak_.find(bufSeqNum); - if (it == outputBufferAvilQueBak_.end()) { - outputBufferAvilQueBak_.insert(std::make_pair(bufSeqNum, buf)); - auto firstSeqNum = renderBufferMapBak_.begin(); - if (firstSeqNum != renderBufferMapBak_.end()) { - outputBufferAvilQueBak_.erase(firstSeqNum->first); - renderBufferMapBak_.erase(firstSeqNum->first); + auto it = renderBufferMapBak_.find(bufSeqNum); + if (it != renderBufferMapBak_.end()) { + lastSurfaceSequence_ = bufSeqNum; + renderBufferMapBak_.erase(bufSeqNum); + inputSurface_->ReleaseBuffer(buf->memory, -1); + } else { + std::lock_guard lock(outputQueMutex_); + auto it = outputBufferAvilQueBak_.find(buf->memory->GetSeqNum()); + if (it == outputBufferAvilQueBak_.end()) { + outputSurface_->DetachBufferFromQueue(buf->memory); } } } @@ -620,15 +612,17 @@ GSError MetadataGeneratorVideoImpl::OnConsumerBufferAvailable() constexpr uint32_t waitForEver = -1; // wait fence -1 if (buffer->fence != nullptr) { (void)buffer->fence->Wait(waitForEver); + buffer->memory->InvalidCache(); } inputBufferAvilQue_.push(buffer); if (!getUsage_) { - requestCfg_.usage = (buffer->memory->GetUsage() | requestCfg_.usage); + requestCfg_.usage = buffer->memory->GetUsage(); getUsage_ = true; requestCfg_.width = buffer->memory->GetWidth(); requestCfg_.height = buffer->memory->GetHeight(); requestCfg_.format = buffer->memory->GetFormat(); + outputSurface_->SetDefaultUsage(requestCfg_.usage) initBuffer_.store(true); } From 45ba68952ae47bb0d6e7e8710e33c825c43147c1 Mon Sep 17 00:00:00 2001 From: weixin_44700052 Date: Tue, 16 Sep 2025 22:26:18 +0800 Subject: [PATCH 2/7] =?UTF-8?q?update:=20=E6=9B=B4=E6=96=B0=E6=96=87?= =?UTF-8?q?=E4=BB=B6=20metadata=5Fgenerator=5Fvideo=5Fimpl.h=20=E3=80=90?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=B4=E6=98=8E=E3=80=91=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E7=94=9F=E4=BA=A7Buffer=E8=BD=AE?= =?UTF-8?q?=E8=BD=AC=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: weixin_44700052 --- .../include/metadata_generator_video_impl.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/framework/algorithm/metadata_generator_video/include/metadata_generator_video_impl.h b/framework/algorithm/metadata_generator_video/include/metadata_generator_video_impl.h index 7cb289b..ca5a148 100644 --- a/framework/algorithm/metadata_generator_video/include/metadata_generator_video_impl.h +++ b/framework/algorithm/metadata_generator_video/include/metadata_generator_video_impl.h @@ -65,11 +65,11 @@ private: }; void InitBuffers(); bool WaitProcessing(); - bool AcquireInputOutputBuffers( - std::shared_ptr &inputBuffer, std::shared_ptr &outputBuffer); + bool AcquireInputBuffers(std::shared_ptr &inputBuffer); void DoTask(); void OnTriggered(); - void Process(std::shared_ptr inputBuffer, std::shared_ptr outputBuffer); + void CheckRequestCfg(sptr inputBuffer); + void Process(std::shared_ptr inputBuffer); int32_t AttachToNewSurface(sptr newSurface); int32_t SetOutputSurfaceConfig(sptr surface); int32_t SetOutputSurfaceRunning(sptr newSurface); @@ -103,11 +103,13 @@ private: std::mutex renderQueMutex_; // outputsruface buffer std::mutex surfaceChangeMutex_; std::mutex surfaceChangeMutex2_; + std::mutex outputQueMutex_; sptr inputSurface_{nullptr}; sptr outputSurface_{nullptr}; - static constexpr size_t MAX_BUFFER_CNT{5}; - uint32_t outBufferCnt_{MAX_BUFFER_CNT}; - uint32_t inBufferCnt_{MAX_BUFFER_CNT}; + static constexpr size_t MAX_INPUT_BUFFER_CNT{5}; + static constexpr size_t MAX_OUTPUT_BUFFER_CNT{12}; + uint32_t outBufferCnt_{MAX_OUTPUT_BUFFER_CNT}; + uint32_t inBufferCnt_{MAX_INPUT_BUFFER_CNT}; static constexpr size_t MAX_SURFACE_SEQUENCE{std::numeric_limits::max()}; uint32_t lastSurfaceSequence_{MAX_SURFACE_SEQUENCE}; BufferRequestConfig requestCfg_{}; From 80b09522667f2cf6a003a4b1160d895bbc4fd087 Mon Sep 17 00:00:00 2001 From: weixin_44700052 Date: Wed, 17 Sep 2025 09:52:28 +0800 Subject: [PATCH 3/7] =?UTF-8?q?update:=20=E6=9B=B4=E6=96=B0=E6=96=87?= =?UTF-8?q?=E4=BB=B6=20metadata=5Fgenerator=5Fvideo=5Fimpl.cpp=20=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E5=85=83=E6=95=B0=E6=8D=AE=E7=94=9F=E6=88=90Buffer?= =?UTF-8?q?=E8=BD=AE=E8=BD=AC=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: weixin_44700052 --- .../metadata_generator_video_impl.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp b/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp index 60c60cc..e39059d 100644 --- a/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp +++ b/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp @@ -376,13 +376,13 @@ void MetadataGeneratorVideoImpl::CheckRequestCfg(sptr inputBuffer { if (requestCfg_.width != inputBuffer->GetWidth() || requestCfg_.height != inputBuffer->GetHeight() || requestCfg_.format != inputBuffer->GetFormat() || requestCfg_.usage != inputBuffer->GetUsage()) { - requestCfg_.width != inputBuffer->GetWidth(); - requestCfg_.height != inputBuffer->GetHeight(); - requestCfg_.format != inputBuffer->GetFormat(); - requestCfg_.usage != inputBuffer->GetUsage(); + requestCfg_.width = inputBuffer->GetWidth(); + requestCfg_.height = inputBuffer->GetHeight(); + requestCfg_.format = inputBuffer->GetFormat(); + requestCfg_.usage = inputBuffer->GetUsage(); outputSurface_->CleanCache(true); outputSurface_->SetDefaultUsage(requestCfg_.usage); - std::lock_guard lock(outputBufferAvilQue_); + std::lock_guard lock(outputBufferQueMutex_); outputBufferAvilQueBak_.clear(); } } @@ -398,7 +398,7 @@ void MetadataGeneratorVideoImpl::Process(std::shared_ptr i if (it == outputBufferAvilQueBak_.end()) { ret = outputSurface_->AttachBufferToQueue(surfaceInputBuffer); CHECK_AND_RETURN_LOG(ret == GSERROR_OK, "AttachBufferToQueue failed %{public}d", ret); - outputBufferAvilQue_.emplace(surfaceInputBuffer->GetSeqNum(), inputBuffer); + outputBufferAvilQueBak_.emplace(surfaceInputBuffer->GetSeqNum(), inputBuffer); } outputLock.unlock(); { @@ -465,7 +465,7 @@ void MetadataGeneratorVideoImpl::DoTask() } isProcessing_.store(true); - if (!AcquireInputOutputBuffers(inputBuffer)) { + if (!AcquireInputBuffers(inputBuffer)) { break; } if (inputBuffer->bufferFlag == MDG_BUFFER_FLAG_EOS) { From b3181436162f912d4145149570a17fd6717ed13d Mon Sep 17 00:00:00 2001 From: weixin_44700052 Date: Wed, 17 Sep 2025 17:15:41 +0800 Subject: [PATCH 4/7] =?UTF-8?q?update:=20=E6=9B=B4=E6=96=B0=E6=96=87?= =?UTF-8?q?=E4=BB=B6=20metadata=5Fgenerator=5Fvideo=5Fimpl.cpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: weixin_44700052 --- .../metadata_generator_video_impl.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp b/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp index e39059d..9d46167 100644 --- a/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp +++ b/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp @@ -382,7 +382,7 @@ void MetadataGeneratorVideoImpl::CheckRequestCfg(sptr inputBuffer requestCfg_.usage = inputBuffer->GetUsage(); outputSurface_->CleanCache(true); outputSurface_->SetDefaultUsage(requestCfg_.usage); - std::lock_guard lock(outputBufferQueMutex_); + std::lock_guard lock(outputQueMutex_); outputBufferAvilQueBak_.clear(); } } @@ -414,7 +414,7 @@ void MetadataGeneratorVideoImpl::Process(std::shared_ptr i renderBufferAvilMap_.emplace(surfaceInputBuffer->GetSeqNum(), inputBuffer); lockOnBq.unlock(); if (cb_) { - cb_->OnOutputBufferAvailable(surfaceInputBuffer->GetSeqNum(), inputBuffer->bufferFlag) + cb_->OnOutputBufferAvailable(surfaceInputBuffer->GetSeqNum(), inputBuffer->bufferFlag); } } } @@ -622,7 +622,7 @@ GSError MetadataGeneratorVideoImpl::OnConsumerBufferAvailable() requestCfg_.width = buffer->memory->GetWidth(); requestCfg_.height = buffer->memory->GetHeight(); requestCfg_.format = buffer->memory->GetFormat(); - outputSurface_->SetDefaultUsage(requestCfg_.usage) + outputSurface_->SetDefaultUsage(requestCfg_.usage); initBuffer_.store(true); } From 1d46d350c225911cb316b15b58c87cf76779764a Mon Sep 17 00:00:00 2001 From: weixin_44700052 Date: Wed, 17 Sep 2025 19:10:46 +0800 Subject: [PATCH 5/7] =?UTF-8?q?update:=20=E6=9B=B4=E6=96=B0=E6=96=87?= =?UTF-8?q?=E4=BB=B6=20metadata=5Fgenerator=5Fvideo=5Fimpl.cpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: weixin_44700052 --- .../metadata_generator_video_impl.cpp | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp b/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp index 9d46167..51024ca 100644 --- a/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp +++ b/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp @@ -376,15 +376,15 @@ void MetadataGeneratorVideoImpl::CheckRequestCfg(sptr inputBuffer { if (requestCfg_.width != inputBuffer->GetWidth() || requestCfg_.height != inputBuffer->GetHeight() || requestCfg_.format != inputBuffer->GetFormat() || requestCfg_.usage != inputBuffer->GetUsage()) { - requestCfg_.width = inputBuffer->GetWidth(); - requestCfg_.height = inputBuffer->GetHeight(); - requestCfg_.format = inputBuffer->GetFormat(); - requestCfg_.usage = inputBuffer->GetUsage(); - outputSurface_->CleanCache(true); - outputSurface_->SetDefaultUsage(requestCfg_.usage); - std::lock_guard lock(outputQueMutex_); - outputBufferAvilQueBak_.clear(); - } + requestCfg_.width = inputBuffer->GetWidth(); + requestCfg_.height = inputBuffer->GetHeight(); + requestCfg_.format = inputBuffer->GetFormat(); + requestCfg_.usage = inputBuffer->GetUsage(); + outputSurface_->CleanCache(true); + outputSurface_->SetDefaultUsage(requestCfg_.usage); + std::lock_guard lock(outputQueMutex_); + outputBufferAvilQueBak_.clear(); + } } void MetadataGeneratorVideoImpl::Process(std::shared_ptr inputBuffer) @@ -612,7 +612,7 @@ GSError MetadataGeneratorVideoImpl::OnConsumerBufferAvailable() constexpr uint32_t waitForEver = -1; // wait fence -1 if (buffer->fence != nullptr) { (void)buffer->fence->Wait(waitForEver); - buffer->memory->InvalidCache(); + buffer->memory->InvalidateCache(); } inputBufferAvilQue_.push(buffer); From 05378ebb0f1c336d346926a68aa9d3fb42bd402a Mon Sep 17 00:00:00 2001 From: weixin_44700052 Date: Wed, 17 Sep 2025 19:28:35 +0800 Subject: [PATCH 6/7] =?UTF-8?q?update:=20=E6=9B=B4=E6=96=B0=E6=96=87?= =?UTF-8?q?=E4=BB=B6=20metadata=5Fgenerator=5Fvideo=5Fimpl.cpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: weixin_44700052 --- .../metadata_generator_video_impl.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp b/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp index 51024ca..a664962 100644 --- a/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp +++ b/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp @@ -578,8 +578,8 @@ GSError MetadataGeneratorVideoImpl::OnProducerBufferReleased() inputSurface_->ReleaseBuffer(buf->memory, -1); } else { std::lock_guard lock(outputQueMutex_); - auto it = outputBufferAvilQueBak_.find(buf->memory->GetSeqNum()); - if (it == outputBufferAvilQueBak_.end()) { + auto it2 = outputBufferAvilQueBak_.find(buf->memory->GetSeqNum()); + if (it2 == outputBufferAvilQueBak_.end()) { outputSurface_->DetachBufferFromQueue(buf->memory); } } From 3822144267836556323a9d95e068034eb95131a2 Mon Sep 17 00:00:00 2001 From: weixin_44700052 Date: Tue, 23 Sep 2025 10:18:03 +0800 Subject: [PATCH 7/7] =?UTF-8?q?update:=20=E6=9B=B4=E6=96=B0=E6=96=87?= =?UTF-8?q?=E4=BB=B6=20metadata=5Fgenerator=5Fvideo=5Fimpl.cpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: weixin_44700052 --- .../metadata_generator_video/metadata_generator_video_impl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp b/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp index a664962..6804e0f 100644 --- a/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp +++ b/framework/algorithm/metadata_generator_video/metadata_generator_video_impl.cpp @@ -465,7 +465,7 @@ void MetadataGeneratorVideoImpl::DoTask() } isProcessing_.store(true); - if (!AcquireInputBuffers(inputBuffer)) { + if (!AcquireInputBuffers(inputBuffer) || inputBuffer->memory == nullptr) { break; } if (inputBuffer->bufferFlag == MDG_BUFFER_FLAG_EOS) {