1 /*
2 * Copyright (C) 2024 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 "camera_manager_ndk.h"
18 #include "image_receiver_module_test.h"
19 #include "image_receiver_mdk_test.h"
20 #include "image_receiver_test.h"
21 #include <js_native_api.h>
22 #include "ohcamera/camera.h"
23 #include <cstring>
24 #include "hilog/log.h"
25
26 static constexpr uint32_t NUM_0 = 0;
27 static constexpr uint32_t NUM_1 = 1;
28 static constexpr uint32_t NUM_2 = 2;
29 static constexpr uint32_t NUM_4 = 4;
30
31 static NDKCamera* ndkCamera_ = nullptr;
32 static ImageReceiverModuleTest* imageReceiverTest_ = nullptr;
33
34 struct Capture_Setting {
35 int32_t quality;
36 int32_t rotation;
37 int32_t location;
38 bool mirror;
39 int32_t latitude;
40 int32_t longitude;
41 int32_t altitude;
42 };
43
InitCamera(napi_env env,napi_callback_info info)44 static napi_value InitCamera(napi_env env, napi_callback_info info)
45 {
46 size_t argc = 2;
47 napi_value args[2] = {nullptr};
48 napi_value result;
49
50 size_t typeLen = 0;
51 char* surfaceId = nullptr;
52
53 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
54
55 napi_get_value_string_utf8(env, args[0], nullptr, 0, &typeLen);
56 surfaceId = new char[typeLen + 1];
57 napi_get_value_string_utf8(env, args[0], surfaceId, typeLen + 1, &typeLen);
58
59 int32_t cameraDeviceIndex;
60 napi_get_value_int32(env, args[1], &cameraDeviceIndex);
61
62 ndkCamera_ = new NDKCamera(surfaceId);
63 imageReceiverTest_ = new ImageReceiverModuleTest();
64 napi_create_int32(env, CAMERA_OK, &result);
65 return result;
66 }
67
VideoOutputStart(napi_env env,napi_callback_info info)68 static napi_value VideoOutputStart(napi_env env, napi_callback_info info)
69 {
70 napi_value result;
71
72 Camera_ErrorCode ret = ndkCamera_->VideoOutputStart();
73 napi_create_int32(env, ret, &result);
74 return result;
75 }
76
GetSupportedCameras(napi_env env,napi_callback_info info)77 static napi_value GetSupportedCameras(napi_env env, napi_callback_info info)
78 {
79 ndkCamera_->GetSupportedCameras();
80
81 napi_value cameraInfo = nullptr;
82 napi_create_object(env, &cameraInfo);
83
84 napi_value jsValue = nullptr;
85
86 napi_create_int32(env, ndkCamera_->cameras_->cameraPosition, &jsValue);
87 napi_set_named_property(env, cameraInfo, "cameraPosition", jsValue);
88
89 napi_create_int32(env, ndkCamera_->cameras_->cameraType, &jsValue);
90 napi_set_named_property(env, cameraInfo, "cameraType", jsValue);
91
92 napi_create_int32(env, ndkCamera_->cameras_->connectionType, &jsValue);
93 napi_set_named_property(env, cameraInfo, "connectionType", jsValue);
94
95 napi_create_string_utf8(env, ndkCamera_->cameras_->cameraId, sizeof(ndkCamera_->cameras_->cameraId) + 1, &jsValue);
96 napi_set_named_property(env, cameraInfo, "cameraId", jsValue);
97
98 return cameraInfo;
99 }
100
101
CreateCameraInput(napi_env env,napi_callback_info info)102 static napi_value CreateCameraInput(napi_env env, napi_callback_info info)
103 {
104 napi_value result;
105 Camera_ErrorCode ret = ndkCamera_->CreateCameraInput();
106 napi_create_int32(env, ret, &result);
107 return result;
108 }
109
GetPosition(int position)110 static Camera_Position GetPosition(int position)
111 {
112 switch (position) {
113 case 1:
114 return Camera_Position::CAMERA_POSITION_BACK;
115 case 2: // 2:Camera_Position::CAMERA_POSITION_FRONT
116 return Camera_Position::CAMERA_POSITION_FRONT;
117 default:
118 return Camera_Position::CAMERA_POSITION_UNSPECIFIED;
119 }
120 }
121
GetType(int type)122 static Camera_Type GetType(int type)
123 {
124 switch (type) {
125 case 1:
126 return Camera_Type::CAMERA_TYPE_WIDE_ANGLE;
127 case 2: // 2:Camera_Type::CAMERA_TYPE_ULTRA_WIDE
128 return Camera_Type::CAMERA_TYPE_ULTRA_WIDE;
129 case 3: // 3:Camera_Type::CAMERA_TYPE_TELEPHOTO
130 return Camera_Type::CAMERA_TYPE_TELEPHOTO;
131 case 4: // 4:Camera_Type::CAMERA_TYPE_TRUE_DEPTH
132 return Camera_Type::CAMERA_TYPE_TRUE_DEPTH;
133 default:
134 return Camera_Type::CAMERA_TYPE_DEFAULT;
135 }
136 }
137
CreateCameraInputWithPositionAndType(napi_env env,napi_callback_info info)138 static napi_value CreateCameraInputWithPositionAndType(napi_env env, napi_callback_info info)
139 {
140 size_t argc = 2;
141 napi_value args[2] = {nullptr};
142 napi_value result;
143
144 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
145
146 napi_valuetype valuetype0;
147 napi_typeof(env, args[0], &valuetype0);
148 int x;
149 napi_get_value_int32(env, args[0], &x);
150
151 napi_valuetype valuetype1;
152 napi_typeof(env, args[0], &valuetype1);
153 int y;
154 napi_get_value_int32(env, args[1], &y);
155
156 Camera_Position position = GetPosition(x);
157 Camera_Type type = GetType(y);
158 Camera_ErrorCode ret = ndkCamera_->CreateCameraInputWithPositionAndType(position, type);
159 napi_create_int32(env, ret, &result);
160 return result;
161 }
162
GetSupportedOutputCapability(napi_env env,napi_callback_info info)163 static napi_value GetSupportedOutputCapability(napi_env env, napi_callback_info info)
164 {
165 ndkCamera_->GetSupportedOutputCapability();
166
167 napi_value cameraOutputCapability = nullptr;
168 napi_create_object(env, &cameraOutputCapability);
169
170 napi_value jsValue = nullptr;
171
172 napi_create_int32(env, ndkCamera_->cameraOutputCapability_->previewProfilesSize, &jsValue);
173 napi_set_named_property(env, cameraOutputCapability, "previewProfilesSize", jsValue);
174
175 napi_create_int32(env, ndkCamera_->cameraOutputCapability_->photoProfilesSize, &jsValue);
176 napi_set_named_property(env, cameraOutputCapability, "photoProfilesSize", jsValue);
177
178 napi_create_int32(env, ndkCamera_->cameraOutputCapability_->videoProfilesSize, &jsValue);
179 napi_set_named_property(env, cameraOutputCapability, "videoProfilesSize", jsValue);
180
181 napi_create_int32(env, ndkCamera_->cameraOutputCapability_->metadataProfilesSize, &jsValue);
182 napi_set_named_property(env, cameraOutputCapability, "metadataProfilesSize", jsValue);
183
184 return cameraOutputCapability;
185 }
186
CreatePreviewOutput(napi_env env,napi_callback_info info)187 static napi_value CreatePreviewOutput(napi_env env, napi_callback_info info)
188 {
189 napi_value result;
190
191 Camera_ErrorCode ret = ndkCamera_->CreatePreviewOutput();
192 napi_create_int32(env, ret, &result);
193 return result;
194 }
195
OnBufferAvaliable(OH_ImageReceiverNative *)196 static void OnBufferAvaliable(OH_ImageReceiverNative*)
197 {
198 OH_ImageNative *image = nullptr;
199 imageReceiverTest_->GetImageReceiverLatestImage(&image);
200 if (image != nullptr) {
201 imageReceiverTest_->DumpImageInfo(image);
202 imageReceiverTest_->ReleaseImage(image);
203 }
204 return;
205 }
206
CreatePhotoOutput(napi_env env,napi_callback_info info)207 static napi_value CreatePhotoOutput(napi_env env, napi_callback_info info)
208 {
209 napi_value result;
210
211 size_t argc = 4;
212 napi_value args[NUM_4] = {nullptr};
213
214 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
215
216 int32_t width = 0;
217 int32_t height = 0;
218 int32_t capacity = 0;
219 napi_get_value_int32(env, args[NUM_0], &width);
220 napi_get_value_int32(env, args[NUM_1], &height);
221 napi_get_value_int32(env, args[NUM_2], &capacity);
222
223 Image_ErrorCode res = imageReceiverTest_->CreateImageReceiver(width, height, capacity);
224 if (res != IMAGE_SUCCESS) {
225 napi_create_int32(env, res, &result);
226 return result;
227 }
228 res = imageReceiverTest_->RegisterImageReceiverListener(OnBufferAvaliable);
229 if (res != IMAGE_SUCCESS) {
230 napi_create_int32(env, res, &result);
231 return result;
232 }
233 res = imageReceiverTest_->VerifyImageReceiver();
234 if (res != IMAGE_SUCCESS) {
235 napi_create_int32(env, res, &result);
236 return result;
237 }
238 uint64_t id = 0;
239 res = imageReceiverTest_->GetImageReceiverSurfaceId(&id);
240 if (res != IMAGE_SUCCESS) {
241 napi_create_int32(env, res, &result);
242 return result;
243 }
244 std::string surfaceId = std::to_string(id);
245
246 Camera_ErrorCode ret = ndkCamera_->CreatePhotoOutput(surfaceId.c_str());
247 napi_create_int32(env, ret, &result);
248 return result;
249 }
CreateVideoOutput(napi_env env,napi_callback_info info)250 static napi_value CreateVideoOutput(napi_env env, napi_callback_info info)
251 {
252 size_t argc = 2;
253 napi_value args[2] = {nullptr};
254 napi_value result;
255
256 size_t videoIdLen = 0;
257 char* videoId = nullptr;
258 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
259 napi_get_value_string_utf8(env, args[0], nullptr, 0, &videoIdLen);
260 videoId = new char[videoIdLen + 1];
261 napi_get_value_string_utf8(env, args[0], videoId, videoIdLen + 1, &videoIdLen);
262 Camera_ErrorCode ret = ndkCamera_->CreateVideoOutput(videoId);
263 napi_create_int32(env, ret, &result);
264 return result;
265 }
266
CreateMetadataOutput(napi_env env,napi_callback_info info)267 static napi_value CreateMetadataOutput(napi_env env, napi_callback_info info)
268 {
269 napi_value result;
270
271 Camera_ErrorCode ret = ndkCamera_->CreateMetadataOutput();
272 napi_create_int32(env, ret, &result);
273 return result;
274 }
275
IsCameraMuted(napi_env env,napi_callback_info info)276 static napi_value IsCameraMuted(napi_env env, napi_callback_info info)
277 {
278 napi_value result;
279
280 Camera_ErrorCode ret = ndkCamera_->IsCameraMuted();
281 napi_create_int32(env, ret, &result);
282 return result;
283 }
284
CameraInputOpen(napi_env env,napi_callback_info info)285 static napi_value CameraInputOpen(napi_env env, napi_callback_info info)
286 {
287 napi_value result;
288
289 Camera_ErrorCode ret = ndkCamera_->CameraInputOpen();
290 napi_create_int32(env, ret, &result);
291 return result;
292 }
293
CameraInputClose(napi_env env,napi_callback_info info)294 static napi_value CameraInputClose(napi_env env, napi_callback_info info)
295 {
296 napi_value result;
297
298 Camera_ErrorCode ret = ndkCamera_->CameraInputClose();
299 napi_create_int32(env, ret, &result);
300 return result;
301 }
302
CameraInputRelease(napi_env env,napi_callback_info info)303 static napi_value CameraInputRelease(napi_env env, napi_callback_info info)
304 {
305 napi_value result;
306
307 Camera_ErrorCode ret = ndkCamera_->CameraInputRelease();
308 napi_create_int32(env, ret, &result);
309 return result;
310 }
311
PreviewOutputStart(napi_env env,napi_callback_info info)312 static napi_value PreviewOutputStart(napi_env env, napi_callback_info info)
313 {
314 napi_value result;
315
316 Camera_ErrorCode ret = ndkCamera_->PreviewOutputStart();
317 napi_create_int32(env, ret, &result);
318 return result;
319 }
320
PreviewOutputStop(napi_env env,napi_callback_info info)321 static napi_value PreviewOutputStop(napi_env env, napi_callback_info info)
322 {
323 napi_value result;
324
325 Camera_ErrorCode ret = ndkCamera_->PreviewOutputStop();
326 napi_create_int32(env, ret, &result);
327 return result;
328 }
329
PreviewOutputRelease(napi_env env,napi_callback_info info)330 static napi_value PreviewOutputRelease(napi_env env, napi_callback_info info)
331 {
332 napi_value result;
333
334 Camera_ErrorCode ret = ndkCamera_->PreviewOutputRelease();
335 napi_create_int32(env, ret, &result);
336 return result;
337 }
338
PhotoOutputCapture(napi_env env,napi_callback_info info)339 static napi_value PhotoOutputCapture(napi_env env, napi_callback_info info)
340 {
341 napi_value result;
342
343 Camera_ErrorCode ret = ndkCamera_->PhotoOutputCapture();
344 napi_create_int32(env, ret, &result);
345 return result;
346 }
347
PhotoOutputRelease(napi_env env,napi_callback_info info)348 static napi_value PhotoOutputRelease(napi_env env, napi_callback_info info)
349 {
350 napi_value result;
351
352 Camera_ErrorCode ret = ndkCamera_->PhotoOutputRelease();
353 napi_create_int32(env, ret, &result);
354 return result;
355 }
356
IsMirrorSupported(napi_env env,napi_callback_info info)357 static napi_value IsMirrorSupported(napi_env env, napi_callback_info info)
358 {
359 napi_value result;
360
361 ndkCamera_->IsMirrorSupported();
362 napi_get_boolean(env, ndkCamera_->IsMirror_, &result);
363 return result;
364 }
365
VideoOutputStop(napi_env env,napi_callback_info info)366 static napi_value VideoOutputStop(napi_env env, napi_callback_info info)
367 {
368 napi_value result;
369
370 Camera_ErrorCode ret = ndkCamera_->VideoOutputStop();
371 napi_create_int32(env, ret, &result);
372 return result;
373 }
374
VideoOutputRelease(napi_env env,napi_callback_info info)375 static napi_value VideoOutputRelease(napi_env env, napi_callback_info info)
376 {
377 napi_value result;
378
379 Camera_ErrorCode ret = ndkCamera_->VideoOutputRelease();
380 napi_create_int32(env, ret, &result);
381 return result;
382 }
383
MetadataOutputStart(napi_env env,napi_callback_info info)384 static napi_value MetadataOutputStart(napi_env env, napi_callback_info info)
385 {
386 napi_value result;
387
388 Camera_ErrorCode ret = ndkCamera_->MetadataOutputStart();
389 napi_create_int32(env, ret, &result);
390 return result;
391 }
392
MetadataOutputStop(napi_env env,napi_callback_info info)393 static napi_value MetadataOutputStop(napi_env env, napi_callback_info info)
394 {
395 napi_value result;
396
397 Camera_ErrorCode ret = ndkCamera_->MetadataOutputStop();
398 napi_create_int32(env, ret, &result);
399 return result;
400 }
401
MetadataOutputRelease(napi_env env,napi_callback_info info)402 static napi_value MetadataOutputRelease(napi_env env, napi_callback_info info)
403 {
404 napi_value result;
405
406 Camera_ErrorCode ret = ndkCamera_->MetadataOutputRelease();
407 napi_create_int32(env, ret, &result);
408 return result;
409 }
410
SessionAddInput(napi_env env,napi_callback_info info)411 static napi_value SessionAddInput(napi_env env, napi_callback_info info)
412 {
413 napi_value result;
414
415 Camera_ErrorCode ret = ndkCamera_->SessionAddInput();
416 napi_create_int32(env, ret, &result);
417 return result;
418 }
419
SessionRemoveInput(napi_env env,napi_callback_info info)420 static napi_value SessionRemoveInput(napi_env env, napi_callback_info info)
421 {
422 napi_value result;
423
424 Camera_ErrorCode ret = ndkCamera_->SessionRemoveInput();
425 napi_create_int32(env, ret, &result);
426 return result;
427 }
428
SessionAddPreviewOutput(napi_env env,napi_callback_info info)429 static napi_value SessionAddPreviewOutput(napi_env env, napi_callback_info info)
430 {
431 napi_value result;
432
433 Camera_ErrorCode ret = ndkCamera_->SessionAddPreviewOutput();
434 napi_create_int32(env, ret, &result);
435 return result;
436 }
437
SessionAddPhotoOutput(napi_env env,napi_callback_info info)438 static napi_value SessionAddPhotoOutput(napi_env env, napi_callback_info info)
439 {
440 napi_value result;
441
442 Camera_ErrorCode ret = ndkCamera_->SessionAddPhotoOutput();
443 napi_create_int32(env, ret, &result);
444 return result;
445 }
446
SessionAddVideoOutput(napi_env env,napi_callback_info info)447 static napi_value SessionAddVideoOutput(napi_env env, napi_callback_info info)
448 {
449 napi_value result;
450
451 Camera_ErrorCode ret = ndkCamera_->SessionAddVideoOutput();
452 napi_create_int32(env, ret, &result);
453 return result;
454 }
455
SessionAddMetadataOutput(napi_env env,napi_callback_info info)456 static napi_value SessionAddMetadataOutput(napi_env env, napi_callback_info info)
457 {
458 napi_value result;
459
460 Camera_ErrorCode ret = ndkCamera_->SessionAddMetadataOutput();
461 napi_create_int32(env, ret, &result);
462 return result;
463 }
464
SessionRemovePreviewOutput(napi_env env,napi_callback_info info)465 static napi_value SessionRemovePreviewOutput(napi_env env, napi_callback_info info)
466 {
467 napi_value result;
468
469 Camera_ErrorCode ret = ndkCamera_->SessionRemovePreviewOutput();
470 napi_create_int32(env, ret, &result);
471 return result;
472 }
473
SessionRemovePhotoOutput(napi_env env,napi_callback_info info)474 static napi_value SessionRemovePhotoOutput(napi_env env, napi_callback_info info)
475 {
476 napi_value result;
477
478 Camera_ErrorCode ret = ndkCamera_->SessionRemovePhotoOutput();
479 napi_create_int32(env, ret, &result);
480 return result;
481 }
482
SessionRemoveVideoOutput(napi_env env,napi_callback_info info)483 static napi_value SessionRemoveVideoOutput(napi_env env, napi_callback_info info)
484 {
485 napi_value result;
486
487 Camera_ErrorCode ret = ndkCamera_->SessionRemoveVideoOutput();
488 napi_create_int32(env, ret, &result);
489 return result;
490 }
491
SessionRemoveMetadataOutput(napi_env env,napi_callback_info info)492 static napi_value SessionRemoveMetadataOutput(napi_env env, napi_callback_info info)
493 {
494 napi_value result;
495
496 Camera_ErrorCode ret = ndkCamera_->SessionRemoveMetadataOutput();
497 napi_create_int32(env, ret, &result);
498 return result;
499 }
500
SessionStart(napi_env env,napi_callback_info info)501 static napi_value SessionStart(napi_env env, napi_callback_info info)
502 {
503 napi_value result;
504
505 Camera_ErrorCode ret = ndkCamera_->SessionStart();
506 napi_create_int32(env, ret, &result);
507 return result;
508 }
509
SessionStop(napi_env env,napi_callback_info info)510 static napi_value SessionStop(napi_env env, napi_callback_info info)
511 {
512 napi_value result;
513
514 Camera_ErrorCode ret = ndkCamera_->SessionStop();
515 napi_create_int32(env, ret, &result);
516 return result;
517 }
518
SessionBegin(napi_env env,napi_callback_info info)519 static napi_value SessionBegin(napi_env env, napi_callback_info info)
520 {
521 napi_value result;
522
523 Camera_ErrorCode ret = ndkCamera_->SessionBegin();
524 napi_create_int32(env, ret, &result);
525 return result;
526 }
527
SessionCommitConfig(napi_env env,napi_callback_info info)528 static napi_value SessionCommitConfig(napi_env env, napi_callback_info info)
529 {
530 napi_value result;
531
532 Camera_ErrorCode ret = ndkCamera_->SessionCommitConfig();
533 napi_create_int32(env, ret, &result);
534 return result;
535 }
536
SessionRelease(napi_env env,napi_callback_info info)537 static napi_value SessionRelease(napi_env env, napi_callback_info info)
538 {
539 napi_value result;
540
541 Camera_ErrorCode ret = ndkCamera_->SessionRelease();
542 napi_create_int32(env, ret, &result);
543 return result;
544 }
545
CreateSession(napi_env env,napi_callback_info info)546 static napi_value CreateSession(napi_env env, napi_callback_info info)
547 {
548 napi_value result;
549
550 Camera_ErrorCode ret = ndkCamera_->CreateSession();
551 napi_create_int32(env, ret, &result);
552 return result;
553 }
554
SessionHasFlash(napi_env env,napi_callback_info info)555 static napi_value SessionHasFlash(napi_env env, napi_callback_info info)
556 {
557 napi_value result;
558
559 ndkCamera_->SessionHasFlash();
560 napi_get_boolean(env, ndkCamera_->HasFlash_, &result);
561 return result;
562 }
563
SessionIsFlashModeSupported(napi_env env,napi_callback_info info)564 static napi_value SessionIsFlashModeSupported(napi_env env, napi_callback_info info)
565 {
566 size_t argc = 2;
567 napi_value args[2] = {nullptr};
568 napi_value result;
569
570 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
571
572 int32_t flashMode;
573 napi_get_value_int32(env, args[0], &flashMode);
574
575 ndkCamera_->SessionIsFlashModeSupported(flashMode);
576 napi_get_boolean(env, ndkCamera_->IsFlashMode_, &result);
577 return result;
578 }
579
SessionGetFlashMode(napi_env env,napi_callback_info info)580 static napi_value SessionGetFlashMode(napi_env env, napi_callback_info info)
581 {
582 napi_value result;
583
584 ndkCamera_->SessionGetFlashMode();
585 Camera_FlashMode flashMode = ndkCamera_->flashMode_;
586 napi_create_int32(env, flashMode, &result);
587 return result;
588 }
589
SessionSetFlashMode(napi_env env,napi_callback_info info)590 static napi_value SessionSetFlashMode(napi_env env, napi_callback_info info)
591 {
592 size_t argc = 2;
593 napi_value args[2] = {nullptr};
594 napi_value result;
595
596 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
597
598 int32_t flashMode;
599 napi_get_value_int32(env, args[0], &flashMode);
600 Camera_ErrorCode ret = ndkCamera_->SessionSetFlashMode(flashMode);
601 napi_create_int32(env, ret, &result);
602 return result;
603 }
604
SessionIsExposureModeSupported(napi_env env,napi_callback_info info)605 static napi_value SessionIsExposureModeSupported(napi_env env, napi_callback_info info)
606 {
607 size_t argc = 2;
608 napi_value args[2] = {nullptr};
609 napi_value result;
610
611 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
612
613 int32_t exposureMode;
614 napi_get_value_int32(env, args[0], &exposureMode);
615
616 ndkCamera_->SessionIsExposureModeSupported(exposureMode);
617 napi_get_boolean(env, ndkCamera_->IsExposureMode_, &result);
618 return result;
619 }
620
SessionGetExposureMode(napi_env env,napi_callback_info info)621 static napi_value SessionGetExposureMode(napi_env env, napi_callback_info info)
622 {
623 napi_value result;
624
625 ndkCamera_->SessionGetExposureMode();
626 Camera_ExposureMode exposureMode = ndkCamera_->exposureMode_;
627 napi_create_int32(env, exposureMode, &result);
628 return result;
629 }
630
SessionSetExposureMode(napi_env env,napi_callback_info info)631 static napi_value SessionSetExposureMode(napi_env env, napi_callback_info info)
632 {
633 size_t argc = 2;
634 napi_value args[2] = {nullptr};
635 napi_value result;
636 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
637 int32_t exposureMode;
638 napi_get_value_int32(env, args[0], &exposureMode);
639 Camera_ErrorCode ret = ndkCamera_->SessionSetExposureMode(exposureMode);
640 napi_create_int32(env, ret, &result);
641 return result;
642 }
643
SessionGetMeteringPoint(napi_env env,napi_callback_info info)644 static napi_value SessionGetMeteringPoint(napi_env env, napi_callback_info info)
645 {
646 ndkCamera_->SessionGetMeteringPoint();
647 Camera_Point point = ndkCamera_->point_;
648 napi_value Point = nullptr;
649 napi_create_object(env, &Point);
650
651 napi_value jsValue = nullptr;
652 napi_create_double(env, point.x, &jsValue);
653 napi_set_named_property(env, Point, "x", jsValue);
654
655 napi_create_double(env, point.y, &jsValue);
656 napi_set_named_property(env, Point, "y", jsValue);
657
658 return Point;
659 }
660
SessionSetMeteringPoint(napi_env env,napi_callback_info info)661 static napi_value SessionSetMeteringPoint(napi_env env, napi_callback_info info)
662 {
663 size_t argc = 2;
664 napi_value args[2] = {nullptr};
665 napi_value result;
666
667 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
668
669 napi_value value = nullptr;
670 napi_get_named_property(env, args[0], "x", &value);
671 double x;
672 napi_get_value_double(env, value, &x);
673
674 napi_get_named_property(env, args[0], "y", &value);
675 double y;
676 napi_get_value_double(env, value, &y);
677
678 Camera_ErrorCode ret = ndkCamera_->SessionSetMeteringPoint(x, y);
679 napi_create_int32(env, ret, &result);
680 return result;
681 }
682
SessionGetExposureBiasRange(napi_env env,napi_callback_info info)683 static napi_value SessionGetExposureBiasRange(napi_env env, napi_callback_info info)
684 {
685 ndkCamera_->SessionGetExposureBiasRange();
686 napi_value exposureBias = nullptr;
687 napi_create_object(env, &exposureBias);
688
689 napi_value jsValue = nullptr;
690
691 napi_create_double(env, ndkCamera_->minExposureBias_, &jsValue);
692 napi_set_named_property(env, exposureBias, "minExposureBias", jsValue);
693
694 napi_create_double(env, ndkCamera_->maxExposureBias_, &jsValue);
695 napi_set_named_property(env, exposureBias, "maxExposureBias", jsValue);
696
697 return exposureBias;
698 }
699
SessionSetExposureBias(napi_env env,napi_callback_info info)700 static napi_value SessionSetExposureBias(napi_env env, napi_callback_info info)
701 {
702 size_t argc = 2;
703 napi_value args[2] = {nullptr};
704 napi_value result;
705
706 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
707
708 double exposureBias;
709 napi_get_value_double(env, args[0], &exposureBias);
710 Camera_ErrorCode ret = ndkCamera_->SessionSetExposureBias(exposureBias);
711 napi_create_int32(env, ret, &result);
712 return result;
713 }
714
SessionGetExposureBias(napi_env env,napi_callback_info info)715 static napi_value SessionGetExposureBias(napi_env env, napi_callback_info info)
716 {
717 napi_value result;
718
719 ndkCamera_->SessionGetExposureBias();
720 double exposureBias = ndkCamera_->exposureBias_;
721 napi_create_double(env, exposureBias, &result);
722 return result;
723 }
724
SessionIsFocusModeSupported(napi_env env,napi_callback_info info)725 static napi_value SessionIsFocusModeSupported(napi_env env, napi_callback_info info)
726 {
727 size_t argc = 2;
728 napi_value args[2] = {nullptr};
729 napi_value result;
730
731 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
732
733 int32_t focusMode;
734 napi_get_value_int32(env, args[0], &focusMode);
735
736 ndkCamera_->SessionIsFocusModeSupported(focusMode);
737 napi_get_boolean(env, ndkCamera_->isFocusSupported_, &result);
738 return result;
739 }
740
SessionGetFocusMode(napi_env env,napi_callback_info info)741 static napi_value SessionGetFocusMode(napi_env env, napi_callback_info info)
742 {
743 napi_value result;
744
745 ndkCamera_->SessionGetFocusMode();
746 Camera_FocusMode focusMode = ndkCamera_->focusMode_;
747 napi_create_int32(env, focusMode, &result);
748 return result;
749 }
750
SessionSetFocusMode(napi_env env,napi_callback_info info)751 static napi_value SessionSetFocusMode(napi_env env, napi_callback_info info)
752 {
753 size_t argc = 2;
754 napi_value args[2] = {nullptr};
755 napi_value result;
756
757 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
758
759 int32_t focusMode;
760 napi_get_value_int32(env, args[0], &focusMode);
761 Camera_ErrorCode ret = ndkCamera_->SessionSetFocusMode(focusMode);
762 napi_create_int32(env, ret, &result);
763 return result;
764 }
765
SessionSetFocusPoint(napi_env env,napi_callback_info info)766 static napi_value SessionSetFocusPoint(napi_env env, napi_callback_info info)
767 {
768 size_t argc = 2;
769 napi_value args[2] = {nullptr};
770 napi_value result;
771
772 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
773
774 napi_value value = nullptr;
775 napi_get_named_property(env, args[0], "x", &value);
776 double x;
777 napi_get_value_double(env, value, &x);
778
779 napi_get_named_property(env, args[0], "y", &value);
780 double y;
781 napi_get_value_double(env, value, &y);
782
783 Camera_ErrorCode ret = ndkCamera_->SessionSetFocusPoint(x, y);
784 napi_create_int32(env, ret, &result);
785 return result;
786 }
787
SessionGetFocusPoint(napi_env env,napi_callback_info info)788 static napi_value SessionGetFocusPoint(napi_env env, napi_callback_info info)
789 {
790 ndkCamera_->SessionGetFocusPoint();
791 Camera_Point point = ndkCamera_->focusPoint_;
792 napi_value Point = nullptr;
793 napi_create_object(env, &Point);
794
795 napi_value jsValue = nullptr;
796 napi_create_double(env, point.x, &jsValue);
797 napi_set_named_property(env, Point, "x", jsValue);
798
799 napi_create_double(env, point.y, &jsValue);
800 napi_set_named_property(env, Point, "y", jsValue);
801
802 return Point;
803 }
804
SessionGetZoomRatioRange(napi_env env,napi_callback_info info)805 static napi_value SessionGetZoomRatioRange(napi_env env, napi_callback_info info)
806 {
807 ndkCamera_->SessionGetZoomRatioRange();
808
809 napi_value zoomRatio = nullptr;
810 napi_create_object(env, &zoomRatio);
811
812 napi_value jsValue = nullptr;
813
814 napi_create_double(env, ndkCamera_->minZoom_, &jsValue);
815 napi_set_named_property(env, zoomRatio, "minZoom", jsValue);
816
817 napi_create_double(env, ndkCamera_->maxZoom_, &jsValue);
818 napi_set_named_property(env, zoomRatio, "maxZoom", jsValue);
819
820 return zoomRatio;
821 }
822
SessionGetZoomRatio(napi_env env,napi_callback_info info)823 static napi_value SessionGetZoomRatio(napi_env env, napi_callback_info info)
824 {
825 napi_value result;
826
827 ndkCamera_->SessionGetZoomRatio();
828 napi_create_double(env, ndkCamera_->zoom_, &result);
829 return result;
830 }
831
SessionSetZoomRatio(napi_env env,napi_callback_info info)832 static napi_value SessionSetZoomRatio(napi_env env, napi_callback_info info)
833 {
834 size_t argc = 2;
835 napi_value args[2] = {nullptr};
836 napi_value result;
837
838 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
839
840 double zoomRatio;
841 napi_get_value_double(env, args[0], &zoomRatio);
842 Camera_ErrorCode ret = ndkCamera_->SessionSetZoomRatio(zoomRatio);
843 napi_create_int32(env, ret, &result);
844 return result;
845 }
846
SessionIsVideoStabilizationModeSupported(napi_env env,napi_callback_info info)847 static napi_value SessionIsVideoStabilizationModeSupported(napi_env env, napi_callback_info info)
848 {
849 size_t argc = 2;
850 napi_value args[2] = {nullptr};
851 napi_value result;
852
853 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
854 int32_t videoStabilizationMode;
855 napi_get_value_int32(env, args[0], &videoStabilizationMode);
856 ndkCamera_->SessionIsVideoStabilizationModeSupported(videoStabilizationMode);
857 napi_get_boolean(env, ndkCamera_->isVideoSupported_, &result);
858 return result;
859 }
860
SessionGetVideoStabilizationMode(napi_env env,napi_callback_info info)861 static napi_value SessionGetVideoStabilizationMode(napi_env env, napi_callback_info info)
862 {
863 napi_value result;
864
865 ndkCamera_->SessionGetVideoStabilizationMode();
866 Camera_VideoStabilizationMode videoMode = ndkCamera_->videoMode_;
867 napi_create_int32(env, videoMode, &result);
868 return result;
869 }
870
SessionSetVideoStabilizationMode(napi_env env,napi_callback_info info)871 static napi_value SessionSetVideoStabilizationMode(napi_env env, napi_callback_info info)
872 {
873 size_t argc = 2;
874 napi_value args[2] = {nullptr};
875 napi_value result;
876
877 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
878
879 int32_t videoStabilizationMode;
880 napi_get_value_int32(env, args[0], &videoStabilizationMode);
881 Camera_ErrorCode ret = ndkCamera_->SessionSetVideoStabilizationMode(videoStabilizationMode);
882 napi_create_int32(env, ret, &result);
883 return result;
884 }
885
GetCameraCallbackCode(napi_env env,napi_callback_info info)886 static napi_value GetCameraCallbackCode(napi_env env, napi_callback_info info)
887 {
888 napi_value result;
889
890 CameraCallbackCode status = ndkCamera_->cameraCallbackCode_;
891 napi_create_int32(env, status, &result);
892 return result;
893 }
894
GetCaptureParam(napi_env env,napi_value captureConfigValue,Capture_Setting * config)895 static napi_value GetCaptureParam(napi_env env, napi_value captureConfigValue, Capture_Setting *config)
896 {
897 napi_value value = nullptr;
898 napi_get_named_property(env, captureConfigValue, "quality", &value);
899 napi_get_value_int32(env, value, &config->quality);
900
901 napi_get_named_property(env, captureConfigValue, "rotation", &value);
902 napi_get_value_int32(env, value, &config->rotation);
903
904 napi_get_named_property(env, captureConfigValue, "mirror", &value);
905 napi_get_value_bool(env, value, &config->mirror);
906
907 napi_get_named_property(env, captureConfigValue, "latitude", &value);
908 napi_get_value_int32(env, value, &config->latitude);
909
910 napi_get_named_property(env, captureConfigValue, "longitude", &value);
911 napi_get_value_int32(env, value, &config->longitude);
912
913 napi_get_named_property(env, captureConfigValue, "altitude", &value);
914 napi_get_value_int32(env, value, &config->altitude);
915
916 return 0;
917 }
918
SetConfig(Capture_Setting settings,Camera_PhotoCaptureSetting * photoSetting,Camera_Location * location)919 static void SetConfig(Capture_Setting settings, Camera_PhotoCaptureSetting* photoSetting, Camera_Location* location)
920 {
921 if (photoSetting == nullptr || location == nullptr) {
922 return;
923 }
924 photoSetting->quality = static_cast<Camera_QualityLevel>(settings.quality);
925 photoSetting->rotation = static_cast<Camera_ImageRotation>(settings.rotation);
926 photoSetting->mirror = settings.mirror;
927 location->altitude = settings.altitude;
928 location->latitude = settings.latitude;
929 location->longitude = settings.longitude;
930 photoSetting->location = location;
931 }
932
TakePictureWithSettings(napi_env env,napi_callback_info info)933 static napi_value TakePictureWithSettings(napi_env env, napi_callback_info info)
934 {
935 size_t argc = 1;
936 napi_value args[1] = {nullptr};
937 Camera_PhotoCaptureSetting photoSetting;
938 Capture_Setting setting_inner;
939 Camera_Location* location = new Camera_Location;
940
941 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
942 GetCaptureParam(env, args[0], &setting_inner);
943 SetConfig(setting_inner, &photoSetting, location);
944
945 napi_value result;
946 Camera_ErrorCode ret = ndkCamera_->TakePictureWithPhotoSettings(photoSetting);
947 napi_create_int32(env, ret, &result);
948 return result;
949 }
950
951 EXTERN_C_START
Init(napi_env env,napi_value exports)952 static napi_value Init(napi_env env, napi_value exports)
953 {
954 napi_property_descriptor desc[] = {
955 { "initCamera", nullptr, InitCamera, nullptr, nullptr, nullptr, napi_default, nullptr },
956 { "getSupportedCameras", nullptr, GetSupportedCameras, nullptr, nullptr, nullptr, napi_default, nullptr },
957 { "createCameraInput", nullptr, CreateCameraInput, nullptr, nullptr, nullptr, napi_default, nullptr },
958 { "createCameraInputWithPositionAndType", nullptr, CreateCameraInputWithPositionAndType, nullptr, nullptr,
959 nullptr, napi_default, nullptr },
960 { "getSupportedOutputCapability", nullptr, GetSupportedOutputCapability, nullptr, nullptr, nullptr,
961 napi_default, nullptr },
962 { "createPreviewOutput", nullptr, CreatePreviewOutput, nullptr, nullptr, nullptr, napi_default, nullptr },
963 { "createPhotoOutput", nullptr, CreatePhotoOutput, nullptr, nullptr, nullptr, napi_default, nullptr },
964 { "createVideoOutput", nullptr, CreateVideoOutput, nullptr, nullptr, nullptr, napi_default, nullptr },
965 { "createMetadataOutput", nullptr, CreateMetadataOutput, nullptr, nullptr, nullptr, napi_default, nullptr },
966 { "createSession", nullptr, CreateSession, nullptr, nullptr, nullptr, napi_default, nullptr },
967 { "isCameraMuted", nullptr, IsCameraMuted, nullptr, nullptr, nullptr, napi_default, nullptr },
968 { "cameraInputOpen", nullptr, CameraInputOpen, nullptr, nullptr, nullptr, napi_default, nullptr },
969 { "cameraInputClose", nullptr, CameraInputClose, nullptr, nullptr, nullptr, napi_default, nullptr },
970 { "cameraInputRelease", nullptr, CameraInputRelease, nullptr, nullptr, nullptr, napi_default, nullptr },
971 { "previewOutputStart", nullptr, PreviewOutputStart, nullptr, nullptr, nullptr, napi_default, nullptr },
972 { "previewOutputStop", nullptr, PreviewOutputStop, nullptr, nullptr, nullptr, napi_default, nullptr },
973 { "previewOutputRelease", nullptr, PreviewOutputRelease, nullptr, nullptr, nullptr, napi_default, nullptr },
974 { "photoOutputCapture", nullptr, PhotoOutputCapture, nullptr, nullptr, nullptr, napi_default, nullptr },
975 { "photoOutputRelease", nullptr, PhotoOutputRelease, nullptr, nullptr, nullptr, napi_default, nullptr },
976 { "isMirrorSupported", nullptr, IsMirrorSupported, nullptr, nullptr, nullptr, napi_default, nullptr },
977 { "videoOutputStart", nullptr, VideoOutputStart, nullptr, nullptr, nullptr, napi_default, nullptr },
978 { "videoOutputStop", nullptr, VideoOutputStop, nullptr, nullptr, nullptr, napi_default, nullptr },
979 { "videoOutputRelease", nullptr, VideoOutputRelease, nullptr, nullptr, nullptr, napi_default, nullptr },
980 { "metadataOutputStart", nullptr, MetadataOutputStart, nullptr, nullptr, nullptr, napi_default, nullptr },
981 { "metadataOutputStop", nullptr, MetadataOutputStop, nullptr, nullptr, nullptr, napi_default, nullptr },
982 { "metadataOutputRelease", nullptr, MetadataOutputRelease, nullptr, nullptr, nullptr, napi_default, nullptr },
983 { "sessionAddInput", nullptr, SessionAddInput, nullptr, nullptr, nullptr, napi_default, nullptr },
984 { "sessionRemoveInput", nullptr, SessionRemoveInput, nullptr, nullptr, nullptr, napi_default, nullptr },
985 { "sessionAddPreviewOutput", nullptr, SessionAddPreviewOutput, nullptr, nullptr, nullptr,
986 napi_default, nullptr },
987 { "sessionAddPhotoOutput", nullptr, SessionAddPhotoOutput, nullptr, nullptr, nullptr, napi_default, nullptr },
988 { "sessionAddVideoOutput", nullptr, SessionAddVideoOutput, nullptr, nullptr, nullptr, napi_default, nullptr },
989 { "sessionAddMetadataOutput", nullptr, SessionAddMetadataOutput, nullptr, nullptr, nullptr,
990 napi_default, nullptr },
991 { "sessionRemovePreviewOutput", nullptr, SessionRemovePreviewOutput, nullptr, nullptr, nullptr,
992 napi_default, nullptr },
993 { "sessionRemovePhotoOutput", nullptr, SessionRemovePhotoOutput, nullptr, nullptr, nullptr,
994 napi_default, nullptr },
995 { "sessionRemoveVideoOutput", nullptr, SessionRemoveVideoOutput, nullptr, nullptr, nullptr,
996 napi_default, nullptr },
997 { "sessionRemoveMetadataOutput", nullptr, SessionRemoveMetadataOutput, nullptr, nullptr, nullptr,
998 napi_default, nullptr },
999 { "sessionStart", nullptr, SessionStart, nullptr, nullptr, nullptr, napi_default, nullptr },
1000 { "sessionStop", nullptr, SessionStop, nullptr, nullptr, nullptr, napi_default, nullptr },
1001 { "sessionBegin", nullptr, SessionBegin, nullptr, nullptr, nullptr, napi_default, nullptr },
1002 { "sessionCommitConfig", nullptr, SessionCommitConfig, nullptr, nullptr, nullptr,
1003 napi_default, nullptr },
1004 { "sessionRelease", nullptr, SessionRelease, nullptr, nullptr, nullptr, napi_default, nullptr },
1005 { "sessionHasFlash", nullptr, SessionHasFlash, nullptr, nullptr, nullptr, napi_default, nullptr },
1006 { "sessionIsFlashModeSupported", nullptr, SessionIsFlashModeSupported, nullptr, nullptr, nullptr,
1007 napi_default, nullptr },
1008 { "sessionGetFlashMode", nullptr, SessionGetFlashMode, nullptr, nullptr, nullptr, napi_default, nullptr },
1009 { "sessionSetFlashMode", nullptr, SessionSetFlashMode, nullptr, nullptr, nullptr, napi_default, nullptr },
1010 { "sessionIsExposureModeSupported", nullptr, SessionIsExposureModeSupported, nullptr, nullptr, nullptr,
1011 napi_default, nullptr },
1012 { "sessionGetExposureMode", nullptr, SessionGetExposureMode, nullptr, nullptr, nullptr,
1013 napi_default, nullptr },
1014 { "sessionSetExposureMode", nullptr, SessionSetExposureMode, nullptr, nullptr, nullptr,
1015 napi_default, nullptr },
1016 { "sessionGetMeteringPoint", nullptr, SessionGetMeteringPoint, nullptr, nullptr, nullptr,
1017 napi_default, nullptr },
1018 { "sessionSetMeteringPoint", nullptr, SessionSetMeteringPoint, nullptr, nullptr, nullptr,
1019 napi_default, nullptr },
1020 { "sessionGetExposureBiasRange", nullptr, SessionGetExposureBiasRange, nullptr, nullptr, nullptr,
1021 napi_default, nullptr },
1022 { "sessionSetExposureBias", nullptr, SessionSetExposureBias, nullptr, nullptr, nullptr, napi_default, nullptr },
1023 { "sessionGetExposureBias", nullptr, SessionGetExposureBias, nullptr, nullptr, nullptr, napi_default, nullptr },
1024 { "sessionIsFocusModeSupported", nullptr, SessionIsFocusModeSupported, nullptr, nullptr, nullptr,
1025 napi_default, nullptr },
1026 { "sessionGetFocusMode", nullptr, SessionGetFocusMode, nullptr, nullptr, nullptr, napi_default, nullptr },
1027 { "sessionSetFocusMode", nullptr, SessionSetFocusMode, nullptr, nullptr, nullptr, napi_default, nullptr },
1028 { "sessionSetFocusPoint", nullptr, SessionSetFocusPoint, nullptr, nullptr, nullptr, napi_default, nullptr },
1029 { "sessionGetFocusPoint", nullptr, SessionGetFocusPoint, nullptr, nullptr, nullptr, napi_default, nullptr },
1030 { "sessionGetZoomRatioRange", nullptr, SessionGetZoomRatioRange, nullptr, nullptr, nullptr,
1031 napi_default, nullptr },
1032 { "sessionGetZoomRatio", nullptr, SessionGetZoomRatio, nullptr, nullptr, nullptr, napi_default, nullptr },
1033 { "sessionSetZoomRatio", nullptr, SessionSetZoomRatio, nullptr, nullptr, nullptr, napi_default, nullptr },
1034 { "sessionIsVideoStabilizationModeSupported", nullptr, SessionIsVideoStabilizationModeSupported,
1035 nullptr, nullptr, nullptr, napi_default, nullptr },
1036 { "sessionGetVideoStabilizationMode", nullptr, SessionGetVideoStabilizationMode, nullptr, nullptr, nullptr,
1037 napi_default, nullptr },
1038 { "sessionSetVideoStabilizationMode", nullptr, SessionSetVideoStabilizationMode, nullptr, nullptr, nullptr,
1039 napi_default, nullptr },
1040 { "getCameraCallbackCode", nullptr, GetCameraCallbackCode, nullptr, nullptr, nullptr, napi_default, nullptr },
1041 { "takePictureWithSettings", nullptr, TakePictureWithSettings, nullptr, nullptr, nullptr,
1042 napi_default, nullptr },
1043 { "JsCreateImageReceiverOptions", nullptr, OHOS::Media::ImageReceiverTest::JsCreateImageReceiverOptions,
1044 nullptr, nullptr, nullptr, napi_static, nullptr },
1045 { "JsImageReceiverOptionsGetSize", nullptr, OHOS::Media::ImageReceiverTest::JsImageReceiverOptionsGetSize,
1046 nullptr, nullptr, nullptr, napi_static, nullptr },
1047 { "JsImageReceiverOptionsSetSize", nullptr, OHOS::Media::ImageReceiverTest::JsImageReceiverOptionsSetSize,
1048 nullptr, nullptr, nullptr, napi_static, nullptr },
1049 {
1050 "JsImageReceiverOptionsGetCapacity", nullptr,
1051 OHOS::Media::ImageReceiverTest::JsImageReceiverOptionsGetCapacity,
1052 nullptr, nullptr, nullptr, napi_static, nullptr
1053 },
1054 {
1055 "JsImageReceiverOptionsSetCapacity", nullptr,
1056 OHOS::Media::ImageReceiverTest::JsImageReceiverOptionsSetCapacity,
1057 nullptr, nullptr, nullptr, napi_static, nullptr
1058 },
1059 { "JsReleaseImageReceiverOptions", nullptr, OHOS::Media::ImageReceiverTest::JsReleaseImageReceiverOptions,
1060 nullptr, nullptr, nullptr, napi_static, nullptr },
1061 { "JsCreateImageReceiver", nullptr, OHOS::Media::ImageReceiverTest::JsCreateImageReceiver,
1062 nullptr, nullptr, nullptr, napi_static, nullptr },
1063 { "JsGetReceivingSurfaceId", nullptr, OHOS::Media::ImageReceiverTest::JsGetReceivingSurfaceId,
1064 nullptr, nullptr, nullptr, napi_static, nullptr },
1065 { "JsReadLatestImage", nullptr, OHOS::Media::ImageReceiverTest::JsReadLatestImage,
1066 nullptr, nullptr, nullptr, napi_static, nullptr },
1067 { "JsReadNextImage", nullptr, OHOS::Media::ImageReceiverTest::JsReadNextImage,
1068 nullptr, nullptr, nullptr, napi_static, nullptr },
1069 { "JsOn", nullptr, OHOS::Media::ImageReceiverTest::JsOn,
1070 nullptr, nullptr, nullptr, napi_static, nullptr },
1071 { "JsOff", nullptr, OHOS::Media::ImageReceiverTest::JsOff,
1072 nullptr, nullptr, nullptr, napi_static, nullptr },
1073 { "JsGetSize", nullptr, OHOS::Media::ImageReceiverTest::JsGetSize,
1074 nullptr, nullptr, nullptr, napi_static, nullptr },
1075 { "JsGetCapacity", nullptr, OHOS::Media::ImageReceiverTest::JsGetCapacity,
1076 nullptr, nullptr, nullptr, napi_static, nullptr },
1077 { "JsReleaseImageReceiver", nullptr, OHOS::Media::ImageReceiverTest::JsReleaseImageReceiver,
1078 nullptr, nullptr, nullptr, napi_static, nullptr },
1079 { "JsGetImageSize", nullptr, OHOS::Media::ImageReceiverTest::JsGetImageSize,
1080 nullptr, nullptr, nullptr, napi_static, nullptr },
1081 { "JsGetImageComponentTypes", nullptr, OHOS::Media::ImageReceiverTest::JsGetImageComponentTypes,
1082 nullptr, nullptr, nullptr, napi_static, nullptr },
1083 { "JsGetImageByteBuffer", nullptr, OHOS::Media::ImageReceiverTest::JsGetImageByteBuffer,
1084 nullptr, nullptr, nullptr, napi_static, nullptr },
1085 { "JsGetImageBufferSize", nullptr, OHOS::Media::ImageReceiverTest::JsGetImageBufferSize,
1086 nullptr, nullptr, nullptr, napi_static, nullptr },
1087 { "JsGetImageRowStride", nullptr, OHOS::Media::ImageReceiverTest::JsGetImageRowStride,
1088 nullptr, nullptr, nullptr, napi_static, nullptr },
1089 { "JsGetImagePixelStride", nullptr, OHOS::Media::ImageReceiverTest::JsGetImagePixelStride,
1090 nullptr, nullptr, nullptr, napi_static, nullptr },
1091 { "JsReleaseImage", nullptr, OHOS::Media::ImageReceiverTest::JsReleaseImage,
1092 nullptr, nullptr, nullptr, napi_static, nullptr },
1093 { "createImageReceiver", nullptr, OHOS::Media::ImageReceiverNDKTest::JsCreateImageReceiver,
1094 nullptr, nullptr, nullptr, napi_static, nullptr },
1095 { "getReceivingSurfaceId", nullptr, OHOS::Media::ImageReceiverNDKTest::JsGetReceivingSurfaceId,
1096 nullptr, nullptr, nullptr, napi_static, nullptr },
1097 { "readLatestImage", nullptr, OHOS::Media::ImageReceiverNDKTest::JsReadLatestImage,
1098 nullptr, nullptr, nullptr, napi_static, nullptr },
1099 { "readNextImage", nullptr, OHOS::Media::ImageReceiverNDKTest::JsReadNextImage,
1100 nullptr, nullptr, nullptr, napi_static, nullptr },
1101 { "on", nullptr, OHOS::Media::ImageReceiverNDKTest::JsOn,
1102 nullptr, nullptr, nullptr, napi_static, nullptr },
1103 { "getSize", nullptr, OHOS::Media::ImageReceiverNDKTest::JsGetSize,
1104 nullptr, nullptr, nullptr, napi_static, nullptr },
1105 { "getCapacity", nullptr, OHOS::Media::ImageReceiverNDKTest::JsGetCapacity,
1106 nullptr, nullptr, nullptr, napi_static, nullptr },
1107 { "getFormat", nullptr, OHOS::Media::ImageReceiverNDKTest::JsGetFormat,
1108 nullptr, nullptr, nullptr, napi_static, nullptr },
1109 { "getOnEventCount", nullptr, OHOS::Media::ImageReceiverNDKTest::JsGetOnEventCount,
1110 nullptr, nullptr, nullptr, napi_static, nullptr },
1111 { "imageClipRect", nullptr, OHOS::Media::ImageReceiverNDKTest::JsImageClipRect,
1112 nullptr, nullptr, nullptr, napi_static, nullptr },
1113 { "imageSize", nullptr, OHOS::Media::ImageReceiverNDKTest::JsImageSize,
1114 nullptr, nullptr, nullptr, napi_static, nullptr },
1115 { "imageFormat", nullptr, OHOS::Media::ImageReceiverNDKTest::JsImageFormat,
1116 nullptr, nullptr, nullptr, napi_static, nullptr },
1117 { "imageGetComponent", nullptr, OHOS::Media::ImageReceiverNDKTest::JsImageGetComponent,
1118 nullptr, nullptr, nullptr, napi_static, nullptr },
1119 { "receiverRelease", nullptr, OHOS::Media::ImageReceiverNDKTest::JsReceiverRelease,
1120 nullptr, nullptr, nullptr, napi_static, nullptr },
1121 { "imageRelease", nullptr, OHOS::Media::ImageReceiverNDKTest::JsImageRelease,
1122 nullptr, nullptr, nullptr, napi_static, nullptr }
1123 };
1124 napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
1125 return exports;
1126 }
1127 EXTERN_C_END
1128
1129 static napi_module demoModule = {
1130 .nm_version =1,
1131 .nm_flags = 0,
1132 .nm_filename = nullptr,
1133 .nm_register_func = Init,
1134 .nm_modname = "entry",
1135 .nm_priv = ((void*)0),
1136 .reserved = { 0 },
1137 };
1138
RegisterEntryModule(void)1139 extern "C" __attribute__((constructor)) void RegisterEntryModule(void)
1140 {
1141 napi_module_register(&demoModule);
1142 }
1143