• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 <js_native_api.h>
18 #include <multimedia/player_framework/native_avcapability.h>
19 #include <multimedia/player_framework/native_avcodec_audiodecoder.h>
20 #include <multimedia/player_framework/native_avcodec_base.h>
21 #include <multimedia/player_framework/native_avdemuxer.h>
22 #include <multimedia/player_framework/native_avformat.h>
23 #include <multimedia/player_framework/native_avsource.h>
24 
25 #define FAIL (-1)
26 #define SUCCESS 0
27 #define WIDTH 1920
28 #define HEIGHT 1080
29 #define PARAM_0 0
30 #define PARAM_1 1
31 #define PARAM_2 2
32 #define PARAM_3 3
33 #define PARAM_4 4
34 #define PARAM_5 5
35 #define PARAM_6 6
36 #define PARAM_7 7
37 #define PARAM_8 8
38 #define PARAM_9 9
39 #define PARAM_10 10
40 #define PARAM_11 11
41 #define PARAM_12 12
42 #define PARAM_13 13
43 #define PARAM_14 14
44 #define PARAM_15 15
45 
CreateCapability(napi_env env,napi_callback_info info)46 static OH_AVCapability *CreateCapability(napi_env env, napi_callback_info info)
47 {
48     size_t argc = PARAM_6;
49     napi_value args[PARAM_6] = {nullptr};
50     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
51     int firstParam;
52     int secondParam;
53     int thirdParam;
54     int fourthParam;
55     const char *mimeType;
56     bool coder;
57     OH_AVCodecCategory category;
58     napi_get_value_int32(env, args[PARAM_0], &firstParam);
59     napi_get_value_int32(env, args[PARAM_1], &secondParam);
60     napi_get_value_int32(env, args[PARAM_2], &thirdParam);
61     napi_get_value_int32(env, args[PARAM_3], &fourthParam);
62     OH_AVCapability *capability;
63     if (secondParam == PARAM_1) {
64         coder = true;
65     } else {
66         coder = false;
67     }
68 
69     if (firstParam == PARAM_1) {
70         mimeType = OH_AVCODEC_MIMETYPE_VIDEO_AVC;
71     } else if (firstParam == PARAM_2) {
72         mimeType = OH_AVCODEC_MIMETYPE_AUDIO_AAC;
73     } else if (firstParam == PARAM_3) {
74         mimeType = OH_AVCODEC_MIMETYPE_AUDIO_FLAC;
75     } else if (firstParam == PARAM_4) {
76         mimeType = OH_AVCODEC_MIMETYPE_AUDIO_VORBIS;
77     } else if (firstParam == PARAM_5) {
78         mimeType = OH_AVCODEC_MIMETYPE_AUDIO_MPEG;
79     } else if (firstParam == PARAM_6) {
80         mimeType = OH_AVCODEC_MIMETYPE_VIDEO_HEVC;
81     } else if (firstParam == PARAM_7) {
82         mimeType = OH_AVCODEC_MIMETYPE_VIDEO_MPEG4;
83     } else if (firstParam == PARAM_8) {
84         mimeType = nullptr;
85     } else {
86         mimeType = OH_AVCODEC_MIMETYPE_VIDEO_AVC;
87     }
88 
89     if (fourthParam == PARAM_1) {
90         capability = OH_AVCodec_GetCapability(mimeType, coder);
91     } else {
92         if (thirdParam == PARAM_1) {
93             category = HARDWARE;
94         } else {
95             category = SOFTWARE;
96         }
97         capability = OH_AVCodec_GetCapabilityByCategory(mimeType, coder, category);
98     }
99 
100     return capability;
101 }
102 
TestInitAVErrCode(napi_env env,napi_callback_info info,OH_AVCapability * capability)103 static napi_value TestInitAVErrCode(napi_env env, napi_callback_info info, OH_AVCapability *capability)
104 {
105     napi_value result;
106     size_t argc = PARAM_6;
107     napi_value args[PARAM_6] = {nullptr};
108     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
109     int firstParam;
110     napi_get_value_int32(env, args[PARAM_0], &firstParam);
111     if (firstParam == PARAM_8) {
112         if (capability == nullptr) {
113             napi_create_int32(env, SUCCESS, &result);
114         } else {
115             napi_create_int32(env, FAIL, &result);
116         }
117     } else {
118         if (capability != nullptr) {
119             napi_create_int32(env, SUCCESS, &result);
120         } else {
121             napi_create_int32(env, FAIL, &result);
122         }
123     }
124 
125     return result;
126 }
127 
OHAVCapabilityIsHardware(OH_AVCapability * capability,napi_env env,napi_callback_info info)128 static napi_value OHAVCapabilityIsHardware(OH_AVCapability *capability, napi_env env, napi_callback_info info)
129 {
130     bool checkParam = false;
131     checkParam = OH_AVCapability_IsHardware(capability);
132     napi_value result = nullptr;
133     int backParam = FAIL;
134     if (checkParam == true) {
135         backParam = SUCCESS;
136     }
137     napi_create_int32(env, backParam, &result);
138     return result;
139 }
140 
OHAVCapabilityGetName(OH_AVCapability * capability,napi_env env,napi_callback_info info)141 static napi_value OHAVCapabilityGetName(OH_AVCapability *capability, napi_env env, napi_callback_info info)
142 {
143     const char *codecName = OH_AVCapability_GetName(capability);
144     napi_value result = nullptr;
145     int backParam = FAIL;
146     if (codecName != nullptr) {
147         backParam = SUCCESS;
148     }
149     napi_create_int32(env, backParam, &result);
150     return result;
151 }
152 
OHAVCapabilityGetMaxSupportedInstances(OH_AVCapability * capability,napi_env env,napi_callback_info info)153 static napi_value OHAVCapabilityGetMaxSupportedInstances(OH_AVCapability *capability, napi_env env,
154                                                          napi_callback_info info)
155 {
156     int32_t checkParam = PARAM_0;
157     checkParam = OH_AVCapability_GetMaxSupportedInstances(capability);
158     napi_value result = nullptr;
159     int backParam = FAIL;
160     if (checkParam >= PARAM_0) {
161         backParam = SUCCESS;
162     }
163     napi_create_int32(env, backParam, &result);
164     return result;
165 }
166 
OHAVCapabilityGetEncoderBitrateRange(OH_AVCapability * capability,napi_env env,napi_callback_info info)167 static napi_value OHAVCapabilityGetEncoderBitrateRange(OH_AVCapability *capability, napi_env env,
168                                                        napi_callback_info info)
169 {
170     OH_AVErrCode checkParam;
171     OH_AVRange bitrateRange;
172     checkParam = OH_AVCapability_GetEncoderBitrateRange(capability, &bitrateRange);
173     napi_value result = nullptr;
174     int backParam = FAIL;
175     if (checkParam == AV_ERR_OK) {
176         backParam = SUCCESS;
177     }
178     napi_create_int32(env, backParam, &result);
179     return result;
180 }
181 
OHAVCapabilityGetEncoderBitrateRangeAbnormal(OH_AVCapability * capability,napi_env env,napi_callback_info info)182 static napi_value OHAVCapabilityGetEncoderBitrateRangeAbnormal(OH_AVCapability *capability, napi_env env,
183                                                                napi_callback_info info)
184 {
185     OH_AVErrCode checkParam;
186     checkParam = OH_AVCapability_GetEncoderBitrateRange(capability, nullptr);
187     napi_value result = nullptr;
188     int backParam = FAIL;
189     if (checkParam == AV_ERR_INVALID_VAL) {
190         backParam = SUCCESS;
191     }
192     napi_create_int32(env, backParam, &result);
193     return result;
194 }
195 
OHAVCapabilityIsEncoderBitrateModeSupporteda(OH_AVCapability * capability,napi_env env,napi_callback_info info)196 static napi_value OHAVCapabilityIsEncoderBitrateModeSupporteda(OH_AVCapability *capability, napi_env env,
197                                                                napi_callback_info info)
198 {
199     bool checkParam = false;
200     checkParam = OH_AVCapability_IsEncoderBitrateModeSupported(capability, BITRATE_MODE_CBR);
201     napi_value result = nullptr;
202     int backParam = FAIL;
203     if (checkParam != false) {
204         backParam = SUCCESS;
205     }
206     napi_create_int32(env, backParam, &result);
207     return result;
208 }
209 
OHAVCapabilityIsEncoderBitrateModeSupportedb(OH_AVCapability * capability,napi_env env,napi_callback_info info)210 static napi_value OHAVCapabilityIsEncoderBitrateModeSupportedb(OH_AVCapability *capability, napi_env env,
211                                                                napi_callback_info info)
212 {
213     bool checkParam = false;
214     checkParam = OH_AVCapability_IsEncoderBitrateModeSupported(capability, BITRATE_MODE_VBR);
215     napi_value result = nullptr;
216     int backParam = FAIL;
217     if (checkParam != false) {
218         backParam = SUCCESS;
219     }
220     napi_create_int32(env, backParam, &result);
221     return result;
222 }
223 
OHAVCapabilityIsEncoderBitrateModeSupportedc(OH_AVCapability * capability,napi_env env,napi_callback_info info)224 static napi_value OHAVCapabilityIsEncoderBitrateModeSupportedc(OH_AVCapability *capability, napi_env env,
225                                                                napi_callback_info info)
226 {
227     bool checkParam = false;
228     checkParam = OH_AVCapability_IsEncoderBitrateModeSupported(capability, BITRATE_MODE_CQ);
229     napi_value result = nullptr;
230     int backParam = FAIL;
231     if (checkParam != false) {
232         backParam = SUCCESS;
233     }
234     napi_create_int32(env, backParam, &result);
235     return result;
236 }
237 
OHAVCapabilityGetVideoWidthRangeForHeighta(OH_AVCapability * capability,napi_env env,napi_callback_info info)238 static napi_value OHAVCapabilityGetVideoWidthRangeForHeighta(OH_AVCapability *capability, napi_env env,
239                                                              napi_callback_info info)
240 {
241     int32_t height = HEIGHT;
242     OH_AVRange widthRange;
243     OH_AVErrCode checkParam;
244     checkParam = OH_AVCapability_GetVideoWidthRangeForHeight(capability, height, &widthRange);
245     napi_value result = nullptr;
246     int backParam = FAIL;
247     if (checkParam == AV_ERR_OK) {
248         backParam = SUCCESS;
249     }
250     napi_create_int32(env, backParam, &result);
251     return result;
252 }
253 
OHAVCapabilityGetVideoWidthRangeForHeightb(OH_AVCapability * capability,napi_env env,napi_callback_info info)254 static napi_value OHAVCapabilityGetVideoWidthRangeForHeightb(OH_AVCapability *capability, napi_env env,
255                                                              napi_callback_info info)
256 {
257     int32_t height = HEIGHT;
258     OH_AVErrCode checkParam;
259     checkParam = OH_AVCapability_GetVideoWidthRangeForHeight(capability, height, nullptr);
260     napi_value result = nullptr;
261     int backParam = FAIL;
262     if (checkParam == AV_ERR_INVALID_VAL) {
263         backParam = SUCCESS;
264     }
265     napi_create_int32(env, backParam, &result);
266     return result;
267 }
268 
OHAVCapabilityGetVideoHeightRangeForWidtha(OH_AVCapability * capability,napi_env env,napi_callback_info info)269 static napi_value OHAVCapabilityGetVideoHeightRangeForWidtha(OH_AVCapability *capability, napi_env env,
270                                                              napi_callback_info info)
271 {
272     int32_t width = WIDTH;
273     OH_AVRange heightRange;
274     OH_AVErrCode checkParam;
275     checkParam = OH_AVCapability_GetVideoHeightRangeForWidth(capability, width, &heightRange);
276     napi_value result = nullptr;
277     int backParam = FAIL;
278     if (checkParam == AV_ERR_OK) {
279         backParam = SUCCESS;
280     }
281     napi_create_int32(env, backParam, &result);
282     return result;
283 }
284 
OHAVCapabilityGetVideoHeightRangeForWidthb(OH_AVCapability * capability,napi_env env,napi_callback_info info)285 static napi_value OHAVCapabilityGetVideoHeightRangeForWidthb(OH_AVCapability *capability, napi_env env,
286                                                              napi_callback_info info)
287 {
288     int32_t width = WIDTH;
289     OH_AVErrCode checkParam;
290     checkParam = OH_AVCapability_GetVideoHeightRangeForWidth(capability, width, nullptr);
291     napi_value result = nullptr;
292     int backParam = FAIL;
293     if (checkParam == AV_ERR_INVALID_VAL) {
294         backParam = SUCCESS;
295     }
296     napi_create_int32(env, backParam, &result);
297     return result;
298 }
299 
OHAVCapabilityAreProfileAndLevelSupporteda(OH_AVCapability * capability,napi_env env,napi_callback_info info)300 static napi_value OHAVCapabilityAreProfileAndLevelSupporteda(OH_AVCapability *capability, napi_env env,
301                                                              napi_callback_info info)
302 {
303 
304     bool checkParam = false;
305     checkParam = OH_AVCapability_AreProfileAndLevelSupported(capability, AVC_PROFILE_BASELINE, PARAM_1);
306     napi_value result = nullptr;
307     int backParam = FAIL;
308     if (checkParam != false) {
309         backParam = SUCCESS;
310     }
311     napi_create_int32(env, backParam, &result);
312     return result;
313 }
314 
OHAVCapabilityAreProfileAndLevelSupportedb(OH_AVCapability * capability,napi_env env,napi_callback_info info)315 static napi_value OHAVCapabilityAreProfileAndLevelSupportedb(OH_AVCapability *capability, napi_env env,
316                                                              napi_callback_info info)
317 {
318     bool checkParam = false;
319     checkParam = OH_AVCapability_AreProfileAndLevelSupported(capability, AVC_PROFILE_HIGH, PARAM_1);
320     napi_value result = nullptr;
321     int backParam = FAIL;
322     if (checkParam != false) {
323         backParam = SUCCESS;
324     }
325     napi_create_int32(env, backParam, &result);
326     return result;
327 }
328 
OHAVCapabilityAreProfileAndLevelSupportedc(OH_AVCapability * capability,napi_env env,napi_callback_info info)329 static napi_value OHAVCapabilityAreProfileAndLevelSupportedc(OH_AVCapability *capability, napi_env env,
330                                                              napi_callback_info info)
331 {
332     bool checkParam = false;
333     checkParam = OH_AVCapability_AreProfileAndLevelSupported(capability, AVC_PROFILE_MAIN, PARAM_1);
334     napi_value result = nullptr;
335     int backParam = FAIL;
336     if (checkParam != false) {
337         backParam = SUCCESS;
338     }
339     napi_create_int32(env, backParam, &result);
340     return result;
341 }
342 
343 
TestForCallTiming(OH_AVCapability * capability,napi_env env,napi_callback_info info)344 static napi_value TestForCallTiming(OH_AVCapability *capability, napi_env env, napi_callback_info info)
345 {
346     size_t argc = PARAM_6;
347     napi_value args[PARAM_6] = {nullptr};
348     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
349     int sixParam;
350     napi_get_value_int32(env, args[PARAM_5], &sixParam);
351     if (sixParam == PARAM_1) {
352         return OHAVCapabilityIsHardware(capability, env, info);
353     } else if (sixParam == PARAM_2) {
354         return OHAVCapabilityGetName(capability, env, info);
355     } else if (sixParam == PARAM_3) {
356         return OHAVCapabilityGetMaxSupportedInstances(capability, env, info);
357     } else if (sixParam == PARAM_4) {
358         return OHAVCapabilityGetEncoderBitrateRange(capability, env, info);
359     } else if (sixParam == PARAM_5) {
360         return OHAVCapabilityGetEncoderBitrateRangeAbnormal(capability, env, info);
361     } else if (sixParam == PARAM_6) {
362         return OHAVCapabilityIsEncoderBitrateModeSupporteda(capability, env, info);
363     } else if (sixParam == PARAM_7) {
364         return OHAVCapabilityIsEncoderBitrateModeSupportedb(capability, env, info);
365     } else if (sixParam == PARAM_8) {
366         return OHAVCapabilityIsEncoderBitrateModeSupportedc(capability, env, info);
367     } else if (sixParam == PARAM_9) {
368         return OHAVCapabilityGetVideoWidthRangeForHeighta(capability, env, info);
369     } else if (sixParam == PARAM_10) {
370         return OHAVCapabilityGetVideoWidthRangeForHeightb(capability, env, info);
371     } else if (sixParam == PARAM_11) {
372         return OHAVCapabilityGetVideoHeightRangeForWidtha(capability, env, info);
373     } else if (sixParam == PARAM_12) {
374         return OHAVCapabilityGetVideoHeightRangeForWidthb(capability, env, info);
375     } else if (sixParam == PARAM_13) {
376         return OHAVCapabilityAreProfileAndLevelSupporteda(capability, env, info);
377     } else if (sixParam == PARAM_14) {
378         return OHAVCapabilityAreProfileAndLevelSupportedb(capability, env, info);
379     } else if (sixParam == PARAM_15) {
380         return OHAVCapabilityAreProfileAndLevelSupportedc(capability, env, info);
381     } else {
382         napi_value result = nullptr;
383         napi_create_int32(env, FAIL, &result);
384         return result;
385     }
386 }
387 
isNeedCallTiming(napi_env env,napi_callback_info info)388 static bool isNeedCallTiming(napi_env env, napi_callback_info info)
389 {
390     size_t argc = PARAM_6;
391     napi_value args[PARAM_6] = {nullptr};
392     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
393     int fiveParam;
394     napi_get_value_int32(env, args[PARAM_4], &fiveParam);
395     if (fiveParam == PARAM_1) {
396         return true;
397     } else {
398         return false;
399     }
400 }
401 
DecodeMainProcess(napi_env env,napi_callback_info info)402 static napi_value DecodeMainProcess(napi_env env, napi_callback_info info)
403 {
404     OH_AVCapability *capability = CreateCapability(env, info);
405     if (isNeedCallTiming(env, info)) {
406         return TestForCallTiming(capability, env, info);
407     } else {
408         return TestInitAVErrCode(env, info, capability);
409     }
410 }
411 
AVCapabilityIsHardware(napi_env env,napi_callback_info info)412 static napi_value AVCapabilityIsHardware(napi_env env, napi_callback_info info)
413 {
414     napi_value result = nullptr;
415     int backParam = FAIL;
416     OH_AVCapability *capability = nullptr;
417     bool checkParam = false;
418     capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, false, HARDWARE);
419     checkParam = OH_AVCapability_IsHardware(capability);
420     if (checkParam != false) {
421         backParam = SUCCESS;
422     }
423     napi_create_int32(env, backParam, &result);
424     return result;
425 }
426 
AVCapabilityGetName(napi_env env,napi_callback_info info)427 static napi_value AVCapabilityGetName(napi_env env, napi_callback_info info)
428 {
429     napi_value result = nullptr;
430     int backParam = FAIL;
431     OH_AVCapability *capability = nullptr;
432     capability = OH_AVCodec_GetCapability(OH_AVCODEC_MIMETYPE_VIDEO_MPEG4, false);
433     const char *codecName = OH_AVCapability_GetName(capability);
434     if (codecName != nullptr) {
435         backParam = SUCCESS;
436     }
437     napi_create_int32(env, backParam, &result);
438     return result;
439 }
440 
AVCapabilityGetMaxSupportedInstances(napi_env env,napi_callback_info info)441 static napi_value AVCapabilityGetMaxSupportedInstances(napi_env env, napi_callback_info info)
442 {
443     napi_value result = nullptr;
444     int backParam = FAIL;
445     OH_AVCapability *capability = nullptr;
446     int32_t checkParam;
447     capability = OH_AVCodec_GetCapability(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false);
448     checkParam = OH_AVCapability_GetMaxSupportedInstances(capability);
449     if (checkParam != FAIL) {
450         backParam = SUCCESS;
451     }
452     napi_create_int32(env, backParam, &result);
453     return result;
454 
455 }
456 
AVCapabilityGetEncoderBitrateRange(napi_env env,napi_callback_info info)457 static napi_value AVCapabilityGetEncoderBitrateRange(napi_env env, napi_callback_info info)
458 {
459     napi_value result = nullptr;
460     int backParam = FAIL;
461     OH_AVCapability *capability = nullptr;
462     OH_AVRange bitrateRange;
463     OH_AVErrCode checkParam;
464     capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, true, HARDWARE);
465     checkParam = OH_AVCapability_GetEncoderBitrateRange(capability, &bitrateRange);
466     if (checkParam == AV_ERR_OK) {
467         backParam = SUCCESS;
468     }
469     napi_create_int32(env, backParam, &result);
470     return result;
471 }
472 
AVCapabilityIsEncoderBitrateModeSupported(napi_env env,napi_callback_info info)473 static napi_value AVCapabilityIsEncoderBitrateModeSupported(napi_env env, napi_callback_info info)
474 {
475     napi_value result = nullptr;
476     int backParam = FAIL;
477     OH_AVCapability *capability = nullptr;
478     bool checkParam = false;
479     capability = OH_AVCodec_GetCapability(OH_AVCODEC_MIMETYPE_VIDEO_AVC, true);
480     checkParam = OH_AVCapability_IsEncoderBitrateModeSupported(capability, BITRATE_MODE_CBR);
481     if (checkParam != false) {
482         backParam = SUCCESS;
483     }
484     napi_create_int32(env, backParam, &result);
485     return result;
486 }
487 
AVCapabilityGetVideoWidthRangeForHeight(napi_env env,napi_callback_info info)488 static napi_value AVCapabilityGetVideoWidthRangeForHeight(napi_env env, napi_callback_info info)
489 {
490     napi_value result = nullptr;
491     int backParam = FAIL;
492     OH_AVCapability *capability = nullptr;
493     int32_t height = HEIGHT;
494     OH_AVRange widthRange;
495     OH_AVErrCode checkParam;
496     capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, SOFTWARE);
497     checkParam = OH_AVCapability_GetVideoWidthRangeForHeight(capability, height, &widthRange);
498     if (checkParam == AV_ERR_OK) {
499         backParam = SUCCESS;
500     }
501     napi_create_int32(env, backParam, &result);
502     return result;
503 }
504 
AVCapabilityGetVideoHeightRangeForWidth(napi_env env,napi_callback_info info)505 static napi_value AVCapabilityGetVideoHeightRangeForWidth(napi_env env, napi_callback_info info)
506 {
507     napi_value result = nullptr;
508     int backParam = FAIL;
509     OH_AVCapability *capability = nullptr;
510     int32_t width = WIDTH;
511     OH_AVRange heightRange;
512     OH_AVErrCode checkParam;
513     capability = OH_AVCodec_GetCapability(OH_AVCODEC_MIMETYPE_VIDEO_AVC, true);
514     checkParam = OH_AVCapability_GetVideoHeightRangeForWidth(capability, width, &heightRange);
515     if (checkParam == AV_ERR_OK) {
516         backParam = SUCCESS;
517     }
518     napi_create_int32(env, backParam, &result);
519     return result;
520 }
521 
AVCapabilityAreProfileAndLevelSupported(napi_env env,napi_callback_info info)522 static napi_value AVCapabilityAreProfileAndLevelSupported(napi_env env, napi_callback_info info)
523 {
524     napi_value result = nullptr;
525     int backParam = FAIL;
526     OH_AVCapability *capability = nullptr;
527     bool checkParam = false;
528     capability = OH_AVCodec_GetCapability(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false);
529     checkParam = OH_AVCapability_AreProfileAndLevelSupported(capability, AVC_PROFILE_BASELINE, PARAM_1);
530     if (checkParam != false) {
531         backParam = SUCCESS;
532     }
533     napi_create_int32(env, backParam, &result);
534     return result;
535 }
536 
537 EXTERN_C_START
Init(napi_env env,napi_value exports)538 static napi_value Init(napi_env env, napi_value exports)
539 {
540     napi_property_descriptor desc[] = {
541         {"decodeMainProcess", nullptr, DecodeMainProcess, nullptr, nullptr, nullptr, napi_default, nullptr},
542         {"OH_AVCapability_IsHardware", nullptr, AVCapabilityIsHardware, nullptr, nullptr,
543             nullptr,napi_default, nullptr},
544         {"OH_AVCapability_GetName", nullptr, AVCapabilityGetName, nullptr, nullptr, nullptr, napi_default, nullptr},
545         {"OH_AVCapability_GetMaxSupportedInstances", nullptr, AVCapabilityGetMaxSupportedInstances,
546             nullptr, nullptr, nullptr, napi_default, nullptr},
547         {"OH_AVCapability_GetEncoderBitrateRange", nullptr, AVCapabilityGetEncoderBitrateRange,
548             nullptr, nullptr, nullptr, napi_default, nullptr},
549         {"OH_AVCapability_IsEncoderBitrateModeSupported", nullptr, AVCapabilityIsEncoderBitrateModeSupported,
550             nullptr, nullptr, nullptr, napi_default, nullptr},
551         {"OH_AVCapability_GetVideoWidthRangeForHeight", nullptr, AVCapabilityGetVideoWidthRangeForHeight,
552             nullptr, nullptr, nullptr, napi_default, nullptr},
553         {"OH_AVCapability_GetVideoHeightRangeForWidth", nullptr, AVCapabilityGetVideoHeightRangeForWidth,
554             nullptr, nullptr, nullptr, napi_default, nullptr},
555         {"OH_AVCapability_AreProfileAndLevelSupported", nullptr, AVCapabilityAreProfileAndLevelSupported,
556             nullptr, nullptr, nullptr, napi_default, nullptr},
557     };
558     napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
559     return exports;
560 }
561 
562 EXTERN_C_END
563 
564 static napi_module demoModule = {
565     .nm_version = 1,
566     .nm_flags = 0,
567     .nm_filename = nullptr,
568     .nm_register_func = Init,
569     .nm_modname = "native",
570     .nm_priv = ((void *)0),
571     .reserved = {0},
572 };
573 
RegisterEntryModule(void)574 extern "C" __attribute__((constructor)) void RegisterEntryModule(void) { napi_module_register(&demoModule); }