diff --git a/plugins/common/libs/image/libextplugin/include/heif_impl/HeifDecoderImpl.h b/plugins/common/libs/image/libextplugin/include/heif_impl/HeifDecoderImpl.h index b884964962e59d56a5e4a0b091a078b89d8a9cc8..b0ea30ababd180dc8df066e7074d8db80c15c26c 100644 --- a/plugins/common/libs/image/libextplugin/include/heif_impl/HeifDecoderImpl.h +++ b/plugins/common/libs/image/libextplugin/include/heif_impl/HeifDecoderImpl.h @@ -125,9 +125,9 @@ private: bool SwDecodeImage(std::shared_ptr &image, HevcSoftDecodeParam ¶m, GridInfo &gridInfo, bool isPrimary); bool SwDecodeAuxiliaryImage(std::shared_ptr &gainmapImage, - GridInfo &gainmapGridInfo, sptr *outputBuf); + GridInfo &gainmapGridInfo, uint8_t *auxiliaryDstMemory); bool DoSwDecodeAuxiliaryImage(std::shared_ptr &gainmapImage, GridInfo &gainmapGridInfo, - sptr &output, sptr *outputBuf); + sptr &output, uint8_t *auxiliaryDstMemory); bool SwDecodeGrids(Media::ImageFwkExtManager &extManager, std::shared_ptr &image, HevcSoftDecodeParam ¶m); diff --git a/plugins/common/libs/image/libextplugin/src/heif_impl/HeifDecoderImpl.cpp b/plugins/common/libs/image/libextplugin/src/heif_impl/HeifDecoderImpl.cpp index 48448d038ed59bfc4baf3f1b0d5ff3fdcb933f68..1388cb3e947ea2a32ca8d992804bc08943b12d0d 100644 --- a/plugins/common/libs/image/libextplugin/src/heif_impl/HeifDecoderImpl.cpp +++ b/plugins/common/libs/image/libextplugin/src/heif_impl/HeifDecoderImpl.cpp @@ -522,7 +522,7 @@ bool HeifDecoderImpl::SwDecode(bool isSharedMemory) gridInfo_, Media::PixelFormat::UNKNOWN, outPixelFormat_, dstMemory_, 0, static_cast(dstRowStride_), dstHwBuffer_, - isSharedMemory, nullptr, 0 + isSharedMemory, nullptr, static_cast(dstRowStride_) }; bool decodeRes = SwDecodeImage(primaryImage_, param, gridInfo_, true); if (!decodeRes) { @@ -552,8 +552,7 @@ bool HeifDecoderImpl::DoDecodeAuxiliaryImage(std::shared_ptr &auxilia return false; } if (!decodeRes) { - sptr swHwBuffer; - bool swdecodeRes = SwDecodeAuxiliaryImage(auxiliaryImage, auxiliaryGridInfo, &swHwBuffer); + bool swdecodeRes = SwDecodeAuxiliaryImage(auxiliaryImage, auxiliaryGridInfo, auxiliaryDstMemory); if (!swdecodeRes) { IMAGE_LOGE("HeifDecoderImpl::SwDecodeAuxiliaryImage failed too"); return false; @@ -880,7 +879,7 @@ bool HeifDecoderImpl::SwDecodeSingleImage(ImageFwkExtManager &extManager, } bool HeifDecoderImpl::SwDecodeAuxiliaryImage(std::shared_ptr &gainmapImage, - GridInfo &gainmapGridInfo, sptr *outputBuf) + GridInfo &gainmapGridInfo, uint8_t *auxiliaryDstMemory) { ImageTrace trace("HeifDecoderImpl::SwdecodeGainmap"); uint32_t width = gainmapImage->GetOriginalWidth(); @@ -896,7 +895,7 @@ bool HeifDecoderImpl::SwDecodeAuxiliaryImage(std::shared_ptr &gainmap GSError ret = output->Alloc(config); bool cond = ret != GSERROR_OK; CHECK_ERROR_RETURN_RET_LOG(cond, false, "output->alloc(config)faild, GSError=%{public}d", ret); - if (!DoSwDecodeAuxiliaryImage(gainmapImage, gainmapGridInfo, output, outputBuf)) { + if (!DoSwDecodeAuxiliaryImage(gainmapImage, gainmapGridInfo, output, auxiliaryDstMemory)) { IMAGE_LOGE("HDR-IMAGE SwDecodeGainmap failed"); } return true; @@ -916,9 +915,9 @@ Media::PixelFormat GetDecodeHeifFormat(std::shared_ptr &heifImage) } bool HeifDecoderImpl::DoSwDecodeAuxiliaryImage(std::shared_ptr &gainmapImage, GridInfo &gainmapgridInfo, - sptr &output, sptr *outputBuf) + sptr &output, uint8_t *auxiliaryDstMemory) { - bool cond = (output == nullptr || outputBuf == nullptr); + bool cond = (output == nullptr); CHECK_ERROR_RETURN_RET(cond, false); PixelFormat gainmapSrcFmt = GetDecodeHeifFormat(gainmapImage); PixelFormat gainmapDstFmt = PixelFormat::UNKNOWN; @@ -927,14 +926,11 @@ bool HeifDecoderImpl::DoSwDecodeAuxiliaryImage(std::shared_ptr &gainm return false; } uint32_t gainmapRowStride; - uint8_t *gainmapDstBuffer; if (isGainmapDecode_) { gainmapDstFmt = PixelFormat::RGBA_8888; - gainmapDstBuffer = gainmapDstMemory_; gainmapRowStride = static_cast(gainmapDstRowStride_); } else { gainmapDstFmt = outPixelFormat_; - gainmapDstBuffer = auxiliaryDstMemory_; gainmapRowStride = static_cast(auxiliaryDstRowStride_); } OH_NativeBuffer_Planes *dataPlanesInfo = nullptr; @@ -950,7 +946,7 @@ bool HeifDecoderImpl::DoSwDecodeAuxiliaryImage(std::shared_ptr &gainm uint32_t gainmapMemorySize = gainmapStride * static_cast(output->GetHeight()); HevcSoftDecodeParam gainmapParam { gainmapgridInfo, gainmapSrcFmt, gainmapDstFmt, - gainmapDstBuffer, gainmapMemorySize, + auxiliaryDstMemory, gainmapMemorySize, gainmapStride, nullptr, false, static_cast(nativeBuffer), gainmapRowStride }; if (!SwDecodeImage(gainmapImage, gainmapParam, gainmapgridInfo, false)) { @@ -958,7 +954,6 @@ bool HeifDecoderImpl::DoSwDecodeAuxiliaryImage(std::shared_ptr &gainm IMAGE_LOGE("HDR-IMAGE SwDecodeImage failed"); return false; } - *outputBuf = output; if (output != nullptr) { ImageUtils::SurfaceBuffer_Unreference(nativeBuffer); } @@ -1069,7 +1064,7 @@ bool HeifDecoderImpl::SwApplyAlphaImage(std::shared_ptr &masterImage, std::unique_ptr alphaMemory = std::make_unique(alphaMemorySize); HevcSoftDecodeParam param { alphaGridInfo, Media::PixelFormat::UNKNOWN, alphaDstFmt, - alphaMemory.get(), alphaMemorySize, alphaStride, nullptr, false, nullptr, 0 + alphaMemory.get(), alphaMemorySize, alphaStride, nullptr, false, nullptr, alphaStride }; bool decodeRes = SwDecodeImage(alphaImage, param, alphaGridInfo, false); bool cond = !decodeRes; diff --git a/plugins/common/libs/image/libextplugin/src/heif_impl/heif_parser/heif_parser.cpp b/plugins/common/libs/image/libextplugin/src/heif_impl/heif_parser/heif_parser.cpp index 26f4cc669d743f347970e22cf403ca6d9f885106..b1650e3027923fd50e3c57ab9d4ef7517248071d 100644 --- a/plugins/common/libs/image/libextplugin/src/heif_impl/heif_parser/heif_parser.cpp +++ b/plugins/common/libs/image/libextplugin/src/heif_impl/heif_parser/heif_parser.cpp @@ -249,7 +249,7 @@ heif_error HeifParser::GetItemData(heif_item_id itemId, std::vector *ou } std::string item_type = infe_box->GetItemType(); - auto items = ilocBox_->GetItems(); + const auto& items = ilocBox_->GetItems(); const HeifIlocBox::Item *ilocItem = nullptr; for (const auto &item: items) { if (item.itemId == itemId) {