1f6603c60Sopenharmony_ci/* 2f6603c60Sopenharmony_ci * Copyright (C) 2024 Huawei Device Co., Ltd. 3f6603c60Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the 'License'); 4f6603c60Sopenharmony_ci * you may not use this file except in compliance with the License. 5f6603c60Sopenharmony_ci * You may obtain a copy of the License at 6f6603c60Sopenharmony_ci * 7f6603c60Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8f6603c60Sopenharmony_ci * 9f6603c60Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10f6603c60Sopenharmony_ci * distributed under the License is distributed on an 'AS IS' BASIS, 11f6603c60Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12f6603c60Sopenharmony_ci * See the License for the specific language governing permissions and 13f6603c60Sopenharmony_ci * limitations under the License. 14f6603c60Sopenharmony_ci */ 15f6603c60Sopenharmony_ci 16f6603c60Sopenharmony_ci#include <dlfcn.h> 17f6603c60Sopenharmony_ci#include <fcntl.h> 18f6603c60Sopenharmony_ci#include <iostream> 19f6603c60Sopenharmony_ci#include <linux/kd.h> 20f6603c60Sopenharmony_ci 21f6603c60Sopenharmony_ci#include <multimedia/image_framework/image/pixelmap_native.h> 22f6603c60Sopenharmony_ci#include <multimedia/image_framework/image/image_packer_native.h> 23f6603c60Sopenharmony_ci#include <multimedia/image_framework/image/image_source_native.h> 24f6603c60Sopenharmony_ci#include "multimedia/image_framework/image_pixel_map_mdk.h" 25f6603c60Sopenharmony_ci#include "napi/native_api.h" 26f6603c60Sopenharmony_ci 27f6603c60Sopenharmony_ci#include <string> 28f6603c60Sopenharmony_ci#include <sys/types.h> 29f6603c60Sopenharmony_ci#include <sys/stat.h> 30f6603c60Sopenharmony_ci#include <unistd.h> 31f6603c60Sopenharmony_ci 32f6603c60Sopenharmony_ci#undef LOG_DOMAIN 33f6603c60Sopenharmony_ci#undef LOG_TAG 34f6603c60Sopenharmony_ci#define LOG_DOMAIN 0x3200 35f6603c60Sopenharmony_ci#define LOG_TAG "MY_TAG" 36f6603c60Sopenharmony_ci 37f6603c60Sopenharmony_cinamespace { 38f6603c60Sopenharmony_ci const uint32_t NUM_0 = 0; 39f6603c60Sopenharmony_ci const uint32_t NUM_1 = 1; 40f6603c60Sopenharmony_ci const uint32_t NUM_2 = 2; 41f6603c60Sopenharmony_ci const uint32_t NUM_3 = 3; 42f6603c60Sopenharmony_ci const uint32_t NUM_4 = 4; 43f6603c60Sopenharmony_ci const uint32_t NUM_5 = 5; 44f6603c60Sopenharmony_ci const uint32_t NUM_6 = 6; 45f6603c60Sopenharmony_ci const uint32_t MAX_BUFFER_SIZE = 512; 46f6603c60Sopenharmony_ci const uint32_t MAX_COLOR_SIZE = 96; 47f6603c60Sopenharmony_ci const uint32_t MAX_QUALITY_SIZE = 98; 48f6603c60Sopenharmony_ci constexpr int8_t ARGB_8888_BYTES = 4; 49f6603c60Sopenharmony_ci} 50f6603c60Sopenharmony_ci 51f6603c60Sopenharmony_ciconst char *LOG_APP = "ImageNDK"; 52f6603c60Sopenharmony_ciconst char* VPE_SO_NAME = "/sys_prod/lib64/VideoProcessingEngine/libaihdr_engine.so"; 53f6603c60Sopenharmony_ci 54f6603c60Sopenharmony_cistatic void OHLog(const char *module, const char *format, ...) 55f6603c60Sopenharmony_ci{ 56f6603c60Sopenharmony_ci 57f6603c60Sopenharmony_ci char buffer[MAX_BUFFER_SIZE]; 58f6603c60Sopenharmony_ci va_list args; 59f6603c60Sopenharmony_ci va_start(args, format); 60f6603c60Sopenharmony_ci vsnprintf(buffer, sizeof(buffer), format, args); 61f6603c60Sopenharmony_ci va_end(args); 62f6603c60Sopenharmony_ci 63f6603c60Sopenharmony_ci printf("[%s] %s\n", module, buffer); 64f6603c60Sopenharmony_ci} 65f6603c60Sopenharmony_ci 66f6603c60Sopenharmony_ci#define OH_LOG_ERROR(module, format, ...) \ 67f6603c60Sopenharmony_ci do { \ 68f6603c60Sopenharmony_ci OHLog(module, format, ##__VA_ARGS__); \ 69f6603c60Sopenharmony_ci } while (false) 70f6603c60Sopenharmony_ci 71f6603c60Sopenharmony_ci 72f6603c60Sopenharmony_ci#define OH_LOG_INFO(module, format, ...) \ 73f6603c60Sopenharmony_ci do { \ 74f6603c60Sopenharmony_ci OHLog(module, format, ##__VA_ARGS__); \ 75f6603c60Sopenharmony_ci } while (false) 76f6603c60Sopenharmony_ci 77f6603c60Sopenharmony_cistatic napi_value getJsResult(napi_env env, int result) 78f6603c60Sopenharmony_ci{ 79f6603c60Sopenharmony_ci napi_value resultNapi = nullptr; 80f6603c60Sopenharmony_ci napi_create_int32(env, result, &resultNapi); 81f6603c60Sopenharmony_ci return resultNapi; 82f6603c60Sopenharmony_ci} 83f6603c60Sopenharmony_ci 84f6603c60Sopenharmony_cistatic napi_value TestInitializationOptionsSetRowStrideNormal(napi_env env, napi_callback_info info) 85f6603c60Sopenharmony_ci{ 86f6603c60Sopenharmony_ci napi_value argValue[NUM_1] = {0}; 87f6603c60Sopenharmony_ci size_t argCount = NUM_1; 88f6603c60Sopenharmony_ci if (napi_get_cb_info(env, info, &argCount, argValue, nullptr, nullptr) != napi_ok || argCount < NUM_1 || 89f6603c60Sopenharmony_ci argValue[NUM_0] == nullptr) { 90f6603c60Sopenharmony_ci OH_LOG_ERROR(LOG_APP, "napi_get_cb_info failed, argCount: %{public}zu.", argCount); 91f6603c60Sopenharmony_ci return getJsResult(env, IMAGE_BAD_PARAMETER); 92f6603c60Sopenharmony_ci } 93f6603c60Sopenharmony_ci int32_t rowStride = 0; 94f6603c60Sopenharmony_ci napi_get_value_int32(env, argValue[0], &rowStride); 95f6603c60Sopenharmony_ci OH_Pixelmap_InitializationOptions *opts = nullptr; 96f6603c60Sopenharmony_ci Image_ErrorCode errCode = OH_PixelmapInitializationOptions_Create(&opts); 97f6603c60Sopenharmony_ci if (errCode != IMAGE_SUCCESS) { 98f6603c60Sopenharmony_ci OH_LOG_ERROR(LOG_APP, "OH_PixelmapInitializationOptions_Create failed, errCode: %{public}d.", errCode); 99f6603c60Sopenharmony_ci return getJsResult(env, errCode); 100f6603c60Sopenharmony_ci } 101f6603c60Sopenharmony_ci errCode = OH_PixelmapInitializationOptions_SetRowStride(opts, rowStride); 102f6603c60Sopenharmony_ci if (errCode != IMAGE_SUCCESS) { 103f6603c60Sopenharmony_ci return getJsResult(env, errCode); 104f6603c60Sopenharmony_ci } 105f6603c60Sopenharmony_ci int32_t getStride = 0; 106f6603c60Sopenharmony_ci errCode = OH_PixelmapInitializationOptions_GetRowStride(opts, &getStride); 107f6603c60Sopenharmony_ci if (errCode != IMAGE_SUCCESS) { 108f6603c60Sopenharmony_ci return getJsResult(env, errCode); 109f6603c60Sopenharmony_ci } 110f6603c60Sopenharmony_ci if (getStride != rowStride) { 111f6603c60Sopenharmony_ci return getJsResult(env, IMAGE_UNKNOWN_ERROR); 112f6603c60Sopenharmony_ci } 113f6603c60Sopenharmony_ci errCode = OH_PixelmapInitializationOptions_Release(opts); 114f6603c60Sopenharmony_ci if (errCode != IMAGE_SUCCESS) { 115f6603c60Sopenharmony_ci OH_LOG_ERROR(LOG_APP, "OH_PixelmapInitializationOptions_Release failed, errCode: %{public}d.", errCode); 116f6603c60Sopenharmony_ci return getJsResult(env, errCode); 117f6603c60Sopenharmony_ci } 118f6603c60Sopenharmony_ci OH_LOG_INFO(LOG_APP, "ImagePixelmapNativeCTest TestInitializationOptionsSetRowStrideNormal success."); 119f6603c60Sopenharmony_ci return getJsResult(env, IMAGE_SUCCESS); 120f6603c60Sopenharmony_ci} 121f6603c60Sopenharmony_ci 122f6603c60Sopenharmony_cistatic napi_value TestCreatePixelMapWithStrideAbnormal(napi_env env, napi_callback_info info) 123f6603c60Sopenharmony_ci{ 124f6603c60Sopenharmony_ci OH_LOG_INFO(LOG_APP, "ImagePixelmapNativeCTest Test OH_Pixelmap_CreatePixelMapWithStride will call."); 125f6603c60Sopenharmony_ci void* buffer = nullptr; 126f6603c60Sopenharmony_ci size_t bufferSize = 0; 127f6603c60Sopenharmony_ci struct OhosPixelMapCreateOps createOps; 128f6603c60Sopenharmony_ci napi_value pixelmap = nullptr; 129f6603c60Sopenharmony_ci size_t rowStride = -1; // set a error row stride 130f6603c60Sopenharmony_ci std::cout << "cout: ImagePixelmapNativeCTest Test will call OH_Pixelmap_CreatePixelMapWithStride." << std::endl; 131f6603c60Sopenharmony_ci int32_t res = OH_PixelMap_CreatePixelMapWithStride(env, createOps, buffer, bufferSize, rowStride, &pixelmap); 132f6603c60Sopenharmony_ci std::cout << "cout: ImagePixelmapNativeCTest Test OH_Pixelmap_CreatePixelMapWithStride." << std::endl; 133f6603c60Sopenharmony_ci OH_LOG_INFO(LOG_APP, "ImagePixelmapNativeCTest Test OH_Pixelmap_CreatePixelMapWithStride, res: %{public}zu.", res); 134f6603c60Sopenharmony_ci if (res != IMAGE_RESULT_GET_DATA_ABNORMAL) { 135f6603c60Sopenharmony_ci return getJsResult(env, res); 136f6603c60Sopenharmony_ci } 137f6603c60Sopenharmony_ci OH_LOG_INFO(LOG_APP, "ImagePixelmapNativeCTest TestCreatePixelMapWithStrideAbnormal success."); 138f6603c60Sopenharmony_ci return getJsResult(env, 0); 139f6603c60Sopenharmony_ci} 140f6603c60Sopenharmony_ci 141f6603c60Sopenharmony_cistatic napi_value TestNativeScaleWithAntiAliasingAbnormal(napi_env env, napi_callback_info info) 142f6603c60Sopenharmony_ci{ 143f6603c60Sopenharmony_ci float x = 1.5; 144f6603c60Sopenharmony_ci float y = 1.5; 145f6603c60Sopenharmony_ci OH_PixelmapNative *pixelmapNative = nullptr; 146f6603c60Sopenharmony_ci Image_ErrorCode errCode = OH_PixelmapNative_ScaleWithAntiAliasing(pixelmapNative, x, y, 147f6603c60Sopenharmony_ci OH_PixelmapNative_AntiAliasing_HIGH); 148f6603c60Sopenharmony_ci if (errCode != IMAGE_BAD_PARAMETER) { 149f6603c60Sopenharmony_ci OH_LOG_ERROR(LOG_APP, "OH_PixelmapNative_ScaleWithAntiAliasing failed, errCode: %{public}d.", errCode); 150f6603c60Sopenharmony_ci return getJsResult(env, errCode); 151f6603c60Sopenharmony_ci } 152f6603c60Sopenharmony_ci OH_LOG_INFO(LOG_APP, "ImagePixelmapNativeCTest TestNativeScaleWithAntiAliasingNormal success."); 153f6603c60Sopenharmony_ci return getJsResult(env, IMAGE_SUCCESS); 154f6603c60Sopenharmony_ci} 155f6603c60Sopenharmony_ci 156f6603c60Sopenharmony_cistatic napi_value TestScaleWithAntiAliasingAbnormal(napi_env env, napi_callback_info info) 157f6603c60Sopenharmony_ci{ 158f6603c60Sopenharmony_ci napi_value result = nullptr; 159f6603c60Sopenharmony_ci napi_value thisVar = nullptr; 160f6603c60Sopenharmony_ci napi_value argValue[NUM_2] = {0}; 161f6603c60Sopenharmony_ci size_t argCount = NUM_2; 162f6603c60Sopenharmony_ci 163f6603c60Sopenharmony_ci napi_get_undefined(env, &result); 164f6603c60Sopenharmony_ci if (napi_get_cb_info(env, info, &argCount, argValue, &thisVar, nullptr) != napi_ok || 165f6603c60Sopenharmony_ci argCount < NUM_2 || argValue[NUM_0] == nullptr || argValue[NUM_1] == nullptr) { 166f6603c60Sopenharmony_ci return result; 167f6603c60Sopenharmony_ci } 168f6603c60Sopenharmony_ci NativePixelMap* native = nullptr; 169f6603c60Sopenharmony_ci double x = 0; 170f6603c60Sopenharmony_ci double y = 0; 171f6603c60Sopenharmony_ci if (napi_get_value_double(env, argValue[NUM_0], &x) != napi_ok || 172f6603c60Sopenharmony_ci napi_get_value_double(env, argValue[NUM_1], &y) != napi_ok) { 173f6603c60Sopenharmony_ci return result; 174f6603c60Sopenharmony_ci } 175f6603c60Sopenharmony_ci 176f6603c60Sopenharmony_ci int32_t errCode = OH_PixelMap_ScaleWithAntiAliasing( 177f6603c60Sopenharmony_ci native, static_cast<float>(x), static_cast<float>(y), OH_PixelMap_AntiAliasing_HIGH); 178f6603c60Sopenharmony_ci if (errCode != IMAGE_RESULT_BAD_PARAMETER) { 179f6603c60Sopenharmony_ci OH_LOG_ERROR(LOG_APP, "OH_Pixelmap_ScaleWithAntiAliasing failed, errCode: %{public}d.", errCode); 180f6603c60Sopenharmony_ci return getJsResult(env, errCode); 181f6603c60Sopenharmony_ci } 182f6603c60Sopenharmony_ci return getJsResult(env, IMAGE_RESULT_SUCCESS); 183f6603c60Sopenharmony_ci} 184f6603c60Sopenharmony_ci 185f6603c60Sopenharmony_cistatic napi_value TestNativeGetNativeBufferAbnormal(napi_env env, napi_callback_info info) 186f6603c60Sopenharmony_ci{ 187f6603c60Sopenharmony_ci OH_PixelmapNative *pixelmapNative = nullptr; 188f6603c60Sopenharmony_ci OH_NativeBuffer **nativeBUffer = nullptr; 189f6603c60Sopenharmony_ci Image_ErrorCode errCode = OH_PixelmapNative_GetNativeBuffer(pixelmapNative, nativeBUffer); 190f6603c60Sopenharmony_ci if (errCode != IMAGE_BAD_PARAMETER) { 191f6603c60Sopenharmony_ci OH_LOG_ERROR(LOG_APP, "OH_PixelmapNative_GetNativeBuffer failed, errCode: %{public}d.", errCode); 192f6603c60Sopenharmony_ci return getJsResult(env, errCode); 193f6603c60Sopenharmony_ci } 194f6603c60Sopenharmony_ci OH_LOG_INFO(LOG_APP, "ImagePixelmapNativeCTest TestNativeGetNativeBufferAbnormal success."); 195f6603c60Sopenharmony_ci return getJsResult(env, IMAGE_SUCCESS); 196f6603c60Sopenharmony_ci} 197f6603c60Sopenharmony_ci 198f6603c60Sopenharmony_cistatic napi_value TestNativeSetMetaDataNull(napi_env env, napi_callback_info info) 199f6603c60Sopenharmony_ci{ 200f6603c60Sopenharmony_ci OH_PixelmapNative *pixelmapNative = nullptr; 201f6603c60Sopenharmony_ci OH_Pixelmap_HdrMetadataValue *value = nullptr; 202f6603c60Sopenharmony_ci Image_ErrorCode errCode = OH_PixelmapNative_SetMetadata(pixelmapNative, HDR_METADATA_TYPE, value); 203f6603c60Sopenharmony_ci if (errCode != IMAGE_BAD_PARAMETER) { 204f6603c60Sopenharmony_ci OH_LOG_ERROR(LOG_APP, "OH_PixelmapNative_SetMetadata failed, errCode: %{public}d.", errCode); 205f6603c60Sopenharmony_ci return getJsResult(env, errCode); 206f6603c60Sopenharmony_ci } 207f6603c60Sopenharmony_ci OH_LOG_INFO(LOG_APP, "ImagePixelmapNativeCTest TestNativeSetMetaDataNull success."); 208f6603c60Sopenharmony_ci return getJsResult(env, IMAGE_SUCCESS); 209f6603c60Sopenharmony_ci} 210f6603c60Sopenharmony_ci 211f6603c60Sopenharmony_cistatic napi_value TestNativeGetMetaDataNull(napi_env env, napi_callback_info info) 212f6603c60Sopenharmony_ci{ 213f6603c60Sopenharmony_ci OH_PixelmapNative *pixelmapNative = nullptr; 214f6603c60Sopenharmony_ci OH_Pixelmap_HdrMetadataValue **value = nullptr; 215f6603c60Sopenharmony_ci Image_ErrorCode errCode = OH_PixelmapNative_GetMetadata(pixelmapNative, HDR_METADATA_TYPE, value); 216f6603c60Sopenharmony_ci if (errCode != IMAGE_BAD_PARAMETER) { 217f6603c60Sopenharmony_ci OH_LOG_ERROR(LOG_APP, "OH_PixelmapNative_GetMetadata failed, errCode: %{public}d.", errCode); 218f6603c60Sopenharmony_ci return getJsResult(env, errCode); 219f6603c60Sopenharmony_ci } 220f6603c60Sopenharmony_ci OH_LOG_INFO(LOG_APP, "ImagePixelmapNativeCTest TestNativeGetMetaDataNull success."); 221f6603c60Sopenharmony_ci return getJsResult(env, IMAGE_SUCCESS); 222f6603c60Sopenharmony_ci} 223f6603c60Sopenharmony_ci 224f6603c60Sopenharmony_cistatic napi_value TestNativeSetMemoryName(napi_env env, napi_callback_info info) 225f6603c60Sopenharmony_ci{ 226f6603c60Sopenharmony_ci OH_PixelmapNative *pixelmap = nullptr; 227f6603c60Sopenharmony_ci char name[] = "testName"; 228f6603c60Sopenharmony_ci size_t len = strlen(name); 229f6603c60Sopenharmony_ci Image_ErrorCode errCode = OH_PixelmapNative_SetMemoryName(pixelmap, name, &len); 230f6603c60Sopenharmony_ci if (errCode != IMAGE_BAD_PARAMETER) { 231f6603c60Sopenharmony_ci OH_LOG_ERROR(LOG_APP, "OH_PixelmapNative_SetMemoryName failed, errCode: %{public}d.", errCode); 232f6603c60Sopenharmony_ci return getJsResult(env, errCode); 233f6603c60Sopenharmony_ci } 234f6603c60Sopenharmony_ci OH_LOG_INFO(LOG_APP, "ImagePixelmapNativeCTest TestNativeSetMemoryName success."); 235f6603c60Sopenharmony_ci return getJsResult(env, IMAGE_SUCCESS); 236f6603c60Sopenharmony_ci} 237f6603c60Sopenharmony_ci 238f6603c60Sopenharmony_cistatic napi_value TestNativeGetArgbPixels(napi_env env, napi_callback_info info) 239f6603c60Sopenharmony_ci{ 240f6603c60Sopenharmony_ci OH_PixelmapNative *pixelMap = nullptr; 241f6603c60Sopenharmony_ci size_t dataSize = ARGB_8888_BYTES; 242f6603c60Sopenharmony_ci uint8_t result[ARGB_8888_BYTES]; 243f6603c60Sopenharmony_ci Image_ErrorCode errCode = OH_PixelmapNative_GetArgbPixels(pixelMap, result, &dataSize); 244f6603c60Sopenharmony_ci if (errCode != IMAGE_BAD_PARAMETER) { 245f6603c60Sopenharmony_ci OH_LOG_ERROR(LOG_APP, "OH_PixelmapNative_GetArgbPixels failed, errCode: %{public}d.", errCode); 246f6603c60Sopenharmony_ci return getJsResult(env, errCode); 247f6603c60Sopenharmony_ci } 248f6603c60Sopenharmony_ci OH_LOG_INFO(LOG_APP, "ImagePixelmapNativeCTest TestNativeGetArgbPixels success."); 249f6603c60Sopenharmony_ci return getJsResult(env, IMAGE_SUCCESS); 250f6603c60Sopenharmony_ci} 251f6603c60Sopenharmony_ci 252f6603c60Sopenharmony_cistatic napi_value TestNativeGetColorSpaceNative(napi_env env, napi_callback_info info) 253f6603c60Sopenharmony_ci{ 254f6603c60Sopenharmony_ci OH_PixelmapNative *pixelmap = nullptr; 255f6603c60Sopenharmony_ci OH_NativeColorSpaceManager *getColorSpaceNative = nullptr; 256f6603c60Sopenharmony_ci Image_ErrorCode errCode = OH_PixelmapNative_GetColorSpaceNative(pixelmap, &getColorSpaceNative); 257f6603c60Sopenharmony_ci if (errCode != IMAGE_BAD_PARAMETER) { 258f6603c60Sopenharmony_ci OH_LOG_ERROR(LOG_APP, "OH_PixelmapNative_GetColorSpaceNative failed, errCode: %{public}d.", errCode); 259f6603c60Sopenharmony_ci return getJsResult(env, errCode); 260f6603c60Sopenharmony_ci } 261f6603c60Sopenharmony_ci OH_LOG_INFO(LOG_APP, "ImagePixelmapNativeCTest TestNativeGetColorSpaceNative success."); 262f6603c60Sopenharmony_ci return getJsResult(env, IMAGE_SUCCESS); 263f6603c60Sopenharmony_ci} 264f6603c60Sopenharmony_ci 265f6603c60Sopenharmony_cistatic napi_value TestNativeSetColorSpaceNative(napi_env env, napi_callback_info info) 266f6603c60Sopenharmony_ci{ 267f6603c60Sopenharmony_ci OH_PixelmapNative *pixelmap = nullptr; 268f6603c60Sopenharmony_ci OH_NativeColorSpaceManager *setColorSpaceNative = nullptr; 269f6603c60Sopenharmony_ci Image_ErrorCode errCode = OH_PixelmapNative_SetColorSpaceNative(pixelmap, setColorSpaceNative); 270f6603c60Sopenharmony_ci if (errCode != IMAGE_BAD_PARAMETER) { 271f6603c60Sopenharmony_ci OH_LOG_ERROR(LOG_APP, "OH_PixelmapNative_SetColorSpaceNative failed, errCode: %{public}d.", errCode); 272f6603c60Sopenharmony_ci return getJsResult(env, errCode); 273f6603c60Sopenharmony_ci } 274f6603c60Sopenharmony_ci OH_LOG_INFO(LOG_APP, "ImagePixelmapNativeCTest TestNativeSetColorSpaceNative success."); 275f6603c60Sopenharmony_ci return getJsResult(env, IMAGE_SUCCESS); 276f6603c60Sopenharmony_ci} 277f6603c60Sopenharmony_ci 278f6603c60Sopenharmony_cistatic napi_value TestNativeSetGetSrcPixelFormat(napi_env env, napi_callback_info info) 279f6603c60Sopenharmony_ci{ 280f6603c60Sopenharmony_ci OH_Pixelmap_InitializationOptions *ops = nullptr; 281f6603c60Sopenharmony_ci OH_PixelmapInitializationOptions_Create(&ops); 282f6603c60Sopenharmony_ci int32_t srcpixelFormat = 0; 283f6603c60Sopenharmony_ci OH_PixelmapInitializationOptions_SetSrcPixelFormat(ops, 1); 284f6603c60Sopenharmony_ci OH_PixelmapInitializationOptions_GetSrcPixelFormat(ops, &srcpixelFormat); 285f6603c60Sopenharmony_ci Image_ErrorCode errCode = OH_PixelmapInitializationOptions_Release(ops); 286f6603c60Sopenharmony_ci if (errCode != IMAGE_BAD_PARAMETER) { 287f6603c60Sopenharmony_ci OH_LOG_ERROR(LOG_APP, "OH_PixelmapNative_SetGetSrcPixelFormat failed, errCode: %{public}d.", errCode); 288f6603c60Sopenharmony_ci return getJsResult(env, errCode); 289f6603c60Sopenharmony_ci } 290f6603c60Sopenharmony_ci OH_LOG_INFO(LOG_APP, "ImagePixelmapNativeCTest TestNativeSetGetSrcPixelFormat success."); 291f6603c60Sopenharmony_ci return getJsResult(env, IMAGE_SUCCESS); 292f6603c60Sopenharmony_ci} 293f6603c60Sopenharmony_ci 294f6603c60Sopenharmony_cistatic napi_value TestNativeCreateEmptyPixelmap(napi_env env, napi_callback_info info) 295f6603c60Sopenharmony_ci{ 296f6603c60Sopenharmony_ci OH_Pixelmap_InitializationOptions *options = nullptr; 297f6603c60Sopenharmony_ci OH_PixelmapNative **pixelmap = nullptr; 298f6603c60Sopenharmony_ci Image_ErrorCode errCode = OH_PixelmapNative_CreateEmptyPixelmap(options, pixelmap); 299f6603c60Sopenharmony_ci if (errCode != IMAGE_BAD_PARAMETER) { 300f6603c60Sopenharmony_ci OH_LOG_ERROR(LOG_APP, "OH_PixelmapNative_CreateEmptyPixelmap failed, errCode: %{public}d.", errCode); 301f6603c60Sopenharmony_ci return getJsResult(env, errCode); 302f6603c60Sopenharmony_ci } 303f6603c60Sopenharmony_ci OH_LOG_INFO(LOG_APP, "ImagePixelmapNativeCTest TestNativeCreateEmptyPixelmap success."); 304f6603c60Sopenharmony_ci return getJsResult(env, IMAGE_SUCCESS); 305f6603c60Sopenharmony_ci} 306f6603c60Sopenharmony_ci 307f6603c60Sopenharmony_cistatic napi_value TestNativeConvertAlphaFormat(napi_env env, napi_callback_info info) 308f6603c60Sopenharmony_ci{ 309f6603c60Sopenharmony_ci OH_PixelmapNative* srcpixelmap = nullptr; 310f6603c60Sopenharmony_ci OH_PixelmapNative* dstpixelmap = nullptr; 311f6603c60Sopenharmony_ci const bool isPremul = false; 312f6603c60Sopenharmony_ci Image_ErrorCode errCode = OH_PixelmapNative_ConvertAlphaFormat(srcpixelmap, dstpixelmap, isPremul); 313f6603c60Sopenharmony_ci if (errCode != IMAGE_BAD_PARAMETER) { 314f6603c60Sopenharmony_ci OH_LOG_ERROR(LOG_APP, "OH_PixelmapNative_ConvertAlphaFormat failed, errCode: %{public}d.", errCode); 315f6603c60Sopenharmony_ci return getJsResult(env, errCode); 316f6603c60Sopenharmony_ci } 317f6603c60Sopenharmony_ci OH_LOG_INFO(LOG_APP, "ImagePixelmapNativeCTest TestNativeConvertAlphaFormat success."); 318f6603c60Sopenharmony_ci return getJsResult(env, IMAGE_SUCCESS); 319f6603c60Sopenharmony_ci} 320f6603c60Sopenharmony_ci 321f6603c60Sopenharmony_cistatic void setInt32NamedProperty(napi_env env, napi_value object, const char *utf8name, uint32_t value) 322f6603c60Sopenharmony_ci{ 323f6603c60Sopenharmony_ci napi_value tmp; 324f6603c60Sopenharmony_ci napi_create_int32(env, value, &tmp); 325f6603c60Sopenharmony_ci napi_set_named_property(env, object, utf8name, tmp); 326f6603c60Sopenharmony_ci} 327f6603c60Sopenharmony_ci 328f6603c60Sopenharmony_cistatic bool CheckVpe() 329f6603c60Sopenharmony_ci{ 330f6603c60Sopenharmony_ci void* handle = dlopen(VPE_SO_NAME, RTLD_LAZY); 331f6603c60Sopenharmony_ci if (handle == nullptr) { 332f6603c60Sopenharmony_ci OH_LOG_INFO(LOG_APP, "CheckVpe failed"); 333f6603c60Sopenharmony_ci return false; 334f6603c60Sopenharmony_ci } 335f6603c60Sopenharmony_ci dlclose(handle); 336f6603c60Sopenharmony_ci handle = nullptr; 337f6603c60Sopenharmony_ci return true; 338f6603c60Sopenharmony_ci} 339f6603c60Sopenharmony_ci 340f6603c60Sopenharmony_ciEXTERN_C_START 341f6603c60Sopenharmony_cistatic napi_value Init(napi_env env, napi_value exports) 342f6603c60Sopenharmony_ci{ 343f6603c60Sopenharmony_ci napi_property_descriptor desc[] = { 344f6603c60Sopenharmony_ci {"testCreatePixelMapWithStrideAbnormal", nullptr, TestCreatePixelMapWithStrideAbnormal, nullptr, nullptr, 345f6603c60Sopenharmony_ci nullptr, napi_default, nullptr}, 346f6603c60Sopenharmony_ci {"testInitializationOptionsSetRowStrideNormal", nullptr, TestInitializationOptionsSetRowStrideNormal, nullptr, 347f6603c60Sopenharmony_ci nullptr, nullptr, napi_default, nullptr}, 348f6603c60Sopenharmony_ci {"testNativeScaleWithAntiAliasingAbnormal", nullptr, TestNativeScaleWithAntiAliasingAbnormal, nullptr, nullptr, 349f6603c60Sopenharmony_ci nullptr, napi_default, nullptr}, 350f6603c60Sopenharmony_ci {"testScaleWithAntiAliasingAbnormal", nullptr, TestScaleWithAntiAliasingAbnormal, nullptr, nullptr, 351f6603c60Sopenharmony_ci nullptr, napi_default, nullptr}, 352f6603c60Sopenharmony_ci {"testNativeGetNativeBufferAbnormal", nullptr, TestNativeGetNativeBufferAbnormal, nullptr, nullptr, 353f6603c60Sopenharmony_ci nullptr, napi_default, nullptr}, 354f6603c60Sopenharmony_ci {"testNativeSetMetaDataNull", nullptr, TestNativeSetMetaDataNull, nullptr, nullptr, 355f6603c60Sopenharmony_ci nullptr, napi_default, nullptr}, 356f6603c60Sopenharmony_ci {"testNativeSetMemoryName", nullptr, TestNativeSetMemoryName, nullptr, nullptr, 357f6603c60Sopenharmony_ci nullptr, napi_default, nullptr}, 358f6603c60Sopenharmony_ci {"testNativeGetArgbPixels", nullptr, TestNativeGetArgbPixels, nullptr, nullptr, 359f6603c60Sopenharmony_ci nullptr, napi_default, nullptr}, 360f6603c60Sopenharmony_ci {"testNativeGetColorSpaceNative", nullptr, TestNativeGetColorSpaceNative, nullptr, nullptr, 361f6603c60Sopenharmony_ci nullptr, napi_default, nullptr}, 362f6603c60Sopenharmony_ci {"testNativeSetColorSpaceNative", nullptr, TestNativeSetColorSpaceNative, nullptr, nullptr, 363f6603c60Sopenharmony_ci nullptr, napi_default, nullptr}, 364f6603c60Sopenharmony_ci {"testNativeGetMetaDataNull", nullptr, TestNativeGetMetaDataNull, nullptr, nullptr, 365f6603c60Sopenharmony_ci nullptr, napi_default, nullptr}, 366f6603c60Sopenharmony_ci {"testNativeSetGetSrcPixelFormat", nullptr, TestNativeSetGetSrcPixelFormat, nullptr, nullptr, 367f6603c60Sopenharmony_ci nullptr, napi_default, nullptr}, 368f6603c60Sopenharmony_ci {"testNativeCreateEmptyPixelmap", nullptr, TestNativeCreateEmptyPixelmap, nullptr, 369f6603c60Sopenharmony_ci nullptr, nullptr, napi_default, nullptr}, 370f6603c60Sopenharmony_ci {"testNativeConvertAlphaFormat", nullptr, TestNativeConvertAlphaFormat, nullptr, nullptr, 371f6603c60Sopenharmony_ci nullptr, napi_default, nullptr}, 372f6603c60Sopenharmony_ci }; 373f6603c60Sopenharmony_ci napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc); 374f6603c60Sopenharmony_ci return exports; 375f6603c60Sopenharmony_ci} 376f6603c60Sopenharmony_ciEXTERN_C_END 377f6603c60Sopenharmony_ci 378f6603c60Sopenharmony_cistatic napi_module demoModule = { 379f6603c60Sopenharmony_ci .nm_version = 1, 380f6603c60Sopenharmony_ci .nm_flags = 0, 381f6603c60Sopenharmony_ci .nm_filename = nullptr, 382f6603c60Sopenharmony_ci .nm_register_func = Init, 383f6603c60Sopenharmony_ci .nm_modname = "entry", 384f6603c60Sopenharmony_ci .nm_priv = ((void *)0), 385f6603c60Sopenharmony_ci .reserved = {0}, 386f6603c60Sopenharmony_ci}; 387f6603c60Sopenharmony_ci 388f6603c60Sopenharmony_ciextern "C" __attribute__((constructor)) void RegisterEntryModule(void) { napi_module_register(&demoModule); }