1/* 2 * Copyright (c) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#include "napi/native_api.h" 17#include <GLES2/gl2.h> 18#include <bits/alltypes.h> 19#include <cstddef> 20#include <native_buffer/buffer_common.h> 21#include <native_buffer/native_buffer.h> 22#include <climits> 23#include <native_image/native_image.h> 24#include <sys/types.h> 25#include <vector> 26 27#define SUCCESS 0 28#define FAIL (-1) 29#define NUMBER_MINUS_1 (-1) 30#define NUMBER_0 0 31#define NUMBER_1 1 32#define NUMBER_2 2 33#define NUMBER_3 3 34#define NUMBER_4 4 35#define NUMBER_5 5 36#define NUMBER_6 6 37#define NUMBER_7 7 38#define NUMBER_8 8 39#define NUMBER_9 9 40#define NUMBER_10 10 41#define NUMBER_11 11 42#define NUMBER_12 12 43#define NUMBER_13 13 44#define NUMBER_14 14 45#define NUMBER_15 15 46#define NUMBER_16 16 47#define NUMBER_17 17 48#define NUMBER_18 18 49#define NUMBER_19 19 50#define NUMBER_20 20 51#define NUMBER_32 32 52#define NUMBER_50 50 53#define NUMBER_60 60 54#define NUMBER_500 500 55#define NUMBER_1000 1000 56#define NUMBER_1001 1001 57#define NUMBER_1002 1002 58#define NUMBER_2001 2001 59#define NUMBER_2002 2002 60#define NUMBER_2999 2999 61#define NUMBER_3000 3000 62#define NUMBER_3001 3001 63#define NUMBER_3002 3002 64#define NUMBER_3003 3003 65#define NUMBER_4001 4001 66#define NUMBER_4002 4002 67#define NUMBER_4003 4003 68#define NUMBER_5001 5001 69#define NUMBER_5002 5002 70#define NUMBER_5003 5003 71#define NUMBER_6001 6001 72#define NUMBER_6002 6002 73#define NUMBER_6003 6003 74#define NUMBER_7001 7001 75#define NUMBER_7002 7002 76#define NUMBER_8001 8001 77#define NUMBER_8002 8002 78#define NUMBER_8003 8003 79#define NUMBER_10000 10000 80#define NUMBER_100000000 100000000 81#define NUMBER_40001000 40001000 82#define NUMBER_50002000 50002000 83#define NUMBER_50007000 50007000 84#define NUMBER_50102000 50102000 85static OH_NativeBuffer *getBuffer() 86{ 87 OH_NativeBuffer_Config config = { 88 .width = 0x100, 89 .height = 0x100, 90 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 91 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 92 }; 93 OH_NativeBuffer *buffer = OH_NativeBuffer_Alloc(&config); 94 return buffer; 95} 96static napi_value OHNativeBufferAlloc(napi_env env, napi_callback_info info) 97{ 98 99 napi_value result = nullptr; 100 int backInfo = FAIL; 101 OH_NativeBuffer *buffer = getBuffer(); 102 if (buffer != nullptr) { 103 backInfo = SUCCESS; 104 } 105 napi_create_int32(env, backInfo, &result); 106 OH_NativeBuffer_Unreference(buffer); 107 return result; 108} 109static napi_value OHNativeBufferAllocAbnormal(napi_env env, napi_callback_info info) 110{ 111 napi_value result = nullptr; 112 int backInfo = FAIL; 113 OH_NativeBuffer *buffer = OH_NativeBuffer_Alloc(nullptr); 114 115 if (buffer != nullptr) { 116 backInfo = SUCCESS; 117 } 118 napi_create_int32(env, backInfo, &result); 119 OH_NativeBuffer_Unreference(buffer); 120 return result; 121} 122static napi_value OHNativeBufferReference(napi_env env, napi_callback_info info) 123{ 124 int backInfo = FAIL; 125 OH_NativeBuffer *buffer = getBuffer(); 126 if (buffer != nullptr) { 127 int32_t ret = OH_NativeBuffer_Reference(buffer); 128 backInfo = ret; 129 } 130 napi_value result = nullptr; 131 napi_create_int32(env, backInfo, &result); 132 OH_NativeBuffer_Unreference(buffer); 133 return result; 134} 135static napi_value OHNativeBufferReferenceAbnormal(napi_env env, napi_callback_info info) 136{ 137 int backInfo = FAIL; 138 int32_t ret = OH_NativeBuffer_Reference(nullptr); 139 if (ret == 0) { 140 backInfo = SUCCESS; 141 } 142 napi_value result = nullptr; 143 napi_create_int32(env, backInfo, &result); 144 return result; 145} 146static napi_value OHNativeBufferUnreference(napi_env env, napi_callback_info info) 147{ 148 int backInfo = FAIL; 149 OH_NativeBuffer *buffer = getBuffer(); 150 151 if (buffer != nullptr) { 152 int32_t ret = OH_NativeBuffer_Unreference(buffer); 153 backInfo = ret; 154 } 155 napi_value result = nullptr; 156 napi_create_int32(env, backInfo, &result); 157 OH_NativeBuffer_Unreference(buffer); 158 return result; 159} 160 161static napi_value OHNativeBufferUnreferenceAbnormal(napi_env env, napi_callback_info info) 162{ 163 int backInfo = FAIL; 164 165 int32_t ret = OH_NativeBuffer_Unreference(nullptr); 166 if (ret == 0) { 167 backInfo = SUCCESS; 168 } 169 napi_value result = nullptr; 170 napi_create_int32(env, backInfo, &result); 171 return result; 172} 173 174static napi_value OHNativeBufferGetConfig(napi_env env, napi_callback_info info) 175{ 176 int backInfo = FAIL; 177 OH_NativeBuffer *buffer = getBuffer(); 178 if (buffer != nullptr) { 179 OH_NativeBuffer_Config checkConfig = {}; 180 checkConfig.width = 0x0; 181 checkConfig.height = 0x0; 182 checkConfig.format = 0x0; 183 checkConfig.usage = 0x0; 184 OH_NativeBuffer_GetConfig(buffer, &checkConfig); 185 if (&checkConfig != nullptr) { 186 backInfo = SUCCESS; 187 } 188 } 189 napi_value result = nullptr; 190 napi_create_int32(env, backInfo, &result); 191 OH_NativeBuffer_Unreference(buffer); 192 return result; 193} 194 195static napi_value OHNativeBufferMap(napi_env env, napi_callback_info info) 196{ 197 int backInfo = FAIL; 198 OH_NativeBuffer *buffer = getBuffer(); 199 200 if (buffer != nullptr) { 201 void *virAddr = nullptr; 202 int32_t ret = OH_NativeBuffer_Map(buffer, &virAddr); 203 backInfo = ret; 204 } 205 napi_value result = nullptr; 206 napi_create_int32(env, backInfo, &result); 207 OH_NativeBuffer_Unreference(buffer); 208 return result; 209} 210static napi_value OHNativeBufferMapAbnormal(napi_env env, napi_callback_info info) 211{ 212 int backInfo = FAIL; 213 void *virAddr = nullptr; 214 int32_t ret = OH_NativeBuffer_Map(nullptr, &virAddr); 215 if (ret == 0) { 216 backInfo = SUCCESS; 217 } 218 napi_value result = nullptr; 219 napi_create_int32(env, backInfo, &result); 220 return result; 221} 222static napi_value OHNativeBufferUnmap(napi_env env, napi_callback_info info) 223{ 224 int backInfo = FAIL; 225 OH_NativeBuffer *buffer = getBuffer(); 226 227 if (buffer != nullptr) { 228 int32_t ret = OH_NativeBuffer_Unmap(buffer); 229 backInfo = ret; 230 } 231 napi_value result = nullptr; 232 napi_create_int32(env, backInfo, &result); 233 OH_NativeBuffer_Unreference(buffer); 234 return result; 235} 236static napi_value OHNativeBufferUnmapAbnormal(napi_env env, napi_callback_info info) 237{ 238 int backInfo = FAIL; 239 int32_t ret = OH_NativeBuffer_Unmap(nullptr); 240 if (ret == 0) { 241 backInfo = SUCCESS; 242 } 243 napi_value result = nullptr; 244 napi_create_int32(env, backInfo, &result); 245 return result; 246} 247static napi_value OHNativeBufferGetSeqNum(napi_env env, napi_callback_info info) 248{ 249 int backInfo = FAIL; 250 OH_NativeBuffer *buffer = getBuffer(); 251 252 if (buffer != nullptr) { 253 uint32_t id = OH_NativeBuffer_GetSeqNum(buffer); 254 if (id > 0) { 255 backInfo = SUCCESS; 256 } 257 } 258 napi_value result = nullptr; 259 napi_create_int32(env, backInfo, &result); 260 OH_NativeBuffer_Unreference(buffer); 261 return result; 262} 263static napi_value OHNativeBufferGetSeqNumAbnormal(napi_env env, napi_callback_info info) 264{ 265 int backInfo = FAIL; 266 uint32_t id = OH_NativeBuffer_GetSeqNum(nullptr); 267 if (id > 0 && id != UINT_MAX) { 268 backInfo = SUCCESS; 269 } 270 napi_value result = nullptr; 271 napi_create_int32(env, backInfo, &result); 272 return result; 273} 274 275static napi_value OHNativeBufferAllocNullptr(napi_env env, napi_callback_info info) 276{ 277 napi_value result = nullptr; 278 OH_NativeBuffer *ptr = OH_NativeBuffer_Alloc(nullptr); 279 if (ptr == nullptr) { 280 napi_create_int32(env, FAIL, &result); 281 } else { 282 napi_create_int32(env, SUCCESS, &result); 283 } 284 return result; 285} 286void nativeBufferConfigArrTest(napi_env &env, napi_value &result, 287 std::vector<OH_NativeBuffer_Config> &nativeBufferConfigArr) 288{ 289 for (uint32_t index = 0; index < NUMBER_7; index++) { 290 OH_NativeBuffer *ptr = OH_NativeBuffer_Alloc(&nativeBufferConfigArr[index]); 291 napi_value resultIndex = nullptr; 292 if (ptr == NULL) { 293 napi_create_int32(env, FAIL, &resultIndex); 294 } else { 295 napi_create_int32(env, SUCCESS, &result); 296 } 297 napi_set_element(env, result, index, resultIndex); 298 } 299} 300static napi_value OHNativeBufferAllocNormal(napi_env env, napi_callback_info info) 301{ 302 napi_value result = nullptr; 303 napi_create_array_with_length(env, NUMBER_7, &result); 304 std::vector<OH_NativeBuffer_Config> nativeBufferConfigArr = { 305 { 306 .width = 0x100, 307 .height = 0x100, 308 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 309 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 310 }, { 311 .width = 0x7FFFFFFF, 312 .height = 0x100, 313 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_5658, 314 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 315 }, { 316 .width = 0, 317 .height = 0x100, 318 .format = NATIVEBUFFER_PIXEL_FMT_BGRA_5551, 319 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 320 }, { 321 .width = 0x7FFFFFFE, 322 .height = 0x100, 323 .format = NATIVEBUFFER_PIXEL_FMT_YUV_422_I, 324 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 325 .stride = 0, 326 }, { 327 .width = 0x100, 328 .height = 0x7FFFFFFF, 329 .format = NATIVEBUFFER_PIXEL_FMT_CLUT4, 330 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 331 .stride = 1, 332 }, { 333 .width = 0x100, 334 .height = 0, 335 .format = NATIVEBUFFER_PIXEL_FMT_BGRA_8888, 336 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 337 .stride = 0x7FFFFFFF, 338 }, { 339 .width = 0x100, 340 .height = 0x7FFFFFFE, 341 .format = NATIVEBUFFER_PIXEL_FMT_YCBCR_420_SP, 342 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 343 } 344 }; 345 346 nativeBufferConfigArrTest(env, result, nativeBufferConfigArr); 347 return result; 348} 349static napi_value OHNativeBufferAllocAbormal(napi_env env, napi_callback_info info) 350{ 351 napi_value result = nullptr; 352 napi_create_array_with_length(env, NUMBER_7, &result); 353 std::vector<OH_NativeBuffer_Config> nativeBufferConfigArr = { 354 { 355 .width = - 0x100, 356 .height = 0x100, 357 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 358 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 359 }, { 360 .width = 0x100, 361 .height = 0x100, 362 .format = NATIVEBUFFER_PIXEL_FMT_BGRA_5551, 363 .usage = -1, 364 }, { 365 .width = 0x100, 366 .height = 0x100, 367 .format = -1, 368 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 369 }, { 370 .width = 0x100, 371 .height = -0x100, 372 .format = NATIVEBUFFER_PIXEL_FMT_CLUT4, 373 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 374 }, { 375 .width = 0x100, 376 .height = 0x100, 377 .format = NATIVEBUFFER_PIXEL_FMT_YCBCR_420_SP, 378 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 379 .stride = -100, 380 } 381 }; 382 383 for (uint32_t index = 0; index < nativeBufferConfigArr.size(); index++) { 384 OH_NativeBuffer *ptr = OH_NativeBuffer_Alloc(&nativeBufferConfigArr[index]); 385 napi_value resultIndex = nullptr; 386 if (ptr == NULL) { 387 napi_create_int32(env, FAIL, &resultIndex); 388 } else { 389 napi_create_int32(env, SUCCESS, &result); 390 } 391 napi_set_element(env, result, index, resultIndex); 392 } 393 return result; 394} 395 396static napi_value OHNativeBufferAllocMuch(napi_env env, napi_callback_info info) 397{ 398 napi_value result = nullptr; 399 OH_NativeBuffer_Config nativeBufferConfig = { 400 .width = 0x100, 401 .height = 0x100, 402 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 403 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 404 }; 405 OH_NativeBuffer *bufferArr[NUMBER_500]; 406 for (uint32_t index = 0; index < NUMBER_500; index++) { 407 bufferArr[index] = OH_NativeBuffer_Alloc(&nativeBufferConfig); 408 if (bufferArr[index] == nullptr) { 409 napi_create_int32(env, FAIL, &result); 410 break; 411 } else { 412 napi_create_int32(env, SUCCESS, &result); 413 } 414 } 415 for (uint32_t index = 0; index < NUMBER_500; index++) { 416 OH_NativeBuffer_Unreference(bufferArr[index]); 417 } 418 return result; 419} 420 421static napi_value OHNativeBufferFromNativeWindowBufferNullptr(napi_env env, napi_callback_info info) 422{ 423 napi_value result = nullptr; 424 napi_create_array_with_length(env, NUMBER_2, &result); 425 napi_value result1 = nullptr; 426 OH_NativeBuffer_Config nativeBufferConfig = { 427 .width = 0x100, 428 .height = 0x100, 429 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 430 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 431 }; 432 OH_NativeBuffer *buffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 433 int32_t ret = OH_NativeBuffer_FromNativeWindowBuffer(nullptr, &buffer); 434 napi_create_int32(env, ret, &result1); 435 napi_set_element(env, result, NUMBER_0, result1); 436 OHNativeWindowBuffer *nativeWindowBuffer = nullptr; 437 GLuint textureId; 438 glGenTextures(1, &textureId); 439 auto _image = OH_NativeImage_Create(textureId, GL_TEXTURE_2D); 440 OHNativeWindow *nativeWindow = OH_NativeImage_AcquireNativeWindow(_image); 441 int code = SET_BUFFER_GEOMETRY; 442 int32_t width_ = 0x100; 443 int32_t height_ = 0x100; 444 ret = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, code, width_, height_); 445 code = SET_USAGE; 446 int32_t usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA; 447 ret = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, code, usage); 448 int fenceFd = NUMBER_MINUS_1; 449 int ret0 = OH_NativeWindow_NativeWindowRequestBuffer(nativeWindow, &nativeWindowBuffer, &fenceFd); 450 451 ret = OH_NativeBuffer_FromNativeWindowBuffer(nativeWindowBuffer, nullptr); 452 napi_create_int32(env, ret, &result1); 453 napi_set_element(env, result, NUMBER_1, result1); 454 OH_NativeBuffer_Unreference(buffer); 455 OH_NativeWindow_DestroyNativeWindow(nativeWindow); 456 OH_NativeImage_Destroy(&_image); 457 return result; 458} 459 460// 失败 461static napi_value OHNativeBufferFromNativeWindowBufferNormal(napi_env env, napi_callback_info info) 462{ 463 napi_value result = nullptr; 464 napi_create_array_with_length(env, NUMBER_3, &result); 465 napi_value result1 = nullptr; 466 OH_NativeBuffer *buffer = nullptr; 467 OHNativeWindowBuffer *nativeWindowBuffer = nullptr; 468 469 GLuint textureId; 470 glGenTextures(1, &textureId); 471 auto _image = OH_NativeImage_Create(textureId, GL_TEXTURE_2D); 472 OHNativeWindow *nativeWindow = OH_NativeImage_AcquireNativeWindow(_image); 473 int code = SET_BUFFER_GEOMETRY; 474 int32_t width_ = 0x100; 475 int32_t height_ = 0x100; 476 int32_t ret = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, code, width_, height_); 477 code = SET_USAGE; 478 int32_t usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA; 479 ret = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, code, usage); 480 int fenceFd = NUMBER_MINUS_1; 481 int ret0 = OH_NativeWindow_NativeWindowRequestBuffer(nativeWindow, &nativeWindowBuffer, &fenceFd); 482 ret = OH_NativeBuffer_FromNativeWindowBuffer(nativeWindowBuffer, &buffer); 483 napi_create_int32(env, ret, &result1); 484 napi_set_element(env, result, NUMBER_0, result1); 485 486 // nativeWindowBuffer和nativeBuffer是否一致 一致返回success,失败返回fail 487 if (buffer != nullptr) { 488 napi_create_int32(env, SUCCESS, &result1); 489 } else { 490 napi_create_int32(env, FAIL, &result1); 491 } 492 napi_set_element(env, result, NUMBER_1, result1); 493 494 ret = OH_NativeBuffer_FromNativeWindowBuffer(nativeWindowBuffer, &buffer); 495 napi_create_int32(env, ret, &result1); 496 napi_set_element(env, result, NUMBER_2, result1); 497 OH_NativeBuffer_Unreference(buffer); 498 OH_NativeWindow_DestroyNativeWindow(nativeWindow); 499 OH_NativeImage_Destroy(&_image); 500 return result; 501} 502 503static napi_value OHNativeBufferGetConfigNullptr(napi_env env, napi_callback_info info) 504{ 505 napi_value result = nullptr; 506 507 OH_NativeBuffer_Config *nativeBufferConfig = nullptr; 508 OH_NativeBuffer_GetConfig(nullptr, nativeBufferConfig); 509 // 怎么做判断? 510 if (nativeBufferConfig != nullptr) { 511 napi_create_int32(env, SUCCESS, &result); 512 } else { 513 napi_create_int32(env, FAIL, &result); 514 } 515 516 return result; 517} 518 519static napi_value OHNativeBufferGetConfigNormal(napi_env env, napi_callback_info info) 520{ 521 napi_value result = nullptr; 522 OH_NativeBuffer_Config nativeBufferConfig = { 523 .width = 0x100, 524 .height = 0x100, 525 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 526 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 527 }; 528 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 529 OH_NativeBuffer_Config nativeBufferConfig2; 530 OH_NativeBuffer_GetConfig(nativeBuffer, &nativeBufferConfig2); 531 532 // 手动比较 nativeBufferConfig 和 nativeBufferConfig2 的成员 533 bool areEqual = true; 534 if (nativeBufferConfig.width != nativeBufferConfig2.width) { 535 areEqual = false; 536 } else if (nativeBufferConfig.height != nativeBufferConfig2.height) { 537 areEqual = false; 538 } else if (nativeBufferConfig.format != nativeBufferConfig2.format) { 539 areEqual = false; 540 } else if (nativeBufferConfig.usage != nativeBufferConfig2.usage) { 541 areEqual = false; 542 } 543 544 if (areEqual) { 545 napi_create_int32(env, SUCCESS, &result); 546 } else { 547 napi_create_int32(env, FAIL, &result); 548 } 549 OH_NativeBuffer_Unreference(nativeBuffer); 550 return result; 551} 552 553static napi_value OHNativeBufferGetSeqNumNullptr(napi_env env, napi_callback_info info) 554{ 555 napi_value result = nullptr; 556 uint32_t ret = OH_NativeBuffer_GetSeqNum(nullptr); 557 napi_create_int32(env, ret, &result); 558 return result; 559} 560 561static napi_value OHNativeBufferGetSeqNumNormal(napi_env env, napi_callback_info info) 562{ 563 napi_value result = nullptr; 564 OH_NativeBuffer_Config nativeBufferConfig = { 565 .width = 0x100, 566 .height = 0x100, 567 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 568 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 569 }; 570 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 571 uint32_t ret = 0; 572 ret = OH_NativeBuffer_GetSeqNum(nativeBuffer); 573 if (ret > 0 && ret != UINT_MAX) { 574 napi_create_int32(env, SUCCESS, &result); 575 } else { 576 napi_create_int32(env, FAIL, &result); 577 } 578 OH_NativeBuffer_Unreference(nativeBuffer); 579 return result; 580} 581static napi_value OHNativeBuffeMapNullptr(napi_env env, napi_callback_info info) 582{ 583 napi_value result = nullptr; 584 uint32_t ret = OH_NativeBuffer_Map(nullptr, nullptr); 585 napi_create_int32(env, ret, &result); 586 return result; 587} 588static napi_value OHNativeBufferMapNormal(napi_env env, napi_callback_info info) 589{ 590 napi_value result = nullptr; 591 // 592 OH_NativeBuffer_Config nativeBufferConfig = { 593 .width = 0x100, 594 .height = 0x100, 595 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 596 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 597 }; 598 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 599 void *virAddr = nullptr; 600 uint32_t ret = OH_NativeBuffer_Map(nativeBuffer, &virAddr); 601 if (virAddr != nullptr) { 602 napi_create_int32(env, SUCCESS, &result); 603 } else { 604 napi_create_int32(env, FAIL, &result); 605 } 606 OH_NativeBuffer_Unreference(nativeBuffer); 607 return result; 608} 609static napi_value OHNativeBuffeMapPlanesNullptr(napi_env env, napi_callback_info info) 610{ 611 napi_value result = nullptr; 612 napi_value result1 = nullptr; 613 napi_create_array_with_length(env, NUMBER_2, &result); 614 OH_NativeBuffer_Config nativeBufferConfig = { 615 .width = 0x100, 616 .height = 0x100, 617 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 618 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 619 }; 620 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 621 void *virAddr = nullptr; 622 OH_NativeBuffer_Planes outPlanes; 623 int32_t ret = OH_NativeBuffer_MapPlanes(nullptr, &virAddr, &outPlanes); 624 napi_create_int32(env, ret, &result1); 625 napi_set_element(env, result, NUMBER_0, result1); 626 ret = OH_NativeBuffer_MapPlanes(nativeBuffer, &virAddr, nullptr); 627 napi_create_int32(env, ret, &result1); 628 napi_set_element(env, result, NUMBER_1, result1); 629 OH_NativeBuffer_Unreference(nativeBuffer); 630 return result; 631} 632static napi_value OHNativeBufferMapPlanesNormal(napi_env env, napi_callback_info info) 633{ 634 napi_value result = nullptr; 635 napi_value result1 = nullptr; 636 napi_create_array_with_length(env, NUMBER_3, &result); 637 OH_NativeBuffer_Config nativeBufferConfig = { 638 .width = 0x100, 639 .height = 0x100, 640 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 641 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 642 }; 643 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 644 void *virAddr = nullptr; 645 OH_NativeBuffer_Planes outPlanes; 646 int32_t ret = OH_NativeBuffer_MapPlanes(nativeBuffer, &virAddr, &outPlanes); 647 if (ret != NUMBER_50007000) { 648 napi_create_int32(env, NUMBER_1001, &result); 649 return result; 650 } 651 OH_NativeBuffer_Unreference(nativeBuffer); 652 return result; 653} 654static napi_value OHNativeBuffeReferenceNullptr(napi_env env, napi_callback_info info) 655{ 656 napi_value result = nullptr; 657 int32_t ret = OH_NativeBuffer_Reference(nullptr); 658 napi_create_int32(env, ret, &result); 659 return result; 660} 661static napi_value OHNativeBuffeUnreferenceNullptr(napi_env env, napi_callback_info info) 662{ 663 napi_value result = nullptr; 664 int32_t ret = OH_NativeBuffer_Unreference(nullptr); 665 napi_create_int32(env, ret, &result); 666 return result; 667} 668static napi_value OHNativeBufferReferenceNormal(napi_env env, napi_callback_info info) 669{ 670 napi_value result = nullptr; 671 OH_NativeBuffer_Config nativeBufferConfig = { 672 .width = 0x100, 673 .height = 0x100, 674 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 675 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 676 }; 677 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 678 int32_t ret = OH_NativeBuffer_Reference(nativeBuffer); 679 napi_create_int32(env, ret, &result); 680 OH_NativeBuffer_Unreference(nativeBuffer); 681 return result; 682} 683static napi_value OHNativeBufferReferenceMax(napi_env env, napi_callback_info info) 684{ 685 napi_value result = nullptr; 686 OH_NativeBuffer_Config nativeBufferConfig = { 687 .width = 0x100, 688 .height = 0x100, 689 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 690 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 691 }; 692 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 693 for (uint32_t index = 0; index < NUMBER_1000; index++) { 694 int32_t ret = OH_NativeBuffer_Reference(nativeBuffer); 695 napi_create_int32(env, ret, &result); 696 if (ret != 0) { 697 break; 698 } 699 } 700 OH_NativeBuffer_Unreference(nativeBuffer); 701 return result; 702} 703static napi_value OHNativeBufferUnreferenceNormal(napi_env env, napi_callback_info info) 704{ 705 napi_value result = nullptr; 706 OH_NativeBuffer_Config nativeBufferConfig = { 707 .width = 0x100, 708 .height = 0x100, 709 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 710 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 711 }; 712 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 713 int32_t ret = OH_NativeBuffer_Unreference(nativeBuffer); 714 napi_create_int32(env, ret, &result); 715 OH_NativeBuffer_Unreference(nativeBuffer); 716 return result; 717} 718static napi_value OHNativeBuffeUnmapNullptr(napi_env env, napi_callback_info info) 719{ 720 napi_value result = nullptr; 721 int32_t ret = OH_NativeBuffer_Unmap(nullptr); 722 napi_create_int32(env, ret, &result); 723 return result; 724} 725static napi_value OHNativeBufferUnmapNormal(napi_env env, napi_callback_info info) 726{ 727 napi_value result = nullptr; 728 OH_NativeBuffer_Config nativeBufferConfig = { 729 .width = 0x100, 730 .height = 0x100, 731 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 732 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 733 }; 734 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 735 int32_t ret = OH_NativeBuffer_Unmap(nativeBuffer); 736 napi_create_int32(env, ret, &result); 737 OH_NativeBuffer_Unreference(nativeBuffer); 738 return result; 739} 740static napi_value OHNativeBufferGetColorSpaceFirst(napi_env env, napi_callback_info info) 741{ 742 napi_value result = nullptr; 743 OH_NativeBuffer_Config nativeBufferConfig = { 744 .width = 0x100, 745 .height = 0x100, 746 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 747 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 748 }; 749 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 750 OH_NativeBuffer_ColorSpace colorSpace; 751 int32_t ret = OH_NativeBuffer_GetColorSpace(nativeBuffer, &colorSpace); 752 if (ret != NUMBER_50002000 && ret != NUMBER_50102000) { 753 napi_create_int32(env, NUMBER_1001, &result); 754 return result; 755 } 756 OH_NativeBuffer_Unreference(nativeBuffer); 757 napi_create_int32(env, SUCCESS, &result); 758 return result; 759} 760static napi_value OHNativeBufferSetColorSpaceNormal(napi_env env, napi_callback_info info) 761{ 762 napi_value result = nullptr; 763 OH_NativeBuffer_Config nativeBufferConfig = { 764 .width = 0x100, 765 .height = 0x100, 766 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 767 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 768 }; 769 for (uint32_t index = 0; index < sizeof(OH_NativeBuffer_ColorSpace); index++) { 770 OH_NativeBuffer_ColorSpace colorSpace1 = static_cast<OH_NativeBuffer_ColorSpace>(index); 771 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 772 int32_t ret = OH_NativeBuffer_SetColorSpace(nativeBuffer, colorSpace1); 773 if (ret != 0) { 774 napi_create_int32(env, NUMBER_1000 * index + NUMBER_1, &result); 775 return result; 776 } 777 OH_NativeBuffer_ColorSpace colorspace; 778 ret = OH_NativeBuffer_GetColorSpace(nativeBuffer, &colorspace); 779 if (ret != 0) { 780 napi_create_int32(env, NUMBER_1000 * index + NUMBER_2, &result); 781 return result; 782 } 783 if (colorspace != colorSpace1) { 784 napi_create_int32(env, NUMBER_1000 * index + NUMBER_3, &result); 785 return result; 786 } 787 OH_NativeBuffer_Unreference(nativeBuffer); 788 } 789 napi_create_int32(env, SUCCESS, &result); 790 return result; 791} 792 793static napi_value OHNativeBufferSetColorSpaceNullptr(napi_env env, napi_callback_info info) 794{ 795 napi_value result = nullptr; 796 OH_NativeBuffer_ColorSpace colorSpace = OH_NativeBuffer_ColorSpace::OH_COLORSPACE_ADOBERGB_LIMIT; 797 int32_t ret = OH_NativeBuffer_SetColorSpace(nullptr, colorSpace); 798 napi_create_int32(env, ret, &result); 799 return result; 800} 801static napi_value OHNativeBufferSetColorSpaceAbnormal(napi_env env, napi_callback_info info) 802{ 803 napi_value result = nullptr; 804 OH_NativeBuffer_Config nativeBufferConfig = { 805 .width = 0x100, 806 .height = 0x100, 807 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 808 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 809 }; 810 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 811 OH_NativeBuffer_ColorSpace colorSpace = (OH_NativeBuffer_ColorSpace)(-10); 812 int32_t ret = OH_NativeBuffer_SetColorSpace(nativeBuffer, colorSpace); 813 napi_create_int32(env, ret, &result); 814 OH_NativeBuffer_Unreference(nativeBuffer); 815 return result; 816} 817static napi_value OHNativeBufferGetColorSpaceNullptr(napi_env env, napi_callback_info info) 818{ 819 napi_value result = nullptr; 820 napi_value result1 = nullptr; 821 napi_create_array_with_length(env, NUMBER_4, &result); 822 OH_NativeBuffer_Config nativeBufferConfig = { 823 .width = 0x100, 824 .height = 0x100, 825 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 826 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 827 }; 828 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 829 OH_NativeBuffer_ColorSpace colorSpace = OH_NativeBuffer_ColorSpace::OH_COLORSPACE_ADOBERGB_LIMIT; 830 int32_t ret = OH_NativeBuffer_SetColorSpace(nativeBuffer, colorSpace); 831 napi_create_int32(env, ret, &result1); 832 napi_set_element(env, result, NUMBER_0, result1); 833 ret = OH_NativeBuffer_GetColorSpace(nullptr, &colorSpace); 834 napi_create_int32(env, ret, &result1); 835 napi_set_element(env, result, NUMBER_1, result1); 836 ret = OH_NativeBuffer_GetColorSpace(nativeBuffer, nullptr); 837 napi_create_int32(env, ret, &result1); 838 napi_set_element(env, result, NUMBER_2, result1); 839 OH_NativeBuffer_ColorSpace colorSpaceGet; 840 ret = OH_NativeBuffer_GetColorSpace(nativeBuffer, &colorSpaceGet); 841 napi_create_int32(env, ret, &result1); 842 napi_set_element(env, result, NUMBER_3, result1); 843 OH_NativeBuffer_Unreference(nativeBuffer); 844 return result; 845} 846static napi_value OHNativeBufferGetMetadataValueFirst(napi_env env, napi_callback_info info) 847{ 848 napi_value result = nullptr; 849 OH_NativeBuffer_Config nativeBufferConfig = { 850 .width = 0x100, 851 .height = 0x100, 852 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 853 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 854 }; 855 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 856 OH_NativeBuffer_MetadataKey metadataKey = OH_NativeBuffer_MetadataKey::OH_HDR_DYNAMIC_METADATA; 857 int32_t size = 0; 858 uint8_t *metadata = nullptr; 859 int32_t ret = OH_NativeBuffer_GetMetadataValue(nativeBuffer, metadataKey, &size, &metadata); 860 if (ret != NUMBER_50002000 && ret != NUMBER_50102000) { 861 napi_create_int32(env, NUMBER_1001, &result); 862 return result; 863 } 864 napi_create_int32(env, SUCCESS, &result); 865 OH_NativeBuffer_Unreference(nativeBuffer); 866 return result; 867} 868 869napi_value OHNativeBufferSetDynamicMetadataValue1(napi_env env, OH_NativeBuffer *nativeBuffer) 870{ 871 napi_value result = nullptr; 872 int32_t bufferSize; 873 uint8_t *buffer; 874 int32_t X = NUMBER_MINUS_1; 875 uint8_t metaData[NUMBER_60]; 876 auto flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_DYNAMIC_METADATA, X, metaData); 877 if (flag != NUMBER_40001000) { 878 napi_create_int32(env, NUMBER_1001, &result); 879 return result; 880 } 881 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_DYNAMIC_METADATA, &bufferSize, &buffer); 882 if (flag != NUMBER_50002000 && flag != NUMBER_50102000) { 883 napi_create_int32(env, NUMBER_1002, &result); 884 return result; 885 } 886 X = 0; 887 flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_DYNAMIC_METADATA, X, metaData); 888 if (flag != NUMBER_40001000) { 889 napi_create_int32(env, NUMBER_2001, &result); 890 return result; 891 } 892 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_DYNAMIC_METADATA, &bufferSize, &buffer); 893 if (flag != NUMBER_50002000 && flag != NUMBER_50102000) { 894 napi_create_int32(env, NUMBER_2002, &result); 895 return result; 896 } 897 X = 1; 898 metaData[0] = static_cast<uint8_t>(0); 899 flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_DYNAMIC_METADATA, X, metaData); 900 if (flag != 0) { 901 napi_create_int32(env, NUMBER_3001, &result); 902 return result; 903 } 904 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_DYNAMIC_METADATA, &bufferSize, &buffer); 905 if (flag != 0) { 906 napi_create_int32(env, NUMBER_3002, &result); 907 return result; 908 } 909 if (bufferSize != X) { 910 napi_create_int32(env, NUMBER_3003, &result); 911 return result; 912 } 913 delete[] buffer; 914 return result; 915} 916 917napi_value OHNativeBufferSetDynamicMetadataValue2(napi_env env, OH_NativeBuffer *nativeBuffer) 918{ 919 napi_value result = nullptr; 920 int32_t bufferSize; 921 uint8_t *buffer; 922 int32_t X = NUMBER_60; 923 uint8_t metaData[NUMBER_60]; 924 for (int i = 0; i < X; ++i) { 925 metaData[i] = static_cast<uint8_t>(i); 926 } 927 auto flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_DYNAMIC_METADATA, X, metaData); 928 if (flag != 0) { 929 napi_create_int32(env, NUMBER_4001, &result); 930 return result; 931 } 932 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_DYNAMIC_METADATA, &bufferSize, &buffer); 933 if (flag != 0) { 934 napi_create_int32(env, NUMBER_4002, &result); 935 return result; 936 } 937 if (bufferSize != X) { 938 napi_create_int32(env, NUMBER_4003, &result); 939 return result; 940 } 941 X = NUMBER_2999; 942 uint8_t metaData2[X]; 943 for (int i = 0; i < X; ++i) { 944 metaData2[i] = static_cast<uint8_t>(i); 945 } 946 flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_DYNAMIC_METADATA, X, metaData2); 947 if (flag != 0) { 948 napi_create_int32(env, NUMBER_5001, &result); 949 return result; 950 } 951 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_DYNAMIC_METADATA, &bufferSize, &buffer); 952 if (flag != 0) { 953 napi_create_int32(env, NUMBER_5002, &result); 954 return result; 955 } 956 if (bufferSize != X) { 957 napi_create_int32(env, NUMBER_5003, &result); 958 return result; 959 } 960 delete[] buffer; 961 return result; 962} 963 964napi_value OHNativeBufferSetDynamicMetadataValue3(napi_env env, OH_NativeBuffer *nativeBuffer) 965{ 966 napi_value result = nullptr; 967 int32_t bufferSize; 968 uint8_t *buffer; 969 int32_t X = NUMBER_3000; 970 uint8_t metaData[NUMBER_60]; 971 uint8_t metaData3[X]; 972 for (int i = 0; i < X; ++i) { 973 metaData3[i] = static_cast<uint8_t>(i); 974 } 975 auto flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_DYNAMIC_METADATA, X, metaData3); 976 if (flag != 0) { 977 napi_create_int32(env, NUMBER_6001, &result); 978 return result; 979 } 980 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_DYNAMIC_METADATA, &bufferSize, &buffer); 981 if (flag != 0) { 982 napi_create_int32(env, NUMBER_6002, &result); 983 return result; 984 } 985 if (bufferSize != X) { 986 napi_create_int32(env, NUMBER_6003, &result); 987 return result; 988 } 989 X = NUMBER_3001; 990 uint8_t metaData4[X]; 991 for (int i = 0; i < X; ++i) { 992 metaData4[i] = static_cast<uint8_t>(i); 993 } 994 flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_DYNAMIC_METADATA, X, metaData4); 995 if (flag != 0) { 996 napi_create_int32(env, NUMBER_7001, &result); 997 return result; 998 } 999 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_DYNAMIC_METADATA, &bufferSize, &buffer); 1000 if (flag != 0) { 1001 napi_create_int32(env, NUMBER_7002, &result); 1002 return result; 1003 } 1004 X = NUMBER_10000; 1005 flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_DYNAMIC_METADATA, X, metaData); 1006 if (flag == 0) { 1007 napi_create_int32(env, NUMBER_8001, &result); 1008 return result; 1009 } 1010 delete[] buffer; 1011 return result; 1012} 1013 1014static napi_value OHNativeBufferSetDynamicMetadataValue(napi_env env, napi_callback_info info) 1015{ 1016 napi_value result = nullptr; 1017 OH_NativeBuffer_Config nativeBufferConfig = { 1018 .width = 0x100, 1019 .height = 0x100, 1020 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 1021 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 1022 }; 1023 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 1024 OH_NativeBuffer_MetadataKey metadataKey = OH_NativeBuffer_MetadataKey::OH_HDR_DYNAMIC_METADATA; 1025 1026 result = OHNativeBufferSetDynamicMetadataValue1(env, nativeBuffer); 1027 if (result != NULL) { 1028 return result; 1029 } 1030 result = OHNativeBufferSetDynamicMetadataValue2(env, nativeBuffer); 1031 if (result != NULL) { 1032 return result; 1033 } 1034 result = OHNativeBufferSetDynamicMetadataValue3(env, nativeBuffer); 1035 if (result != NULL) { 1036 return result; 1037 } 1038 1039 OH_NativeBuffer_Unreference(nativeBuffer); 1040 napi_create_int32(env, SUCCESS, &result); 1041 return result; 1042} 1043static napi_value OHNativeBufferSetMetadataValueTimes(napi_env env, napi_callback_info info) 1044{ 1045 napi_value result = nullptr; 1046 OH_NativeBuffer_Config nativeBufferConfig = { 1047 .width = 0x100, 1048 .height = 0x100, 1049 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 1050 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 1051 }; 1052 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 1053 OH_NativeBuffer_MetadataKey metadataKey = OH_NativeBuffer_MetadataKey::OH_HDR_DYNAMIC_METADATA; 1054 int32_t size = NUMBER_60; 1055 uint8_t metadata = NUMBER_2; 1056 for (uint32_t index = 0; index < NUMBER_50; index++) { 1057 int32_t ret = OH_NativeBuffer_SetMetadataValue(nativeBuffer, metadataKey, size, &metadata); 1058 if (ret != 0) { 1059 napi_create_int32(env, ret, &result); 1060 break; 1061 } 1062 int32_t size2 = 0; 1063 uint8_t *metadata2 = nullptr; 1064 ret = OH_NativeBuffer_GetMetadataValue(nativeBuffer, metadataKey, &size2, &metadata2); 1065 if (ret != 0) { 1066 napi_create_int32(env, ret, &result); 1067 break; 1068 } 1069 if (size != size2) { 1070 napi_create_int32(env, FAIL, &result); 1071 break; 1072 } else { 1073 napi_create_int32(env, SUCCESS, &result); 1074 } 1075 } 1076 OH_NativeBuffer_Unreference(nativeBuffer); 1077 return result; 1078} 1079 1080napi_value OHNativeBufferSetStaticMetadataValue1(napi_env env, OH_NativeBuffer *nativeBuffer) 1081{ 1082 napi_value result = nullptr; 1083 int32_t bufferSize; 1084 uint8_t *buffer; 1085 int32_t X = NUMBER_MINUS_1; 1086 uint8_t metaData[NUMBER_60]; 1087 auto flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_STATIC_METADATA, X, metaData); 1088 if (flag != NUMBER_40001000) { 1089 napi_create_int32(env, NUMBER_1001, &result); 1090 return result; 1091 } 1092 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_STATIC_METADATA, &bufferSize, &buffer); 1093 if (flag != NUMBER_50002000 && flag != NUMBER_50102000) { 1094 napi_create_int32(env, NUMBER_1002, &result); 1095 return result; 1096 } 1097 X = 0; 1098 flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_STATIC_METADATA, X, metaData); 1099 if (flag != NUMBER_40001000) { 1100 napi_create_int32(env, NUMBER_2001, &result); 1101 return result; 1102 } 1103 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_STATIC_METADATA, &bufferSize, &buffer); 1104 if (flag != NUMBER_50002000 && flag != NUMBER_50102000) { 1105 napi_create_int32(env, NUMBER_2002, &result); 1106 return result; 1107 } 1108 X = 1; 1109 metaData[0] = static_cast<uint8_t>(0); 1110 flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_STATIC_METADATA, X, metaData); 1111 if (flag != 0) { 1112 napi_create_int32(env, NUMBER_3001, &result); 1113 return result; 1114 } 1115 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_STATIC_METADATA, &bufferSize, &buffer); 1116 if (flag != 0) { 1117 napi_create_int32(env, NUMBER_3002, &result); 1118 return result; 1119 } 1120 if (bufferSize != X) { 1121 napi_create_int32(env, NUMBER_3003, &result); 1122 return result; 1123 } 1124 delete[] buffer; 1125 return result; 1126} 1127 1128napi_value OHNativeBufferSetStaticMetadataValue2(napi_env env, OH_NativeBuffer *nativeBuffer) 1129{ 1130 napi_value result = nullptr; 1131 int32_t bufferSize; 1132 uint8_t *buffer; 1133 int32_t X = NUMBER_60; 1134 uint8_t metaData[NUMBER_60]; 1135 for (int i = 0; i < X; ++i) { 1136 metaData[i] = static_cast<uint8_t>(i); 1137 } 1138 auto flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_STATIC_METADATA, X, metaData); 1139 if (flag != 0) { 1140 napi_create_int32(env, NUMBER_4001, &result); 1141 return result; 1142 } 1143 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_STATIC_METADATA, &bufferSize, &buffer); 1144 if (flag != 0) { 1145 napi_create_int32(env, NUMBER_4002, &result); 1146 return result; 1147 } 1148 if (bufferSize != X) { 1149 napi_create_int32(env, NUMBER_4003, &result); 1150 return result; 1151 } 1152 X = NUMBER_2999; 1153 uint8_t metaData2[X]; 1154 for (int i = 0; i < X; ++i) { 1155 metaData2[i] = static_cast<uint8_t>(i); 1156 } 1157 flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_STATIC_METADATA, X, metaData2); 1158 if (flag != 0) { 1159 napi_create_int32(env, NUMBER_5001, &result); 1160 return result; 1161 } 1162 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_STATIC_METADATA, &bufferSize, &buffer); 1163 if (flag != 0) { 1164 napi_create_int32(env, NUMBER_5002, &result); 1165 return result; 1166 } 1167 if (bufferSize != X) { 1168 napi_create_int32(env, NUMBER_5003, &result); 1169 return result; 1170 } 1171 delete[] buffer; 1172 return result; 1173} 1174 1175napi_value OHNativeBufferSetStaticMetadataValue3(napi_env env, OH_NativeBuffer *nativeBuffer) 1176{ 1177 napi_value result = nullptr; 1178 int32_t bufferSize; 1179 uint8_t *buffer; 1180 int32_t X = NUMBER_3000; 1181 uint8_t metaData[NUMBER_60]; 1182 uint8_t metaData3[X]; 1183 for (int i = 0; i < X; ++i) { 1184 metaData3[i] = static_cast<uint8_t>(i); 1185 } 1186 auto flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_STATIC_METADATA, X, metaData3); 1187 if (flag != 0) { 1188 napi_create_int32(env, NUMBER_6001, &result); 1189 return result; 1190 } 1191 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_STATIC_METADATA, &bufferSize, &buffer); 1192 if (flag != 0) { 1193 napi_create_int32(env, NUMBER_6002, &result); 1194 return result; 1195 } 1196 if (bufferSize != X) { 1197 napi_create_int32(env, NUMBER_6003, &result); 1198 return result; 1199 } 1200 X = NUMBER_3001; 1201 uint8_t metaData4[X]; 1202 for (int i = 0; i < X; ++i) { 1203 metaData4[i] = static_cast<uint8_t>(i); 1204 } 1205 flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_STATIC_METADATA, X, metaData4); 1206 if (flag != 0) { 1207 napi_create_int32(env, NUMBER_7001, &result); 1208 return result; 1209 } 1210 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_STATIC_METADATA, &bufferSize, &buffer); 1211 if (flag != 0) { 1212 napi_create_int32(env, NUMBER_7002, &result); 1213 return result; 1214 } 1215 X = NUMBER_10000; 1216 flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_STATIC_METADATA, X, metaData); 1217 if (flag == 0) { 1218 napi_create_int32(env, NUMBER_8001, &result); 1219 return result; 1220 } 1221 delete[] buffer; 1222 return result; 1223} 1224 1225static napi_value OHNativeBufferSetStaticMetadataValue(napi_env env, napi_callback_info info) 1226{ 1227 napi_value result = nullptr; 1228 napi_create_array_with_length(env, NUMBER_20, &result); 1229 OH_NativeBuffer_Config nativeBufferConfig = { 1230 .width = 0x100, 1231 .height = 0x100, 1232 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 1233 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 1234 }; 1235 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 1236 result = OHNativeBufferSetStaticMetadataValue1(env, nativeBuffer); 1237 if (result != NULL) { 1238 return result; 1239 } 1240 result = OHNativeBufferSetStaticMetadataValue2(env, nativeBuffer); 1241 if (result != NULL) { 1242 return result; 1243 } 1244 result = OHNativeBufferSetStaticMetadataValue3(env, nativeBuffer); 1245 if (result != NULL) { 1246 return result; 1247 } 1248 1249 OH_NativeBuffer_Unreference(nativeBuffer); 1250 napi_create_int32(env, SUCCESS, &result); 1251 return result; 1252} 1253 1254napi_value OHNativeBufferSetMetadataValue1(napi_env env, OH_NativeBuffer *nativeBuffer) 1255{ 1256 napi_value result = nullptr; 1257 int32_t bufferSize; 1258 uint8_t *buffer; 1259 int32_t X = NUMBER_MINUS_1; 1260 uint8_t metaData[NUMBER_60]; 1261 auto flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_METADATA_TYPE, X, metaData); 1262 if (flag != NUMBER_40001000) { 1263 napi_create_int32(env, NUMBER_1001, &result); 1264 return result; 1265 } 1266 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_METADATA_TYPE, &bufferSize, &buffer); 1267 if (flag != NUMBER_50002000 && flag != NUMBER_50102000) { 1268 napi_create_int32(env, NUMBER_1002, &result); 1269 return result; 1270 } 1271 // 2. X=0 set调用失败 get调用失败 1272 X = 0; 1273 flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_METADATA_TYPE, X, metaData); 1274 if (flag != NUMBER_40001000) { 1275 napi_create_int32(env, NUMBER_2001, &result); 1276 return result; 1277 } 1278 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_METADATA_TYPE, &bufferSize, &buffer); 1279 if (flag != NUMBER_50002000 && flag != NUMBER_50102000) { 1280 napi_create_int32(env, NUMBER_2002, &result); 1281 return result; 1282 } 1283 // 3. X=1 set调用成功 get调用成功 两者一致 1284 X = 1; 1285 metaData[0] = static_cast<uint8_t>(X); 1286 flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_METADATA_TYPE, X, metaData); 1287 if (flag != 0) { 1288 napi_create_int32(env, NUMBER_3001, &result); 1289 return result; 1290 } 1291 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_METADATA_TYPE, &bufferSize, &buffer); 1292 if (flag != 0) { 1293 napi_create_int32(env, NUMBER_3002, &result); 1294 return result; 1295 } 1296 if (bufferSize != NUMBER_4) { 1297 napi_create_int32(env, NUMBER_6003, &result); 1298 return result; 1299 } 1300 delete[] buffer; 1301 return result; 1302} 1303 1304napi_value OHNativeBufferSetMetadataValue2(napi_env env, OH_NativeBuffer *nativeBuffer) 1305{ 1306 napi_value result = nullptr; 1307 int32_t bufferSize; 1308 uint8_t *buffer; 1309 int32_t X = NUMBER_4; 1310 uint8_t metaData[NUMBER_60]; 1311 // 4. X=60 set调用成功 get调用成功 两者一致 1312 for (int i = 0; i < X; ++i) { 1313 metaData[i] = static_cast<uint8_t>(i); 1314 } 1315 auto flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_METADATA_TYPE, X, metaData); 1316 if (flag != 0) { 1317 napi_create_int32(env, NUMBER_4001, &result); 1318 return result; 1319 } 1320 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_METADATA_TYPE, &bufferSize, &buffer); 1321 if (flag != 0) { 1322 napi_create_int32(env, NUMBER_4002, &result); 1323 return result; 1324 } 1325 if (bufferSize != NUMBER_4) { 1326 napi_create_int32(env, NUMBER_6003, &result); 1327 return result; 1328 } 1329 X = NUMBER_2999; 1330 uint8_t metaData2[X]; 1331 for (int i = 0; i < X; ++i) { 1332 metaData2[i] = static_cast<uint8_t>(i); 1333 } 1334 flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_METADATA_TYPE, X, metaData2); 1335 if (flag != 0) { 1336 napi_create_int32(env, NUMBER_5001, &result); 1337 return result; 1338 } 1339 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_METADATA_TYPE, &bufferSize, &buffer); 1340 if (flag != 0) { 1341 napi_create_int32(env, NUMBER_5002, &result); 1342 return result; 1343 } 1344 if (bufferSize != NUMBER_4) { 1345 napi_create_int32(env, NUMBER_6003, &result); 1346 return result; 1347 } 1348 delete[] buffer; 1349 return result; 1350} 1351 1352napi_value OHNativeBufferSetMetadataValue3(napi_env env, OH_NativeBuffer *nativeBuffer) 1353{ 1354 napi_value result = nullptr; 1355 int32_t bufferSize; 1356 uint8_t *buffer; 1357 int32_t X = NUMBER_3000; 1358 uint8_t metaData3[X]; 1359 for (int i = 0; i < X; ++i) { 1360 metaData3[i] = static_cast<uint8_t>(i); 1361 } 1362 auto flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_METADATA_TYPE, X, metaData3); 1363 if (flag != 0) { 1364 napi_create_int32(env, NUMBER_6001, &result); 1365 return result; 1366 } 1367 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_METADATA_TYPE, &bufferSize, &buffer); 1368 if (flag != 0) { 1369 napi_create_int32(env, NUMBER_6002, &result); 1370 return result; 1371 } 1372 if (bufferSize != NUMBER_4) { 1373 napi_create_int32(env, NUMBER_6003, &result); 1374 return result; 1375 } 1376 1377 X = NUMBER_3001; 1378 uint8_t metaData4[X]; 1379 for (int i = 0; i < X; ++i) { 1380 metaData4[i] = static_cast<uint8_t>(i); 1381 } 1382 flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_METADATA_TYPE, X, metaData4); 1383 if (flag != 0) { 1384 napi_create_int32(env, NUMBER_7001, &result); 1385 return result; 1386 } 1387 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_METADATA_TYPE, &bufferSize, &buffer); 1388 if (flag != 0) { 1389 napi_create_int32(env, NUMBER_7002, &result); 1390 return result; 1391 } 1392 delete[] buffer; 1393 return result; 1394} 1395 1396napi_value OHNativeBufferSetMetadataValue4(napi_env env, OH_NativeBuffer *nativeBuffer) 1397{ 1398 napi_value result = nullptr; 1399 int32_t bufferSize; 1400 uint8_t *buffer; 1401 uint8_t metaData[NUMBER_60]; 1402 int32_t X = NUMBER_100000000; 1403 auto flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_METADATA_TYPE, X, metaData); 1404 if (flag != 0) { 1405 napi_create_int32(env, NUMBER_8001, &result); 1406 return result; 1407 } 1408 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_METADATA_TYPE, &bufferSize, &buffer); 1409 if (flag != 0) { 1410 napi_create_int32(env, NUMBER_8002, &result); 1411 return result; 1412 } 1413 if (bufferSize != NUMBER_4) { 1414 napi_create_int32(env, NUMBER_8003, &result); 1415 return result; 1416 } 1417 delete[] buffer; 1418 return result; 1419} 1420 1421static napi_value OHNativeBufferSetMetadataValue(napi_env env, napi_callback_info info) 1422{ 1423 napi_value result = nullptr; 1424 napi_create_array_with_length(env, NUMBER_20, &result); 1425 OH_NativeBuffer_Config nativeBufferConfig = { 1426 .width = 0x100, 1427 .height = 0x100, 1428 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 1429 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 1430 }; 1431 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 1432 1433 result = OHNativeBufferSetMetadataValue1(env, nativeBuffer); 1434 if (result != NULL) { 1435 return result; 1436 } 1437 result = OHNativeBufferSetMetadataValue2(env, nativeBuffer); 1438 if (result != NULL) { 1439 return result; 1440 } 1441 result = OHNativeBufferSetMetadataValue3(env, nativeBuffer); 1442 if (result != NULL) { 1443 return result; 1444 } 1445 result = OHNativeBufferSetMetadataValue4(env, nativeBuffer); 1446 if (result != NULL) { 1447 return result; 1448 } 1449 1450 OH_NativeBuffer_Unreference(nativeBuffer); 1451 napi_create_int32(env, SUCCESS, &result); 1452 return result; 1453} 1454static napi_value OHNativeBufferSetNullMetadataValue(napi_env env, napi_callback_info info) 1455{ 1456 napi_value result = nullptr; 1457 OH_NativeBuffer_Config nativeBufferConfig = { 1458 .width = 0x100, 1459 .height = 0x100, 1460 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 1461 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 1462 }; 1463 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 1464 OH_NativeBuffer_MetadataKey metadataKey = (OH_NativeBuffer_MetadataKey)(NUMBER_MINUS_1); 1465 int32_t size = NUMBER_60; 1466 uint8_t metadata = NUMBER_2; 1467 int32_t ret = OH_NativeBuffer_SetMetadataValue(nativeBuffer, metadataKey, size, &metadata); 1468 napi_create_int32(env, ret, &result); 1469 OH_NativeBuffer_Unreference(nativeBuffer); 1470 return result; 1471} 1472static napi_value OHNativeBufferSetMetadataValueNullptr(napi_env env, napi_callback_info info) 1473{ 1474 napi_value result = nullptr; 1475 napi_value result1 = nullptr; 1476 napi_create_array_with_length(env, NUMBER_2, &result); 1477 OH_NativeBuffer_Config nativeBufferConfig = { 1478 .width = 0x100, 1479 .height = 0x100, 1480 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 1481 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 1482 }; 1483 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 1484 OH_NativeBuffer_MetadataKey metadataKey = OH_NativeBuffer_MetadataKey::OH_HDR_METADATA_TYPE; 1485 int32_t size = NUMBER_60; 1486 uint8_t metadata = NUMBER_2; 1487 int32_t ret = OH_NativeBuffer_SetMetadataValue(nullptr, metadataKey, size, &metadata); 1488 napi_create_int32(env, ret, &result1); 1489 napi_set_element(env, result, NUMBER_0, result1); 1490 ret = OH_NativeBuffer_SetMetadataValue(nativeBuffer, metadataKey, size, nullptr); 1491 napi_create_int32(env, ret, &result1); 1492 napi_set_element(env, result, NUMBER_1, result1); 1493 OH_NativeBuffer_Unreference(nativeBuffer); 1494 return result; 1495} 1496static napi_value OHNativeBufferGetMetadataValueAbnormal(napi_env env, napi_callback_info info) 1497{ 1498 napi_value result = nullptr; 1499 napi_value result1 = nullptr; 1500 napi_create_array_with_length(env, NUMBER_2, &result); 1501 OH_NativeBuffer_Config nativeBufferConfig = { 1502 .width = 0x100, 1503 .height = 0x100, 1504 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 1505 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 1506 }; 1507 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 1508 OH_NativeBuffer_MetadataKey metadataKey = OH_NativeBuffer_MetadataKey::OH_HDR_METADATA_TYPE; 1509 int32_t size = NUMBER_60; 1510 uint8_t *metadata = nullptr; 1511 int32_t ret = OH_NativeBuffer_GetMetadataValue(nullptr, metadataKey, &size, &metadata); 1512 napi_create_int32(env, ret, &result1); 1513 napi_set_element(env, result, NUMBER_0, result1); 1514 ret = OH_NativeBuffer_GetMetadataValue(nativeBuffer, metadataKey, &size, nullptr); 1515 napi_create_int32(env, ret, &result1); 1516 napi_set_element(env, result, NUMBER_1, result1); 1517 OH_NativeBuffer_Unreference(nativeBuffer); 1518 return result; 1519} 1520static napi_value OHNativeBufferGetMetadataValueNullptr(napi_env env, napi_callback_info info) 1521{ 1522 napi_value result = nullptr; 1523 napi_value result1 = nullptr; 1524 napi_create_array_with_length(env, NUMBER_6, &result); 1525 OH_NativeBuffer_Config nativeBufferConfig = { 1526 .width = 0x100, 1527 .height = 0x100, 1528 .format = NATIVEBUFFER_PIXEL_FMT_RGBA_8888, 1529 .usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA, 1530 }; 1531 OH_NativeBuffer *nativeBuffer = OH_NativeBuffer_Alloc(&nativeBufferConfig); 1532 int32_t flag; 1533 uint8_t *buffer = new uint8_t[NUMBER_60]; 1534 int32_t ret1; 1535 uint8_t *ret2; 1536 // 1. 1537 flag = OH_NativeBuffer_SetMetadataValue(nativeBuffer, OH_HDR_DYNAMIC_METADATA, NUMBER_60, buffer); 1538 if (flag != 0) { 1539 napi_create_int32(env, 1, &result); 1540 return result; 1541 } 1542 // 2. 1543 flag = OH_NativeBuffer_GetMetadataValue(nullptr, OH_HDR_DYNAMIC_METADATA, &ret1, &ret2); 1544 if (flag != NUMBER_40001000) { 1545 napi_create_int32(env, NUMBER_2, &result); 1546 return result; 1547 } 1548 // 3. 1549 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_DYNAMIC_METADATA, nullptr, &ret2); 1550 if (flag != NUMBER_40001000) { 1551 napi_create_int32(env, NUMBER_3, &result); 1552 return result; 1553 } 1554 // 4. 1555 flag = OH_NativeBuffer_GetMetadataValue(nativeBuffer, OH_HDR_DYNAMIC_METADATA, &ret1, nullptr); 1556 if (flag != NUMBER_40001000) { 1557 napi_create_int32(env, NUMBER_4, &result); 1558 return result; 1559 } 1560 delete[] buffer; 1561 OH_NativeBuffer_Unreference(nativeBuffer); 1562 napi_create_int32(env, SUCCESS, &result); 1563 return result; 1564} 1565 1566napi_value NativeBufferInit(napi_env env, napi_value exports) 1567{ 1568 napi_property_descriptor desc[] = { 1569 {"oHNativeBufferAlloc", nullptr, OHNativeBufferAlloc, nullptr, nullptr, nullptr, napi_default, nullptr}, 1570 {"oHNativeBufferReference", nullptr, OHNativeBufferReference, nullptr, nullptr, nullptr, napi_default, nullptr}, 1571 {"oHNativeBufferUnreference", nullptr, OHNativeBufferUnreference, nullptr, nullptr, nullptr, napi_default, 1572 nullptr}, 1573 {"oHNativeBufferGetConfig", nullptr, OHNativeBufferGetConfig, nullptr, nullptr, nullptr, napi_default, nullptr}, 1574 {"oHNativeBufferMap", nullptr, OHNativeBufferMap, nullptr, nullptr, nullptr, napi_default, nullptr}, 1575 {"oHNativeBufferUnmap", nullptr, OHNativeBufferUnmap, nullptr, nullptr, nullptr, napi_default, nullptr}, 1576 {"oHNativeBufferGetSeqNum", nullptr, OHNativeBufferGetSeqNum, nullptr, nullptr, nullptr, napi_default, nullptr}, 1577 {"oHNativeBufferAllocAbnormal", nullptr, OHNativeBufferAllocAbnormal, nullptr, nullptr, nullptr, napi_default, 1578 nullptr}, 1579 {"oHNativeBufferReferenceAbnormal", nullptr, OHNativeBufferReferenceAbnormal, nullptr, nullptr, nullptr, 1580 napi_default, nullptr}, 1581 {"oHNativeBufferUnreferenceAbnormal", nullptr, OHNativeBufferUnreferenceAbnormal, nullptr, nullptr, nullptr, 1582 napi_default, nullptr}, 1583 {"oHNativeBufferMapAbnormal", nullptr, OHNativeBufferMapAbnormal, nullptr, nullptr, nullptr, napi_default, 1584 nullptr}, 1585 {"oHNativeBufferUnmapAbnormal", nullptr, OHNativeBufferUnmapAbnormal, nullptr, nullptr, nullptr, napi_default, 1586 nullptr}, 1587 {"oHNativeBufferGetSeqNumAbnormal", nullptr, OHNativeBufferGetSeqNumAbnormal, nullptr, nullptr, nullptr, 1588 napi_default, nullptr}, 1589 {"oHNativeBufferAllocNullptr", nullptr, OHNativeBufferAllocNullptr, nullptr, nullptr, nullptr, napi_default, 1590 nullptr}, 1591 {"oHNativeBufferAllocNormal", nullptr, OHNativeBufferAllocNormal, nullptr, nullptr, nullptr, napi_default, 1592 nullptr}, 1593 }; 1594 napi_define_properties(env, exports, sizeof(desc) / sizeof(napi_property_descriptor), desc); 1595 return exports; 1596} 1597 1598napi_value NativeBufferInit2(napi_env env, napi_value exports) 1599{ 1600 napi_property_descriptor desc[] = { 1601 {"oHNativeBufferAllocAbormal", nullptr, OHNativeBufferAllocAbormal, nullptr, nullptr, nullptr, napi_default, 1602 nullptr}, 1603 {"oHNativeBufferAllocMuch", nullptr, OHNativeBufferAllocMuch, nullptr, nullptr, nullptr, napi_default, nullptr}, 1604 {"oHNativeBufferFromNativeWindowBufferNullptr", nullptr, OHNativeBufferFromNativeWindowBufferNullptr, nullptr, 1605 nullptr, nullptr, napi_default, nullptr}, 1606 {"oHNativeBufferFromNativeWindowBufferNormal", nullptr, OHNativeBufferFromNativeWindowBufferNormal, nullptr, 1607 nullptr, nullptr, napi_default, nullptr}, 1608 {"oHNativeBufferGetConfigNullptr", nullptr, OHNativeBufferGetConfigNullptr, nullptr, nullptr, nullptr, 1609 napi_default, nullptr}, 1610 {"oHNativeBufferGetConfigNormal", nullptr, OHNativeBufferGetConfigNormal, nullptr, nullptr, nullptr, 1611 napi_default, nullptr}, 1612 {"oHNativeBufferGetSeqNumNullptr", nullptr, OHNativeBufferGetSeqNumNullptr, nullptr, nullptr, nullptr, 1613 napi_default, nullptr}, 1614 {"oHNativeBufferGetSeqNumNormal", nullptr, OHNativeBufferGetSeqNumNormal, nullptr, nullptr, nullptr, 1615 napi_default, nullptr}, 1616 {"oHNativeBuffeMapNullptr", nullptr, OHNativeBuffeMapNullptr, nullptr, nullptr, nullptr, napi_default, nullptr}, 1617 {"oHNativeBufferMapNormal", nullptr, OHNativeBufferMapNormal, nullptr, nullptr, nullptr, napi_default, nullptr}, 1618 {"oHNativeBuffeMapPlanesNullptr", nullptr, OHNativeBuffeMapPlanesNullptr, nullptr, nullptr, nullptr, 1619 napi_default, nullptr}, 1620 {"oHNativeBufferMapPlanesNormal", nullptr, OHNativeBufferMapPlanesNormal, nullptr, nullptr, nullptr, 1621 napi_default, nullptr}, 1622 {"oHNativeBuffeReferenceNullptr", nullptr, OHNativeBuffeReferenceNullptr, nullptr, nullptr, nullptr, 1623 napi_default, nullptr}, 1624 {"oHNativeBuffeUnreferenceNullptr", nullptr, OHNativeBuffeUnreferenceNullptr, nullptr, nullptr, nullptr, 1625 napi_default, nullptr}, 1626 {"oHNativeBufferReferenceNormal", nullptr, OHNativeBufferReferenceNormal, nullptr, nullptr, nullptr, 1627 napi_default, nullptr}, 1628 {"oHNativeBufferReferenceMax", nullptr, OHNativeBufferReferenceMax, nullptr, nullptr, nullptr, napi_default, 1629 nullptr}, 1630 {"oHNativeBufferUnreferenceNormal", nullptr, OHNativeBufferUnreferenceNormal, nullptr, nullptr, nullptr, 1631 napi_default, nullptr}, 1632 }; 1633 napi_define_properties(env, exports, sizeof(desc) / sizeof(napi_property_descriptor), desc); 1634 return exports; 1635} 1636 1637EXTERN_C_START 1638static napi_value Init(napi_env env, napi_value exports) 1639{ 1640 NativeBufferInit(env, exports); 1641 NativeBufferInit2(env, exports); 1642 napi_property_descriptor desc[] = { 1643 {"oHNativeBuffeUnmapNullptr", nullptr, OHNativeBuffeUnmapNullptr, nullptr, nullptr, nullptr, napi_default, 1644 nullptr}, 1645 {"oHNativeBufferUnmapNormal", nullptr, OHNativeBufferUnmapNormal, nullptr, nullptr, nullptr, napi_default, 1646 nullptr}, 1647 {"oHNativeBufferGetColorSpaceFirst", nullptr, OHNativeBufferGetColorSpaceFirst, nullptr, nullptr, nullptr, 1648 napi_default, nullptr}, 1649 {"oHNativeBufferSetColorSpaceNormal", nullptr, OHNativeBufferSetColorSpaceNormal, nullptr, nullptr, nullptr, 1650 napi_default, nullptr}, 1651 {"oHNativeBufferSetColorSpaceNullptr", nullptr, OHNativeBufferSetColorSpaceNullptr, nullptr, nullptr, nullptr, 1652 napi_default, nullptr}, 1653 {"oHNativeBufferSetColorSpaceAbnormal", nullptr, OHNativeBufferSetColorSpaceAbnormal, nullptr, nullptr, nullptr, 1654 napi_default, nullptr}, 1655 {"oHNativeBufferGetColorSpaceNullptr", nullptr, OHNativeBufferGetColorSpaceNullptr, nullptr, nullptr, nullptr, 1656 napi_default, nullptr}, 1657 {"oHNativeBufferGetMetadataValueFirst", nullptr, OHNativeBufferGetMetadataValueFirst, nullptr, nullptr, nullptr, 1658 napi_default, nullptr}, 1659 {"oHNativeBufferSetDynamicMetadataValue", nullptr, OHNativeBufferSetDynamicMetadataValue, nullptr, nullptr, 1660 nullptr, napi_default, nullptr}, 1661 {"oHNativeBufferSetMetadataValueTimes", nullptr, OHNativeBufferSetMetadataValueTimes, nullptr, nullptr, nullptr, 1662 napi_default, nullptr}, 1663 {"oHNativeBufferSetStaticMetadataValue", nullptr, OHNativeBufferSetStaticMetadataValue, nullptr, nullptr, 1664 nullptr, napi_default, nullptr}, 1665 {"oHNativeBufferSetMetadataValue", nullptr, OHNativeBufferSetMetadataValue, nullptr, nullptr, nullptr, 1666 napi_default, nullptr}, 1667 {"oHNativeBufferSetNullMetadataValue", nullptr, OHNativeBufferSetNullMetadataValue, nullptr, nullptr, nullptr, 1668 napi_default, nullptr}, 1669 {"oHNativeBufferSetMetadataValueNullptr", nullptr, OHNativeBufferSetMetadataValueNullptr, nullptr, nullptr, 1670 nullptr, napi_default, nullptr}, 1671 {"oHNativeBufferGetMetadataValueAbnormal", nullptr, OHNativeBufferGetMetadataValueAbnormal, nullptr, nullptr, 1672 nullptr, napi_default, nullptr}, 1673 {"oHNativeBufferGetMetadataValueNullptr", nullptr, OHNativeBufferGetMetadataValueNullptr, nullptr, nullptr, 1674 nullptr, napi_default, nullptr}, 1675 }; 1676 napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc); 1677 return exports; 1678} 1679EXTERN_C_END 1680 1681static napi_module demoModule = { 1682 .nm_version = 1, 1683 .nm_flags = 0, 1684 .nm_filename = nullptr, 1685 .nm_register_func = Init, 1686 .nm_modname = "nativebuffer", 1687 .nm_priv = ((void *)0), 1688 .reserved = {0}, 1689}; 1690 1691extern "C" __attribute__((constructor)) void RegisterModule(void) { napi_module_register(&demoModule); }; 1692