From 1fbc0b0a3e841ef9b35cf640cd80a9964d087938 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E4=B9=94=E5=BC=82?= Date: Thu, 24 Jul 2025 16:35:13 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=8A=A8=E6=80=81=E9=9D=99=E6=80=81?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 陈乔异 --- frameworks/kits/taihe/BUILD.gn | 8 ++++ .../idl/ohos.multimedia.image.image.taihe | 14 ++++++ frameworks/kits/taihe/src/pixel_map_taihe.cpp | 46 ++++++++++++++++++- 3 files changed, 67 insertions(+), 1 deletion(-) diff --git a/frameworks/kits/taihe/BUILD.gn b/frameworks/kits/taihe/BUILD.gn index 70b6c30ed..f826ed7bf 100644 --- a/frameworks/kits/taihe/BUILD.gn +++ b/frameworks/kits/taihe/BUILD.gn @@ -62,7 +62,9 @@ template("image_taihe_shared_library") { include_dirs = [ "include", + "${image_subsystem}/frameworks/kits/js/common/include", "${image_subsystem}/interfaces/innerkits/include", + "${image_subsystem}/interfaces/kits/js/common/include", "${image_subsystem}/interfaces/kits/native/include/image", "${image_subsystem}/plugins/common/libs/image/libextplugin/include/jpeg_yuv_decoder", ] @@ -70,6 +72,8 @@ template("image_taihe_shared_library") { sources = get_target_outputs(":run_taihe") sources += [ "${image_subsystem}/frameworks/innerkitsimpl/accessor/src/exif_metadata_formatter.cpp", + "${image_subsystem}/frameworks/kits/js/common/image_napi_utils.cpp", + "${image_subsystem}/frameworks/kits/js/common/pixel_map_napi.cpp", "src/auxiliary_picture_taihe.cpp", "src/image_creator_taihe.cpp", "src/image_packer_taihe.cpp", @@ -91,18 +95,22 @@ template("image_taihe_shared_library") { external_deps = [ "c_utils:utils", + "drivers_interface_display:libdisplay_commontype_proxy_1.0", "eventhandler:libeventhandler", "graphic_2d:EGL", "graphic_2d:ani_color_space_object_convertor", "graphic_2d:color_manager", + "graphic_2d:color_space_object_convertor", "graphic_2d:librender_service_base", "graphic_2d:librender_service_client", "graphic_surface:surface", "graphic_surface:sync_fence", "hilog:libhilog", "hitrace:hitrace_meter", + "ipc:ipc_napi", "ipc:ipc_single", "libjpeg-turbo:turbojpeg", + "napi:ace_napi", "runtime_core:ani_helpers", ] diff --git a/frameworks/kits/taihe/idl/ohos.multimedia.image.image.taihe b/frameworks/kits/taihe/idl/ohos.multimedia.image.image.taihe index a98595f9a..b39964188 100644 --- a/frameworks/kits/taihe/idl/ohos.multimedia.image.image.taihe +++ b/frameworks/kits/taihe/idl/ohos.multimedia.image.image.taihe @@ -895,6 +895,20 @@ function CreatePixelMapFromSurfaceByIdAndRegionSync(surfaceId: String, region: R function CreatePixelMapFromParcel(sequence: @sts_type("rpc.MessageSequence") Opaque): PixelMap; +function PixelMapTransferStaticImpl(input: @sts_type("ESValue") Opaque): PixelMap; + +function PixelMapTransferDynamicImpl(input: PixelMap): @sts_type("Any") Opaque; + +@!sts_inject(""" +export function pixelMapTransferStatic(input: Any): Object { + return pixelMapTransferStaticImpl(ESValue.wrap(input)); +} + +export function pixelMapTransferDynamic(input: Object): Any { + return pixelMapTransferDynamicImpl(input as PixelMap); +} +""") + @overload("createImageSource") function CreateImageSourceByUri(uri: String): ImageSource; diff --git a/frameworks/kits/taihe/src/pixel_map_taihe.cpp b/frameworks/kits/taihe/src/pixel_map_taihe.cpp index b1615ba7c..497938eee 100644 --- a/frameworks/kits/taihe/src/pixel_map_taihe.cpp +++ b/frameworks/kits/taihe/src/pixel_map_taihe.cpp @@ -20,8 +20,11 @@ #include "image_log.h" #include "image_taihe_utils.h" #include "image_utils.h" +#include "interop_js/arkts_interop_js_api.h" +#include "interop_js/arkts_esvalue.h" #include "media_errors.h" #include "message_parcel.h" +#include "pixel_map_napi.h" #include "pixel_map_taihe_ani.h" #include "taihe/runtime.hpp" #if !defined(IOS_PLATFORM) && !defined(ANDROID_PLATFORM) @@ -179,6 +182,45 @@ PixelMap CreatePixelMapFromParcel(uintptr_t sequence) return Unmarshalling(sequence); } +PixelMap PixelMapTransferStaticImpl(uintptr_t input) { + ani_object esValue = reinterpret_cast(input); + void* nativePtr = nullptr; + if (!arkts_esvalue_unwrap(get_env(), esValue, &nativePtr) || nativePtr == nullptr) { + ImageTaiheUtils::ThrowExceptionError(Media::COMMON_ERR_INVALID_PARAMETER, "Unwrap ESValue failed"); + return make_holder(); + } + + auto pixelMapNapi = reinterpret_cast*>(nativePtr)->lock(); + if (pixelMapNapi == nullptr) { + ImageTaiheUtils::ThrowExceptionError(Media::COMMON_ERR_INVALID_PARAMETER, "Transfer PixelMap failed"); + return make_holder(); + } + + return make_holder(pixelMapNapi->GetPixelNapiInner()); +} + +uintptr_t PixelMapTransferDynamicImpl(weak::PixelMap input) { + PixelMapImpl* implPtr = reinterpret_cast(input->GetImplPtr()); + std::shared_ptr pixelMap = implPtr->GetNativePtr(); + implPtr = nullptr; + napi_env jsEnv; + if (!arkts_napi_scope_open(get_env(), &jsEnv)) { + ImageTaiheUtils::ThrowExceptionError(Media::COMMON_ERR_INVALID_PARAMETER, "NAPI scope open failed"); + return 0; + } + + napi_value pixelMapJs = Media::PixelMapNapi::CreatePixelMap(jsEnv, pixelMap); + napi_valuetype type; + napi_typeof(jsEnv, pixelMapJs, &type); + if (type == napi_undefined) { + ImageTaiheUtils::ThrowExceptionError(Media::COMMON_ERR_INVALID_PARAMETER, "PixelMapNapi create failed"); + arkts_napi_scope_close_n(jsEnv, 0, nullptr, nullptr); + return 0; + } + + return reinterpret_cast(pixelMapJs); +} + PixelMapImpl::PixelMapImpl() {} PixelMapImpl::PixelMapImpl(array_view const& colors, InitializationOptions const& etsOptions) @@ -819,4 +861,6 @@ TH_EXPORT_CPP_API_CreatePixelMapByOptionsSync(ANI::Image::CreatePixelMapByOption TH_EXPORT_CPP_API_CreatePixelMapByPtr(ANI::Image::CreatePixelMapByPtr); TH_EXPORT_CPP_API_CreatePixelMapFromSurfaceByIdSync(ANI::Image::CreatePixelMapFromSurfaceByIdSync); TH_EXPORT_CPP_API_CreatePixelMapFromSurfaceByIdAndRegionSync(ANI::Image::CreatePixelMapFromSurfaceByIdAndRegionSync); -TH_EXPORT_CPP_API_CreatePixelMapFromParcel(ANI::Image::CreatePixelMapFromParcel); \ No newline at end of file +TH_EXPORT_CPP_API_CreatePixelMapFromParcel(ANI::Image::CreatePixelMapFromParcel); +TH_EXPORT_CPP_API_PixelMapTransferStaticImpl(ANI::Image::PixelMapTransferStaticImpl); +TH_EXPORT_CPP_API_PixelMapTransferDynamicImpl(ANI::Image::PixelMapTransferDynamicImpl); \ No newline at end of file -- Gitee From 5974610188cc878be1cf8dc6bb56b918fd5f3a2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E4=B9=94=E5=BC=82?= Date: Tue, 12 Aug 2025 16:43:41 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=96=B0=E6=A1=86?= =?UTF-8?q?=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 陈乔异 --- frameworks/kits/js/common/pixel_map_napi.cpp | 17 +++++ frameworks/kits/taihe/BUILD.gn | 9 +-- .../idl/ohos.multimedia.image.image.taihe | 24 +++---- .../kits/taihe/include/transfer_taihe.h | 3 + frameworks/kits/taihe/src/pixel_map_taihe.cpp | 48 +------------ frameworks/kits/taihe/src/transfer_taihe.cpp | 70 ++++++++++++++++++- .../kits/js/common/include/pixel_map_napi.h | 5 ++ 7 files changed, 108 insertions(+), 68 deletions(-) diff --git a/frameworks/kits/js/common/pixel_map_napi.cpp b/frameworks/kits/js/common/pixel_map_napi.cpp index 268945688..6c695c865 100644 --- a/frameworks/kits/js/common/pixel_map_napi.cpp +++ b/frameworks/kits/js/common/pixel_map_napi.cpp @@ -1792,6 +1792,23 @@ napi_value PixelMapNapi::CreatePixelMap(napi_env env, std::shared_ptr return result; } +extern "C" { +napi_value GetPixelMapNapi(napi_env env, std::shared_ptr pixelMap) +{ + return PixelMapNapi::CreatePixelMap(env, pixelMap); +} + +bool GetNativePixelMap(void* pixelMapNapi, std::shared_ptr &pixelMap) +{ + if (pixelMapNapi == nullptr) { + IMAGE_LOGE("%{public}s pixelMapNapi is nullptr", __func__); + return false; + } + pixelMap = reinterpret_cast(pixelMapNapi)->GetPixelNapiInner(); + return true; +} +} + STATIC_EXEC_FUNC(Unmarshalling) { #if !defined(IOS_PLATFORM) && !defined(ANDROID_PLATFORM) diff --git a/frameworks/kits/taihe/BUILD.gn b/frameworks/kits/taihe/BUILD.gn index ed725eff7..a6d7bdbee 100644 --- a/frameworks/kits/taihe/BUILD.gn +++ b/frameworks/kits/taihe/BUILD.gn @@ -62,9 +62,7 @@ template("image_taihe_shared_library") { include_dirs = [ "include", - "${image_subsystem}/frameworks/kits/js/common/include", "${image_subsystem}/interfaces/innerkits/include", - "${image_subsystem}/interfaces/kits/js/common/include", "${image_subsystem}/interfaces/kits/native/include/image", "${image_subsystem}/plugins/common/libs/image/libextplugin/include/jpeg_yuv_decoder", ] @@ -72,8 +70,6 @@ template("image_taihe_shared_library") { sources = get_target_outputs(":run_taihe") sources += [ "${image_subsystem}/frameworks/innerkitsimpl/accessor/src/exif_metadata_formatter.cpp", - "${image_subsystem}/frameworks/kits/js/common/image_napi_utils.cpp", - "${image_subsystem}/frameworks/kits/js/common/pixel_map_napi.cpp", "src/auxiliary_picture_taihe.cpp", "src/image_creator_taihe.cpp", "src/image_packer_taihe.cpp", @@ -96,19 +92,18 @@ template("image_taihe_shared_library") { external_deps = [ "c_utils:utils", - "drivers_interface_display:libdisplay_commontype_proxy_1.0", + #"drivers_interface_display:libdisplay_commontype_proxy_1.0", "eventhandler:libeventhandler", "graphic_2d:EGL", "graphic_2d:ani_color_space_object_convertor", "graphic_2d:color_manager", - "graphic_2d:color_space_object_convertor", + #"graphic_2d:color_space_object_convertor", "graphic_2d:librender_service_base", "graphic_2d:librender_service_client", "graphic_surface:surface", "graphic_surface:sync_fence", "hilog:libhilog", "hitrace:hitrace_meter", - "ipc:ipc_napi", "ipc:ipc_single", "libjpeg-turbo:turbojpeg", "napi:ace_napi", diff --git a/frameworks/kits/taihe/idl/ohos.multimedia.image.image.taihe b/frameworks/kits/taihe/idl/ohos.multimedia.image.image.taihe index f8a554a87..cc802b456 100644 --- a/frameworks/kits/taihe/idl/ohos.multimedia.image.image.taihe +++ b/frameworks/kits/taihe/idl/ohos.multimedia.image.image.taihe @@ -899,6 +899,9 @@ function ImageReceiverTransferDynamicImpl(input: ImageReceiver): @sts_type("Any" function ImageCreatorTransferStaticImpl(input: @sts_type("ESValue") Opaque): ImageCreator; function ImageCreatorTransferDynamicImpl(input: ImageCreator): @sts_type("Any") Opaque; +function PixelMapTransferStaticImpl(input: @sts_type("ESValue") Opaque): PixelMap; +function PixelMapTransferDynamicImpl(input: PixelMap): @sts_type("Any") Opaque; + @!sts_inject(""" export function imageSourceTransferStatic(input: Any): Object { return imageSourceTransferStaticImpl(ESValue.wrap(input)); @@ -941,6 +944,13 @@ export function imageCreatorTransferStatic(input: Any): Object { export function imageCreatorTransferDynamic(input: Object): Any { return imageCreatorTransferDynamicImpl(input as ImageCreator); } + +export function pixelMapTransferStatic(input: Any): Object { + return pixelMapTransferStaticImpl(ESValue.wrap(input)); +} +export function pixelMapTransferDynamic(input: Object): Any { + return pixelMapTransferDynamicImpl(input as PixelMap); +} """) // global functions @@ -966,20 +976,6 @@ function CreatePixelMapFromSurfaceByIdAndRegionSync(surfaceId: String, region: R function CreatePixelMapFromParcel(sequence: @sts_type("rpc.MessageSequence") Opaque): PixelMap; -function PixelMapTransferStaticImpl(input: @sts_type("ESValue") Opaque): PixelMap; - -function PixelMapTransferDynamicImpl(input: PixelMap): @sts_type("Any") Opaque; - -@!sts_inject(""" -export function pixelMapTransferStatic(input: Any): Object { - return pixelMapTransferStaticImpl(ESValue.wrap(input)); -} - -export function pixelMapTransferDynamic(input: Object): Any { - return pixelMapTransferDynamicImpl(input as PixelMap); -} -""") - @overload("createImageSource") function CreateImageSourceByUri(uri: String): ImageSource; diff --git a/frameworks/kits/taihe/include/transfer_taihe.h b/frameworks/kits/taihe/include/transfer_taihe.h index bf5159267..824d428dd 100644 --- a/frameworks/kits/taihe/include/transfer_taihe.h +++ b/frameworks/kits/taihe/include/transfer_taihe.h @@ -43,6 +43,9 @@ uintptr_t ImageReceiverTransferDynamicImpl(ImageReceiver input); ImageCreator ImageCreatorTransferStaticImpl(uintptr_t input); uintptr_t ImageCreatorTransferDynamicImpl(ImageCreator input); + +PixelMap PixelMapTransferStaticImpl(uintptr_t input); +uintptr_t PixelMapTransferDynamicImpl(PixelMap input); } // namespace ANI::Image #endif // FRAMEWORKS_KITS_TAIHE_INCLUDE_TRANSFER_TAIHE_H \ No newline at end of file diff --git a/frameworks/kits/taihe/src/pixel_map_taihe.cpp b/frameworks/kits/taihe/src/pixel_map_taihe.cpp index 497938eee..cba0ec887 100644 --- a/frameworks/kits/taihe/src/pixel_map_taihe.cpp +++ b/frameworks/kits/taihe/src/pixel_map_taihe.cpp @@ -20,11 +20,8 @@ #include "image_log.h" #include "image_taihe_utils.h" #include "image_utils.h" -#include "interop_js/arkts_interop_js_api.h" -#include "interop_js/arkts_esvalue.h" #include "media_errors.h" #include "message_parcel.h" -#include "pixel_map_napi.h" #include "pixel_map_taihe_ani.h" #include "taihe/runtime.hpp" #if !defined(IOS_PLATFORM) && !defined(ANDROID_PLATFORM) @@ -182,45 +179,6 @@ PixelMap CreatePixelMapFromParcel(uintptr_t sequence) return Unmarshalling(sequence); } -PixelMap PixelMapTransferStaticImpl(uintptr_t input) { - ani_object esValue = reinterpret_cast(input); - void* nativePtr = nullptr; - if (!arkts_esvalue_unwrap(get_env(), esValue, &nativePtr) || nativePtr == nullptr) { - ImageTaiheUtils::ThrowExceptionError(Media::COMMON_ERR_INVALID_PARAMETER, "Unwrap ESValue failed"); - return make_holder(); - } - - auto pixelMapNapi = reinterpret_cast*>(nativePtr)->lock(); - if (pixelMapNapi == nullptr) { - ImageTaiheUtils::ThrowExceptionError(Media::COMMON_ERR_INVALID_PARAMETER, "Transfer PixelMap failed"); - return make_holder(); - } - - return make_holder(pixelMapNapi->GetPixelNapiInner()); -} - -uintptr_t PixelMapTransferDynamicImpl(weak::PixelMap input) { - PixelMapImpl* implPtr = reinterpret_cast(input->GetImplPtr()); - std::shared_ptr pixelMap = implPtr->GetNativePtr(); - implPtr = nullptr; - napi_env jsEnv; - if (!arkts_napi_scope_open(get_env(), &jsEnv)) { - ImageTaiheUtils::ThrowExceptionError(Media::COMMON_ERR_INVALID_PARAMETER, "NAPI scope open failed"); - return 0; - } - - napi_value pixelMapJs = Media::PixelMapNapi::CreatePixelMap(jsEnv, pixelMap); - napi_valuetype type; - napi_typeof(jsEnv, pixelMapJs, &type); - if (type == napi_undefined) { - ImageTaiheUtils::ThrowExceptionError(Media::COMMON_ERR_INVALID_PARAMETER, "PixelMapNapi create failed"); - arkts_napi_scope_close_n(jsEnv, 0, nullptr, nullptr); - return 0; - } - - return reinterpret_cast(pixelMapJs); -} - PixelMapImpl::PixelMapImpl() {} PixelMapImpl::PixelMapImpl(array_view const& colors, InitializationOptions const& etsOptions) @@ -274,7 +232,7 @@ PixelMapImpl::~PixelMapImpl() int64_t PixelMapImpl::GetImplPtr() { - return reinterpret_cast(this); + return static_cast(reinterpret_cast(this)); } std::shared_ptr PixelMapImpl::GetNativePtr() @@ -861,6 +819,4 @@ TH_EXPORT_CPP_API_CreatePixelMapByOptionsSync(ANI::Image::CreatePixelMapByOption TH_EXPORT_CPP_API_CreatePixelMapByPtr(ANI::Image::CreatePixelMapByPtr); TH_EXPORT_CPP_API_CreatePixelMapFromSurfaceByIdSync(ANI::Image::CreatePixelMapFromSurfaceByIdSync); TH_EXPORT_CPP_API_CreatePixelMapFromSurfaceByIdAndRegionSync(ANI::Image::CreatePixelMapFromSurfaceByIdAndRegionSync); -TH_EXPORT_CPP_API_CreatePixelMapFromParcel(ANI::Image::CreatePixelMapFromParcel); -TH_EXPORT_CPP_API_PixelMapTransferStaticImpl(ANI::Image::PixelMapTransferStaticImpl); -TH_EXPORT_CPP_API_PixelMapTransferDynamicImpl(ANI::Image::PixelMapTransferDynamicImpl); \ No newline at end of file +TH_EXPORT_CPP_API_CreatePixelMapFromParcel(ANI::Image::CreatePixelMapFromParcel); \ No newline at end of file diff --git a/frameworks/kits/taihe/src/transfer_taihe.cpp b/frameworks/kits/taihe/src/transfer_taihe.cpp index 3786d5683..ebfe385d1 100644 --- a/frameworks/kits/taihe/src/transfer_taihe.cpp +++ b/frameworks/kits/taihe/src/transfer_taihe.cpp @@ -24,6 +24,7 @@ #include "interop_js/arkts_esvalue.h" #include "interop_js/arkts_interop_js_api.h" #include "picture_taihe.h" +#include "pixel_map_taihe.h" #include "transfer_taihe.h" using namespace ANI::Image; @@ -38,6 +39,7 @@ using GetPictureNapiFn = napi_value (*)(napi_env, std::shared_ptr); using GetImageReceiverNapiFn = napi_value (*)(napi_env, std::shared_ptr); using GetImageCreatorNapiFn = napi_value (*)(napi_env, std::shared_ptr); +using GetPixelMapNapiFn = napi_value (*)(napi_env, std::shared_ptr); using GetNativeImageSourceFn = bool (*)(void*, std::shared_ptr&); using GetNativeImagePackerFn = bool (*)(void*, std::shared_ptr&); @@ -45,6 +47,7 @@ using GetNativePictureFn = bool (*)(void*, std::shared_ptr using GetNativeAuxiliaryPictureFn = bool (*)(void*, std::shared_ptr&); using GetNativeImageReceiverFn = bool (*)(void*, std::shared_ptr&); using GetNativeImageCreatorFn = bool (*)(void*, std::shared_ptr&); +using GetNativePixelMapFn = bool (*)(void*, std::shared_ptr&); // custom deleter for handle to auto dlclose struct DlHandleDeleter { @@ -476,6 +479,69 @@ uintptr_t ImageCreatorTransferDynamicImpl(ImageCreator input) IMAGE_LOGD("[%{public}s] OUT", __func__); return ref; } + +PixelMap PixelMapTransferStaticImpl(uintptr_t input) { + IMAGE_LOGD("[%{public}s] IN", __func__); + ani_object esValue = reinterpret_cast(input); + + void* nativePtr = nullptr; + if (!arkts_esvalue_unwrap(get_env(), esValue, &nativePtr) || nativePtr == nullptr) { + IMAGE_LOGE("%{public}s unwrap esValue failed", __func__); + return make_holder(); + } + + void* napiFunc = GetNapiFunction("GetNativePixelMap"); + if (napiFunc == nullptr) { + IMAGE_LOGE("%{public}s GetNapiFunction failed", __func__); + return make_holder(); + } + + std::shared_ptr nativePixelMap = nullptr; + bool ret = (*reinterpret_cast(napiFunc))(nativePtr, nativePixelMap); + if (!ret || nativePixelMap == nullptr) { + IMAGE_LOGE("%{public}s GetNativePixelMap failed", __func__); + return make_holder(); + } + IMAGE_LOGD("[%{public}s] OUT", __func__); + return make_holder(nativePixelMap); +} + +uintptr_t PixelMapTransferDynamicImpl(PixelMap input) { + IMAGE_LOGD("[%{public}s] IN", __func__); + if (input.is_error()) { + IMAGE_LOGE("%{public}s input is error", __func__); + return 0; + } + PixelMapImpl* thisPtr = reinterpret_cast(input->GetImplPtr()); + if (thisPtr == nullptr) { + IMAGE_LOGE("%{public}s thisPtr is nullptr", __func__); + return 0; + } + + napi_env jsEnv; + if (!arkts_napi_scope_open(get_env(), &jsEnv)) { + IMAGE_LOGE("%{public}s arkts_napi_scope_open failed", __func__); + return 0; + } + + void* napiFunc = GetNapiFunction("GetPixelMapNapi"); + if (napiFunc == nullptr) { + IMAGE_LOGE("%{public}s GetNapiFunction failed", __func__); + arkts_napi_scope_close_n(jsEnv, 0, nullptr, nullptr); + return 0; + } + napi_value result = (*reinterpret_cast(napiFunc))(jsEnv, thisPtr->GetNativePtr()); + if (result == nullptr) { + IMAGE_LOGE("%{public}s GetPixelMapNapi failed, result is nullptr", __func__); + arkts_napi_scope_close_n(jsEnv, 0, nullptr, nullptr); + return 0; + } + + uintptr_t ref = 0; + arkts_napi_scope_close_n(jsEnv, 1, &result, reinterpret_cast(&ref)); + IMAGE_LOGD("[%{public}s] OUT", __func__); + return ref; +} } // namespace ANI::Image TH_EXPORT_CPP_API_ImageSourceTransferStaticImpl(ImageSourceTransferStaticImpl); @@ -489,4 +555,6 @@ TH_EXPORT_CPP_API_AuxiliaryPictureTransferDynamicImpl(AuxiliaryPictureTransferDy TH_EXPORT_CPP_API_ImageReceiverTransferStaticImpl(ImageReceiverTransferStaticImpl); TH_EXPORT_CPP_API_ImageReceiverTransferDynamicImpl(ImageReceiverTransferDynamicImpl); TH_EXPORT_CPP_API_ImageCreatorTransferStaticImpl(ImageCreatorTransferStaticImpl); -TH_EXPORT_CPP_API_ImageCreatorTransferDynamicImpl(ImageCreatorTransferDynamicImpl); \ No newline at end of file +TH_EXPORT_CPP_API_ImageCreatorTransferDynamicImpl(ImageCreatorTransferDynamicImpl); +TH_EXPORT_CPP_API_PixelMapTransferStaticImpl(PixelMapTransferStaticImpl); +TH_EXPORT_CPP_API_PixelMapTransferDynamicImpl(PixelMapTransferDynamicImpl); \ No newline at end of file diff --git a/interfaces/kits/js/common/include/pixel_map_napi.h b/interfaces/kits/js/common/include/pixel_map_napi.h index f7088dd13..a93e55fb0 100644 --- a/interfaces/kits/js/common/include/pixel_map_napi.h +++ b/interfaces/kits/js/common/include/pixel_map_napi.h @@ -229,6 +229,11 @@ private: std::shared_mutex mutex_; std::map> map_; }; + +extern "C" { + napi_value GetPixelMapNapi(napi_env env, std::shared_ptr pixelMap); + bool GetNativePixelMap(void* pixelMapNapi, std::shared_ptr &pixelMap); +} } // namespace Media } // namespace OHOS #endif // INTERFACES_KITS_JS_COMMON_INCLUDE_PIXEL_MAP_NAPI_H -- Gitee From 571d546119ff067284efd235ffa4f60d368e6423 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E4=B9=94=E5=BC=82?= Date: Tue, 12 Aug 2025 19:21:41 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 陈乔异 --- frameworks/kits/taihe/BUILD.gn | 2 -- frameworks/kits/taihe/include/transfer_taihe.h | 2 +- frameworks/kits/taihe/src/transfer_taihe.cpp | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/frameworks/kits/taihe/BUILD.gn b/frameworks/kits/taihe/BUILD.gn index a6d7bdbee..3912e5cac 100644 --- a/frameworks/kits/taihe/BUILD.gn +++ b/frameworks/kits/taihe/BUILD.gn @@ -92,12 +92,10 @@ template("image_taihe_shared_library") { external_deps = [ "c_utils:utils", - #"drivers_interface_display:libdisplay_commontype_proxy_1.0", "eventhandler:libeventhandler", "graphic_2d:EGL", "graphic_2d:ani_color_space_object_convertor", "graphic_2d:color_manager", - #"graphic_2d:color_space_object_convertor", "graphic_2d:librender_service_base", "graphic_2d:librender_service_client", "graphic_surface:surface", diff --git a/frameworks/kits/taihe/include/transfer_taihe.h b/frameworks/kits/taihe/include/transfer_taihe.h index 824d428dd..83e6b660e 100644 --- a/frameworks/kits/taihe/include/transfer_taihe.h +++ b/frameworks/kits/taihe/include/transfer_taihe.h @@ -45,7 +45,7 @@ ImageCreator ImageCreatorTransferStaticImpl(uintptr_t input); uintptr_t ImageCreatorTransferDynamicImpl(ImageCreator input); PixelMap PixelMapTransferStaticImpl(uintptr_t input); -uintptr_t PixelMapTransferDynamicImpl(PixelMap input); +uintptr_t PixelMapTransferDynamicImpl(weak::PixelMap input); } // namespace ANI::Image #endif // FRAMEWORKS_KITS_TAIHE_INCLUDE_TRANSFER_TAIHE_H \ No newline at end of file diff --git a/frameworks/kits/taihe/src/transfer_taihe.cpp b/frameworks/kits/taihe/src/transfer_taihe.cpp index ebfe385d1..b6e2eede5 100644 --- a/frameworks/kits/taihe/src/transfer_taihe.cpp +++ b/frameworks/kits/taihe/src/transfer_taihe.cpp @@ -506,7 +506,7 @@ PixelMap PixelMapTransferStaticImpl(uintptr_t input) { return make_holder(nativePixelMap); } -uintptr_t PixelMapTransferDynamicImpl(PixelMap input) { +uintptr_t PixelMapTransferDynamicImpl(weak::PixelMap input) { IMAGE_LOGD("[%{public}s] IN", __func__); if (input.is_error()) { IMAGE_LOGE("%{public}s input is error", __func__); -- Gitee From fcac86e6509e895d537a06aadfdc76c17bf11fee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E4=B9=94=E5=BC=82?= Date: Wed, 13 Aug 2025 22:59:27 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20CodeCheck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 陈乔异 --- frameworks/kits/taihe/src/transfer_taihe.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/frameworks/kits/taihe/src/transfer_taihe.cpp b/frameworks/kits/taihe/src/transfer_taihe.cpp index b6e2eede5..556084d2a 100644 --- a/frameworks/kits/taihe/src/transfer_taihe.cpp +++ b/frameworks/kits/taihe/src/transfer_taihe.cpp @@ -480,7 +480,8 @@ uintptr_t ImageCreatorTransferDynamicImpl(ImageCreator input) return ref; } -PixelMap PixelMapTransferStaticImpl(uintptr_t input) { +PixelMap PixelMapTransferStaticImpl(uintptr_t input) +{ IMAGE_LOGD("[%{public}s] IN", __func__); ani_object esValue = reinterpret_cast(input); @@ -506,7 +507,8 @@ PixelMap PixelMapTransferStaticImpl(uintptr_t input) { return make_holder(nativePixelMap); } -uintptr_t PixelMapTransferDynamicImpl(weak::PixelMap input) { +uintptr_t PixelMapTransferDynamicImpl(weak::PixelMap input) +{ IMAGE_LOGD("[%{public}s] IN", __func__); if (input.is_error()) { IMAGE_LOGE("%{public}s input is error", __func__); -- Gitee