• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 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 
17 #include <string>
18 #include <cstdio>
19 #include <cstdint>
20 #include "napi/native_api.h"
21 #include "ohaudio/native_audiocapturer.h"
22 #include "ohaudio/native_audiorenderer.h"
23 #include "ohaudio/native_audiostream_base.h"
24 #include "ohaudio/native_audiostreambuilder.h"
25 #include "unistd.h"
26 #include "ohaudio/native_audio_manager.h"
27 #include "ohaudio/native_audio_common.h"
28 #include "ohaudio/native_audio_routing_manager.h"
29 #include "ohaudio/native_audio_device_base.h"
30 #include "ohaudio/native_audio_session_manager.h"
31 #include "hilog/log.h"
32 #include <ctime>
33 
34 #define AUDIO_LOG_TAG "AUDIO_TAGLOG"
35 #define AUDIO_LOG_DOMAIN 0x3200
36 
37 #define LOG(fmt, ...) (void)OH_LOG_Print(LOG_APP, LOG_INFO, AUDIO_LOG_DOMAIN, AUDIO_LOG_TAG, fmt, ##__VA_ARGS__)
38 
39 const int32_t g_samplingRate = 48000; // 48000:g_samplingRate value
40 const int32_t g_channelCount = 2; // 2:g_channelCount value
41 const int32_t g_latencyMode = 0;
42 const int32_t g_sampleFormat = 1;
43 const int32_t g_frameSize = 240; // 240:g_frameSize value
44 bool g_flag = false;
45 bool g_mark = false;
46 static std::string g_filePath = "/data/storage/el2/base/haps/entry_test/files/test_44100_2.wav";
47 FILE *g_file = nullptr;
48 bool g_readEnd = false;
49 const int32_t TEST_PASS = 0; // success result
50 const int32_t TEST_FAIL = 1; // fail result
51 
uDelay(int time)52 void uDelay(int time)//time*1000为秒数
53 {
54     clock_t now = clock();
55     while(clock() - now < time);
56 }
57 
Delay(int time)58 void Delay(int time)//time为秒数
59 {
60     time = time * 1000;
61     clock_t now = clock();
62     while(clock() - now < time);
63 }
64 
AudioRendererOnMarkReachedWriteData(OH_AudioRenderer * capturer,void * userData,void * buffer,int32_t bufferLen)65 static int32_t AudioRendererOnMarkReachedWriteData(OH_AudioRenderer* capturer,
66     void* userData,
67     void* buffer,
68     int32_t bufferLen)
69 {
70     size_t readCount = fread(buffer, bufferLen, 1, g_file);
71     if (!readCount) {
72         if (ferror(g_file)) {
73             LOG("Error reading myfile");
74         } else if (feof(g_file)) {
75             LOG("EOF found");
76             g_readEnd = true;
77         }
78     }
79     return 0;
80 }
81 
82 
MyAudioSessionDeactivatedCallback(OH_AudioSession_DeactivatedEvent event)83 static int32_t MyAudioSessionDeactivatedCallback(OH_AudioSession_DeactivatedEvent event)
84 {
85     switch(event.reason) {
86         case DEACTIVATED_LOWER_PRIORITY:
87         // 应用焦点被抢占
88             LOG("MyAudioSessionDeactivatedCallback, event is %{public}d", event.reason);
89             return 0;
90         case DEACTIVATED_TIMEOUT:
91         // 超时
92             LOG("MyAudioSessionDeactivatedCallback, event is %{public}d", event.reason);
93           return 0;
94     }
95 }
96 
CreateAudioStreamBuilder(napi_env env,napi_callback_info info)97 static napi_value CreateAudioStreamBuilder(napi_env env, napi_callback_info info)
98 {
99     OH_AudioStreamBuilder *builder;
100     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
101     OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
102     OH_AudioStreamBuilder_Destroy(builder);
103     napi_value res;
104     napi_create_int32(env, result, &res);
105     return res;
106 }
107 
CreateCapturerBuilder()108 OH_AudioStreamBuilder *CreateCapturerBuilder()
109 {
110     OH_AudioStreamBuilder *builder;
111     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
112     OH_AudioStreamBuilder_Create(&builder, type);
113     return builder;
114 }
115 
116 
AudioCaptureGenerate(napi_env env,napi_callback_info info)117 static napi_value AudioCaptureGenerate(napi_env env, napi_callback_info info)
118 {
119     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
120 
121     OH_AudioCapturer *audioCapturer;
122     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
123 
124     OH_AudioCapturer_Release(audioCapturer);
125     OH_AudioStreamBuilder_Destroy(builder);
126     napi_value res;
127     napi_create_int32(env, result, &res);
128     return res;
129 }
130 
AudioCaptureGenerateErr(napi_env env,napi_callback_info info)131 static napi_value AudioCaptureGenerateErr(napi_env env, napi_callback_info info)
132 {
133     OH_AudioStreamBuilder *builder = nullptr;
134     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
135     OH_AudioStreamBuilder_Create(&builder, type);
136 
137     OH_AudioCapturer *audioCapturer = nullptr;
138     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
139 
140     OH_AudioCapturer_Release(audioCapturer);
141     OH_AudioStreamBuilder_Destroy(builder);
142     napi_value res;
143     napi_create_int32(env, result, &res);
144     return res;
145 }
146 
AudioCaptureStart(napi_env env,napi_callback_info info)147 static napi_value AudioCaptureStart(napi_env env, napi_callback_info info)
148 {
149     LOG("AudioCaptureStart SUCCESS");
150     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
151     OH_AudioCapturer *audioCapturer;
152     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
153 
154     OH_AudioStream_Result result = OH_AudioCapturer_Start(audioCapturer);
155 
156     OH_AudioCapturer_Release(audioCapturer);
157     OH_AudioStreamBuilder_Destroy(builder);
158     napi_value res;
159     napi_create_int32(env, result, &res);
160     return res;
161 }
162 
AudioCaptureStartErr(napi_env env,napi_callback_info info)163 static napi_value AudioCaptureStartErr(napi_env env, napi_callback_info info)
164 {
165     LOG("AudioCaptureStart SUCCESS");
166     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
167     OH_AudioCapturer *audioCapturer;
168     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
169     OH_AudioCapturer_Start(audioCapturer);
170     OH_AudioStream_Result result = OH_AudioCapturer_Start(audioCapturer);
171 
172     OH_AudioCapturer_Release(audioCapturer);
173     OH_AudioStreamBuilder_Destroy(builder);
174     napi_value res;
175     napi_create_int32(env, result, &res);
176     return res;
177 }
178 
AudioCapturePause(napi_env env,napi_callback_info info)179 static napi_value AudioCapturePause(napi_env env, napi_callback_info info)
180 {
181     LOG("AudioCaptureStart SUCCESS");
182     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
183     OH_AudioCapturer *audioCapturer;
184     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
185     OH_AudioCapturer_Start(audioCapturer);
186     OH_AudioStream_Result result = OH_AudioCapturer_Pause(audioCapturer);
187     OH_AudioCapturer_Release(audioCapturer);
188     OH_AudioStreamBuilder_Destroy(builder);
189     napi_value res;
190     napi_create_int32(env, result, &res);
191     return res;
192 }
193 
194 
AudioCapturePauseErr(napi_env env,napi_callback_info info)195 static napi_value AudioCapturePauseErr(napi_env env, napi_callback_info info)
196 {
197     LOG("AudioCaptureStart SUCCESS");
198     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
199     OH_AudioCapturer *audioCapturer;
200     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
201     OH_AudioStream_Result result = OH_AudioCapturer_Pause(audioCapturer);
202     OH_AudioCapturer_Release(audioCapturer);
203     OH_AudioStreamBuilder_Destroy(builder);
204     napi_value res;
205     napi_create_int32(env, result, &res);
206     return res;
207 }
208 
AudioCaptureStop(napi_env env,napi_callback_info info)209 static napi_value AudioCaptureStop(napi_env env, napi_callback_info info)
210 {
211     LOG("AudioCaptureStart SUCCESS");
212     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
213     OH_AudioCapturer *audioCapturer;
214     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
215     OH_AudioCapturer_Start(audioCapturer);
216     OH_AudioStream_Result result = OH_AudioCapturer_Stop(audioCapturer);
217     OH_AudioCapturer_Release(audioCapturer);
218     OH_AudioStreamBuilder_Destroy(builder);
219     napi_value res;
220     napi_create_int32(env, result, &res);
221     return res;
222 }
223 
AudioCaptureStopErr(napi_env env,napi_callback_info info)224 static napi_value AudioCaptureStopErr(napi_env env, napi_callback_info info)
225 {
226     LOG("AudioCaptureStart SUCCESS");
227     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
228     OH_AudioCapturer *audioCapturer;
229     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
230     OH_AudioStream_Result result = OH_AudioCapturer_Stop(audioCapturer);
231     OH_AudioCapturer_Release(audioCapturer);
232     OH_AudioStreamBuilder_Destroy(builder);
233     napi_value res;
234     napi_create_int32(env, result, &res);
235     return res;
236 }
237 
AudioCaptureFlush(napi_env env,napi_callback_info info)238 static napi_value AudioCaptureFlush(napi_env env, napi_callback_info info)
239 {
240     LOG("AudioCaptureFlush SUCCESS");
241     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
242     OH_AudioCapturer *audioCapturer;
243     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
244     OH_AudioCapturer_Start(audioCapturer);
245     OH_AudioStream_Result result = OH_AudioCapturer_Flush(audioCapturer);
246     OH_AudioCapturer_Release(audioCapturer);
247     OH_AudioStreamBuilder_Destroy(builder);
248     napi_value res;
249     napi_create_int32(env, result, &res);
250     return res;
251 }
252 
253 
AudioCaptureFlushErr(napi_env env,napi_callback_info info)254 static napi_value AudioCaptureFlushErr(napi_env env, napi_callback_info info)
255 {
256     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
257     OH_AudioCapturer *audioCapturer;
258     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
259     OH_AudioStream_Result result = OH_AudioCapturer_Flush(audioCapturer);
260     OH_AudioCapturer_Release(audioCapturer);
261     OH_AudioStreamBuilder_Destroy(builder);
262     napi_value res;
263     napi_create_int32(env, result, &res);
264     return res;
265 }
266 
AudioCaptureRelease(napi_env env,napi_callback_info info)267 static napi_value AudioCaptureRelease(napi_env env, napi_callback_info info)
268 {
269     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
270     OH_AudioCapturer *audioCapturer;
271     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
272     OH_AudioCapturer_Start(audioCapturer);
273     OH_AudioStream_Result result = OH_AudioCapturer_Release(audioCapturer);
274     OH_AudioStreamBuilder_Destroy(builder);
275     napi_value res;
276     napi_create_int32(env, result, &res);
277     return res;
278 }
279 
AudioCaptureReleaseErr(napi_env env,napi_callback_info info)280 static napi_value AudioCaptureReleaseErr(napi_env env, napi_callback_info info)
281 {
282     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
283     OH_AudioCapturer *audioCapturer;
284     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
285     OH_AudioCapturer_Release(audioCapturer);
286     audioCapturer = nullptr;
287     OH_AudioStream_Result result = OH_AudioCapturer_Release(audioCapturer);
288     OH_AudioStreamBuilder_Destroy(builder);
289     napi_value res;
290     napi_create_int32(env, result, &res);
291     return res;
292 }
293 
AudioCaptureGetParameter(napi_env env,napi_callback_info info)294 static napi_value AudioCaptureGetParameter(napi_env env, napi_callback_info info)
295 {
296     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
297     OH_AudioCapturer *audioCapturer;
298     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
299 
300     OH_AudioStream_LatencyMode latencyMode = AUDIOSTREAM_LATENCY_MODE_NORMAL;
301     OH_AudioStream_Result result = OH_AudioCapturer_GetLatencyMode(audioCapturer, &latencyMode);
302     OH_AudioCapturer_Release(audioCapturer);
303     OH_AudioStreamBuilder_Destroy(builder);
304     napi_value res;
305     napi_create_int32(env, result, &res);
306     return res;
307 }
308 
AudioCaptureGetCurrentState(napi_env env,napi_callback_info info)309 static napi_value AudioCaptureGetCurrentState(napi_env env, napi_callback_info info)
310 {
311     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
312     OH_AudioCapturer *audioCapturer;
313     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
314 
315     OH_AudioStream_State state;
316     OH_AudioStream_Result result = OH_AudioCapturer_GetCurrentState(audioCapturer, &state);
317     OH_AudioCapturer_Release(audioCapturer);
318     OH_AudioStreamBuilder_Destroy(builder);
319     napi_value res;
320     napi_create_int32(env, result, &res);
321     return res;
322 }
323 
AudioCaptureGetStreamId(napi_env env,napi_callback_info info)324 static napi_value AudioCaptureGetStreamId(napi_env env, napi_callback_info info)
325 {
326     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
327     OH_AudioCapturer *audioCapturer;
328     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
329 
330     uint32_t streamId;
331     OH_AudioStream_Result result = OH_AudioCapturer_GetStreamId(audioCapturer, &streamId);
332     OH_AudioCapturer_Release(audioCapturer);
333     OH_AudioStreamBuilder_Destroy(builder);
334     napi_value res;
335     napi_create_int32(env, result, &res);
336     return res;
337 }
338 
AudioCaptureGetSamplingRate(napi_env env,napi_callback_info info)339 static napi_value AudioCaptureGetSamplingRate(napi_env env, napi_callback_info info)
340 {
341     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
342     OH_AudioCapturer *audioCapturer;
343     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
344 
345     int32_t rate;
346     OH_AudioStream_Result result = OH_AudioCapturer_GetSamplingRate(audioCapturer, &rate);
347     OH_AudioCapturer_Release(audioCapturer);
348     OH_AudioStreamBuilder_Destroy(builder);
349     napi_value res;
350     napi_create_int32(env, result, &res);
351     return res;
352 }
353 
AudioCaptureGetSampleFormat(napi_env env,napi_callback_info info)354 static napi_value AudioCaptureGetSampleFormat(napi_env env, napi_callback_info info)
355 {
356     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
357     OH_AudioCapturer *audioCapturer;
358     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
359 
360     OH_AudioStream_SampleFormat sampleFormat;
361     OH_AudioStream_Result result = OH_AudioCapturer_GetSampleFormat(audioCapturer, &sampleFormat);
362     OH_AudioCapturer_Release(audioCapturer);
363     OH_AudioStreamBuilder_Destroy(builder);
364     napi_value res;
365     napi_create_int32(env, result, &res);
366     return res;
367 }
368 
AudioCaptureGetEncodingType(napi_env env,napi_callback_info info)369 static napi_value AudioCaptureGetEncodingType(napi_env env, napi_callback_info info)
370 {
371     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
372     OH_AudioCapturer *audioCapturer;
373     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
374 
375     OH_AudioStream_EncodingType encodingType;
376     OH_AudioStream_Result result = OH_AudioCapturer_GetEncodingType(audioCapturer, &encodingType);
377     OH_AudioCapturer_Release(audioCapturer);
378     OH_AudioStreamBuilder_Destroy(builder);
379     napi_value res;
380     napi_create_int32(env, result, &res);
381     return res;
382 }
383 
AudioCaptureGetCapturerInfo(napi_env env,napi_callback_info info)384 static napi_value AudioCaptureGetCapturerInfo(napi_env env, napi_callback_info info)
385 {
386     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
387     OH_AudioCapturer *audioCapturer;
388     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
389 
390     OH_AudioStream_SourceType sourceType;
391     OH_AudioStream_Result result = OH_AudioCapturer_GetCapturerInfo(audioCapturer, &sourceType);
392     OH_AudioCapturer_Release(audioCapturer);
393     OH_AudioStreamBuilder_Destroy(builder);
394     napi_value res;
395     napi_create_int32(env, result, &res);
396     return res;
397 }
398 
AudioCaptureGetTimestamp(napi_env env,napi_callback_info info)399 static napi_value AudioCaptureGetTimestamp(napi_env env, napi_callback_info info)
400 {
401     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
402     OH_AudioCapturer *audioCapturer;
403     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
404     OH_AudioCapturer_Start(audioCapturer);
405 
406     int sleepNum = 30000;
407     uDelay(sleepNum);
408     int64_t  framePosition;
409     int64_t  timestamp;
410     OH_AudioStream_Result result = OH_AudioCapturer_GetTimestamp(audioCapturer, CLOCK_MONOTONIC, &framePosition, &timestamp);
411     OH_AudioCapturer_Stop(audioCapturer);
412     OH_AudioCapturer_Release(audioCapturer);
413     OH_AudioStreamBuilder_Destroy(builder);
414     napi_value res;
415     napi_create_int32(env, result, &res);
416     return res;
417 }
418 
AudioCaptureGetFramesRead(napi_env env,napi_callback_info info)419 static napi_value AudioCaptureGetFramesRead(napi_env env, napi_callback_info info)
420 {
421     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
422     OH_AudioCapturer *audioCapturer;
423     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
424 
425     int64_t  frames;
426     OH_AudioStream_Result result = OH_AudioCapturer_GetFramesRead(audioCapturer, &frames);
427     OH_AudioCapturer_Release(audioCapturer);
428     OH_AudioStreamBuilder_Destroy(builder);
429     napi_value res;
430     napi_create_int32(env, result, &res);
431     return res;
432 }
433 
AudioCaptureGetFrameSizeInCallback(napi_env env,napi_callback_info info)434 static napi_value AudioCaptureGetFrameSizeInCallback(napi_env env, napi_callback_info info)
435 {
436     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
437     OH_AudioCapturer *audioCapturer;
438     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
439 
440     int32_t  frameSize;
441     OH_AudioStream_Result result = OH_AudioCapturer_GetFrameSizeInCallback(audioCapturer, &frameSize);
442     OH_AudioCapturer_Release(audioCapturer);
443     OH_AudioStreamBuilder_Destroy(builder);
444     napi_value res;
445     napi_create_int32(env, result, &res);
446     return res;
447 }
448 
449 
CreateRenderBuilder()450 OH_AudioStreamBuilder *CreateRenderBuilder()
451 {
452     OH_AudioStreamBuilder *builder;
453     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
454     OH_AudioStreamBuilder_Create(&builder, type);
455     return builder;
456 }
457 
AudioRendererSetSpeed(napi_env env,napi_callback_info info)458 static napi_value AudioRendererSetSpeed(napi_env env, napi_callback_info info)
459 {
460     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
461 
462     OH_AudioRenderer *audioRenderer;
463     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
464     float speed = 2;
465     OH_AudioStream_Result result = OH_AudioRenderer_SetSpeed(audioRenderer,speed);
466     OH_AudioRenderer_Release(audioRenderer);
467     OH_AudioStreamBuilder_Destroy(builder);
468     napi_value res;
469     napi_create_int32(env, result, &res);
470     return res;
471 }
472 
AudioRendererGetSpeed(napi_env env,napi_callback_info info)473 static napi_value AudioRendererGetSpeed(napi_env env, napi_callback_info info)
474 {
475     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
476 
477     OH_AudioRenderer *audioRenderer;
478     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
479     float speed;
480     OH_AudioStream_Result result = OH_AudioRenderer_GetSpeed(audioRenderer,&speed);
481     OH_AudioRenderer_Release(audioRenderer);
482     OH_AudioStreamBuilder_Destroy(builder);
483     napi_value res;
484     napi_create_int32(env, result, &res);
485     return res;
486 }
487 
AudioRendererSetGetSpeed(napi_env env,napi_callback_info info)488 static napi_value AudioRendererSetGetSpeed(napi_env env, napi_callback_info info)
489 {
490     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
491 
492     OH_AudioRenderer *audioRenderer;
493     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
494     float setSpeed = 1.5;
495     OH_AudioRenderer_SetSpeed(audioRenderer,setSpeed);
496     float getSpeed;
497     OH_AudioRenderer_GetSpeed(audioRenderer,&getSpeed);
498     OH_AudioRenderer_Release(audioRenderer);
499     OH_AudioStreamBuilder_Destroy(builder);
500     napi_value res;
501     napi_create_double(env, getSpeed, &res);
502     return res;
503 }
504 
AudioRendererDeviceChangeCb(OH_AudioRenderer * renderer,void * userData,OH_AudioStream_DeviceChangeReason reason)505 static void AudioRendererDeviceChangeCb(OH_AudioRenderer* renderer, void* userData,
506     OH_AudioStream_DeviceChangeReason reason)
507 {}
508 
AudioSetRendererOutputDeviceChangeCallback(napi_env env,napi_callback_info info)509 static napi_value AudioSetRendererOutputDeviceChangeCallback(napi_env env, napi_callback_info info)
510 {
511     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
512     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
513     OH_AudioStreamBuilder_Create(&builder, type);
514 
515     OH_AudioRenderer_OutputDeviceChangeCallback deviceChangeCb = AudioRendererDeviceChangeCb;
516 
517     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererOutputDeviceChangeCallback(builder, deviceChangeCb, NULL);
518 
519     OH_AudioStreamBuilder_Destroy(builder);
520     napi_value res;
521     napi_create_int32(env, result, &res);
522     return res;
523 }
524 
MicBlockedCallback(OH_AudioDeviceDescriptorArray * audioDeviceDescriptorArray,OH_AudioDevice_BlockStatus status,void * userData)525 static void MicBlockedCallback(OH_AudioDeviceDescriptorArray *audioDeviceDescriptorArray,
526     OH_AudioDevice_BlockStatus status, void *userData)
527 {
528     switch (status) {
529         case AUDIO_DEVICE_UNBLOCKED:
530         // 麦克风未被堵住
531             LOG("MyAudioSessionDeactivatedCallback, event is %{public}d", status);
532         case AUDIO_DEVICE_BLOCKED:
533         // 麦克风被堵住
534             LOG("MyAudioSessionDeactivatedCallback, event is %{public}d", status);
535     }
536 }
537 
AudioRenderGetFramesWritten(napi_env env,napi_callback_info info)538 static napi_value AudioRenderGetFramesWritten(napi_env env, napi_callback_info info)
539 {
540     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
541 
542     OH_AudioRenderer *audioRenderer;
543     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
544     int64_t frames;
545     OH_AudioStream_Result result = OH_AudioRenderer_GetFramesWritten(audioRenderer, &frames);
546     OH_AudioRenderer_Release(audioRenderer);
547     OH_AudioStreamBuilder_Destroy(builder);
548     napi_value res;
549     napi_create_int32(env, result, &res);
550     return res;
551 }
552 
AudioRenderGetTimestamp(napi_env env,napi_callback_info info)553 static napi_value AudioRenderGetTimestamp(napi_env env, napi_callback_info info)
554 {
555     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
556 
557     OH_AudioRenderer *audioRenderer;
558     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
559     OH_AudioRenderer_Start(audioRenderer);
560 
561     int sleepNum = 30000;
562     uDelay(sleepNum);
563     int64_t framePosition;
564     int64_t  timestamp;
565     OH_AudioStream_Result result = OH_AudioRenderer_GetTimestamp(audioRenderer, CLOCK_MONOTONIC, &framePosition, &timestamp);
566     OH_AudioRenderer_Stop(audioRenderer);
567     OH_AudioRenderer_Release(audioRenderer);
568     OH_AudioStreamBuilder_Destroy(builder);
569     napi_value res;
570     napi_create_int32(env, result, &res);
571     return res;
572 }
573 
AudioRenderGetFrameSizeInCallback(napi_env env,napi_callback_info info)574 static napi_value AudioRenderGetFrameSizeInCallback(napi_env env, napi_callback_info info)
575 {
576     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
577 
578     OH_AudioRenderer *audioRenderer;
579     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
580     int32_t  frameSize;
581     OH_AudioStream_Result result = OH_AudioRenderer_GetFrameSizeInCallback(audioRenderer, &frameSize);
582     OH_AudioRenderer_Release(audioRenderer);
583     OH_AudioStreamBuilder_Destroy(builder);
584     napi_value res;
585     napi_create_int32(env, result, &res);
586     return res;
587 }
588 
AudioRenderGenerate(napi_env env,napi_callback_info info)589 static napi_value AudioRenderGenerate(napi_env env, napi_callback_info info)
590 {
591     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
592 
593     OH_AudioRenderer *audioRenderer;
594     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
595     OH_AudioRenderer_Release(audioRenderer);
596     OH_AudioStreamBuilder_Destroy(builder);
597     napi_value res;
598     napi_create_int32(env, result, &res);
599     return res;
600 }
601 
AudioRenderGenerateErr(napi_env env,napi_callback_info info)602 static napi_value AudioRenderGenerateErr(napi_env env, napi_callback_info info)
603 {
604     OH_AudioStreamBuilder *builder;
605     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
606     OH_AudioStreamBuilder_Create(&builder, type);
607 
608     OH_AudioRenderer *audioRenderer;
609     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
610 
611     OH_AudioStreamBuilder_Destroy(builder);
612     napi_value res;
613     napi_create_int32(env, result, &res);
614     return res;
615 }
616 
AudioRenderStart(napi_env env,napi_callback_info info)617 static napi_value AudioRenderStart(napi_env env, napi_callback_info info)
618 {
619     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
620 
621     OH_AudioRenderer *audioRenderer;
622     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
623     OH_AudioStream_Result result = OH_AudioRenderer_Start(audioRenderer);
624     OH_AudioRenderer_Release(audioRenderer);
625     OH_AudioStreamBuilder_Destroy(builder);
626     napi_value res;
627     napi_create_int32(env, result, &res);
628     return res;
629 }
630 
631 
AudioRenderStartErr(napi_env env,napi_callback_info info)632 static napi_value AudioRenderStartErr(napi_env env, napi_callback_info info)
633 {
634     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
635 
636     OH_AudioRenderer *audioRenderer;
637     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
638     OH_AudioRenderer_Start(audioRenderer);
639     OH_AudioStream_Result result = OH_AudioRenderer_Start(audioRenderer);
640     OH_AudioRenderer_Release(audioRenderer);
641     OH_AudioStreamBuilder_Destroy(builder);
642     napi_value res;
643     napi_create_int32(env, result, &res);
644     return res;
645 }
646 
AudioRenderPause(napi_env env,napi_callback_info info)647 static napi_value AudioRenderPause(napi_env env, napi_callback_info info)
648 {
649     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
650 
651     OH_AudioRenderer *audioRenderer;
652     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
653     OH_AudioRenderer_Start(audioRenderer);
654     OH_AudioStream_Result result = OH_AudioRenderer_Pause(audioRenderer);
655     OH_AudioRenderer_Release(audioRenderer);
656     OH_AudioStreamBuilder_Destroy(builder);
657     napi_value res;
658     napi_create_int32(env, result, &res);
659     return res;
660 }
661 
AudioRenderPauseErr(napi_env env,napi_callback_info info)662 static napi_value AudioRenderPauseErr(napi_env env, napi_callback_info info)
663 {
664     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
665 
666     OH_AudioRenderer *audioRenderer;
667     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
668     OH_AudioStream_Result result = OH_AudioRenderer_Pause(audioRenderer);
669     OH_AudioRenderer_Release(audioRenderer);
670     OH_AudioStreamBuilder_Destroy(builder);
671     napi_value res;
672     napi_create_int32(env, result, &res);
673     return res;
674 }
675 
AudioRenderStop(napi_env env,napi_callback_info info)676 static napi_value AudioRenderStop(napi_env env, napi_callback_info info)
677 {
678     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
679 
680     OH_AudioRenderer *audioRenderer;
681     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
682     OH_AudioRenderer_Start(audioRenderer);
683     OH_AudioStream_Result result = OH_AudioRenderer_Stop(audioRenderer);
684     OH_AudioRenderer_Release(audioRenderer);
685     OH_AudioStreamBuilder_Destroy(builder);
686     napi_value res;
687     napi_create_int32(env, result, &res);
688     return res;
689 }
690 
AudioRenderStopErr(napi_env env,napi_callback_info info)691 static napi_value AudioRenderStopErr(napi_env env, napi_callback_info info)
692 {
693     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
694 
695     OH_AudioRenderer *audioRenderer;
696     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
697     OH_AudioStream_Result result = OH_AudioRenderer_Stop(audioRenderer);
698     OH_AudioRenderer_Release(audioRenderer);
699     OH_AudioStreamBuilder_Destroy(builder);
700     napi_value res;
701     napi_create_int32(env, result, &res);
702     return res;
703 }
704 
AudioRenderFlush(napi_env env,napi_callback_info info)705 static napi_value AudioRenderFlush(napi_env env, napi_callback_info info)
706 {
707     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
708 
709     OH_AudioRenderer *audioRenderer;
710     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
711     OH_AudioRenderer_Start(audioRenderer);
712     OH_AudioStream_Result result = OH_AudioRenderer_Flush(audioRenderer);
713     OH_AudioRenderer_Release(audioRenderer);
714     OH_AudioStreamBuilder_Destroy(builder);
715     napi_value res;
716     napi_create_int32(env, result, &res);
717     return res;
718 }
719 
720 
AudioRenderFlushErr(napi_env env,napi_callback_info info)721 static napi_value AudioRenderFlushErr(napi_env env, napi_callback_info info)
722 {
723     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
724 
725     OH_AudioRenderer *audioRenderer;
726     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
727     OH_AudioStream_Result result = OH_AudioRenderer_Flush(audioRenderer);
728     OH_AudioRenderer_Release(audioRenderer);
729     OH_AudioStreamBuilder_Destroy(builder);
730     napi_value res;
731     napi_create_int32(env, result, &res);
732     return res;
733 }
734 
AudioRenderRelease(napi_env env,napi_callback_info info)735 static napi_value AudioRenderRelease(napi_env env, napi_callback_info info)
736 {
737     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
738 
739     OH_AudioRenderer *audioRenderer;
740     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
741     OH_AudioRenderer_Start(audioRenderer);
742     OH_AudioStream_Result result = OH_AudioRenderer_Release(audioRenderer);
743     OH_AudioStreamBuilder_Destroy(builder);
744     napi_value res;
745     napi_create_int32(env, result, &res);
746     return res;
747 }
748 
749 
AudioRenderReleaseErr(napi_env env,napi_callback_info info)750 static napi_value AudioRenderReleaseErr(napi_env env, napi_callback_info info)
751 {
752     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
753 
754     OH_AudioRenderer *audioRenderer;
755     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
756     OH_AudioRenderer_Release(audioRenderer);
757     audioRenderer = nullptr;
758     OH_AudioStream_Result result = OH_AudioRenderer_Release(audioRenderer);
759     OH_AudioStreamBuilder_Destroy(builder);
760     napi_value res;
761     napi_create_int32(env, result, &res);
762     return res;
763 }
764 
AudioRenderGetCurrentState(napi_env env,napi_callback_info info)765 static napi_value AudioRenderGetCurrentState(napi_env env, napi_callback_info info)
766 {
767     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
768 
769     OH_AudioRenderer *audioRenderer;
770     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
771     OH_AudioStream_State state;
772     OH_AudioStream_Result result = OH_AudioRenderer_GetCurrentState(audioRenderer, &state);
773     OH_AudioRenderer_Release(audioRenderer);
774     OH_AudioStreamBuilder_Destroy(builder);
775     napi_value res;
776     napi_create_int32(env, result, &res);
777     return res;
778 }
779 
780 
AudioRenderGetParameter(napi_env env,napi_callback_info info)781 static napi_value AudioRenderGetParameter(napi_env env, napi_callback_info info)
782 {
783     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
784 
785     OH_AudioRenderer *audioRenderer;
786     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
787     OH_AudioStream_LatencyMode latencyMode = AUDIOSTREAM_LATENCY_MODE_NORMAL;
788     OH_AudioStream_Result result = OH_AudioRenderer_GetLatencyMode(audioRenderer, &latencyMode);
789     OH_AudioRenderer_Release(audioRenderer);
790     OH_AudioStreamBuilder_Destroy(builder);
791     napi_value res;
792     napi_create_int32(env, result, &res);
793     return res;
794 }
795 
796 
AudioRenderGetStreamId(napi_env env,napi_callback_info info)797 static napi_value AudioRenderGetStreamId(napi_env env, napi_callback_info info)
798 {
799     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
800 
801     OH_AudioRenderer *audioRenderer;
802     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
803 
804     uint32_t streamId;
805     OH_AudioStream_Result result = OH_AudioRenderer_GetStreamId(audioRenderer, &streamId);
806     OH_AudioRenderer_Release(audioRenderer);
807     OH_AudioStreamBuilder_Destroy(builder);
808     napi_value res;
809     napi_create_int32(env, result, &res);
810     return res;
811 }
812 
AudioRenderGetSamplingRate(napi_env env,napi_callback_info info)813 static napi_value AudioRenderGetSamplingRate(napi_env env, napi_callback_info info)
814 {
815     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
816 
817     OH_AudioRenderer *audioRenderer;
818     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
819     int32_t rate;
820     OH_AudioStream_Result result = OH_AudioRenderer_GetSamplingRate(audioRenderer, &rate);
821     OH_AudioRenderer_Release(audioRenderer);
822     OH_AudioStreamBuilder_Destroy(builder);
823     napi_value res;
824     napi_create_int32(env, result, &res);
825     return res;
826 }
827 
828 
AudioRenderGetSampleFormat(napi_env env,napi_callback_info info)829 static napi_value AudioRenderGetSampleFormat(napi_env env, napi_callback_info info)
830 {
831     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
832 
833     OH_AudioRenderer *audioRenderer;
834     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
835     OH_AudioStream_SampleFormat sampleFormat;
836     OH_AudioStream_Result result = OH_AudioRenderer_GetSampleFormat(audioRenderer, &sampleFormat);
837     OH_AudioRenderer_Release(audioRenderer);
838     OH_AudioStreamBuilder_Destroy(builder);
839     napi_value res;
840     napi_create_int32(env, result, &res);
841     return res;
842 }
843 
844 
AudioRenderGetEncodingType(napi_env env,napi_callback_info info)845 static napi_value AudioRenderGetEncodingType(napi_env env, napi_callback_info info)
846 {
847     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
848 
849     OH_AudioRenderer *audioRenderer;
850     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
851     OH_AudioStream_EncodingType encodingType;
852     OH_AudioStream_Result result = OH_AudioRenderer_GetEncodingType(audioRenderer, &encodingType);
853     OH_AudioRenderer_Release(audioRenderer);
854     OH_AudioStreamBuilder_Destroy(builder);
855     napi_value res;
856     napi_create_int32(env, result, &res);
857     return res;
858 }
859 
AudioRenderGetRendererInfo(napi_env env,napi_callback_info info)860 static napi_value AudioRenderGetRendererInfo(napi_env env, napi_callback_info info)
861 {
862     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
863 
864     OH_AudioRenderer *audioRenderer;
865     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
866     OH_AudioStream_Usage usage;
867     OH_AudioStream_Result result = OH_AudioRenderer_GetRendererInfo(audioRenderer, &usage);
868     OH_AudioRenderer_Release(audioRenderer);
869     OH_AudioStreamBuilder_Destroy(builder);
870     napi_value res;
871     napi_create_int32(env, result, &res);
872     return res;
873 }
874 
875 
AudioStreamBuilderSetSamplingRate(napi_env env,napi_callback_info info)876 static napi_value AudioStreamBuilderSetSamplingRate(napi_env env, napi_callback_info info)
877 {
878     OH_AudioStreamBuilder* builder;
879     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
880     OH_AudioStreamBuilder_Create(&builder, type);
881     int32_t samplingRate = 48000;
882     OH_AudioStreamBuilder_SetSamplingRate(builder, samplingRate);
883     OH_AudioStream_Result result = OH_AudioStreamBuilder_Destroy(builder);
884     napi_value res;
885     napi_create_int32(env, result, &res);
886     return res;
887 }
888 
AudioStreamBuilderSetChannelCount(napi_env env,napi_callback_info info)889 static napi_value AudioStreamBuilderSetChannelCount(napi_env env, napi_callback_info info)
890 {
891     OH_AudioStreamBuilder* builder;
892     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
893     OH_AudioStreamBuilder_Create(&builder, type);
894     int32_t channelCount = 1;
895     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetChannelCount(builder, channelCount);
896     OH_AudioStreamBuilder_Destroy(builder);
897     napi_value res;
898     napi_create_int32(env, result, &res);
899     return res;
900 }
901 
902 
AudioStreamBuilderSetSampleFormat(napi_env env,napi_callback_info info)903 static napi_value AudioStreamBuilderSetSampleFormat(napi_env env, napi_callback_info info)
904 {
905     OH_AudioStreamBuilder* builder;
906     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
907     OH_AudioStreamBuilder_Create(&builder, type);
908     OH_AudioStream_SampleFormat format = AUDIOSTREAM_SAMPLE_U8;
909     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetSampleFormat(builder, format);
910     OH_AudioStreamBuilder_Destroy(builder);
911     napi_value res;
912     napi_create_int32(env, result, &res);
913     return res;
914 }
915 
916 
AudioStreamBuilderSetEncodingType(napi_env env,napi_callback_info info)917 static napi_value AudioStreamBuilderSetEncodingType(napi_env env, napi_callback_info info)
918 {
919     OH_AudioStreamBuilder* builder;
920     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
921     OH_AudioStreamBuilder_Create(&builder, type);
922     OH_AudioStream_EncodingType encodingType = AUDIOSTREAM_ENCODING_TYPE_RAW;
923     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetEncodingType(builder, encodingType);
924     OH_AudioStreamBuilder_Destroy(builder);
925     napi_value res;
926     napi_create_int32(env, result, &res);
927     return res;
928 }
929 
930 
AudioStreamBuilderSetLatencyMode(napi_env env,napi_callback_info info)931 static napi_value AudioStreamBuilderSetLatencyMode(napi_env env, napi_callback_info info)
932 {
933     OH_AudioStreamBuilder* builder;
934     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
935     OH_AudioStreamBuilder_Create(&builder, type);
936 
937     OH_AudioStream_LatencyMode latencyMode = AUDIOSTREAM_LATENCY_MODE_NORMAL;
938     OH_AudioStreamBuilder_SetLatencyMode(builder, latencyMode);
939 
940     OH_AudioStream_Result result = OH_AudioStreamBuilder_Destroy(builder);
941     napi_value res;
942     napi_create_int32(env, result, &res);
943     return res;
944 }
945 
946 
AudioStreamBuilderSetRendererInfo(napi_env env,napi_callback_info info)947 static napi_value AudioStreamBuilderSetRendererInfo(napi_env env, napi_callback_info info)
948 {
949     OH_AudioStreamBuilder* builder;
950     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
951     OH_AudioStreamBuilder_Create(&builder, type);
952     OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_MUSIC;
953     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
954 
955     OH_AudioStreamBuilder_Destroy(builder);
956     napi_value res;
957     napi_create_int32(env, result, &res);
958     return res;
959 }
960 
961 
AudioStreamBuilderSetCapturerInfo(napi_env env,napi_callback_info info)962 static napi_value AudioStreamBuilderSetCapturerInfo(napi_env env, napi_callback_info info)
963 {
964     OH_AudioStreamBuilder* builder;
965     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
966     OH_AudioStreamBuilder_Create(&builder, type);
967     OH_AudioStream_SourceType sourceType = AUDIOSTREAM_SOURCE_TYPE_MIC;
968     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetCapturerInfo(builder, sourceType);
969     OH_AudioStreamBuilder_Destroy(builder);
970     napi_value res;
971     napi_create_int32(env, result, &res);
972     return res;
973 }
974 
AudioRendererOnWriteData(OH_AudioRenderer * capturer,void * userData,void * buffer,int32_t bufferLen)975 static int32_t AudioRendererOnWriteData(OH_AudioRenderer* capturer,
976     void* userData,
977     void* buffer,
978     int32_t bufferLen)
979 {
980     return 0;
981 }
AudioStreamBuilderSetRendererCallback(napi_env env,napi_callback_info info)982 static napi_value AudioStreamBuilderSetRendererCallback(napi_env env, napi_callback_info info)
983 {
984     OH_AudioStreamBuilder* builder;
985     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
986     OH_AudioStreamBuilder_Create(&builder, type);
987     OH_AudioRenderer_Callbacks callbacks;
988     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
989     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, NULL);
990     OH_AudioStreamBuilder_Destroy(builder);
991     napi_value res;
992     napi_create_int32(env, result, &res);
993     return res;
994 }
995 
AudioCapturerOnReadData(OH_AudioCapturer * capturer,void * userData,void * buffer,int32_t bufferLen)996 static int32_t AudioCapturerOnReadData(
997     OH_AudioCapturer* capturer,
998     void* userData,
999     void* buffer,
1000     int32_t bufferLen)
1001 {
1002     return 0;
1003 }
AudioStreamBuilderSetCapturerCallback(napi_env env,napi_callback_info info)1004 static napi_value AudioStreamBuilderSetCapturerCallback(napi_env env, napi_callback_info info)
1005 {
1006     OH_AudioStreamBuilder* builder;
1007     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
1008     OH_AudioStreamBuilder_Create(&builder, type);
1009 
1010     OH_AudioCapturer_Callbacks callbacks;
1011     callbacks.OH_AudioCapturer_OnReadData = AudioCapturerOnReadData;
1012     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetCapturerCallback(builder, callbacks, NULL);
1013 
1014     OH_AudioStreamBuilder_Destroy(builder);
1015     napi_value res;
1016     napi_create_int32(env, result, &res);
1017     return res;
1018 }
1019 
AudioCaptureGetChannelCount(napi_env env,napi_callback_info info)1020 static napi_value AudioCaptureGetChannelCount(napi_env env, napi_callback_info info)
1021 {
1022     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
1023     OH_AudioCapturer *audioCapturer;
1024     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
1025 
1026     int32_t channelCount;
1027     OH_AudioStream_Result result = OH_AudioCapturer_GetChannelCount(audioCapturer, &channelCount);
1028     OH_AudioCapturer_Release(audioCapturer);
1029     OH_AudioStreamBuilder_Destroy(builder);
1030     napi_value res;
1031     napi_create_int32(env, result, &res);
1032     return res;
1033 }
1034 
AudioRenderGetChannelCount(napi_env env,napi_callback_info info)1035 static napi_value AudioRenderGetChannelCount(napi_env env, napi_callback_info info)
1036 {
1037     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
1038 
1039     OH_AudioRenderer *audioRenderer;
1040     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1041 
1042     int32_t channelCount;
1043     OH_AudioStream_Result result = OH_AudioRenderer_GetChannelCount(audioRenderer, &channelCount);
1044     OH_AudioRenderer_Release(audioRenderer);
1045     OH_AudioStreamBuilder_Destroy(builder);
1046     napi_value res;
1047     napi_create_int32(env, result, &res);
1048     return res;
1049 }
1050 
AudioStreamBuilderSetFrameSizeInCallback(napi_env env,napi_callback_info info)1051 static napi_value AudioStreamBuilderSetFrameSizeInCallback(napi_env env, napi_callback_info info)
1052 {
1053     OH_AudioStreamBuilder *builder;
1054     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
1055     OH_AudioStreamBuilder_Create(&builder, type);
1056     int32_t framesize = 960;
1057     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetFrameSizeInCallback(builder, framesize);
1058     OH_AudioStreamBuilder_Destroy(builder);
1059     napi_value res;
1060     napi_create_int32(env, result, &res);
1061     return res;
1062 }
1063 
AudioRendererGetVolume_01(napi_env env,napi_callback_info info)1064 static napi_value AudioRendererGetVolume_01(napi_env env, napi_callback_info info)
1065 {
1066     OH_AudioRenderer* audioRenderer = nullptr;
1067     float volume;
1068     OH_AudioStream_Result result = OH_AudioRenderer_GetVolume(audioRenderer, &volume);
1069     LOG("OH_AudioRenderer_GetVolume, volumeGet is %f, result %{public}d", volume, result);
1070     napi_value res;
1071     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1072         napi_create_int32(env, TEST_FAIL, &res);
1073     } else {
1074         napi_create_int32(env, TEST_PASS, &res);
1075     }
1076     return res;
1077 }
1078 
AudioRendererSetVolume_01(napi_env env,napi_callback_info info)1079 static napi_value AudioRendererSetVolume_01(napi_env env, napi_callback_info info)
1080 {
1081     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1082     OH_AudioRenderer* audioRenderer;
1083     napi_value res;
1084     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1085     if (result != AUDIOSTREAM_SUCCESS) {
1086         napi_create_int32(env, TEST_FAIL, &res);
1087         return res;
1088     }
1089     float volumeSet = 1.0;
1090     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1091     LOG("OH_AudioRenderer_SetVolume 1.0, result is %{public}d", result);
1092     if (result != AUDIOSTREAM_SUCCESS) {
1093         napi_create_int32(env, TEST_FAIL, &res);
1094         return res;
1095     }
1096     float volumeGet;
1097     result = OH_AudioRenderer_GetVolume(audioRenderer, &volumeGet);
1098     LOG("OH_AudioRenderer_GetVolume, volumeGet is %f, %{public}d", volumeGet, result);
1099     if (result != AUDIOSTREAM_SUCCESS || volumeGet != volumeSet) {
1100         napi_create_int32(env, TEST_FAIL, &res);
1101     } else {
1102         napi_create_int32(env, TEST_PASS, &res);
1103     }
1104     OH_AudioRenderer_Release(audioRenderer);
1105     OH_AudioStreamBuilder_Destroy(builder);
1106     return res;
1107 }
1108 
AudioRendererSetVolume_02(napi_env env,napi_callback_info info)1109 static napi_value AudioRendererSetVolume_02(napi_env env, napi_callback_info info)
1110 {
1111     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1112     OH_AudioRenderer* audioRenderer;
1113     napi_value res;
1114     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1115     if (result != AUDIOSTREAM_SUCCESS) {
1116         napi_create_int32(env, TEST_FAIL, &res);
1117         return res;
1118     }
1119     float volumeSet = 0.0;
1120     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1121     LOG("OH_AudioRenderer_SetVolume 0.0, result is %{public}d", result);
1122     if (result != AUDIOSTREAM_SUCCESS) {
1123         napi_create_int32(env, TEST_FAIL, &res);
1124         return res;
1125     }
1126     float volumeGet;
1127     result = OH_AudioRenderer_GetVolume(audioRenderer, &volumeGet);
1128     LOG("OH_AudioRenderer_GetVolume, volumeGet is %f, %{public}d", volumeGet, result);
1129     if (result != AUDIOSTREAM_SUCCESS || volumeGet != volumeSet) {
1130         napi_create_int32(env, TEST_FAIL, &res);
1131     } else {
1132         napi_create_int32(env, TEST_PASS, &res);
1133     }
1134     OH_AudioRenderer_Release(audioRenderer);
1135     OH_AudioStreamBuilder_Destroy(builder);
1136     return res;
1137 }
1138 
AudioRendererSetVolume_03(napi_env env,napi_callback_info info)1139 static napi_value AudioRendererSetVolume_03(napi_env env, napi_callback_info info)
1140 {
1141     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1142     OH_AudioRenderer* audioRenderer;
1143     napi_value res;
1144     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1145     if (result != AUDIOSTREAM_SUCCESS) {
1146         napi_create_int32(env, TEST_FAIL, &res);
1147         return res;
1148     }
1149     float volumeSet = 0.3; // 0.3:value of volumeSet
1150     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1151     LOG("OH_AudioRenderer_SetVolume 0.3, result is %{public}d", result);
1152     if (result != AUDIOSTREAM_SUCCESS) {
1153         napi_create_int32(env, TEST_FAIL, &res);
1154         return res;
1155     }
1156     volumeSet = 0.8; // 0.8:value of volumeSet
1157     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1158     LOG("OH_AudioRenderer_SetVolume 0.8, result is %{public}d", result);
1159     if (result != AUDIOSTREAM_SUCCESS) {
1160         napi_create_int32(env, TEST_FAIL, &res);
1161         return res;
1162     }
1163     float volumeGet;
1164     result = OH_AudioRenderer_GetVolume(audioRenderer, &volumeGet);
1165     LOG("OH_AudioRenderer_GetVolume, volumeGet is %f, %{public}d", volumeGet, result);
1166     if (result != AUDIOSTREAM_SUCCESS || volumeGet != volumeSet) {
1167         napi_create_int32(env, TEST_FAIL, &res);
1168     } else {
1169         napi_create_int32(env, TEST_PASS, &res);
1170     }
1171     OH_AudioRenderer_Release(audioRenderer);
1172     OH_AudioStreamBuilder_Destroy(builder);
1173     return res;
1174 }
1175 
AudioRendererSetVolume_04(napi_env env,napi_callback_info info)1176 static napi_value AudioRendererSetVolume_04(napi_env env, napi_callback_info info)
1177 {
1178     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1179     OH_AudioRenderer* audioRenderer;
1180     napi_value res;
1181     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1182     if (result != AUDIOSTREAM_SUCCESS) {
1183         napi_create_int32(env, TEST_FAIL, &res);
1184         return res;
1185     }
1186     float volumeSet = -1.0;
1187     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1188     LOG("OH_AudioRenderer_SetVolume -1.0 result is %{public}d", result);
1189     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1190         napi_create_int32(env, TEST_FAIL, &res);
1191     } else {
1192         napi_create_int32(env, TEST_PASS, &res);
1193     }
1194     OH_AudioRenderer_Release(audioRenderer);
1195     OH_AudioStreamBuilder_Destroy(builder);
1196     return res;
1197 }
1198 
AudioRendererSetVolume_05(napi_env env,napi_callback_info info)1199 static napi_value AudioRendererSetVolume_05(napi_env env, napi_callback_info info)
1200 {
1201     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1202     OH_AudioRenderer* audioRenderer;
1203     napi_value res;
1204     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1205     if (result != AUDIOSTREAM_SUCCESS) {
1206         napi_create_int32(env, TEST_FAIL, &res);
1207         return res;
1208     }
1209     float volumeSet = 1.5; // 1.5:value of volumeSet
1210     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1211     LOG("OH_AudioRenderer_SetVolume 1.5 result is %{public}d", result);
1212     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1213         napi_create_int32(env, TEST_FAIL, &res);
1214     } else {
1215         napi_create_int32(env, TEST_PASS, &res);
1216     }
1217     OH_AudioRenderer_Release(audioRenderer);
1218     OH_AudioStreamBuilder_Destroy(builder);
1219     return res;
1220 }
1221 
AudioRendererSetVolume_06(napi_env env,napi_callback_info info)1222 static napi_value AudioRendererSetVolume_06(napi_env env, napi_callback_info info)
1223 {
1224     OH_AudioRenderer* audioRenderer = nullptr;
1225     float volumeSet = 0.5; // 0.5:value of volumeSet
1226     napi_value res;
1227     OH_AudioStream_Result result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1228     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1229         napi_create_int32(env, TEST_FAIL, &res);
1230     } else {
1231         napi_create_int32(env, TEST_PASS, &res);
1232     }
1233     LOG("OH_AudioRenderer_GetVolume, volumeGet is %f, %{public}d", volumeSet, result);
1234     return res;
1235 }
1236 
AudioRendererSetVolumeWithRamp_01(napi_env env,napi_callback_info info)1237 static napi_value AudioRendererSetVolumeWithRamp_01(napi_env env, napi_callback_info info)
1238 {
1239     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1240     OH_AudioRenderer* audioRenderer;
1241     napi_value res;
1242     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1243     if (result != AUDIOSTREAM_SUCCESS) {
1244         napi_create_int32(env, TEST_FAIL, &res);
1245         return res;
1246     }
1247     float volumeSet = 0.0;
1248     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1249     LOG("OH_AudioRenderer_SetVolume 0.0 result is %{public}d", result);
1250     if (result != AUDIOSTREAM_SUCCESS) {
1251         napi_create_int32(env, TEST_FAIL, &res);
1252         return res;
1253     }
1254     int32_t durationMs = 1000; // 1000:value of durationMs
1255     volumeSet = 1.0;
1256     result = OH_AudioRenderer_SetVolumeWithRamp(audioRenderer, volumeSet, durationMs);
1257     LOG("OH_AudioRenderer_SetVolumeWithRamp 0.0->1.0 1000 result is %{public}d", result);
1258     if (result != AUDIOSTREAM_SUCCESS) {
1259         napi_create_int32(env, TEST_FAIL, &res);
1260     } else {
1261         napi_create_int32(env, TEST_PASS, &res);
1262     }
1263     OH_AudioRenderer_Release(audioRenderer);
1264     OH_AudioStreamBuilder_Destroy(builder);
1265     return res;
1266 }
1267 
AudioRendererSetVolumeWithRamp_02(napi_env env,napi_callback_info info)1268 static napi_value AudioRendererSetVolumeWithRamp_02(napi_env env, napi_callback_info info)
1269 {
1270     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1271     OH_AudioRenderer* audioRenderer;
1272     napi_value res;
1273     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1274     if (result != AUDIOSTREAM_SUCCESS) {
1275         napi_create_int32(env, TEST_FAIL, &res);
1276         return res;
1277     }
1278     float volumeSet = 1.0;
1279     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1280     LOG("OH_AudioRenderer_SetVolume 1.0 result is %{public}d", result);
1281     if (result != AUDIOSTREAM_SUCCESS) {
1282         napi_create_int32(env, TEST_FAIL, &res);
1283         return res;
1284     }
1285     int32_t durationMs = 100; // 100:value of durationMs
1286     volumeSet = 0.0;
1287     result = OH_AudioRenderer_SetVolumeWithRamp(audioRenderer, volumeSet, durationMs);
1288     LOG("OH_AudioRenderer_SetVolumeWithRamp 1.0->0.0 100 result is %{public}d", result);
1289     if (result != AUDIOSTREAM_SUCCESS) {
1290         napi_create_int32(env, TEST_FAIL, &res);
1291     } else {
1292         napi_create_int32(env, TEST_PASS, &res);
1293     }
1294     OH_AudioRenderer_Release(audioRenderer);
1295     OH_AudioStreamBuilder_Destroy(builder);
1296     return res;
1297 }
1298 
AudioRendererSetVolumeWithRamp_03(napi_env env,napi_callback_info info)1299 static napi_value AudioRendererSetVolumeWithRamp_03(napi_env env, napi_callback_info info)
1300 {
1301     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1302     OH_AudioRenderer* audioRenderer;
1303     napi_value res;
1304     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1305     if (result != AUDIOSTREAM_SUCCESS) {
1306         napi_create_int32(env, TEST_FAIL, &res);
1307         return res;
1308     }
1309     float volumeSet = 0.0;
1310     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1311     LOG("OH_AudioRenderer_SetVolume 0.0 result is %{public}d", result);
1312     if (result != AUDIOSTREAM_SUCCESS) {
1313         napi_create_int32(env, TEST_FAIL, &res);
1314         return res;
1315     }
1316     int32_t durationMs = 10; // 10:value of durationMs
1317     volumeSet = 0.5; // 0.5:value of volumeSet
1318     result = OH_AudioRenderer_SetVolumeWithRamp(audioRenderer, volumeSet, durationMs);
1319     LOG("OH_AudioRenderer_SetVolumeWithRamp 0.0->0.5 10 result is %{public}d", result);
1320     if (result != AUDIOSTREAM_SUCCESS) {
1321         napi_create_int32(env, TEST_FAIL, &res);
1322     } else {
1323         napi_create_int32(env, TEST_PASS, &res);
1324     }
1325     OH_AudioRenderer_Release(audioRenderer);
1326     OH_AudioStreamBuilder_Destroy(builder);
1327     return res;
1328 }
1329 
AudioRendererSetVolumeWithRamp_04(napi_env env,napi_callback_info info)1330 static napi_value AudioRendererSetVolumeWithRamp_04(napi_env env, napi_callback_info info)
1331 {
1332     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1333     OH_AudioRenderer* audioRenderer;
1334     napi_value res;
1335     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1336     if (result != AUDIOSTREAM_SUCCESS) {
1337         napi_create_int32(env, TEST_FAIL, &res);
1338         return res;
1339     }
1340     float volumeSet = 1.0;
1341     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1342     LOG("OH_AudioRenderer_SetVolume 1.0 result is %{public}d", result);
1343     if (result != AUDIOSTREAM_SUCCESS) {
1344         napi_create_int32(env, TEST_FAIL, &res);
1345         return res;
1346     }
1347     int32_t durationMs = 10; // 10:value of durationMs
1348     volumeSet = 0.5; // 0.5:value of volumeSet
1349     result = OH_AudioRenderer_SetVolumeWithRamp(audioRenderer, volumeSet, durationMs);
1350     LOG("OH_AudioRenderer_SetVolumeWithRamp 1.0->0.5 10 result is %{public}d", result);
1351     if (result != AUDIOSTREAM_SUCCESS) {
1352         napi_create_int32(env, TEST_FAIL, &res);
1353     } else {
1354         napi_create_int32(env, TEST_PASS, &res);
1355     }
1356     OH_AudioRenderer_Release(audioRenderer);
1357     OH_AudioStreamBuilder_Destroy(builder);
1358     return res;
1359 }
1360 
AudioRendererSetVolumeWithRamp_05(napi_env env,napi_callback_info info)1361 static napi_value AudioRendererSetVolumeWithRamp_05(napi_env env, napi_callback_info info)
1362 {
1363     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1364     OH_AudioRenderer* audioRenderer;
1365     napi_value res;
1366     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1367     if (result != AUDIOSTREAM_SUCCESS) {
1368         napi_create_int32(env, TEST_FAIL, &res);
1369         return res;
1370     }
1371     float volumeSet = 0.0;
1372     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1373     LOG("OH_AudioRenderer_SetVolume 0.0 result is %{public}d", result);
1374     if (result != AUDIOSTREAM_SUCCESS) {
1375         napi_create_int32(env, TEST_FAIL, &res);
1376         return res;
1377     }
1378     int32_t durationMs = 10; // 10:value of durationMs
1379     volumeSet = 0.0;
1380     result = OH_AudioRenderer_SetVolumeWithRamp(audioRenderer, volumeSet, durationMs);
1381     LOG("OH_AudioRenderer_SetVolumeWithRamp 0.0->0.0 10 result is %{public}d", result);
1382     if (result != AUDIOSTREAM_SUCCESS) {
1383         napi_create_int32(env, TEST_FAIL, &res);
1384     } else {
1385         napi_create_int32(env, TEST_PASS, &res);
1386     }
1387     OH_AudioRenderer_Release(audioRenderer);
1388     OH_AudioStreamBuilder_Destroy(builder);
1389     return res;
1390 }
1391 
AudioRendererSetVolumeWithRamp_06(napi_env env,napi_callback_info info)1392 static napi_value AudioRendererSetVolumeWithRamp_06(napi_env env, napi_callback_info info)
1393 {
1394     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1395     OH_AudioRenderer* audioRenderer;
1396     napi_value res;
1397     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1398     if (result != AUDIOSTREAM_SUCCESS) {
1399         napi_create_int32(env, TEST_FAIL, &res);
1400         return res;
1401     }
1402     float volumeSet = 1.0;
1403     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1404     LOG("OH_AudioRenderer_SetVolume 1.0 result is %{public}d", result);
1405     if (result != AUDIOSTREAM_SUCCESS) {
1406         napi_create_int32(env, TEST_FAIL, &res);
1407         return res;
1408     }
1409     int32_t durationMs = 10; // 10:value of durationMs
1410     volumeSet = 1.0;
1411     result = OH_AudioRenderer_SetVolumeWithRamp(audioRenderer, volumeSet, durationMs);
1412     LOG("OH_AudioRenderer_SetVolumeWithRamp 1.0->1.0 10 result is %{public}d", result);
1413     if (result != AUDIOSTREAM_SUCCESS) {
1414         napi_create_int32(env, TEST_FAIL, &res);
1415     } else {
1416         napi_create_int32(env, TEST_PASS, &res);
1417     }
1418     OH_AudioRenderer_Release(audioRenderer);
1419     OH_AudioStreamBuilder_Destroy(builder);
1420     return res;
1421 }
1422 
AudioRendererSetVolumeWithRamp_07(napi_env env,napi_callback_info info)1423 static napi_value AudioRendererSetVolumeWithRamp_07(napi_env env, napi_callback_info info)
1424 {
1425     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1426     OH_AudioRenderer* audioRenderer;
1427     napi_value res;
1428     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1429     if (result != AUDIOSTREAM_SUCCESS) {
1430         napi_create_int32(env, TEST_FAIL, &res);
1431         return res;
1432     }
1433     float volumeSet = 1.0;
1434     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1435     LOG("OH_AudioRenderer_SetVolume 1.0 result is %{public}d", result);
1436     if (result != AUDIOSTREAM_SUCCESS) {
1437         napi_create_int32(env, TEST_FAIL, &res);
1438         return res;
1439     }
1440     int32_t durationMs = 100; // 100:value of durationMs
1441     volumeSet = 1.2; // 1.2:value of volumeSet
1442     result = OH_AudioRenderer_SetVolumeWithRamp(audioRenderer, volumeSet, durationMs);
1443     LOG("OH_AudioRenderer_SetVolumeWithRamp 1.0->1.2 100 result is %{public}d", result);
1444     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1445         napi_create_int32(env, TEST_FAIL, &res);
1446     } else {
1447         napi_create_int32(env, TEST_PASS, &res);
1448     }
1449     OH_AudioRenderer_Release(audioRenderer);
1450     OH_AudioStreamBuilder_Destroy(builder);
1451     return res;
1452 }
1453 
AudioRendererSetVolumeWithRamp_08(napi_env env,napi_callback_info info)1454 static napi_value AudioRendererSetVolumeWithRamp_08(napi_env env, napi_callback_info info)
1455 {
1456     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1457     OH_AudioRenderer* audioRenderer;
1458     napi_value res;
1459     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1460     if (result != AUDIOSTREAM_SUCCESS) {
1461         napi_create_int32(env, TEST_FAIL, &res);
1462         return res;
1463     }
1464     float volumeSet = 0.0;
1465     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1466     LOG("OH_AudioRenderer_SetVolume 0.0 result is %{public}d", result);
1467     if (result != AUDIOSTREAM_SUCCESS) {
1468         napi_create_int32(env, TEST_FAIL, &res);
1469         return res;
1470     }
1471     int32_t durationMs = 100; // 100:value of durationMs
1472     volumeSet = -0.2; // -0.2:invalid value of volumeSet
1473     result = OH_AudioRenderer_SetVolumeWithRamp(audioRenderer, volumeSet, durationMs);
1474     LOG("OH_AudioRenderer_SetVolumeWithRamp 0.0->-0.2 100 result is %{public}d", result);
1475     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1476         napi_create_int32(env, TEST_FAIL, &res);
1477     } else {
1478         napi_create_int32(env, TEST_PASS, &res);
1479     }
1480     OH_AudioRenderer_Release(audioRenderer);
1481     OH_AudioStreamBuilder_Destroy(builder);
1482     return res;
1483 }
1484 
AudioRendererSetVolumeWithRamp_09(napi_env env,napi_callback_info info)1485 static napi_value AudioRendererSetVolumeWithRamp_09(napi_env env, napi_callback_info info)
1486 {
1487     OH_AudioRenderer* audioRenderer = nullptr;
1488     float volumeSet = 0.5; // 0.5:value of volumeSet
1489     int32_t durationMs = 10; // 10:value of durationMs
1490     OH_AudioStream_Result result = OH_AudioRenderer_SetVolumeWithRamp(audioRenderer, volumeSet, durationMs);
1491     napi_value res;
1492     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1493         napi_create_int32(env, TEST_FAIL, &res);
1494     } else {
1495         napi_create_int32(env, TEST_PASS, &res);
1496     }
1497     return res;
1498 }
1499 
AudioRendererOnMarkReachedCb(OH_AudioRenderer * renderer,uint32_t samplePos,void * userData)1500 static void AudioRendererOnMarkReachedCb(OH_AudioRenderer* renderer, uint32_t samplePos, void* userData)
1501 {
1502     g_flag = true;
1503     LOG("AudioRendererOnMarkReachedCb samplePos: %{public}d \n", samplePos);
1504 }
1505 
AudioRendererSetOnMarkReached_01(napi_env env,napi_callback_info info)1506 static napi_value AudioRendererSetOnMarkReached_01(napi_env env, napi_callback_info info)
1507 {
1508     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
1509     OH_AudioRenderer *audioRenderer;
1510     napi_value res;
1511     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1512     if (result != AUDIOSTREAM_SUCCESS) {
1513         napi_create_int32(env, TEST_FAIL, &res);
1514         return res;
1515     }
1516     uint32_t samplePos = 1;
1517     OH_AudioRenderer_OnMarkReachedCallback callback = AudioRendererOnMarkReachedCb;
1518     result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1519     LOG("OH_Audio_Renderer_SetOnMarkReached_01 result is: %{public}d", result);
1520     if (result != AUDIOSTREAM_SUCCESS) {
1521         napi_create_int32(env, TEST_FAIL, &res);
1522     } else {
1523         napi_create_int32(env, TEST_PASS, &res);
1524     }
1525     OH_AudioRenderer_Release(audioRenderer);
1526     OH_AudioStreamBuilder_Destroy(builder);
1527     return res;
1528 }
1529 
AudioRendererSetOnMarkReached_02(napi_env env,napi_callback_info info)1530 static napi_value AudioRendererSetOnMarkReached_02(napi_env env, napi_callback_info info)
1531 {
1532     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
1533     OH_AudioRenderer *audioRenderer;
1534     napi_value res;
1535     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1536     if (result != AUDIOSTREAM_SUCCESS) {
1537         napi_create_int32(env, TEST_FAIL, &res);
1538         return res;
1539     }
1540     uint32_t samplePos = 0;
1541     OH_AudioRenderer_OnMarkReachedCallback callback = AudioRendererOnMarkReachedCb;
1542     result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1543     LOG("OH_Audio_Renderer_SetOnMarkReached_02 result is: %{public}d", result);
1544     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1545         napi_create_int32(env, TEST_FAIL, &res);
1546     } else {
1547         napi_create_int32(env, TEST_PASS, &res);
1548     }
1549     OH_AudioRenderer_Release(audioRenderer);
1550     OH_AudioStreamBuilder_Destroy(builder);
1551     return res;
1552 }
1553 
AudioRendererSetOnMarkReached_03(napi_env env,napi_callback_info info)1554 static napi_value AudioRendererSetOnMarkReached_03(napi_env env, napi_callback_info info)
1555 {
1556     g_flag = false;
1557     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
1558     napi_value res;
1559     OH_AudioStreamBuilder_SetSamplingRate(builder, g_samplingRate);
1560     OH_AudioStreamBuilder_SetChannelCount(builder, g_channelCount);
1561     OH_AudioStreamBuilder_SetLatencyMode(builder, (OH_AudioStream_LatencyMode)g_latencyMode);
1562     OH_AudioStreamBuilder_SetSampleFormat(builder, (OH_AudioStream_SampleFormat)g_sampleFormat);
1563     OH_AudioRenderer_Callbacks callbacks;
1564     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
1565     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr);
1566     if (result != AUDIOSTREAM_SUCCESS) {
1567         napi_create_int32(env, TEST_FAIL, &res);
1568         return res;
1569     }
1570     // set buffer size to g_frameSize
1571     OH_AudioStreamBuilder_SetFrameSizeInCallback(builder, g_frameSize);
1572 
1573     OH_AudioRenderer *audioRenderer;
1574     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1575     uint32_t samplePos = 1;
1576     OH_AudioRenderer_OnMarkReachedCallback callback = AudioRendererOnMarkReachedCb;
1577     result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1578     LOG("OH_Audio_Renderer_SetOnMarkReached_03 result is: %{public}d", result);
1579     if (result != AUDIOSTREAM_SUCCESS) {
1580         napi_create_int32(env, TEST_FAIL, &res);
1581         return res;
1582     }
1583     const int waitTime = 2;
1584     OH_AudioRenderer_Start(audioRenderer);
1585     sleep(waitTime); // 2:sleep 2 seconds
1586     OH_AudioRenderer_Stop(audioRenderer);
1587     if (!g_flag) {
1588         napi_create_int32(env, TEST_FAIL, &res);
1589     } else {
1590         napi_create_int32(env, TEST_PASS, &res);
1591     }
1592     OH_AudioRenderer_Release(audioRenderer);
1593     OH_AudioStreamBuilder_Destroy(builder);
1594     return res;
1595 }
1596 
AudioRendererSetOnMarkReached_04(napi_env env,napi_callback_info info)1597 static napi_value AudioRendererSetOnMarkReached_04(napi_env env, napi_callback_info info)
1598 {
1599     OH_AudioRenderer* audioRenderer = nullptr;
1600     uint32_t samplePos = 1;
1601     OH_AudioRenderer_OnMarkReachedCallback callback = AudioRendererOnMarkReachedCb;
1602     OH_AudioStream_Result result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1603     napi_value res;
1604     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1605         napi_create_int32(env, TEST_FAIL, &res);
1606     } else {
1607         napi_create_int32(env, TEST_PASS, &res);
1608     }
1609     return res;
1610 }
1611 
AudioRendererSetOnMarkReached_05(napi_env env,napi_callback_info info)1612 static napi_value AudioRendererSetOnMarkReached_05(napi_env env, napi_callback_info info)
1613 {
1614     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
1615     OH_AudioRenderer *audioRenderer;
1616     napi_value res;
1617     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1618     uint32_t samplePos = 4294967295; // 4294967295:uint32_t 2^32 - 1
1619     OH_AudioRenderer_OnMarkReachedCallback callback = AudioRendererOnMarkReachedCb;
1620     OH_AudioStream_Result result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1621     LOG("OH_Audio_Renderer_SetOnMarkReached_05 result is: %{public}d", result);
1622     if (result != AUDIOSTREAM_SUCCESS) {
1623         napi_create_int32(env, TEST_FAIL, &res);
1624     } else {
1625         napi_create_int32(env, TEST_PASS, &res);
1626     }
1627     OH_AudioRenderer_Release(audioRenderer);
1628     OH_AudioStreamBuilder_Destroy(builder);
1629     return res;
1630 }
1631 
AudioRendererSetOnMarkReached_06(napi_env env,napi_callback_info info)1632 static napi_value AudioRendererSetOnMarkReached_06(napi_env env, napi_callback_info info)
1633 {
1634     g_flag = false;
1635     g_file = fopen(g_filePath.c_str(), "rb");
1636     if (g_file == nullptr) {
1637         LOG("fopen fail. g_file: %p\n", g_file);
1638     }
1639     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
1640     napi_value res;
1641     OH_AudioStreamBuilder_SetSamplingRate(builder, g_samplingRate);
1642     OH_AudioStreamBuilder_SetChannelCount(builder, g_channelCount);
1643     OH_AudioStreamBuilder_SetLatencyMode(builder, (OH_AudioStream_LatencyMode)g_latencyMode);
1644     OH_AudioStreamBuilder_SetSampleFormat(builder, (OH_AudioStream_SampleFormat)g_sampleFormat);
1645     OH_AudioRenderer_Callbacks callbacks;
1646     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnMarkReachedWriteData;
1647     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr);
1648     if (result != AUDIOSTREAM_SUCCESS) {
1649         napi_create_int32(env, TEST_FAIL, &res);
1650         return res;
1651     }
1652     // set buffer size to g_frameSize
1653     OH_AudioStreamBuilder_SetFrameSizeInCallback(builder, g_frameSize);
1654 
1655     OH_AudioRenderer *audioRenderer;
1656     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1657     uint32_t samplePos = 10538568; // 10538568:Test_44100_2.wav The total number of frames in the audio file
1658     OH_AudioRenderer_OnMarkReachedCallback callback = AudioRendererOnMarkReachedCb;
1659     result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1660     LOG("OH_Audio_Renderer_SetOnMarkReached_06 result is: %{public}d", result);
1661     if (result != AUDIOSTREAM_SUCCESS) {
1662         napi_create_int32(env, TEST_FAIL, &res);
1663         return res;
1664     }
1665     const int waitTime = 220;
1666     OH_AudioRenderer_Start(audioRenderer);
1667     Delay(waitTime); // 220:Play the entire music
1668     OH_AudioRenderer_Stop(audioRenderer);
1669     if (!g_flag) {
1670         napi_create_int32(env, TEST_FAIL, &res);
1671     } else {
1672         napi_create_int32(env, TEST_PASS, &res);
1673     }
1674     OH_AudioRenderer_Release(audioRenderer);
1675     OH_AudioStreamBuilder_Destroy(builder);
1676     return res;
1677 }
1678 
AudioRendererSetOnMarkReached_07(napi_env env,napi_callback_info info)1679 static napi_value AudioRendererSetOnMarkReached_07(napi_env env, napi_callback_info info)
1680 {
1681     g_flag = false;
1682     g_file = fopen(g_filePath.c_str(), "rb");
1683     if (g_file == nullptr) {
1684         LOG("fopen fail. g_file: %p\n", g_file);
1685     }
1686     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
1687     napi_value res;
1688     OH_AudioStreamBuilder_SetSamplingRate(builder, g_samplingRate);
1689     OH_AudioStreamBuilder_SetChannelCount(builder, g_channelCount);
1690     OH_AudioStreamBuilder_SetLatencyMode(builder, (OH_AudioStream_LatencyMode)g_latencyMode);
1691     OH_AudioStreamBuilder_SetSampleFormat(builder, (OH_AudioStream_SampleFormat)g_sampleFormat);
1692     OH_AudioRenderer_Callbacks callbacks;
1693     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnMarkReachedWriteData;
1694     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr);
1695     if (result != AUDIOSTREAM_SUCCESS) {
1696         napi_create_int32(env, TEST_FAIL, &res);
1697         return res;
1698     }
1699     // set buffer size to g_frameSize
1700     OH_AudioStreamBuilder_SetFrameSizeInCallback(builder, g_frameSize);
1701 
1702     OH_AudioRenderer *audioRenderer;
1703     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1704     uint32_t samplePos = 10538570; // 10538570:Test_44100_2.wav The total number of frames in the audio file + 2
1705     OH_AudioRenderer_OnMarkReachedCallback callback = AudioRendererOnMarkReachedCb;
1706     result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1707     LOG("OH_Audio_Renderer_SetOnMarkReached_07 result is: %{public}d", result);
1708     if (result != AUDIOSTREAM_SUCCESS) {
1709         napi_create_int32(env, TEST_FAIL, &res);
1710         return res;
1711     }
1712     const int waitTime = 10;
1713     OH_AudioRenderer_Start(audioRenderer);
1714     Delay(waitTime); // 10:Play for 10 seconds
1715     OH_AudioRenderer_Stop(audioRenderer);
1716     if (!g_flag) {
1717         napi_create_int32(env, TEST_PASS, &res);
1718     } else {
1719         napi_create_int32(env, TEST_FAIL, &res);
1720     }
1721     OH_AudioRenderer_Release(audioRenderer);
1722     OH_AudioStreamBuilder_Destroy(builder);
1723     return res;
1724 }
1725 
AudioRendererSetOnMarkReached_08(napi_env env,napi_callback_info info)1726 static napi_value AudioRendererSetOnMarkReached_08(napi_env env, napi_callback_info info)
1727 {
1728     g_flag = false;
1729     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
1730     napi_value res;
1731     OH_AudioStreamBuilder_SetSamplingRate(builder, g_samplingRate);
1732     OH_AudioStreamBuilder_SetChannelCount(builder, g_channelCount);
1733     OH_AudioStreamBuilder_SetLatencyMode(builder, (OH_AudioStream_LatencyMode)g_latencyMode);
1734     OH_AudioStreamBuilder_SetSampleFormat(builder, (OH_AudioStream_SampleFormat)g_sampleFormat);
1735     OH_AudioRenderer_Callbacks callbacks;
1736     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
1737     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr);
1738     if (result != AUDIOSTREAM_SUCCESS) {
1739         napi_create_int32(env, TEST_FAIL, &res);
1740         return res;
1741     }
1742     // set buffer size to g_frameSize
1743     OH_AudioStreamBuilder_SetFrameSizeInCallback(builder, g_frameSize);
1744 
1745     OH_AudioRenderer *audioRenderer;
1746     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1747     uint32_t samplePos = 1;
1748     OH_AudioRenderer_OnMarkReachedCallback callback = AudioRendererOnMarkReachedCb;
1749     result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1750     if (result != AUDIOSTREAM_SUCCESS) {
1751         napi_create_int32(env, TEST_FAIL, &res);
1752         return res;
1753     }
1754     result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1755     if (result != AUDIOSTREAM_SUCCESS) {
1756         napi_create_int32(env, TEST_FAIL, &res);
1757         return res;
1758     }
1759     result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1760     LOG("OH_Audio_Renderer_SetOnMarkReached_08 result is: %{public}d", result);
1761     if (result != AUDIOSTREAM_SUCCESS) {
1762         napi_create_int32(env, TEST_FAIL, &res);
1763         return res;
1764     }
1765     LOG("audioRendererSetOnMarkReached_08 result = AUDIOSTREAM_SUCCESS");
1766     int waitTime = 10;
1767     OH_AudioRenderer_Start(audioRenderer);
1768     LOG("audioRendererSetOnMarkReached_08 OH_AudioRenderer_Start SUCCESS");
1769     Delay(waitTime);
1770     OH_AudioRenderer_Stop(audioRenderer);
1771     LOG("audioRendererSetOnMarkReached_08 OH_AudioRenderer_Stop SUCCESS");
1772     if (!g_flag) {
1773         napi_create_int32(env, TEST_FAIL, &res);
1774     } else {
1775         napi_create_int32(env, TEST_PASS, &res);
1776     }
1777     OH_AudioRenderer_Release(audioRenderer);
1778     LOG("audioRendererSetOnMarkReached_08 OH_AudioRenderer_Release SUCCESS");
1779     OH_AudioStreamBuilder_Destroy(builder);
1780     LOG("audioRendererSetOnMarkReached_08 OH_AudioStreamBuilder_Destroy SUCCESS");
1781     return res;
1782 }
1783 
AudioRendererCancelMark_01(napi_env env,napi_callback_info info)1784 static napi_value AudioRendererCancelMark_01(napi_env env, napi_callback_info info)
1785 {
1786     g_flag = false;
1787     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
1788     napi_value res;
1789     OH_AudioStreamBuilder_SetSamplingRate(builder, g_samplingRate);
1790     OH_AudioStreamBuilder_SetChannelCount(builder, g_channelCount);
1791     OH_AudioStreamBuilder_SetLatencyMode(builder, (OH_AudioStream_LatencyMode)g_latencyMode);
1792     OH_AudioStreamBuilder_SetSampleFormat(builder, (OH_AudioStream_SampleFormat)g_sampleFormat);
1793     OH_AudioRenderer_Callbacks callbacks;
1794     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
1795     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr);
1796     if (result != AUDIOSTREAM_SUCCESS) {
1797         napi_create_int32(env, TEST_FAIL, &res);
1798         return res;
1799     }
1800     // set buffer size to g_frameSize
1801     result = OH_AudioStreamBuilder_SetFrameSizeInCallback(builder, g_frameSize);
1802     if (result != AUDIOSTREAM_SUCCESS) {
1803         napi_create_int32(env, TEST_FAIL, &res);
1804         return res;
1805     }
1806 
1807     OH_AudioRenderer *audioRenderer;
1808     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1809     uint32_t samplePos = 1;
1810     OH_AudioRenderer_OnMarkReachedCallback callback = AudioRendererOnMarkReachedCb;
1811     result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1812     LOG("OH_Audio_Renderer_SetOnMarkReached_03 result is: %{public}d", result);
1813     if (result != AUDIOSTREAM_SUCCESS) {
1814         napi_create_int32(env, TEST_FAIL, &res);
1815         return res;
1816     }
1817     result = OH_AudioRenderer_Start(audioRenderer);
1818     if (result != AUDIOSTREAM_SUCCESS) {
1819         napi_create_int32(env, TEST_FAIL, &res);
1820         return res;
1821     }
1822     const int waitTime = 2;
1823     sleep(waitTime); // 2:sleep 2 seconds
1824     // CancelMark
1825     result = OH_AudioRenderer_CancelMark(audioRenderer);
1826     LOG("OH_AudioRenderer_CancelMark result is %{public}d", result);
1827     if (result != AUDIOSTREAM_SUCCESS) {
1828         napi_create_int32(env, TEST_FAIL, &res);
1829         return res;
1830     }
1831     OH_AudioRenderer_Stop(audioRenderer);
1832     if (!g_flag) {
1833         napi_create_int32(env, TEST_FAIL, &res);
1834     } else {
1835         napi_create_int32(env, TEST_PASS, &res);
1836     }
1837     OH_AudioRenderer_Release(audioRenderer);
1838     OH_AudioStreamBuilder_Destroy(builder);
1839     return res;
1840 }
1841 
AudioRendererCancelMark_02(napi_env env,napi_callback_info info)1842 static napi_value AudioRendererCancelMark_02(napi_env env, napi_callback_info info)
1843 {
1844     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1845     OH_AudioRenderer* audioRenderer;
1846     napi_value res;
1847     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1848     if (result != AUDIOSTREAM_SUCCESS) {
1849         napi_create_int32(env, TEST_FAIL, &res);
1850         return res;
1851     }
1852     result = OH_AudioRenderer_CancelMark(audioRenderer);
1853     LOG("OH_AudioRenderer_CancelMark result is %{public}d", result);
1854     OH_AudioRenderer_Release(audioRenderer);
1855     OH_AudioStreamBuilder_Destroy(builder);
1856     if (result != AUDIOSTREAM_SUCCESS) {
1857         napi_create_int32(env, TEST_FAIL, &res);
1858     } else {
1859         napi_create_int32(env, TEST_PASS, &res);
1860     }
1861     return res;
1862 }
1863 
AudioRendererCancelMark_03(napi_env env,napi_callback_info info)1864 static napi_value AudioRendererCancelMark_03(napi_env env, napi_callback_info info)
1865 {
1866     OH_AudioRenderer* audioRenderer = nullptr;
1867     OH_AudioStream_Result result = OH_AudioRenderer_CancelMark(audioRenderer);
1868     napi_value res;
1869     LOG("OH_AudioRenderer_CancelMark result is %{public}d", result);
1870     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1871         napi_create_int32(env, TEST_FAIL, &res);
1872     } else {
1873         napi_create_int32(env, TEST_PASS, &res);
1874     }
1875     return res;
1876 }
1877 
AudioRendererInterruptEvent(OH_AudioRenderer * renderer,void * userData,OH_AudioInterrupt_ForceType type,OH_AudioInterrupt_Hint hint)1878 static int32_t AudioRendererInterruptEvent(OH_AudioRenderer* renderer,
1879     void* userData,
1880     OH_AudioInterrupt_ForceType type,
1881     OH_AudioInterrupt_Hint hint)
1882 {
1883     g_mark = true;
1884     LOG("AudioRendererInterruptEvent type = %{public}d, hint = %{public}d\n", type, hint);
1885     return 0;
1886 }
1887 
AudioRendererSetInterruptMode_01(napi_env env,napi_callback_info info)1888 static napi_value AudioRendererSetInterruptMode_01(napi_env env, napi_callback_info info)
1889 {
1890     g_mark = false;
1891     napi_value res;
1892     // 1. create builder
1893     OH_AudioStreamBuilder* builder1;
1894     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
1895     OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_MUSIC;
1896     OH_AudioStreamBuilder_Create(&builder1, type);
1897 
1898     OH_AudioStreamBuilder* builder2;
1899     OH_AudioStreamBuilder_Create(&builder2, type);
1900 
1901     // 2. set builder1 builder2 params
1902     OH_AudioStreamBuilder_SetRendererInfo(builder1, usage);
1903     OH_AudioRenderer_Callbacks callbacks;
1904     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
1905     callbacks.OH_AudioRenderer_OnInterruptEvent = AudioRendererInterruptEvent;
1906     OH_AudioStreamBuilder_SetRendererCallback(builder1, callbacks, nullptr);
1907     OH_AudioStreamBuilder_SetFrameSizeInCallback(builder1, g_frameSize);
1908 
1909     usage = AUDIOSTREAM_USAGE_MOVIE;
1910     OH_AudioStreamBuilder_SetRendererInfo(builder2, usage);
1911     OH_AudioStreamBuilder_SetRendererCallback(builder2, callbacks, nullptr);
1912     OH_AudioStreamBuilder_SetFrameSizeInCallback(builder2, g_frameSize);
1913 
1914     OH_AudioInterrupt_Mode mode = AUDIOSTREAM_INTERRUPT_MODE_SHARE;
1915     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder1, mode);
1916     LOG("OH_AudioStreamBuilder_SetRendererInterruptMode builder1 result is %{public}d", result);
1917     if (result != AUDIOSTREAM_SUCCESS) {
1918         napi_create_int32(env, TEST_FAIL, &res);
1919         return res;
1920     }
1921     result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder2, mode);
1922     LOG("OH_AudioStreamBuilder_SetRendererInterruptMode builder2 result is %{public}d", result);
1923     if (result != AUDIOSTREAM_SUCCESS) {
1924         napi_create_int32(env, TEST_FAIL, &res);
1925         return res;
1926     }
1927 
1928     // 3. create audioRenderer1 audioRenderer2
1929     OH_AudioRenderer* audioRenderer1;
1930     result = OH_AudioStreamBuilder_GenerateRenderer(builder1, &audioRenderer1);
1931     if (result != AUDIOSTREAM_SUCCESS) {
1932         napi_create_int32(env, TEST_FAIL, &res);
1933         return res;
1934     }
1935 
1936     OH_AudioRenderer* audioRenderer2;
1937     result = OH_AudioStreamBuilder_GenerateRenderer(builder2, &audioRenderer2);
1938     if (result != AUDIOSTREAM_SUCCESS) {
1939         napi_create_int32(env, TEST_FAIL, &res);
1940         return res;
1941     }
1942 
1943     // 4. start
1944     result = OH_AudioRenderer_Start(audioRenderer1);
1945     if (result != AUDIOSTREAM_SUCCESS) {
1946         napi_create_int32(env, TEST_FAIL, &res);
1947         return res;
1948     }
1949     const int waitTime = 1;
1950     Delay(waitTime);
1951     result = OH_AudioRenderer_Start(audioRenderer2);
1952     if (result != AUDIOSTREAM_SUCCESS) {
1953         napi_create_int32(env, TEST_FAIL, &res);
1954     } else {
1955         napi_create_int32(env, TEST_PASS, &res);
1956     }
1957 
1958     // 5. stop and release client
1959     OH_AudioRenderer_Stop(audioRenderer2);
1960     OH_AudioRenderer_Release(audioRenderer2);
1961     OH_AudioRenderer_Stop(audioRenderer1);
1962     OH_AudioRenderer_Release(audioRenderer1);
1963     OH_AudioStreamBuilder_Destroy(builder2);
1964     OH_AudioStreamBuilder_Destroy(builder1);
1965     return res;
1966 }
1967 
AudioRendererSetInterruptMode_02(napi_env env,napi_callback_info info)1968 static napi_value AudioRendererSetInterruptMode_02(napi_env env, napi_callback_info info)
1969 {
1970     g_mark = false;
1971     napi_value res;
1972     // 1. create builder
1973     OH_AudioStreamBuilder* builder;
1974     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
1975     OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_MUSIC;
1976     OH_AudioStreamBuilder_Create(&builder, type);
1977 
1978     OH_AudioStreamBuilder* builder2;
1979     OH_AudioStreamBuilder_Create(&builder2, type);
1980 
1981     // 2. set builder params
1982     OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
1983     OH_AudioRenderer_Callbacks callbacks;
1984     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
1985     callbacks.OH_AudioRenderer_OnInterruptEvent = AudioRendererInterruptEvent;
1986     OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr);
1987     OH_AudioStreamBuilder_SetFrameSizeInCallback(builder, g_frameSize);
1988 
1989     usage = AUDIOSTREAM_USAGE_VOICE_MESSAGE;
1990     OH_AudioStreamBuilder_SetRendererInfo(builder2, usage);
1991     OH_AudioStreamBuilder_SetRendererCallback(builder2, callbacks, nullptr);
1992     OH_AudioStreamBuilder_SetFrameSizeInCallback(builder2, g_frameSize);
1993 
1994     OH_AudioInterrupt_Mode mode = AUDIOSTREAM_INTERRUPT_MODE_INDEPENDENT;
1995     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder, mode);
1996     LOG("OH_AudioStreamBuilder_SetRendererInterruptMode builder1 result is %{public}d", result);
1997     if (result != AUDIOSTREAM_SUCCESS) {
1998         napi_create_int32(env, TEST_FAIL, &res);
1999         return res;
2000     }
2001     result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder2, mode);
2002     LOG("OH_AudioStreamBuilder_SetRendererInterruptMode builder2 result is %{public}d", result);
2003     if (result != AUDIOSTREAM_SUCCESS) {
2004         napi_create_int32(env, TEST_FAIL, &res);
2005         return res;
2006     }
2007     LOG("AudioRendererSetInterruptMode_02 result == AUDIOSTREAM_SUCCESS");
2008     // 3. create audioRenderer1 audioRenderer2
2009     OH_AudioRenderer* audioRenderer1;
2010     result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer1);
2011     if (result != AUDIOSTREAM_SUCCESS) {
2012         napi_create_int32(env, TEST_FAIL, &res);
2013         return res;
2014     }
2015     LOG("AudioRendererSetInterruptMode_02 after audioRenderer1 OH_AudioStreamBuilder_GenerateRenderer");
2016     OH_AudioRenderer* audioRenderer2;
2017     result = OH_AudioStreamBuilder_GenerateRenderer(builder2, &audioRenderer2);
2018     if (result != AUDIOSTREAM_SUCCESS) {
2019         napi_create_int32(env, TEST_FAIL, &res);
2020         return res;
2021     }
2022     LOG("AudioRendererSetInterruptMode_02 after audioRenderer2 OH_AudioStreamBuilder_GenerateRenderer");
2023     // 4. start
2024     result = OH_AudioRenderer_Start(audioRenderer1);
2025     if (result != AUDIOSTREAM_SUCCESS) {
2026         napi_create_int32(env, TEST_FAIL, &res);
2027         return res;
2028     }
2029     LOG("AudioRendererSetInterruptMode_02 after audioRenderer1 OH_AudioRenderer_Start");
2030     const int waitTime = 1;
2031     sleep(waitTime);
2032     result = OH_AudioRenderer_Start(audioRenderer2);
2033     if (result != AUDIOSTREAM_SUCCESS) {
2034         napi_create_int32(env, TEST_FAIL, &res);
2035         return res;
2036     }
2037     LOG("AudioRendererSetInterruptMode_02 after audioRenderer2 OH_AudioRenderer_Start");
2038     sleep(waitTime); // 2:sleep 2 seconds
2039 
2040     if (!g_mark) {
2041         napi_create_int32(env, TEST_FAIL, &res);
2042     } else {
2043         napi_create_int32(env, TEST_PASS, &res);
2044     }
2045     if (g_mark) {
2046         LOG("AudioRendererSetInterruptMode_02 g_mark is : %{public}d", 1);
2047     } else {
2048         LOG("AudioRendererSetInterruptMode_02 g_mark is : %{public}d", 0);
2049     }
2050     // 5. stop and release client
2051     OH_AudioRenderer_Stop(audioRenderer2);
2052     OH_AudioRenderer_Release(audioRenderer2);
2053     OH_AudioRenderer_Stop(audioRenderer1);
2054     OH_AudioRenderer_Release(audioRenderer1);
2055     OH_AudioStreamBuilder_Destroy(builder);
2056     OH_AudioStreamBuilder_Destroy(builder2);
2057     LOG("AudioRendererSetInterruptMode_02 res is:  %{public}d", res);
2058     return res;
2059 }
2060 
AudioRendererSetInterruptMode_03(napi_env env,napi_callback_info info)2061 static napi_value AudioRendererSetInterruptMode_03(napi_env env, napi_callback_info info)
2062 {
2063     napi_value res;
2064     OH_AudioStreamBuilder* builder = nullptr;
2065     OH_AudioInterrupt_Mode mode = AUDIOSTREAM_INTERRUPT_MODE_SHARE;
2066     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder, mode);
2067     LOG("OH_AudioRenderer_SetInterruptMode_03, result is: %{public}d", result);
2068     OH_AudioStreamBuilder_Destroy(builder);
2069     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
2070         napi_create_int32(env, TEST_FAIL, &res);
2071     } else {
2072         napi_create_int32(env, TEST_PASS, &res);
2073     }
2074     return res;
2075 }
2076 
AudioRendererSetInterruptMode_04(napi_env env,napi_callback_info info)2077 static napi_value AudioRendererSetInterruptMode_04(napi_env env, napi_callback_info info)
2078 {
2079     napi_value res;
2080     OH_AudioStreamBuilder* builder = nullptr;
2081     OH_AudioInterrupt_Mode mode = static_cast<OH_AudioInterrupt_Mode>(-2);
2082     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder, mode);
2083     LOG("OH_AudioRenderer_SetInterruptMode_04, result is: %{public}d", result);
2084     OH_AudioStreamBuilder_Destroy(builder);
2085     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
2086         napi_create_int32(env, TEST_FAIL, &res);
2087     } else {
2088         napi_create_int32(env, TEST_PASS, &res);
2089     }
2090     return res;
2091 }
2092 
DeviceChangeCallback(OH_AudioDevice_ChangeType type,OH_AudioDeviceDescriptorArray * audioDeviceDescriptorArray)2093 static int32_t DeviceChangeCallback(OH_AudioDevice_ChangeType type,
2094     OH_AudioDeviceDescriptorArray *audioDeviceDescriptorArray)
2095 {
2096     LOG("DeviceChangeCallback triggrred, ChangeType: %{public}d\n", type);
2097     if (type == AUDIO_DEVICE_CHANGE_TYPE_CONNECT) {
2098         int size = audioDeviceDescriptorArray->size;
2099         for (int index = 0; index < size; index++) {
2100             OH_AudioDeviceDescriptor *audioDeviceDescriptor = audioDeviceDescriptorArray->descriptors[index];
2101             if (audioDeviceDescriptor) {
2102                 OH_AudioDevice_Role deviceRole = AUDIO_DEVICE_ROLE_OUTPUT;
2103                 OH_AudioDeviceDescriptor_GetDeviceRole(audioDeviceDescriptor, &deviceRole);
2104                 OH_AudioDevice_Type deviceType = AUDIO_DEVICE_TYPE_INVALID;
2105                 OH_AudioDeviceDescriptor_GetDeviceType(audioDeviceDescriptor, &deviceType);
2106                 LOG("Receive new device: DeviceRole: %{public}d, DeviceType: %{public}d\n", deviceRole, deviceType);
2107             }
2108         }
2109     }
2110     return 0;
2111 }
2112 
AudioManagerGetAudioRoutingManager_01(napi_env env,napi_callback_info info)2113 static napi_value AudioManagerGetAudioRoutingManager_01(napi_env env, napi_callback_info info)
2114 {
2115     napi_value res;
2116     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2117     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2118     LOG("AudioManagerGetAudioRoutingManager_01, result is: %{public}d", result);
2119     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2120         napi_create_int32(env, TEST_FAIL, &res);
2121     } else {
2122         napi_create_int32(env, TEST_PASS, &res);
2123     }
2124     return res;
2125 }
2126 
AudioRoutingManagerGetDevices_01(napi_env env,napi_callback_info info)2127 static napi_value AudioRoutingManagerGetDevices_01(napi_env env, napi_callback_info info)
2128 {
2129     napi_value res;
2130     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2131     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2132     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2133         napi_create_int32(env, TEST_FAIL, &res);
2134         return res;
2135     }
2136     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_NONE;
2137     OH_AudioDeviceDescriptorArray *array = nullptr;
2138     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2139     LOG("AudioRoutingManagerGetDevices_01, result is: %{public}d", result);
2140     if (result != AUDIOCOMMON_RESULT_ERROR_NO_MEMORY || array != nullptr) {
2141         napi_create_int32(env, TEST_FAIL, &res);
2142     } else {
2143         napi_create_int32(env, TEST_PASS, &res);
2144     }
2145     return res;
2146 }
2147 
AudioRoutingManagerGetDevices_02(napi_env env,napi_callback_info info)2148 static napi_value AudioRoutingManagerGetDevices_02(napi_env env, napi_callback_info info)
2149 {
2150     napi_value res;
2151     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2152     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2153     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2154         napi_create_int32(env, TEST_FAIL, &res);
2155         return res;
2156     }
2157     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
2158     OH_AudioDeviceDescriptorArray *array = nullptr;
2159     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2160     LOG("AudioRoutingManagerGetDevices_02, result is: %{public}d", result);
2161     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
2162         napi_create_int32(env, TEST_FAIL, &res);
2163     } else {
2164         napi_create_int32(env, TEST_PASS, &res);
2165     }
2166     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
2167     return res;
2168 }
2169 
AudioRoutingManagerGetDevices_03(napi_env env,napi_callback_info info)2170 static napi_value AudioRoutingManagerGetDevices_03(napi_env env, napi_callback_info info)
2171 {
2172     napi_value res;
2173     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2174     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2175     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2176         napi_create_int32(env, TEST_FAIL, &res);
2177         return res;
2178     }
2179     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_INPUT;
2180     OH_AudioDeviceDescriptorArray *array = nullptr;
2181     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2182     LOG("AudioRoutingManagerGetDevices_03, result is: %{public}d", result);
2183     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
2184         napi_create_int32(env, TEST_FAIL, &res);
2185     } else {
2186         napi_create_int32(env, TEST_PASS, &res);
2187     }
2188     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
2189     return res;
2190 }
2191 
AudioRoutingManagerGetDevices_04(napi_env env,napi_callback_info info)2192 static napi_value AudioRoutingManagerGetDevices_04(napi_env env, napi_callback_info info)
2193 {
2194     napi_value res;
2195     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2196     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2197     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2198         napi_create_int32(env, TEST_FAIL, &res);
2199         return res;
2200     }
2201     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
2202     OH_AudioDeviceDescriptorArray *array = nullptr;
2203     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2204     LOG("AudioRoutingManagerGetDevices_04, result is: %{public}d", result);
2205     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
2206         napi_create_int32(env, TEST_FAIL, &res);
2207     } else {
2208         napi_create_int32(env, TEST_PASS, &res);
2209     }
2210     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
2211     return res;
2212 }
2213 
AudioRoutingManagerGetDevices_05(napi_env env,napi_callback_info info)2214 static napi_value AudioRoutingManagerGetDevices_05(napi_env env, napi_callback_info info)
2215 {
2216     napi_value res;
2217     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2218     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2219     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2220         napi_create_int32(env, TEST_FAIL, &res);
2221         return res;
2222     }
2223     int32_t flag = -1;
2224     OH_AudioDevice_Flag deviceFlag = (OH_AudioDevice_Flag)flag;
2225     OH_AudioDeviceDescriptorArray *array = nullptr;
2226     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2227     LOG("AudioRoutingManagerGetDevices_05, result is: %{public}d", result);
2228     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM || array != nullptr) {
2229         napi_create_int32(env, TEST_FAIL, &res);
2230     } else {
2231         napi_create_int32(env, TEST_PASS, &res);
2232     }
2233     return res;
2234 }
2235 
AudioRoutingManagerGetDevices_06(napi_env env,napi_callback_info info)2236 static napi_value AudioRoutingManagerGetDevices_06(napi_env env, napi_callback_info info)
2237 {
2238     napi_value res;
2239     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2240     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
2241     OH_AudioDeviceDescriptorArray *array = nullptr;
2242     OH_AudioCommon_Result result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2243     LOG("AudioRoutingManagerGetDevices_06, result is: %{public}d", result);
2244     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM || array != nullptr) {
2245         napi_create_int32(env, TEST_FAIL, &res);
2246     } else {
2247         napi_create_int32(env, TEST_PASS, &res);
2248     }
2249     return res;
2250 }
2251 
AudioRoutingManagerGetDevices_07(napi_env env,napi_callback_info info)2252 static napi_value AudioRoutingManagerGetDevices_07(napi_env env, napi_callback_info info)
2253 {
2254     napi_value res;
2255     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2256     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2257     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2258         napi_create_int32(env, TEST_FAIL, &res);
2259         return res;
2260     }
2261     int32_t flag = 4;
2262     OH_AudioDevice_Flag deviceFlag = (OH_AudioDevice_Flag)flag;
2263     OH_AudioDeviceDescriptorArray *array = nullptr;
2264     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2265     LOG("AudioRoutingManagerGetDevices_07, result is: %{public}d", result);
2266     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM || array != nullptr) {
2267         napi_create_int32(env, TEST_FAIL, &res);
2268     } else {
2269         napi_create_int32(env, TEST_PASS, &res);
2270     }
2271     return res;
2272 }
2273 
AudioManagerGetManager_01(napi_env env,napi_callback_info info)2274 static napi_value AudioManagerGetManager_01(napi_env env, napi_callback_info info)
2275 {
2276     napi_value res;
2277     OH_AudioManager **audioManager = nullptr;
2278     OH_AudioCommon_Result result = OH_GetAudioManager(audioManager);
2279     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2280         napi_create_int32(env, TEST_FAIL, &res);
2281         return res;
2282     }
2283     napi_create_int32(env, TEST_PASS, &res);
2284     return res;
2285 }
2286 
AudioManagerGetManager_02(napi_env env,napi_callback_info info)2287 static napi_value AudioManagerGetManager_02(napi_env env, napi_callback_info info)
2288 {
2289     napi_value res;
2290     OH_AudioManager *audioManager = nullptr;
2291     OH_AudioCommon_Result result = OH_GetAudioManager(&audioManager);
2292     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioManager == nullptr) {
2293         napi_create_int32(env, TEST_FAIL, &res);
2294         return res;
2295     }
2296     napi_create_int32(env, TEST_PASS, &res);
2297     return res;
2298 }
2299 
AudioManagerGetAudioScene_01(napi_env env,napi_callback_info info)2300 static napi_value AudioManagerGetAudioScene_01(napi_env env, napi_callback_info info)
2301 {
2302     napi_value res;
2303     OH_AudioManager *audioManager = nullptr;
2304     OH_AudioCommon_Result result = OH_GetAudioManager(&audioManager);
2305     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioManager == nullptr) {
2306         napi_create_int32(env, TEST_FAIL, &res);
2307         return res;
2308     }
2309     OH_AudioScene scene = AUDIO_SCENE_DEFAULT;
2310     result = OH_GetAudioScene(audioManager, &scene);
2311     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2312         napi_create_int32(env, TEST_FAIL, &res);
2313         return res;
2314     }
2315     napi_create_int32(env, TEST_PASS, &res);
2316     return res;
2317 }
2318 
AudioManagerGetAudioScene_02(napi_env env,napi_callback_info info)2319 static napi_value AudioManagerGetAudioScene_02(napi_env env, napi_callback_info info)
2320 {
2321     napi_value res;
2322 
2323     OH_AudioScene scene = AUDIO_SCENE_DEFAULT;
2324     OH_AudioCommon_Result result = OH_GetAudioScene(nullptr, &scene);
2325     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2326         napi_create_int32(env, TEST_FAIL, &res);
2327         return res;
2328     }
2329 
2330     result = OH_GetAudioScene(nullptr, nullptr);
2331     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2332         napi_create_int32(env, TEST_FAIL, &res);
2333         return res;
2334     }
2335 
2336     OH_AudioManager *audioManager = nullptr;
2337     result = OH_GetAudioManager(&audioManager);
2338     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioManager == nullptr) {
2339         napi_create_int32(env, TEST_FAIL, &res);
2340         return res;
2341     }
2342 
2343     result = OH_GetAudioScene(audioManager, nullptr);
2344     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2345         napi_create_int32(env, TEST_FAIL, &res);
2346         return res;
2347     }
2348 
2349     napi_create_int32(env, TEST_PASS, &res);
2350     return res;
2351 }
2352 
AudioRoutingManagerGetAvailableDevices001(napi_env env,napi_callback_info info)2353 static napi_value AudioRoutingManagerGetAvailableDevices001(napi_env env, napi_callback_info info)
2354 {
2355     napi_value res;
2356     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2357     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2358     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2359         napi_create_int32(env, TEST_FAIL, &res);
2360         return res;
2361     }
2362     OH_AudioDevice_Usage deviceUsage = AUDIO_DEVICE_USAGE_MEDIA_OUTPUT;
2363     OH_AudioDeviceDescriptorArray *array;
2364     result = OH_AudioRoutingManager_GetAvailableDevices(audioRoutingManager, deviceUsage, &array);
2365     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2366         napi_create_int32(env, TEST_FAIL, &res);
2367         return res;
2368     }
2369 
2370     result = OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
2371     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2372         napi_create_int32(env, TEST_FAIL, &res);
2373         return res;
2374     }
2375     napi_create_int32(env, TEST_PASS, &res);
2376     return res;
2377 }
2378 
AudioRoutingManagerGetPreferredOutputDevice001(napi_env env,napi_callback_info info)2379 static napi_value AudioRoutingManagerGetPreferredOutputDevice001(napi_env env, napi_callback_info info)
2380 {
2381     napi_value res;
2382     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2383     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2384     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2385         napi_create_int32(env, TEST_FAIL, &res);
2386         return res;
2387     }
2388     OH_AudioStream_Usage streamUsage = AUDIOSTREAM_USAGE_MUSIC;
2389     OH_AudioDeviceDescriptorArray *array;
2390     result = OH_AudioRoutingManager_GetPreferredOutputDevice(audioRoutingManager, streamUsage, &array);
2391     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2392         napi_create_int32(env, TEST_FAIL, &res);
2393         return res;
2394     }
2395 
2396     result = OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
2397     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2398         napi_create_int32(env, TEST_FAIL, &res);
2399         return res;
2400     }
2401     napi_create_int32(env, TEST_PASS, &res);
2402     return res;
2403 }
2404 
AudioRoutingManagerGetPreferredInputDevice001(napi_env env,napi_callback_info info)2405 static napi_value AudioRoutingManagerGetPreferredInputDevice001(napi_env env, napi_callback_info info)
2406 {
2407     napi_value res;
2408     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2409     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2410     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2411         napi_create_int32(env, TEST_FAIL, &res);
2412         return res;
2413     }
2414     OH_AudioStream_SourceType sourceType = AUDIOSTREAM_SOURCE_TYPE_MIC;
2415     OH_AudioDeviceDescriptorArray *array;
2416     result = OH_AudioRoutingManager_GetPreferredInputDevice(audioRoutingManager, sourceType, &array);
2417     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2418         napi_create_int32(env, TEST_FAIL, &res);
2419         return res;
2420     }
2421 
2422     result = OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
2423     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2424         napi_create_int32(env, TEST_FAIL, &res);
2425         return res;
2426     }
2427     napi_create_int32(env, TEST_PASS, &res);
2428     return res;
2429 }
2430 
AudioRoutingManagerSetMicBlockStatusCallback_001(napi_env env,napi_callback_info info)2431 static napi_value AudioRoutingManagerSetMicBlockStatusCallback_001(napi_env env, napi_callback_info info)
2432 {
2433     napi_value res;
2434     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2435     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2436     LOG("AudioRoutingManagerSetMicBlockStatusCallback_Test, result1 is: %{public}d", result);
2437     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2438         napi_create_int32(env, TEST_FAIL, &res);
2439         return res;
2440     }
2441     bool supported = false;
2442     void *userData = nullptr;
2443     result = OH_AudioRoutingManager_IsMicBlockDetectionSupported(audioRoutingManager, &supported);
2444     LOG("AudioRoutingManagerSetMicBlockStatusCallback_Test, result2 is: %{public}d", result);
2445     if (result == AUDIOCOMMON_RESULT_SUCCESS) {
2446         if (supported == true) {
2447             OH_AudioRoutingManager_OnDeviceBlockStatusCallback micBlockedCallback = MicBlockedCallback;
2448             result = OH_AudioRoutingManager_SetMicBlockStatusCallback(audioRoutingManager, micBlockedCallback, userData);
2449             LOG("AudioRoutingManagerSetMicBlockStatusCallback_Test, result3 is: %{public}d", result);
2450             if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2451                 napi_create_int32(env, TEST_FAIL, &res);
2452                 return res;
2453             }
2454         } else {
2455             LOG("AudioRoutingManagerSetMicBlockStatusCallback_Test, result3 is: false");
2456         }
2457     } else {
2458         napi_create_int32(env, TEST_FAIL, &res);
2459         return res;
2460     }
2461     napi_create_int32(env, TEST_PASS, &res);
2462     return res;
2463 }
2464 
AudioRoutingManagerSetMicBlockStatusCallback_002(napi_env env,napi_callback_info info)2465 static napi_value AudioRoutingManagerSetMicBlockStatusCallback_002(napi_env env, napi_callback_info info)
2466 {
2467     napi_value res;
2468     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2469     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2470     LOG("AudioRoutingManagerSetMicBlockStatusCallback_Test, result1 is: %{public}d", result);
2471     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2472         napi_create_int32(env, TEST_FAIL, &res);
2473         return res;
2474     }
2475     bool supported = false;
2476     void *userData = nullptr;
2477     result = OH_AudioRoutingManager_IsMicBlockDetectionSupported(audioRoutingManager, &supported);
2478     LOG("AudioRoutingManagerSetMicBlockStatusCallback_Test, result2 is: %{public}d", result);
2479     if (result == AUDIOCOMMON_RESULT_SUCCESS) {
2480         if (supported == true) {
2481             OH_AudioRoutingManager_OnDeviceBlockStatusCallback micBlockedCallback = MicBlockedCallback;
2482             result = OH_AudioRoutingManager_SetMicBlockStatusCallback(nullptr, micBlockedCallback, userData);
2483             LOG("AudioRoutingManagerSetMicBlockStatusCallback_Test, result3 is: %{public}d", result);
2484             if (result == AUDIOCOMMON_RESULT_SUCCESS) {
2485                 napi_create_int32(env, TEST_FAIL, &res);
2486                 return res;
2487             }
2488         } else {
2489             LOG("OH_AudioRoutingManager_IsMicBlockDetectionSupported_Test, supported is: false");
2490         }
2491     } else {
2492         napi_create_int32(env, TEST_FAIL, &res);
2493         return res;
2494     }
2495     napi_create_int32(env, TEST_PASS, &res);
2496     return res;
2497 }
2498 
AudioRoutingManagerRegisterDeviceChangeCallback_001(napi_env env,napi_callback_info info)2499 static napi_value AudioRoutingManagerRegisterDeviceChangeCallback_001(napi_env env, napi_callback_info info)
2500 {
2501     napi_value res;
2502     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2503     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2504     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2505         napi_create_int32(env, TEST_FAIL, &res);
2506         return res;
2507     }
2508     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_NONE;
2509     OH_AudioRoutingManager_OnDeviceChangedCallback callback = DeviceChangeCallback;
2510     result = OH_AudioRoutingManager_RegisterDeviceChangeCallback(audioRoutingManager, deviceFlag, callback);
2511     LOG("AudioRoutingManagerRegisterDeviceChangeCallback_001, result is: %{public}d", result);
2512     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2513         napi_create_int32(env, TEST_FAIL, &res);
2514     } else {
2515         napi_create_int32(env, TEST_PASS, &res);
2516     }
2517     return res;
2518 }
2519 
AudioRoutingManagerRegisterDeviceChangeCallback_002(napi_env env,napi_callback_info info)2520 static napi_value AudioRoutingManagerRegisterDeviceChangeCallback_002(napi_env env, napi_callback_info info)
2521 {
2522     napi_value res;
2523     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2524     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2525     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2526         napi_create_int32(env, TEST_FAIL, &res);
2527         return res;
2528     }
2529     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
2530     OH_AudioRoutingManager_OnDeviceChangedCallback callback = DeviceChangeCallback;
2531     result = OH_AudioRoutingManager_RegisterDeviceChangeCallback(audioRoutingManager, deviceFlag, callback);
2532     LOG("AudioRoutingManagerRegisterDeviceChangeCallback_002, result is: %{public}d", result);
2533     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2534         napi_create_int32(env, TEST_FAIL, &res);
2535     } else {
2536         napi_create_int32(env, TEST_PASS, &res);
2537     }
2538     return res;
2539 }
2540 
AudioRoutingManagerRegisterDeviceChangeCallback_003(napi_env env,napi_callback_info info)2541 static napi_value AudioRoutingManagerRegisterDeviceChangeCallback_003(napi_env env, napi_callback_info info)
2542 {
2543     napi_value res;
2544     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2545     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2546     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2547         napi_create_int32(env, TEST_FAIL, &res);
2548         return res;
2549     }
2550     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_INPUT;
2551     OH_AudioRoutingManager_OnDeviceChangedCallback callback = DeviceChangeCallback;
2552     result = OH_AudioRoutingManager_RegisterDeviceChangeCallback(audioRoutingManager, deviceFlag, callback);
2553     LOG("AudioRoutingManagerRegisterDeviceChangeCallback_003, result is: %{public}d", result);
2554     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2555         napi_create_int32(env, TEST_FAIL, &res);
2556     } else {
2557         napi_create_int32(env, TEST_PASS, &res);
2558     }
2559     return res;
2560 }
2561 
AudioRoutingManagerRegisterDeviceChangeCallback_004(napi_env env,napi_callback_info info)2562 static napi_value AudioRoutingManagerRegisterDeviceChangeCallback_004(napi_env env, napi_callback_info info)
2563 {
2564     napi_value res;
2565     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2566     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2567     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2568         napi_create_int32(env, TEST_FAIL, &res);
2569         return res;
2570     }
2571     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
2572     OH_AudioRoutingManager_OnDeviceChangedCallback callback = DeviceChangeCallback;
2573     result = OH_AudioRoutingManager_RegisterDeviceChangeCallback(audioRoutingManager, deviceFlag, callback);
2574     LOG("AudioRoutingManagerRegisterDeviceChangeCallback_004, result is: %{public}d", result);
2575     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2576         napi_create_int32(env, TEST_FAIL, &res);
2577     } else {
2578         napi_create_int32(env, TEST_PASS, &res);
2579     }
2580     return res;
2581 }
2582 
AudioRoutingManagerRegisterDeviceChangeCallback_005(napi_env env,napi_callback_info info)2583 static napi_value AudioRoutingManagerRegisterDeviceChangeCallback_005(napi_env env, napi_callback_info info)
2584 {
2585     napi_value res;
2586     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2587     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
2588     OH_AudioRoutingManager_OnDeviceChangedCallback callback = DeviceChangeCallback;
2589     OH_AudioCommon_Result result =
2590         OH_AudioRoutingManager_RegisterDeviceChangeCallback(audioRoutingManager, deviceFlag, callback);
2591     LOG("AudioRoutingManagerRegisterDeviceChangeCallback_005, result is: %{public}d", result);
2592     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2593         napi_create_int32(env, TEST_FAIL, &res);
2594     } else {
2595         napi_create_int32(env, TEST_PASS, &res);
2596     }
2597     return res;
2598 }
2599 
AudioRoutingManagerRegisterDeviceChangeCallback_006(napi_env env,napi_callback_info info)2600 static napi_value AudioRoutingManagerRegisterDeviceChangeCallback_006(napi_env env, napi_callback_info info)
2601 {
2602     napi_value res;
2603     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2604     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2605     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2606         napi_create_int32(env, TEST_FAIL, &res);
2607         return res;
2608     }
2609     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
2610     OH_AudioRoutingManager_OnDeviceChangedCallback callback = nullptr;
2611     result = OH_AudioRoutingManager_RegisterDeviceChangeCallback(audioRoutingManager, deviceFlag, callback);
2612     LOG("AudioRoutingManagerRegisterDeviceChangeCallback_006, result is: %{public}d", result);
2613     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2614         napi_create_int32(env, TEST_FAIL, &res);
2615     } else {
2616         napi_create_int32(env, TEST_PASS, &res);
2617     }
2618     return res;
2619 }
2620 
AudioRoutingManagerRegisterDeviceChangeCallback_007(napi_env env,napi_callback_info info)2621 static napi_value AudioRoutingManagerRegisterDeviceChangeCallback_007(napi_env env, napi_callback_info info)
2622 {
2623     napi_value res;
2624     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2625     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2626     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2627         napi_create_int32(env, TEST_FAIL, &res);
2628         return res;
2629     }
2630     int32_t flag = -1;
2631     OH_AudioDevice_Flag deviceFlag = (OH_AudioDevice_Flag)flag;
2632     OH_AudioRoutingManager_OnDeviceChangedCallback callback = DeviceChangeCallback;
2633     result = OH_AudioRoutingManager_RegisterDeviceChangeCallback(audioRoutingManager, deviceFlag, callback);
2634     LOG("AudioRoutingManagerRegisterDeviceChangeCallback_007, result is: %{public}d", result);
2635     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2636         napi_create_int32(env, TEST_FAIL, &res);
2637     } else {
2638         napi_create_int32(env, TEST_PASS, &res);
2639     }
2640     return res;
2641 }
2642 
AudioRoutingManagerRegisterDeviceChangeCallback_008(napi_env env,napi_callback_info info)2643 static napi_value AudioRoutingManagerRegisterDeviceChangeCallback_008(napi_env env, napi_callback_info info)
2644 {
2645     napi_value res;
2646     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2647     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2648     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2649         napi_create_int32(env, TEST_FAIL, &res);
2650         return res;
2651     }
2652     int32_t flag = 4;
2653     OH_AudioDevice_Flag deviceFlag = (OH_AudioDevice_Flag)flag;
2654     OH_AudioRoutingManager_OnDeviceChangedCallback callback = DeviceChangeCallback;
2655     result = OH_AudioRoutingManager_RegisterDeviceChangeCallback(audioRoutingManager, deviceFlag, callback);
2656     LOG("AudioRoutingManagerRegisterDeviceChangeCallback_008, result is: %{public}d", result);
2657     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2658         napi_create_int32(env, TEST_FAIL, &res);
2659     } else {
2660         napi_create_int32(env, TEST_PASS, &res);
2661     }
2662     return res;
2663 }
2664 
AudioRoutingManagerUnregisterDeviceChangeCallback_001(napi_env env,napi_callback_info info)2665 static napi_value AudioRoutingManagerUnregisterDeviceChangeCallback_001(napi_env env, napi_callback_info info)
2666 {
2667     napi_value res;
2668     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2669     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2670     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2671         napi_create_int32(env, TEST_FAIL, &res);
2672         return res;
2673     }
2674     OH_AudioRoutingManager_OnDeviceChangedCallback callback = DeviceChangeCallback;
2675     result = OH_AudioRoutingManager_UnregisterDeviceChangeCallback(audioRoutingManager, callback);
2676     LOG("AudioRoutingManagerUnregisterDeviceChangeCallback_001, result is: %{public}d", result);
2677     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2678         napi_create_int32(env, TEST_FAIL, &res);
2679     } else {
2680         napi_create_int32(env, TEST_PASS, &res);
2681     }
2682     return res;
2683 }
2684 
AudioRoutingManagerUnregisterDeviceChangeCallback_002(napi_env env,napi_callback_info info)2685 static napi_value AudioRoutingManagerUnregisterDeviceChangeCallback_002(napi_env env, napi_callback_info info)
2686 {
2687     napi_value res;
2688     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2689     OH_AudioRoutingManager_OnDeviceChangedCallback callback = DeviceChangeCallback;
2690     OH_AudioCommon_Result result = OH_AudioRoutingManager_UnregisterDeviceChangeCallback(
2691         audioRoutingManager, callback);
2692     LOG("AudioRoutingManagerUnregisterDeviceChangeCallback_002, result is: %{public}d", result);
2693     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2694         napi_create_int32(env, TEST_FAIL, &res);
2695     } else {
2696         napi_create_int32(env, TEST_PASS, &res);
2697     }
2698     return res;
2699 }
2700 
AudioRoutingManagerUnregisterDeviceChangeCallback_003(napi_env env,napi_callback_info info)2701 static napi_value AudioRoutingManagerUnregisterDeviceChangeCallback_003(napi_env env, napi_callback_info info)
2702 {
2703     napi_value res;
2704     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2705     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2706     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2707         napi_create_int32(env, TEST_FAIL, &res);
2708         return res;
2709     }
2710     OH_AudioRoutingManager_OnDeviceChangedCallback callback = nullptr;
2711     result = OH_AudioRoutingManager_UnregisterDeviceChangeCallback(audioRoutingManager, callback);
2712     LOG("AudioRoutingManagerUnregisterDeviceChangeCallback_003, result is: %{public}d", result);
2713     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2714         napi_create_int32(env, TEST_FAIL, &res);
2715     } else {
2716         napi_create_int32(env, TEST_PASS, &res);
2717     }
2718     return res;
2719 }
2720 
AudioRoutingManagerReleaseDevices_001(napi_env env,napi_callback_info info)2721 static napi_value AudioRoutingManagerReleaseDevices_001(napi_env env, napi_callback_info info)
2722 {
2723     napi_value res;
2724     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2725     OH_AudioDeviceDescriptorArray *audioDeviceDescriptorArray = nullptr;
2726     OH_AudioCommon_Result result =
2727         OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, audioDeviceDescriptorArray);
2728     LOG("AudioRoutingManagerReleaseDevices_001, result is: %{public}d", result);
2729     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2730         napi_create_int32(env, TEST_FAIL, &res);
2731     } else {
2732         napi_create_int32(env, TEST_PASS, &res);
2733     }
2734     return res;
2735 }
2736 
AudioRoutingManagerReleaseDevices_002(napi_env env,napi_callback_info info)2737 static napi_value AudioRoutingManagerReleaseDevices_002(napi_env env, napi_callback_info info)
2738 {
2739     napi_value res;
2740     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2741     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2742     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2743         napi_create_int32(env, TEST_FAIL, &res);
2744         return res;
2745     }
2746     OH_AudioDeviceDescriptorArray *audioDeviceDescriptorArray = nullptr;
2747     result = OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, audioDeviceDescriptorArray);
2748     LOG("AudioRoutingManagerReleaseDevices_002, result is: %{public}d", result);
2749     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2750         napi_create_int32(env, TEST_FAIL, &res);
2751     } else {
2752         napi_create_int32(env, TEST_PASS, &res);
2753     }
2754     return res;
2755 }
2756 
AudioAudioDeviceDescriptorGetDeviceType_001(napi_env env,napi_callback_info info)2757 static napi_value AudioAudioDeviceDescriptorGetDeviceType_001(napi_env env, napi_callback_info info)
2758 {
2759     napi_value res;
2760     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2761     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2762     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2763         napi_create_int32(env, TEST_FAIL, &res);
2764         return res;
2765     }
2766     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
2767     OH_AudioDeviceDescriptorArray *array = nullptr;
2768     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2769     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
2770         napi_create_int32(env, TEST_FAIL, &res);
2771         return res;
2772     }
2773     int size = array->size;
2774     for (int i = 0; i < size; i++) {
2775         OH_AudioDeviceDescriptor *descriptor = array->descriptors[i];
2776         if (descriptor == nullptr) {
2777             napi_create_int32(env, TEST_FAIL, &res);
2778             return res;
2779         }
2780         OH_AudioDevice_Type deviceType = AUDIO_DEVICE_TYPE_INVALID;
2781         result = OH_AudioDeviceDescriptor_GetDeviceType(descriptor, &deviceType);
2782         LOG("AudioAudioDeviceDescriptorGetDeviceType_001, result is: %{public}d", result);
2783         if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2784             napi_create_int32(env, TEST_FAIL, &res);
2785             break;
2786         } else {
2787             napi_create_int32(env, TEST_PASS, &res);
2788         }
2789     }
2790     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
2791     return res;
2792 }
2793 
AudioAudioDeviceDescriptorGetDeviceType_002(napi_env env,napi_callback_info info)2794 static napi_value AudioAudioDeviceDescriptorGetDeviceType_002(napi_env env, napi_callback_info info)
2795 {
2796     napi_value res;
2797     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2798     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2799     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2800         napi_create_int32(env, TEST_FAIL, &res);
2801         return res;
2802     }
2803     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
2804     OH_AudioDeviceDescriptorArray *array = nullptr;
2805     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2806     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
2807     if (result != AUDIOCOMMON_RESULT_SUCCESS || descriptor == nullptr || array == nullptr) {
2808         napi_create_int32(env, TEST_FAIL, &res);
2809         return res;
2810     }
2811 
2812     result = OH_AudioDeviceDescriptor_GetDeviceType(descriptor, nullptr);
2813     LOG("AudioAudioDeviceDescriptorGetDeviceType_002, result is: %{public}d", result);
2814     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2815         napi_create_int32(env, TEST_FAIL, &res);
2816     } else {
2817         napi_create_int32(env, TEST_PASS, &res);
2818     }
2819     return res;
2820 }
2821 
AudioAudioDeviceDescriptorGetDeviceType_003(napi_env env,napi_callback_info info)2822 static napi_value AudioAudioDeviceDescriptorGetDeviceType_003(napi_env env, napi_callback_info info)
2823 {
2824     OH_AudioDeviceDescriptor *descriptor = nullptr;
2825     OH_AudioDevice_Type deviceType = AUDIO_DEVICE_TYPE_INVALID;
2826     OH_AudioCommon_Result result = OH_AudioDeviceDescriptor_GetDeviceType(descriptor, &deviceType);
2827     LOG("AudioAudioDeviceDescriptorGetDeviceType_003, result is: %{public}d", result);
2828     napi_value res;
2829     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2830         napi_create_int32(env, TEST_FAIL, &res);
2831     } else {
2832         napi_create_int32(env, TEST_PASS, &res);
2833     }
2834     return res;
2835 }
2836 
AudioAudioDeviceDescriptorGetDeviceRole_001(napi_env env,napi_callback_info info)2837 static napi_value AudioAudioDeviceDescriptorGetDeviceRole_001(napi_env env, napi_callback_info info)
2838 {
2839     napi_value res;
2840     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2841     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2842     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2843         napi_create_int32(env, TEST_FAIL, &res);
2844         return res;
2845     }
2846     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
2847     OH_AudioDeviceDescriptorArray *array = nullptr;
2848     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2849     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
2850         napi_create_int32(env, TEST_FAIL, &res);
2851         return res;
2852     }
2853 
2854     int size = array->size;
2855     for (int i = 0; i < size; i++) {
2856         OH_AudioDeviceDescriptor *descriptor = array->descriptors[i];
2857         if (descriptor == nullptr) {
2858             napi_create_int32(env, TEST_FAIL, &res);
2859             return res;
2860         }
2861         OH_AudioDevice_Role deviceRole = AUDIO_DEVICE_ROLE_OUTPUT;
2862         result = OH_AudioDeviceDescriptor_GetDeviceRole(descriptor, &deviceRole);
2863         LOG("AudioAudioDeviceDescriptorGetDeviceRole_001, result is: %{public}d", result);
2864         if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2865             napi_create_int32(env, TEST_FAIL, &res);
2866             break;
2867         } else {
2868             napi_create_int32(env, TEST_PASS, &res);
2869         }
2870     }
2871     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
2872     return res;
2873 }
2874 
AudioAudioDeviceDescriptorGetDeviceRole_002(napi_env env,napi_callback_info info)2875 static napi_value AudioAudioDeviceDescriptorGetDeviceRole_002(napi_env env, napi_callback_info info)
2876 {
2877     napi_value res;
2878     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2879     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2880     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2881         napi_create_int32(env, TEST_FAIL, &res);
2882         return res;
2883     }
2884     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
2885     OH_AudioDeviceDescriptorArray *array = nullptr;
2886     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2887     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
2888     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
2889         napi_create_int32(env, TEST_FAIL, &res);
2890         return res;
2891     }
2892 
2893     result = OH_AudioDeviceDescriptor_GetDeviceRole(descriptor, nullptr);
2894     LOG("AudioAudioDeviceDescriptorGetDeviceRole_002, result is: %{public}d", result);
2895     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2896         napi_create_int32(env, TEST_FAIL, &res);
2897     } else {
2898         napi_create_int32(env, TEST_PASS, &res);
2899     }
2900     return res;
2901 }
2902 
AudioAudioDeviceDescriptorGetDeviceRole_003(napi_env env,napi_callback_info info)2903 static napi_value AudioAudioDeviceDescriptorGetDeviceRole_003(napi_env env, napi_callback_info info)
2904 {
2905     napi_value res;
2906     OH_AudioDeviceDescriptor *descriptor = nullptr;
2907     OH_AudioDevice_Role deviceRole = AUDIO_DEVICE_ROLE_OUTPUT;
2908     OH_AudioCommon_Result result = OH_AudioDeviceDescriptor_GetDeviceRole(descriptor, &deviceRole);
2909     LOG("AudioAudioDeviceDescriptorGetDeviceRole_003, result is: %{public}d", result);
2910     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2911         napi_create_int32(env, TEST_FAIL, &res);
2912     } else {
2913         napi_create_int32(env, TEST_PASS, &res);
2914     }
2915     return res;
2916 }
2917 
AudioAudioDeviceDescriptorGetDeviceId_001(napi_env env,napi_callback_info info)2918 static napi_value AudioAudioDeviceDescriptorGetDeviceId_001(napi_env env, napi_callback_info info)
2919 {
2920     napi_value res;
2921     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2922     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2923     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2924         napi_create_int32(env, TEST_FAIL, &res);
2925         return res;
2926     }
2927     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
2928     OH_AudioDeviceDescriptorArray *array = nullptr;
2929     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2930     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
2931         napi_create_int32(env, TEST_FAIL, &res);
2932         return res;
2933     }
2934 
2935     int size = array->size;
2936     for (int i = 0; i < size; i++) {
2937     OH_AudioDeviceDescriptor *descriptor = array->descriptors[i];
2938     if (descriptor == nullptr) {
2939         napi_create_int32(env, TEST_FAIL, &res);
2940         return res;
2941     }
2942     uint32_t id = 0;
2943     result = OH_AudioDeviceDescriptor_GetDeviceId(descriptor, &id);
2944     LOG("AudioAudioDeviceDescriptorGetDeviceId_001, result is: %{public}d", result);
2945     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2946         napi_create_int32(env, TEST_FAIL, &res);
2947             break;
2948         } else {
2949             napi_create_int32(env, TEST_PASS, &res);
2950         }
2951     }
2952     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
2953     return res;
2954 }
2955 
AudioAudioDeviceDescriptorGetDeviceId_002(napi_env env,napi_callback_info info)2956 static napi_value AudioAudioDeviceDescriptorGetDeviceId_002(napi_env env, napi_callback_info info)
2957 {
2958     napi_value res;
2959     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2960     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2961     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2962         napi_create_int32(env, TEST_FAIL, &res);
2963         return res;
2964     }
2965     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
2966     OH_AudioDeviceDescriptorArray *array = nullptr;
2967     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2968     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
2969     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
2970         napi_create_int32(env, TEST_FAIL, &res);
2971         return res;
2972     }
2973 
2974     result = OH_AudioDeviceDescriptor_GetDeviceId(descriptor, nullptr);
2975     LOG("AudioAudioDeviceDescriptorGetDeviceId_002, result is: %{public}d", result);
2976     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2977         napi_create_int32(env, TEST_FAIL, &res);
2978     } else {
2979         napi_create_int32(env, TEST_PASS, &res);
2980     }
2981     return res;
2982 }
2983 
AudioAudioDeviceDescriptorGetDeviceId_003(napi_env env,napi_callback_info info)2984 static napi_value AudioAudioDeviceDescriptorGetDeviceId_003(napi_env env, napi_callback_info info)
2985 {
2986     napi_value res;
2987     OH_AudioDeviceDescriptor *descriptor = nullptr;
2988     uint32_t id = 0;
2989     OH_AudioCommon_Result result = OH_AudioDeviceDescriptor_GetDeviceId(descriptor, &id);
2990     LOG("AudioAudioDeviceDescriptorGetDeviceId_003, result is: %{public}d", result);
2991     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2992         napi_create_int32(env, TEST_FAIL, &res);
2993     } else {
2994         napi_create_int32(env, TEST_PASS, &res);
2995     }
2996     return res;
2997 }
2998 
AudioAudioDeviceDescriptorGetDeviceName_001(napi_env env,napi_callback_info info)2999 static napi_value AudioAudioDeviceDescriptorGetDeviceName_001(napi_env env, napi_callback_info info)
3000 {
3001     napi_value res;
3002     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3003     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3004     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3005         napi_create_int32(env, TEST_FAIL, &res);
3006         return res;
3007     }
3008     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
3009     OH_AudioDeviceDescriptorArray *array = nullptr;
3010     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3011     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
3012         napi_create_int32(env, TEST_FAIL, &res);
3013         return res;
3014     }
3015 
3016     int size = array->size;
3017     for (int i = 0; i < size; i++) {
3018         OH_AudioDeviceDescriptor *descriptor = array->descriptors[i];
3019         if (descriptor == nullptr) {
3020             napi_create_int32(env, TEST_FAIL, &res);
3021             return res;
3022         }
3023         char* deviceName;
3024         result = OH_AudioDeviceDescriptor_GetDeviceName(descriptor, &deviceName);
3025         LOG("AudioAudioDeviceDescriptorGetDeviceName_001, result is: %{public}d", result);
3026         if (result != AUDIOCOMMON_RESULT_SUCCESS) {
3027             napi_create_int32(env, TEST_FAIL, &res);
3028             break;
3029         } else {
3030             napi_create_int32(env, TEST_PASS, &res);
3031         }
3032     }
3033     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
3034     return res;
3035 }
3036 
AudioAudioDeviceDescriptorGetDeviceName_002(napi_env env,napi_callback_info info)3037 static napi_value AudioAudioDeviceDescriptorGetDeviceName_002(napi_env env, napi_callback_info info)
3038 {
3039     napi_value res;
3040     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3041     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3042     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3043         napi_create_int32(env, TEST_FAIL, &res);
3044         return res;
3045     }
3046     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3047     OH_AudioDeviceDescriptorArray *array = nullptr;
3048     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3049     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3050     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3051         napi_create_int32(env, TEST_FAIL, &res);
3052         return res;
3053     }
3054 
3055     result = OH_AudioDeviceDescriptor_GetDeviceName(descriptor, nullptr);
3056     LOG("AudioAudioDeviceDescriptorGetDeviceName_002, result is: %{public}d", result);
3057     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3058         napi_create_int32(env, TEST_FAIL, &res);
3059     } else {
3060         napi_create_int32(env, TEST_PASS, &res);
3061     }
3062     return res;
3063 }
3064 
AudioAudioDeviceDescriptorGetDeviceName_003(napi_env env,napi_callback_info info)3065 static napi_value AudioAudioDeviceDescriptorGetDeviceName_003(napi_env env, napi_callback_info info)
3066 {
3067     napi_value res;
3068     OH_AudioDeviceDescriptor *descriptor = nullptr;
3069     char* deviceName;
3070     OH_AudioCommon_Result result = OH_AudioDeviceDescriptor_GetDeviceName(descriptor, &deviceName);
3071     LOG("AudioAudioDeviceDescriptorGetDeviceName_003, result is: %{public}d", result);
3072     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3073         napi_create_int32(env, TEST_FAIL, &res);
3074     } else {
3075         napi_create_int32(env, TEST_PASS, &res);
3076     }
3077     return res;
3078 }
3079 
AudioAudioDeviceDescriptorGetDeviceAddress_001(napi_env env,napi_callback_info info)3080 static napi_value AudioAudioDeviceDescriptorGetDeviceAddress_001(napi_env env, napi_callback_info info)
3081 {
3082     napi_value res;
3083     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3084     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3085     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3086         napi_create_int32(env, TEST_FAIL, &res);
3087         return res;
3088     }
3089     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
3090     OH_AudioDeviceDescriptorArray *array = nullptr;
3091     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3092     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
3093         napi_create_int32(env, TEST_FAIL, &res);
3094         return res;
3095     }
3096 
3097     int size = array->size;
3098     for (int i = 0; i < size; i++) {
3099         OH_AudioDeviceDescriptor *descriptor = array->descriptors[i];
3100         if (descriptor == nullptr) {
3101             napi_create_int32(env, TEST_FAIL, &res);
3102             return res;
3103         }
3104         char *address;
3105         result = OH_AudioDeviceDescriptor_GetDeviceAddress(descriptor, &address);
3106         LOG("AudioAudioDeviceDescriptorGetDeviceAddress_001, result is: %{public}d", result);
3107         if (result != AUDIOCOMMON_RESULT_SUCCESS) {
3108             napi_create_int32(env, TEST_FAIL, &res);
3109             break;
3110         } else {
3111             napi_create_int32(env, TEST_PASS, &res);
3112         }
3113     }
3114     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
3115     return res;
3116 }
3117 
AudioAudioDeviceDescriptorGetDeviceAddress_002(napi_env env,napi_callback_info info)3118 static napi_value AudioAudioDeviceDescriptorGetDeviceAddress_002(napi_env env, napi_callback_info info)
3119 {
3120     napi_value res;
3121     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3122     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3123     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3124         napi_create_int32(env, TEST_FAIL, &res);
3125         return res;
3126     }
3127     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3128     OH_AudioDeviceDescriptorArray *array = nullptr;
3129     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3130     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3131     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3132         napi_create_int32(env, TEST_FAIL, &res);
3133         return res;
3134     }
3135 
3136     result = OH_AudioDeviceDescriptor_GetDeviceAddress(descriptor, nullptr);
3137     LOG("AudioAudioDeviceDescriptorGetDeviceAddress_002, result is: %{public}d", result);
3138     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3139         napi_create_int32(env, TEST_FAIL, &res);
3140     } else {
3141         napi_create_int32(env, TEST_PASS, &res);
3142     }
3143     return res;
3144 }
3145 
AudioAudioDeviceDescriptorGetDeviceAddress_003(napi_env env,napi_callback_info info)3146 static napi_value AudioAudioDeviceDescriptorGetDeviceAddress_003(napi_env env, napi_callback_info info)
3147 {
3148     napi_value res;
3149     OH_AudioDeviceDescriptor *descriptor = nullptr;
3150     char *address;
3151     OH_AudioCommon_Result result = OH_AudioDeviceDescriptor_GetDeviceAddress(descriptor, &address);
3152     LOG("AudioAudioDeviceDescriptorGetDeviceAddress_003, result is: %{public}d", result);
3153     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3154         napi_create_int32(env, TEST_FAIL, &res);
3155     } else {
3156         napi_create_int32(env, TEST_PASS, &res);
3157     }
3158     return res;
3159 }
3160 
AudioAudioDeviceDescriptorGetDeviceSampleRates_001(napi_env env,napi_callback_info info)3161 static napi_value AudioAudioDeviceDescriptorGetDeviceSampleRates_001(napi_env env, napi_callback_info info)
3162 {
3163     napi_value res;
3164     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3165     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3166     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3167         napi_create_int32(env, TEST_FAIL, &res);
3168         return res;
3169     }
3170     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
3171     OH_AudioDeviceDescriptorArray *array = nullptr;
3172     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3173     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
3174         napi_create_int32(env, TEST_FAIL, &res);
3175         return res;
3176     }
3177 
3178     int size = array->size;
3179     for (int i = 0; i < size; i++) {
3180         OH_AudioDeviceDescriptor *descriptor = array->descriptors[i];
3181         if (descriptor == nullptr) {
3182             napi_create_int32(env, TEST_FAIL, &res);
3183             return res;
3184         }
3185         uint32_t *sampleRates;
3186         uint32_t size = 0;
3187         result = OH_AudioDeviceDescriptor_GetDeviceSampleRates(descriptor, &sampleRates, &size);
3188         LOG("AudioAudioDeviceDescriptorGetDeviceSampleRates_001, result is: %{public}d", result);
3189         if (result != AUDIOCOMMON_RESULT_SUCCESS) {
3190             napi_create_int32(env, TEST_FAIL, &res);
3191             break;
3192         } else {
3193             napi_create_int32(env, TEST_PASS, &res);
3194         }
3195     }
3196     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
3197     return res;
3198 }
3199 
AudioAudioDeviceDescriptorGetDeviceSampleRates_002(napi_env env,napi_callback_info info)3200 static napi_value AudioAudioDeviceDescriptorGetDeviceSampleRates_002(napi_env env, napi_callback_info info)
3201 {
3202     napi_value res;
3203     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3204     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3205     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3206         napi_create_int32(env, TEST_FAIL, &res);
3207         return res;
3208     }
3209     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3210     OH_AudioDeviceDescriptorArray *array = nullptr;
3211     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3212     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3213     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3214         napi_create_int32(env, TEST_FAIL, &res);
3215         return res;
3216     }
3217 
3218     uint32_t size = 0;
3219     result = OH_AudioDeviceDescriptor_GetDeviceSampleRates(descriptor, nullptr, &size);
3220     LOG("AudioAudioDeviceDescriptorGetDeviceSampleRates_002, result is: %{public}d", result);
3221     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3222         napi_create_int32(env, TEST_FAIL, &res);
3223     } else {
3224         napi_create_int32(env, TEST_PASS, &res);
3225     }
3226     return res;
3227 }
3228 
AudioAudioDeviceDescriptorGetDeviceSampleRates_003(napi_env env,napi_callback_info info)3229 static napi_value AudioAudioDeviceDescriptorGetDeviceSampleRates_003(napi_env env, napi_callback_info info)
3230 {
3231     napi_value res;
3232     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3233     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3234     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3235         napi_create_int32(env, TEST_FAIL, &res);
3236         return res;
3237     }
3238     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3239     OH_AudioDeviceDescriptorArray *array = nullptr;
3240     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3241     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3242     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3243         napi_create_int32(env, TEST_FAIL, &res);
3244         return res;
3245     }
3246 
3247     uint32_t *sampleRates;
3248     result = OH_AudioDeviceDescriptor_GetDeviceSampleRates(descriptor, &sampleRates, nullptr);
3249     LOG("AudioAudioDeviceDescriptorGetDeviceSampleRates_003, result is: %{public}d", result);
3250     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3251         napi_create_int32(env, TEST_FAIL, &res);
3252     } else {
3253         napi_create_int32(env, TEST_PASS, &res);
3254     }
3255     return res;
3256 }
3257 
AudioAudioDeviceDescriptorGetDeviceSampleRates_004(napi_env env,napi_callback_info info)3258 static napi_value AudioAudioDeviceDescriptorGetDeviceSampleRates_004(napi_env env, napi_callback_info info)
3259 {
3260     napi_value res;
3261     OH_AudioDeviceDescriptor *descriptor = nullptr;
3262     uint32_t *sampleRates;
3263     uint32_t size = 0;
3264     OH_AudioCommon_Result result = OH_AudioDeviceDescriptor_GetDeviceSampleRates(descriptor, &sampleRates, &size);
3265     LOG("AudioAudioDeviceDescriptorGetDeviceSampleRates_004, result is: %{public}d", result);
3266     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3267         napi_create_int32(env, TEST_FAIL, &res);
3268     } else {
3269         napi_create_int32(env, TEST_PASS, &res);
3270     }
3271     return res;
3272 }
3273 
AudioAudioDeviceDescriptorGetDeviceChannelCounts_001(napi_env env,napi_callback_info info)3274 static napi_value AudioAudioDeviceDescriptorGetDeviceChannelCounts_001(napi_env env, napi_callback_info info)
3275 {
3276     napi_value res;
3277     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3278     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3279     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3280         napi_create_int32(env, TEST_FAIL, &res);
3281         return res;
3282     }
3283     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
3284     OH_AudioDeviceDescriptorArray *array = nullptr;
3285     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3286     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
3287         napi_create_int32(env, TEST_FAIL, &res);
3288         return res;
3289     }
3290 
3291     int size = array->size;
3292     for (int i = 0; i < size; i++) {
3293         OH_AudioDeviceDescriptor *descriptor = array->descriptors[i];
3294         if (descriptor == nullptr) {
3295             napi_create_int32(env, TEST_FAIL, &res);
3296             return res;
3297         }
3298         uint32_t *channelCounts;
3299         uint32_t channelSize = 0;
3300         result = OH_AudioDeviceDescriptor_GetDeviceChannelCounts(descriptor, &channelCounts, &channelSize);
3301         LOG("AudioAudioDeviceDescriptorGetDeviceChannelCounts_001, result is: %{public}d", result);
3302         if (result != AUDIOCOMMON_RESULT_SUCCESS) {
3303             napi_create_int32(env, TEST_FAIL, &res);
3304             break;
3305         } else {
3306             napi_create_int32(env, TEST_PASS, &res);
3307         }
3308     }
3309     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
3310     return res;
3311 }
3312 
AudioAudioDeviceDescriptorGetDeviceChannelCounts_002(napi_env env,napi_callback_info info)3313 static napi_value AudioAudioDeviceDescriptorGetDeviceChannelCounts_002(napi_env env, napi_callback_info info)
3314 {
3315     napi_value res;
3316     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3317     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3318     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3319         napi_create_int32(env, TEST_FAIL, &res);
3320         return res;
3321     }
3322     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3323     OH_AudioDeviceDescriptorArray *array = nullptr;
3324     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3325     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3326     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3327         napi_create_int32(env, TEST_FAIL, &res);
3328         return res;
3329     }
3330 
3331     uint32_t channelSize = 0;
3332     result = OH_AudioDeviceDescriptor_GetDeviceChannelCounts(descriptor, nullptr, &channelSize);
3333     LOG("AudioAudioDeviceDescriptorGetDeviceChannelCounts_002, result is: %{public}d", result);
3334     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3335         napi_create_int32(env, TEST_FAIL, &res);
3336     } else {
3337         napi_create_int32(env, TEST_PASS, &res);
3338     }
3339     return res;
3340 }
3341 
AudioAudioDeviceDescriptorGetDeviceChannelCounts_003(napi_env env,napi_callback_info info)3342 static napi_value AudioAudioDeviceDescriptorGetDeviceChannelCounts_003(napi_env env, napi_callback_info info)
3343 {
3344     napi_value res;
3345     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3346     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3347     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3348         napi_create_int32(env, TEST_FAIL, &res);
3349         return res;
3350     }
3351     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3352     OH_AudioDeviceDescriptorArray *array = nullptr;
3353     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3354     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3355     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3356         napi_create_int32(env, TEST_FAIL, &res);
3357         return res;
3358     }
3359 
3360     uint32_t *channelCounts;
3361     result = OH_AudioDeviceDescriptor_GetDeviceChannelCounts(descriptor, &channelCounts, nullptr);
3362     LOG("AudioAudioDeviceDescriptorGetDeviceChannelCounts_003, result is: %{public}d", result);
3363     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3364         napi_create_int32(env, TEST_FAIL, &res);
3365     } else {
3366         napi_create_int32(env, TEST_PASS, &res);
3367     }
3368     return res;
3369 }
3370 
AudioAudioDeviceDescriptorGetDeviceChannelCounts_004(napi_env env,napi_callback_info info)3371 static napi_value AudioAudioDeviceDescriptorGetDeviceChannelCounts_004(napi_env env, napi_callback_info info)
3372 {
3373     napi_value res;
3374     OH_AudioDeviceDescriptor *descriptor = nullptr;
3375     uint32_t *channelCounts;
3376     uint32_t channelSize = 0;
3377     OH_AudioCommon_Result result = OH_AudioDeviceDescriptor_GetDeviceChannelCounts(
3378         descriptor, &channelCounts, &channelSize);
3379     LOG("AudioAudioDeviceDescriptorGetDeviceChannelCounts_004, result is: %{public}d", result);
3380     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3381         napi_create_int32(env, TEST_FAIL, &res);
3382     } else {
3383         napi_create_int32(env, TEST_PASS, &res);
3384     }
3385     return res;
3386 }
3387 
AudioAudioDeviceDescriptorGetDeviceDisplayName_001(napi_env env,napi_callback_info info)3388 static napi_value AudioAudioDeviceDescriptorGetDeviceDisplayName_001(napi_env env, napi_callback_info info)
3389 {
3390     napi_value res;
3391     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3392     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3393     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3394         napi_create_int32(env, TEST_FAIL, &res);
3395         return res;
3396     }
3397     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
3398     OH_AudioDeviceDescriptorArray *array = nullptr;
3399     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3400     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
3401         napi_create_int32(env, TEST_FAIL, &res);
3402         return res;
3403     }
3404 
3405     int size = array->size;
3406     for (int i = 0; i < size; i++) {
3407         OH_AudioDeviceDescriptor *descriptor = array->descriptors[i];
3408         if (descriptor == nullptr) {
3409             napi_create_int32(env, TEST_FAIL, &res);
3410             return res;
3411         }
3412         char *displayName;
3413         result = OH_AudioDeviceDescriptor_GetDeviceDisplayName(descriptor, &displayName);
3414         LOG("AudioAudioDeviceDescriptorGetDeviceDisplayName_001, result is: %{public}d", result);
3415         if (result != AUDIOCOMMON_RESULT_SUCCESS) {
3416             napi_create_int32(env, TEST_FAIL, &res);
3417             break;
3418         } else {
3419             napi_create_int32(env, TEST_PASS, &res);
3420         }
3421     }
3422     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
3423     return res;
3424 }
3425 
AudioAudioDeviceDescriptorGetDeviceDisplayName_002(napi_env env,napi_callback_info info)3426 static napi_value AudioAudioDeviceDescriptorGetDeviceDisplayName_002(napi_env env, napi_callback_info info)
3427 {
3428     napi_value res;
3429     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3430     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3431     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3432         napi_create_int32(env, TEST_FAIL, &res);
3433         return res;
3434     }
3435     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3436     OH_AudioDeviceDescriptorArray *array = nullptr;
3437     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3438     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3439     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3440         napi_create_int32(env, TEST_FAIL, &res);
3441         return res;
3442     }
3443 
3444     result = OH_AudioDeviceDescriptor_GetDeviceDisplayName(descriptor, nullptr);
3445     LOG("AudioAudioDeviceDescriptorGetDeviceDisplayName_002, result is: %{public}d", result);
3446     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3447         napi_create_int32(env, TEST_FAIL, &res);
3448     } else {
3449         napi_create_int32(env, TEST_PASS, &res);
3450     }
3451     return res;
3452 }
3453 
AudioAudioDeviceDescriptorGetDeviceDisplayName_003(napi_env env,napi_callback_info info)3454 static napi_value AudioAudioDeviceDescriptorGetDeviceDisplayName_003(napi_env env, napi_callback_info info)
3455 {
3456     napi_value res;
3457     OH_AudioDeviceDescriptor *descriptor = nullptr;
3458     char *displayName;
3459     OH_AudioCommon_Result result = OH_AudioDeviceDescriptor_GetDeviceDisplayName(descriptor, &displayName);
3460     LOG("AudioAudioDeviceDescriptorGetDeviceDisplayName_003, result is: %{public}d", result);
3461     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3462         napi_create_int32(env, TEST_FAIL, &res);
3463     } else {
3464         napi_create_int32(env, TEST_PASS, &res);
3465     }
3466     return res;
3467 }
3468 
AudioAudioDeviceDescriptorGetDeviceEncodingTypes_001(napi_env env,napi_callback_info info)3469 static napi_value AudioAudioDeviceDescriptorGetDeviceEncodingTypes_001(napi_env env, napi_callback_info info)
3470 {
3471     napi_value res;
3472     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3473     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3474     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3475         napi_create_int32(env, TEST_FAIL, &res);
3476         return res;
3477     }
3478     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
3479     OH_AudioDeviceDescriptorArray *array = nullptr;
3480     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3481     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
3482         napi_create_int32(env, TEST_FAIL, &res);
3483         return res;
3484     }
3485 
3486     int size = array->size;
3487     for (int i = 0; i < size; i++) {
3488         OH_AudioDeviceDescriptor *descriptor = array->descriptors[i];
3489         if (descriptor == nullptr) {
3490             napi_create_int32(env, TEST_FAIL, &res);
3491             return res;
3492         }
3493         OH_AudioStream_EncodingType *encodingTypes;
3494         uint32_t encodingTypeSize = 0;
3495         result = OH_AudioDeviceDescriptor_GetDeviceEncodingTypes(descriptor, &encodingTypes, &encodingTypeSize);
3496         LOG("AudioAudioDeviceDescriptorGetDeviceEncodingTypes_001, result is: %{public}d", result);
3497         if (result != AUDIOCOMMON_RESULT_SUCCESS) {
3498             napi_create_int32(env, TEST_FAIL, &res);
3499             break;
3500         } else {
3501             napi_create_int32(env, TEST_PASS, &res);
3502         }
3503     }
3504     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
3505     return res;
3506 }
3507 
AudioAudioDeviceDescriptorGetDeviceEncodingTypes_002(napi_env env,napi_callback_info info)3508 static napi_value AudioAudioDeviceDescriptorGetDeviceEncodingTypes_002(napi_env env, napi_callback_info info)
3509 {
3510     napi_value res;
3511     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3512     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3513     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3514         napi_create_int32(env, TEST_FAIL, &res);
3515         return res;
3516     }
3517     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3518     OH_AudioDeviceDescriptorArray *array = nullptr;
3519     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3520     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3521     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3522         napi_create_int32(env, TEST_FAIL, &res);
3523         return res;
3524     }
3525 
3526     uint32_t encodingTypeSize = 0;
3527     result = OH_AudioDeviceDescriptor_GetDeviceEncodingTypes(descriptor, nullptr, &encodingTypeSize);
3528     LOG("AudioAudioDeviceDescriptorGetDeviceEncodingTypes_002, result is: %{public}d", result);
3529     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3530         napi_create_int32(env, TEST_FAIL, &res);
3531     } else {
3532         napi_create_int32(env, TEST_PASS, &res);
3533     }
3534     return res;
3535 }
3536 
AudioAudioDeviceDescriptorGetDeviceEncodingTypes_003(napi_env env,napi_callback_info info)3537 static napi_value AudioAudioDeviceDescriptorGetDeviceEncodingTypes_003(napi_env env, napi_callback_info info)
3538 {
3539     napi_value res;
3540     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3541     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3542     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3543         napi_create_int32(env, TEST_FAIL, &res);
3544         return res;
3545     }
3546     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3547     OH_AudioDeviceDescriptorArray *array = nullptr;
3548     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3549     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3550     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3551         napi_create_int32(env, TEST_FAIL, &res);
3552         return res;
3553     }
3554 
3555     OH_AudioStream_EncodingType *encodingTypes;
3556     result = OH_AudioDeviceDescriptor_GetDeviceEncodingTypes(descriptor, &encodingTypes, nullptr);
3557     LOG("AudioAudioDeviceDescriptorGetDeviceEncodingTypes_003, result is: %{public}d", result);
3558     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3559         napi_create_int32(env, TEST_FAIL, &res);
3560     } else {
3561         napi_create_int32(env, TEST_PASS, &res);
3562     }
3563     return res;
3564 }
3565 
AudioAudioDeviceDescriptorGetDeviceEncodingTypes_004(napi_env env,napi_callback_info info)3566 static napi_value AudioAudioDeviceDescriptorGetDeviceEncodingTypes_004(napi_env env, napi_callback_info info)
3567 {
3568     napi_value res;
3569     OH_AudioDeviceDescriptor *descriptor = nullptr;
3570     OH_AudioStream_EncodingType *encodingTypes;
3571     uint32_t encodingTypeSize = 0;
3572     OH_AudioCommon_Result result = OH_AudioDeviceDescriptor_GetDeviceEncodingTypes(
3573         descriptor, &encodingTypes, &encodingTypeSize);
3574     LOG("AudioAudioDeviceDescriptorGetDeviceEncodingTypes_004, result is: %{public}d", result);
3575     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3576         napi_create_int32(env, TEST_FAIL, &res);
3577     } else {
3578         napi_create_int32(env, TEST_PASS, &res);
3579     }
3580     return res;
3581 }
3582 
AudioAudioInternalRecordingSuccess01(napi_env env,napi_callback_info info)3583 static napi_value AudioAudioInternalRecordingSuccess01(napi_env env, napi_callback_info info)
3584 {
3585     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
3586     OH_AudioRenderer *audioRenderer;
3587     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
3588     OH_AudioStream_PrivacyType type = AUDIO_STREAM_PRIVACY_TYPE_PUBLIC;
3589     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererPrivacy(builder, type);
3590     OH_AudioRenderer_Release(audioRenderer);
3591     OH_AudioStreamBuilder_Destroy(builder);
3592     napi_value res;
3593     napi_create_int32(env, result, &res);
3594     return res;
3595 }
3596 
AudioAudioInternalRecordingSuccess02(napi_env env,napi_callback_info info)3597 static napi_value AudioAudioInternalRecordingSuccess02(napi_env env, napi_callback_info info)
3598 {
3599     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
3600     OH_AudioStream_PrivacyType type = AUDIO_STREAM_PRIVACY_TYPE_PRIVATE;
3601     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererPrivacy(builder, type);
3602     OH_AudioRenderer *audioRenderer = nullptr;
3603     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
3604     OH_AudioStream_PrivacyType type_get;
3605     OH_AudioStream_Result result1 = OH_AudioRenderer_GetRendererPrivacy(audioRenderer, &type_get);
3606     if (result == AUDIOSTREAM_SUCCESS && result1 == AUDIOSTREAM_SUCCESS
3607         && type_get == AUDIO_STREAM_PRIVACY_TYPE_PRIVATE) {
3608         result = AUDIOSTREAM_SUCCESS;
3609     } else {
3610         result = AUDIOSTREAM_ERROR_INVALID_PARAM;
3611     };
3612     OH_AudioRenderer_Release(audioRenderer);
3613     OH_AudioStreamBuilder_Destroy(builder);
3614     napi_value res;
3615     napi_create_int32(env, result, &res);
3616     return res;
3617 }
3618 
AudioAudioInternalRecordingFalse(napi_env env,napi_callback_info info)3619 static napi_value AudioAudioInternalRecordingFalse(napi_env env, napi_callback_info info)
3620 {
3621     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
3622     OH_AudioRenderer *audioRenderer;
3623     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
3624     OH_AudioStream_PrivacyType type = static_cast<OH_AudioStream_PrivacyType>(2);
3625     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererPrivacy(builder, type);
3626     OH_AudioRenderer_Release(audioRenderer);
3627     OH_AudioStreamBuilder_Destroy(builder);
3628     napi_value res;
3629     napi_create_int32(env, result, &res);
3630     return res;
3631 }
3632 
WriteDataCallbackWithValidResult(OH_AudioRenderer * renderer,void * userData,void * buffer,int32_t bufferLen)3633 static OH_AudioData_Callback_Result WriteDataCallbackWithValidResult(OH_AudioRenderer* renderer,
3634     void* userData,
3635     void* buffer,
3636     int32_t bufferLen)
3637 {
3638     return AUDIO_DATA_CALLBACK_RESULT_VALID;
3639 }
3640 
WriteDataCallbackWithInvalidResult(OH_AudioRenderer * renderer,void * userData,void * buffer,int32_t bufferLen)3641 static OH_AudioData_Callback_Result WriteDataCallbackWithInvalidResult(OH_AudioRenderer* renderer,
3642     void* userData,
3643     void* buffer,
3644     int32_t bufferLen)
3645 {
3646     return AUDIO_DATA_CALLBACK_RESULT_INVALID;
3647 }
3648 
AudioStreamBuilderSetRendererWriteDataCallback_001(napi_env env,napi_callback_info info)3649 static napi_value AudioStreamBuilderSetRendererWriteDataCallback_001(napi_env env, napi_callback_info info)
3650 {
3651     OH_AudioStreamBuilder* builder;
3652     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
3653     OH_AudioStreamBuilder_Create(&builder, type);
3654     OH_AudioRenderer_OnWriteDataCallback onWriteDataCallback = WriteDataCallbackWithValidResult;
3655     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererWriteDataCallback(builder,
3656         onWriteDataCallback, nullptr);
3657     OH_AudioStreamBuilder_Destroy(builder);
3658     napi_value res;
3659     napi_create_int32(env, result, &res);
3660     return res;
3661 }
3662 
AudioStreamBuilderSetRendererWriteDataCallback_002(napi_env env,napi_callback_info info)3663 static napi_value AudioStreamBuilderSetRendererWriteDataCallback_002(napi_env env, napi_callback_info info)
3664 {
3665     OH_AudioStreamBuilder* builder;
3666     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
3667     OH_AudioStreamBuilder_Create(&builder, type);
3668     OH_AudioRenderer_OnWriteDataCallback onWriteDataCallback = WriteDataCallbackWithInvalidResult;
3669     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererWriteDataCallback(builder,
3670         onWriteDataCallback, nullptr);
3671     OH_AudioStreamBuilder_Destroy(builder);
3672     napi_value res;
3673     napi_create_int32(env, result, &res);
3674     return res;
3675 }
3676 
audioCapturerGetOverflowCount_001(napi_env env,napi_callback_info info)3677 static napi_value audioCapturerGetOverflowCount_001(napi_env env, napi_callback_info info)
3678 {
3679     OH_AudioStreamBuilder* builder = CreateCapturerBuilder();
3680     int32_t samplingRate = 48000;
3681     OH_AudioStreamBuilder_SetSamplingRate(builder, samplingRate);
3682     int32_t channelCount = 2;
3683     OH_AudioStreamBuilder_SetChannelCount(builder, channelCount);
3684 
3685     OH_AudioCapturer_Callbacks callbacks;
3686     callbacks.OH_AudioCapturer_OnReadData = AudioCapturerOnReadData;
3687     OH_AudioStreamBuilder_SetCapturerCallback(builder, callbacks, NULL);
3688 
3689     OH_AudioCapturer* audioCapturer;
3690     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
3691     result = OH_AudioCapturer_Start(audioCapturer);
3692 
3693     uint32_t overFlowCount;
3694     result = OH_AudioCapturer_GetOverflowCount(audioCapturer, &overFlowCount);
3695 
3696     OH_AudioCapturer_Stop(audioCapturer);
3697     OH_AudioCapturer_Release(audioCapturer);
3698 
3699     OH_AudioStreamBuilder_Destroy(builder);
3700     napi_value res;
3701     napi_create_int32(env, result, &res);
3702     return res;
3703 }
3704 
AudioSessionManagerStrategy_001(napi_env env,napi_callback_info info)3705 static napi_value AudioSessionManagerStrategy_001(napi_env env, napi_callback_info info)
3706 {
3707     napi_value res;
3708     OH_AudioSessionManager* audioSessionManager;
3709     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
3710     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
3711         napi_create_int32(env, TEST_FAIL, &res);
3712         LOG("resultManager, result is: %{public}d", TEST_FAIL);
3713         return res;
3714     }
3715     OH_AudioSession_Strategy strategy = {
3716         CONCURRENCY_MIX_WITH_OTHERS
3717     };
3718     // 设置音频并发模式并激活音频会话
3719     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
3720     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
3721         napi_create_int32(env, TEST_FAIL, &res);
3722         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
3723         return res;
3724     }
3725 
3726     // 查询音频会话是否已激活。
3727     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
3728     if (!isActivated) {
3729         napi_create_int32(env, TEST_FAIL, &res);
3730         LOG("isActivated, result is: %{public}d", TEST_FAIL);
3731         return res;
3732     }
3733 
3734     // 监听音频会话停用事件
3735     OH_AudioCommon_Result resultRegister =
3736         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(
3737             audioSessionManager, MyAudioSessionDeactivatedCallback);
3738     if (resultRegister != AUDIOCOMMON_RESULT_SUCCESS) {
3739         napi_create_int32(env, TEST_FAIL, &res);
3740         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
3741         return res;
3742     }
3743 
3744     // 等待1秒
3745     Delay(1);
3746 
3747     // 取消监听音频会话停用事件
3748     OH_AudioCommon_Result resultUnregister =
3749         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(
3750             audioSessionManager, MyAudioSessionDeactivatedCallback);
3751     if (resultUnregister != AUDIOCOMMON_RESULT_SUCCESS) {
3752         napi_create_int32(env, TEST_FAIL, &res);
3753         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
3754         return res;
3755     }
3756 
3757     // 停用音频会话
3758     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
3759     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
3760         napi_create_int32(env, TEST_FAIL, &res);
3761         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
3762         return res;
3763     }
3764 
3765     // 查询音频会话是否已激活。
3766     isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
3767     if (isActivated) {
3768         napi_create_int32(env, TEST_FAIL, &res);
3769         LOG("isActivated, result is: %{public}d", TEST_FAIL);
3770         return res;
3771     }
3772 
3773     napi_create_int32(env, TEST_PASS, &res);
3774     return res;
3775 }
3776 
3777 
AudioSessionManagerStrategy_002(napi_env env,napi_callback_info info)3778 static napi_value AudioSessionManagerStrategy_002(napi_env env, napi_callback_info info)
3779 {
3780     napi_value res;
3781     OH_AudioSessionManager* audioSessionManager;
3782     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
3783     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
3784         napi_create_int32(env, TEST_FAIL, &res);
3785         LOG("resultManager, result is: %{public}d", TEST_FAIL);
3786         return res;
3787     }
3788     OH_AudioSession_Strategy strategy = {
3789         CONCURRENCY_DEFAULT
3790     };
3791 
3792     // 设置音频并发模式并激活音频会话
3793     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
3794     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
3795         napi_create_int32(env, TEST_FAIL, &res);
3796         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
3797         return res;
3798     }
3799 
3800     // 查询音频会话是否已激活。
3801     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
3802     if (!isActivated) {
3803         napi_create_int32(env, TEST_FAIL, &res);
3804         LOG("isActivated, result is: %{public}d", TEST_FAIL);
3805         return res;
3806     }
3807 
3808     // 监听音频会话停用事件
3809     OH_AudioCommon_Result resultRegister =
3810         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(
3811             audioSessionManager, MyAudioSessionDeactivatedCallback);
3812     if (resultRegister != AUDIOCOMMON_RESULT_SUCCESS) {
3813         napi_create_int32(env, TEST_FAIL, &res);
3814         LOG("resultRegister, result is: %{public}d", TEST_FAIL);
3815         return res;
3816     }
3817     // sleep 1 seconds
3818     Delay(1);
3819 
3820     // 取消监听音频会话停用事件
3821     OH_AudioCommon_Result resultUnregister =
3822         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(
3823             audioSessionManager, MyAudioSessionDeactivatedCallback);
3824     if (resultUnregister != AUDIOCOMMON_RESULT_SUCCESS) {
3825         napi_create_int32(env, TEST_FAIL, &res);
3826         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
3827         return res;
3828     }
3829 
3830     // 停用音频会话
3831     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
3832     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
3833         napi_create_int32(env, TEST_FAIL, &res);
3834         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
3835         return res;
3836     }
3837 
3838     napi_create_int32(env, TEST_PASS, &res);
3839     return res;
3840 }
3841 
3842 
AudioSessionManagerStrategy_003(napi_env env,napi_callback_info info)3843 static napi_value AudioSessionManagerStrategy_003(napi_env env, napi_callback_info info)
3844 {
3845     napi_value res;
3846     OH_AudioSessionManager* audioSessionManager;
3847     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
3848     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
3849         napi_create_int32(env, TEST_FAIL, &res);
3850         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
3851         return res;
3852     }
3853     OH_AudioSession_Strategy strategy = {
3854         CONCURRENCY_DUCK_OTHERS
3855     };
3856 
3857     // 设置音频并发模式并激活音频会话
3858     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
3859     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
3860         napi_create_int32(env, TEST_FAIL, &res);
3861         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
3862         return res;
3863     }
3864 
3865     // 查询音频会话是否已激活。
3866     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
3867     if (!isActivated) {
3868         napi_create_int32(env, TEST_FAIL, &res);
3869         LOG("isActivated, result is: %{public}d", TEST_FAIL);
3870         return res;
3871     }
3872 
3873     // 监听音频会话停用事件
3874     OH_AudioCommon_Result resultRegister =
3875         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(
3876             audioSessionManager, MyAudioSessionDeactivatedCallback);
3877     if (resultRegister != AUDIOCOMMON_RESULT_SUCCESS) {
3878         napi_create_int32(env, TEST_FAIL, &res);
3879         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
3880         return res;
3881     }
3882     // sleep 1 seconds
3883     Delay(1);
3884 
3885     // 取消监听音频会话停用事件
3886     OH_AudioCommon_Result resultUnregister =
3887         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(
3888             audioSessionManager, MyAudioSessionDeactivatedCallback);
3889     if (resultUnregister != AUDIOCOMMON_RESULT_SUCCESS) {
3890         napi_create_int32(env, TEST_FAIL, &res);
3891         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
3892         return res;
3893     }
3894 
3895     // 停用音频会话
3896     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
3897     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
3898         napi_create_int32(env, TEST_FAIL, &res);
3899         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
3900         return res;
3901     }
3902 
3903     napi_create_int32(env, TEST_PASS, &res);
3904     return res;
3905 }
3906 
3907 
AudioSessionManagerStrategy_004(napi_env env,napi_callback_info info)3908 static napi_value AudioSessionManagerStrategy_004(napi_env env, napi_callback_info info)
3909 {
3910     napi_value res;
3911     OH_AudioSessionManager* audioSessionManager;
3912     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
3913     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
3914         napi_create_int32(env, TEST_FAIL, &res);
3915         LOG("resultManager, result is: %{public}d", TEST_FAIL);
3916         return res;
3917     }
3918     OH_AudioSession_Strategy strategy = {
3919         CONCURRENCY_PAUSE_OTHERS
3920     };
3921 
3922     // 设置音频并发模式并激活音频会话
3923     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
3924     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
3925         napi_create_int32(env, TEST_FAIL, &res);
3926         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
3927         return res;
3928     }
3929 
3930     // 查询音频会话是否已激活。
3931     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
3932     if (!isActivated) {
3933         napi_create_int32(env, TEST_FAIL, &res);
3934         LOG("isActivated, result is: %{public}d", TEST_FAIL);
3935         return res;
3936     }
3937 
3938     // 监听音频会话停用事件
3939     OH_AudioCommon_Result resultRegister =
3940         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(
3941             audioSessionManager, MyAudioSessionDeactivatedCallback);
3942     if (resultRegister != AUDIOCOMMON_RESULT_SUCCESS) {
3943         napi_create_int32(env, TEST_FAIL, &res);
3944         LOG("resultRegister, result is: %{public}d", TEST_FAIL);
3945         return res;
3946     }
3947     // sleep 1 seconds
3948     Delay(1);
3949 
3950     // 取消监听音频会话停用事件
3951     OH_AudioCommon_Result resultUnregister =
3952         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(
3953             audioSessionManager, MyAudioSessionDeactivatedCallback);
3954     if (resultUnregister != AUDIOCOMMON_RESULT_SUCCESS) {
3955         napi_create_int32(env, TEST_FAIL, &res);
3956         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
3957         return res;
3958     }
3959 
3960     // 停用音频会话
3961     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
3962     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
3963         napi_create_int32(env, TEST_FAIL, &res);
3964         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
3965         return res;
3966     }
3967 
3968     napi_create_int32(env, TEST_PASS, &res);
3969     return res;
3970 }
3971 
3972 
AudioSessionManagerStrategyError_001(napi_env env,napi_callback_info info)3973 static napi_value AudioSessionManagerStrategyError_001(napi_env env, napi_callback_info info)
3974 {
3975     napi_value res;
3976     OH_AudioSessionManager* audioSessionManager;
3977     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
3978     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
3979         napi_create_int32(env, TEST_FAIL, &res);
3980         LOG("resultManager, result is: %{public}d", TEST_FAIL);
3981         return res;
3982     }
3983     OH_AudioSession_Strategy strategy = {
3984         CONCURRENCY_MIX_WITH_OTHERS
3985     };
3986 
3987     // 设置音频并发模式并激活音频会话
3988     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(nullptr, &strategy);
3989     if (resultActivate != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3990         napi_create_int32(env, TEST_FAIL, &res);
3991         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
3992         return res;
3993     }
3994 
3995     napi_create_int32(env, TEST_PASS, &res);
3996     return res;
3997 }
3998 
3999 
AudioSessionManagerActivatedError_001(napi_env env,napi_callback_info info)4000 static napi_value AudioSessionManagerActivatedError_001(napi_env env, napi_callback_info info)
4001 {
4002     napi_value res;
4003     OH_AudioSessionManager* audioSessionManager;
4004     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4005     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4006         napi_create_int32(env, TEST_FAIL, &res);
4007         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4008         return res;
4009     }
4010     OH_AudioSession_Strategy strategy = {
4011         CONCURRENCY_MIX_WITH_OTHERS
4012     };
4013 
4014     // 设置音频并发模式并激活音频会话
4015     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4016     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4017         napi_create_int32(env, TEST_FAIL, &res);
4018         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4019         return res;
4020     }
4021 
4022     // 查询音频会话是否已激活
4023     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(nullptr);
4024     if (isActivated) {
4025         napi_create_int32(env, TEST_FAIL, &res);
4026         LOG("isActivated, result is: %{public}d", TEST_FAIL);
4027         return res;
4028     }
4029 
4030     // 停用音频会话
4031     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4032     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
4033         napi_create_int32(env, TEST_FAIL, &res);
4034         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4035         return res;
4036     }
4037 
4038     napi_create_int32(env, TEST_PASS, &res);
4039     return res;
4040 }
4041 
4042 
AudioSessionManagerStopError_001(napi_env env,napi_callback_info info)4043 static napi_value AudioSessionManagerStopError_001(napi_env env, napi_callback_info info)
4044 {
4045     napi_value res;
4046     OH_AudioSessionManager* audioSessionManager;
4047     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4048     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4049         napi_create_int32(env, TEST_FAIL, &res);
4050         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4051         return res;
4052     }
4053     OH_AudioSession_Strategy strategy = {
4054         CONCURRENCY_MIX_WITH_OTHERS
4055     };
4056 
4057     // 设置音频并发模式并激活音频会话
4058     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4059     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4060         napi_create_int32(env, TEST_FAIL, &res);
4061         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4062         return res;
4063     }
4064 
4065     // 停用音频会话
4066     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(nullptr);
4067     if (resultDeactivate != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
4068         napi_create_int32(env, TEST_FAIL, &res);
4069         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4070         return res;
4071     }
4072 
4073     // 停用音频会话
4074     resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4075     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
4076         napi_create_int32(env, TEST_FAIL, &res);
4077         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4078         return res;
4079     }
4080 
4081     napi_create_int32(env, TEST_PASS, &res);
4082     return res;
4083 }
4084 
4085 
AudioSessionManagerStopError_002(napi_env env,napi_callback_info info)4086 static napi_value AudioSessionManagerStopError_002(napi_env env, napi_callback_info info)
4087 {
4088     napi_value res;
4089     OH_AudioSessionManager* audioSessionManager;
4090     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4091     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4092         napi_create_int32(env, TEST_FAIL, &res);
4093         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4094         return res;
4095     }
4096     OH_AudioSession_Strategy strategy = {
4097         CONCURRENCY_MIX_WITH_OTHERS
4098     };
4099 
4100     // 设置音频并发模式并激活音频会话
4101     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4102     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4103         napi_create_int32(env, TEST_FAIL, &res);
4104         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4105         return res;
4106     }
4107     // 停用音频会话
4108     OH_AudioCommon_Result resultDeactivate1 = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4109     if (resultDeactivate1 != AUDIOCOMMON_RESULT_SUCCESS) {
4110         napi_create_int32(env, TEST_FAIL, &res);
4111         LOG("resultDeactivate1, result is: %{public}d", TEST_FAIL);
4112         return res;
4113     }
4114     // 停用音频会话
4115     OH_AudioCommon_Result resultDeactivate2 = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4116     if (resultDeactivate2 != AUDIOCOMMON_RESULT_ERROR_ILLEGAL_STATE) {
4117         napi_create_int32(env, TEST_FAIL, &res);
4118         LOG("resultDeactivate2, result is: %{public}d", TEST_FAIL);
4119         return res;
4120     }
4121 
4122     napi_create_int32(env, TEST_PASS, &res);
4123     return res;
4124 }
4125 
4126 
AudioSessionManagerRegisterError_001(napi_env env,napi_callback_info info)4127 static napi_value AudioSessionManagerRegisterError_001(napi_env env, napi_callback_info info)
4128 {
4129     napi_value res;
4130     OH_AudioSessionManager* audioSessionManager;
4131     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4132     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4133         napi_create_int32(env, TEST_FAIL, &res);
4134         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4135         return res;
4136     }
4137     OH_AudioSession_Strategy strategy = {
4138         CONCURRENCY_MIX_WITH_OTHERS
4139     };
4140 
4141     // 设置音频并发模式并激活音频会话
4142     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4143     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4144         napi_create_int32(env, TEST_FAIL, &res);
4145         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4146         return res;
4147     }
4148 
4149     // 查询音频会话是否已激活。
4150     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
4151     if (!isActivated) {
4152         napi_create_int32(env, TEST_FAIL, &res);
4153         LOG("isActivated, result is: %{public}d", TEST_FAIL);
4154         return res;
4155     }
4156 
4157     // 监听音频会话停用事件
4158     OH_AudioCommon_Result resultRegister =
4159         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(nullptr, MyAudioSessionDeactivatedCallback);
4160     if (resultRegister != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
4161         napi_create_int32(env, TEST_FAIL, &res);
4162         LOG("resultRegister, result is: %{public}d", TEST_FAIL);
4163         return res;
4164     }
4165 
4166     // 停用音频会话
4167     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4168     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
4169         napi_create_int32(env, TEST_FAIL, &res);
4170         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4171         return res;
4172     }
4173 
4174     napi_create_int32(env, TEST_PASS, &res);
4175     return res;
4176 }
4177 
4178 
AudioSessionManagerRegisterError_002(napi_env env,napi_callback_info info)4179 static napi_value AudioSessionManagerRegisterError_002(napi_env env, napi_callback_info info)
4180 {
4181     napi_value res;
4182     OH_AudioSessionManager* audioSessionManager;
4183     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4184     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4185         napi_create_int32(env, TEST_FAIL, &res);
4186         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4187         return res;
4188     }
4189     OH_AudioSession_Strategy strategy = {
4190         CONCURRENCY_MIX_WITH_OTHERS
4191     };
4192 
4193     // 设置音频并发模式并激活音频会话
4194     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4195     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4196         napi_create_int32(env, TEST_FAIL, &res);
4197         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4198         return res;
4199     }
4200 
4201     // 查询音频会话是否已激活。
4202     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
4203     if (!isActivated) {
4204         napi_create_int32(env, TEST_FAIL, &res);
4205         LOG("isActivated, result is: %{public}d", TEST_FAIL);
4206         return res;
4207     }
4208 
4209     // 监听音频会话停用事件
4210     OH_AudioCommon_Result resultRegister =
4211         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(audioSessionManager, nullptr);
4212     if (resultRegister != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
4213         napi_create_int32(env, TEST_FAIL, &res);
4214         LOG("resultRegister, result is: %{public}d", TEST_FAIL);
4215         return res;
4216     }
4217 
4218     // 停用音频会话
4219     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4220     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
4221         napi_create_int32(env, TEST_FAIL, &res);
4222         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4223         return res;
4224     }
4225 
4226     napi_create_int32(env, TEST_PASS, &res);
4227     return res;
4228 }
4229 
4230 
AudioSessionManagerUnregisterError_001(napi_env env,napi_callback_info info)4231 static napi_value AudioSessionManagerUnregisterError_001(napi_env env, napi_callback_info info)
4232 {
4233     napi_value res;
4234     OH_AudioSessionManager* audioSessionManager;
4235     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4236     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4237         napi_create_int32(env, TEST_FAIL, &res);
4238         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4239         return res;
4240     }
4241     OH_AudioSession_Strategy strategy = {
4242         CONCURRENCY_MIX_WITH_OTHERS
4243     };
4244 
4245     // 设置音频并发模式并激活音频会话
4246     OH_AudioCommon_Result resultActivate =
4247         OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4248     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4249         napi_create_int32(env, TEST_FAIL, &res);
4250         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4251         return res;
4252     }
4253 
4254     // 查询音频会话是否已激活。
4255     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
4256     if (!isActivated) {
4257         napi_create_int32(env, TEST_FAIL, &res);
4258         LOG("isActivated, result is: %{public}d", TEST_FAIL);
4259         return res;
4260     }
4261 
4262     // 监听音频会话停用事件
4263     OH_AudioCommon_Result resultRegister =
4264         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(
4265             audioSessionManager, MyAudioSessionDeactivatedCallback);
4266     if (resultRegister != AUDIOCOMMON_RESULT_SUCCESS) {
4267         napi_create_int32(env, TEST_FAIL, &res);
4268         LOG("resultRegister, result is: %{public}d", TEST_FAIL);
4269         return res;
4270     }
4271 
4272     // 取消监听音频会话停用事件
4273     OH_AudioCommon_Result resultUnregister =
4274         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(nullptr, MyAudioSessionDeactivatedCallback);
4275     if (resultUnregister != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
4276         napi_create_int32(env, TEST_FAIL, &res);
4277         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
4278         return res;
4279     }
4280 
4281     // 取消监听音频会话停用事件
4282     resultUnregister =
4283         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(
4284             audioSessionManager, MyAudioSessionDeactivatedCallback);
4285     if (resultUnregister != AUDIOCOMMON_RESULT_SUCCESS) {
4286         napi_create_int32(env, TEST_FAIL, &res);
4287         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
4288         return res;
4289     }
4290 
4291     // 停用音频会话
4292     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4293     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
4294         napi_create_int32(env, TEST_FAIL, &res);
4295         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4296         return res;
4297     }
4298 
4299     napi_create_int32(env, TEST_PASS, &res);
4300     return res;
4301 }
4302 
4303 
AudioSessionManagerUnregisterError_002(napi_env env,napi_callback_info info)4304 static napi_value AudioSessionManagerUnregisterError_002(napi_env env, napi_callback_info info)
4305 {
4306     napi_value res;
4307     OH_AudioSessionManager* audioSessionManager;
4308     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4309     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4310         napi_create_int32(env, TEST_FAIL, &res);
4311         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4312         return res;
4313     }
4314     OH_AudioSession_Strategy strategy = {
4315         CONCURRENCY_MIX_WITH_OTHERS
4316     };
4317 
4318     // 设置音频并发模式并激活音频会话
4319     OH_AudioCommon_Result resultActivate =
4320         OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4321     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4322         napi_create_int32(env, TEST_FAIL, &res);
4323         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4324         return res;
4325     }
4326 
4327     // 查询音频会话是否已激活。
4328     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
4329     if (!isActivated) {
4330         napi_create_int32(env, TEST_FAIL, &res);
4331         LOG("isActivated, result is: %{public}d", TEST_FAIL);
4332         return res;
4333     }
4334 
4335     // 监听音频会话停用事件
4336     OH_AudioCommon_Result resultRegister =
4337         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(
4338             audioSessionManager, MyAudioSessionDeactivatedCallback);
4339     if (resultRegister != AUDIOCOMMON_RESULT_SUCCESS) {
4340         napi_create_int32(env, TEST_FAIL, &res);
4341         LOG("resultRegister, result is: %{public}d", TEST_FAIL);
4342         return res;
4343     }
4344 
4345     // 取消监听音频会话停用事件
4346     OH_AudioCommon_Result resultUnregister =
4347         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(audioSessionManager, nullptr);
4348     if (resultUnregister != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
4349         napi_create_int32(env, TEST_FAIL, &res);
4350         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
4351         return res;
4352     }
4353 
4354     // 取消监听音频会话停用事件
4355     resultUnregister =
4356         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(
4357             audioSessionManager, MyAudioSessionDeactivatedCallback);
4358     if (resultUnregister != AUDIOCOMMON_RESULT_SUCCESS) {
4359         napi_create_int32(env, TEST_FAIL, &res);
4360         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
4361         return res;
4362     }
4363 
4364     // 停用音频会话
4365     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4366     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
4367         napi_create_int32(env, TEST_FAIL, &res);
4368         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4369         return res;
4370     }
4371 
4372     napi_create_int32(env, TEST_PASS, &res);
4373     return res;
4374 }
4375 
4376 
AudioSessionManagerReason_001(napi_env env,napi_callback_info info)4377 static napi_value AudioSessionManagerReason_001(napi_env env, napi_callback_info info)
4378 {
4379     napi_value res;
4380     OH_AudioSessionManager* audioSessionManager;
4381     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4382     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4383         napi_create_int32(env, TEST_FAIL, &res);
4384         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4385         return res;
4386     }
4387     OH_AudioSession_Strategy strategy = {
4388         CONCURRENCY_MIX_WITH_OTHERS
4389     };
4390 
4391     // 设置音频并发模式并激活音频会话
4392     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4393     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4394         napi_create_int32(env, TEST_FAIL, &res);
4395         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4396         return res;
4397     }
4398 
4399     // 查询音频会话是否已激活。
4400     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
4401     if (!isActivated) {
4402         napi_create_int32(env, TEST_FAIL, &res);
4403         LOG("isActivated, result is: %{public}d", TEST_FAIL);
4404         return res;
4405     }
4406 
4407     // create builder
4408     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
4409     OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_MUSIC;
4410     OH_AudioStreamBuilder* builder;
4411     OH_AudioStreamBuilder_Create(&builder, type);
4412     OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
4413     OH_AudioRenderer* audioRenderer1;
4414     OH_AudioStream_Result createResult = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer1);
4415     if (createResult != AUDIOSTREAM_SUCCESS) {
4416         napi_create_int32(env, TEST_FAIL, &res);
4417         return res;
4418     }
4419 
4420     // create audioRenderer1 audioRenderer2
4421     OH_AudioStreamBuilder* builder2;
4422     OH_AudioStreamBuilder_Create(&builder2, type);
4423     OH_AudioStreamBuilder_SetRendererInfo(builder2, usage);
4424     OH_AudioRenderer* audioRenderer2;
4425     createResult = OH_AudioStreamBuilder_GenerateRenderer(builder2, &audioRenderer2);
4426     if (createResult != AUDIOSTREAM_SUCCESS) {
4427         napi_create_int32(env, TEST_FAIL, &res);
4428         return res;
4429     }
4430 
4431     // 监听音频会话停用事件
4432     OH_AudioCommon_Result resultRegister =
4433         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(
4434             audioSessionManager, MyAudioSessionDeactivatedCallback);
4435     if (resultRegister != AUDIOCOMMON_RESULT_SUCCESS) {
4436         napi_create_int32(env, TEST_FAIL, &res);
4437         LOG("resultRegister, result is: %{public}d", TEST_FAIL);
4438         return res;
4439     }
4440 
4441     // start
4442     createResult = OH_AudioRenderer_Start(audioRenderer1);
4443     if (createResult != AUDIOSTREAM_SUCCESS) {
4444         napi_create_int32(env, TEST_FAIL, &res);
4445         return res;
4446     }
4447     //sleep 1 seconds
4448     Delay(1);
4449     createResult = OH_AudioRenderer_Start(audioRenderer2);
4450     if (createResult != AUDIOSTREAM_SUCCESS) {
4451         napi_create_int32(env, TEST_FAIL, &res);
4452         return res;
4453     }
4454     //sleep 1 seconds
4455     Delay(1);
4456 
4457     // stop and release client
4458     OH_AudioRenderer_Release(audioRenderer2);
4459     OH_AudioRenderer_Release(audioRenderer1);
4460     OH_AudioStreamBuilder_Destroy(builder);
4461     OH_AudioStreamBuilder_Destroy(builder2);
4462     Delay(1);
4463 
4464     // 取消监听音频会话停用事件
4465     OH_AudioCommon_Result resultUnregister =
4466         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(
4467             audioSessionManager, MyAudioSessionDeactivatedCallback);
4468     if (resultUnregister != AUDIOCOMMON_RESULT_SUCCESS) {
4469         napi_create_int32(env, TEST_FAIL, &res);
4470         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
4471         return res;
4472     }
4473 
4474     // 停用音频会话
4475     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4476     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
4477         napi_create_int32(env, TEST_FAIL, &res);
4478         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4479         return res;
4480     }
4481 
4482     napi_create_int32(env, TEST_PASS, &res);
4483     return res;
4484 }
4485 
4486 
AudioSessionManagerReason_002(napi_env env,napi_callback_info info)4487 static napi_value AudioSessionManagerReason_002(napi_env env, napi_callback_info info)
4488 {
4489     napi_value res;
4490     OH_AudioSessionManager* audioSessionManager;
4491     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4492     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4493         napi_create_int32(env, TEST_FAIL, &res);
4494         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4495         return res;
4496     }
4497     OH_AudioSession_Strategy strategy = {
4498         CONCURRENCY_MIX_WITH_OTHERS
4499     };
4500 
4501     // 设置音频并发模式并激活音频会话
4502     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4503     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4504         napi_create_int32(env, TEST_FAIL, &res);
4505         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4506         return res;
4507     }
4508 
4509     // 查询音频会话是否已激活。
4510     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
4511     if (!isActivated) {
4512         napi_create_int32(env, TEST_FAIL, &res);
4513         LOG("isActivated, result is: %{public}d", TEST_FAIL);
4514         return res;
4515     }
4516 
4517     // create builder
4518     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
4519     OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_MUSIC;
4520     OH_AudioStreamBuilder* builder;
4521     OH_AudioStreamBuilder_Create(&builder, type);
4522     OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
4523     OH_AudioRenderer* audioRenderer1;
4524     OH_AudioStream_Result createResult = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer1);
4525     if (createResult != AUDIOSTREAM_SUCCESS) {
4526         napi_create_int32(env, TEST_FAIL, &res);
4527         return res;
4528     }
4529 
4530     // 监听音频会话停用事件
4531     OH_AudioCommon_Result resultRegister =
4532         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(
4533             audioSessionManager, MyAudioSessionDeactivatedCallback);
4534     if (resultRegister != AUDIOCOMMON_RESULT_SUCCESS) {
4535         napi_create_int32(env, TEST_FAIL, &res);
4536         LOG("resultRegister, result is: %{public}d", TEST_FAIL);
4537         return res;
4538     }
4539 
4540     // start
4541     createResult = OH_AudioRenderer_Start(audioRenderer1);
4542     if (createResult != AUDIOSTREAM_SUCCESS) {
4543         napi_create_int32(env, TEST_FAIL, &res);
4544         return res;
4545     }
4546     Delay(1);
4547     OH_AudioRenderer_Stop(audioRenderer1);
4548     //sleep 65 seconds 创造超时条件
4549     Delay(65);
4550 
4551     // release client
4552     OH_AudioRenderer_Release(audioRenderer1);
4553     OH_AudioStreamBuilder_Destroy(builder);
4554 
4555     // 取消监听音频会话停用事件
4556     OH_AudioCommon_Result resultUnregister =
4557         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(
4558             audioSessionManager, MyAudioSessionDeactivatedCallback);
4559     if (resultUnregister != AUDIOCOMMON_RESULT_SUCCESS) {
4560         napi_create_int32(env, TEST_FAIL, &res);
4561         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
4562         return res;
4563     }
4564 
4565     napi_create_int32(env, TEST_PASS, &res);
4566     return res;
4567 }
4568 
AudioRendererSetDefaultOutputDevice_01(napi_env env,napi_callback_info info)4569 static napi_value AudioRendererSetDefaultOutputDevice_01(napi_env env, napi_callback_info info)
4570 {
4571     napi_value res;
4572     OH_AudioStreamBuilder* builder;
4573     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
4574     OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_VOICE_COMMUNICATION;
4575     OH_AudioDevice_Type deviceType = AUDIO_DEVICE_TYPE_WIRED_HEADSET;
4576     OH_AudioStreamBuilder_Create(&builder, type);
4577 
4578     // 2. set builder params
4579     OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
4580 
4581     OH_AudioRenderer_Callbacks callbacks;
4582     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
4583     OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr);
4584 
4585     // 3. generate audiorenderer
4586     OH_AudioRenderer* audioRenderer;
4587     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
4588     if (result != AUDIOSTREAM_SUCCESS) {
4589         napi_create_int32(env, TEST_FAIL, &res);
4590         return res;
4591     }
4592 
4593     // 4. start
4594     result = OH_AudioRenderer_Start(audioRenderer);
4595     if (result != AUDIOSTREAM_SUCCESS) {
4596         napi_create_int32(env, TEST_FAIL, &res);
4597         return res;
4598     }
4599 
4600     // 5. OH_AudioRenderer_SetDefaultOutputDevice
4601     result = OH_AudioRenderer_SetDefaultOutputDevice(audioRenderer, deviceType);
4602     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
4603         napi_create_int32(env, TEST_FAIL, &res);
4604     } else {
4605         napi_create_int32(env, TEST_PASS, &res);
4606     }
4607 
4608     OH_AudioRenderer_Release(audioRenderer);
4609     OH_AudioStreamBuilder_Destroy(builder);
4610     return res;
4611 }
4612 
AudioRendererSetDefaultOutputDevice_02(napi_env env,napi_callback_info info)4613 static napi_value AudioRendererSetDefaultOutputDevice_02(napi_env env, napi_callback_info info)
4614 {
4615     napi_value res;
4616     OH_AudioStreamBuilder* builder;
4617     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
4618     OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_MUSIC;
4619     OH_AudioDevice_Type deviceType = AUDIO_DEVICE_TYPE_SPEAKER;
4620     OH_AudioStreamBuilder_Create(&builder, type);
4621 
4622     // 2. set builder params
4623     OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
4624 
4625     OH_AudioRenderer_Callbacks callbacks;
4626     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
4627     OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr);
4628 
4629     // 3. generate audiorenderer
4630     OH_AudioRenderer* audioRenderer;
4631     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
4632     if (result != AUDIOSTREAM_SUCCESS) {
4633         napi_create_int32(env, TEST_FAIL, &res);
4634         return res;
4635     }
4636 
4637     // 4. start
4638     result = OH_AudioRenderer_Start(audioRenderer);
4639     if (result != AUDIOSTREAM_SUCCESS) {
4640         napi_create_int32(env, TEST_FAIL, &res);
4641         return res;
4642     }
4643 
4644     // 5. OH_AudioRenderer_SetDefaultOutputDevice
4645     result = OH_AudioRenderer_SetDefaultOutputDevice(audioRenderer, deviceType);
4646     if (result != AUDIOSTREAM_ERROR_ILLEGAL_STATE) {
4647         napi_create_int32(env, TEST_FAIL, &res);
4648     } else {
4649         napi_create_int32(env, TEST_PASS, &res);
4650     }
4651 
4652     OH_AudioRenderer_Release(audioRenderer);
4653     OH_AudioStreamBuilder_Destroy(builder);
4654     return res;
4655 }
4656 
AudioRendererSetDefaultOutputDevice_03(napi_env env,napi_callback_info info)4657 static napi_value AudioRendererSetDefaultOutputDevice_03(napi_env env, napi_callback_info info)
4658 {
4659     napi_value res;
4660     OH_AudioStreamBuilder* builder;
4661     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
4662     OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_VOICE_COMMUNICATION;
4663     OH_AudioDevice_Type deviceType = AUDIO_DEVICE_TYPE_SPEAKER;
4664     OH_AudioStreamBuilder_Create(&builder, type);
4665 
4666     // 2. set builder params
4667     OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
4668 
4669     OH_AudioRenderer_Callbacks callbacks;
4670     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
4671     OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr);
4672 
4673     // 3. generate audiorenderer
4674     OH_AudioRenderer* audioRenderer;
4675     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
4676     if (result != AUDIOSTREAM_SUCCESS) {
4677         napi_create_int32(env, TEST_FAIL, &res);
4678         return res;
4679     }
4680 
4681     // 4. start
4682     result = OH_AudioRenderer_Start(audioRenderer);
4683     if (result != AUDIOSTREAM_SUCCESS) {
4684         napi_create_int32(env, TEST_FAIL, &res);
4685         return res;
4686     }
4687 
4688     // 5. OH_AudioRenderer_SetDefaultOutputDevice
4689     result = OH_AudioRenderer_SetDefaultOutputDevice(nullptr, deviceType);
4690     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
4691         napi_create_int32(env, TEST_FAIL, &res);
4692     } else {
4693         napi_create_int32(env, TEST_PASS, &res);
4694     }
4695 
4696     OH_AudioRenderer_Release(audioRenderer);
4697     OH_AudioStreamBuilder_Destroy(builder);
4698     return res;
4699 }
4700 
Add(napi_env env,napi_callback_info info)4701 static napi_value Add(napi_env env, napi_callback_info info)
4702 {
4703     size_t requireArgc = 2;
4704     size_t argc = 2;
4705     napi_value args[2] = {nullptr};
4706 
4707     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
4708 
4709     napi_valuetype valuetype0;
4710     napi_typeof(env, args[0], &valuetype0);
4711 
4712     napi_valuetype valuetype1;
4713     napi_typeof(env, args[1], &valuetype1);
4714 
4715     double value0;
4716     napi_get_value_double(env, args[0], &value0);
4717 
4718     double value1;
4719     napi_get_value_double(env, args[1], &value1);
4720 
4721     napi_value sum;
4722     napi_create_double(env, value0 + value1, &sum);
4723 
4724     return sum;
4725 }
4726 
4727 EXTERN_C_START
4728 napi_property_descriptor desc1[] = {
4729     {"createAudioStreamBuilder", nullptr, CreateAudioStreamBuilder, nullptr, nullptr, nullptr, napi_default, nullptr},
4730     {"audioCaptureGenerate", nullptr, AudioCaptureGenerate, nullptr, nullptr, nullptr, napi_default, nullptr},
4731     {"audioCaptureGenerateErr", nullptr, AudioCaptureGenerateErr,
4732         nullptr, nullptr, nullptr, napi_default, nullptr},
4733     {"audioCaptureStart", nullptr, AudioCaptureStart, nullptr, nullptr, nullptr, napi_default, nullptr},
4734     {"audioCaptureStartErr", nullptr, AudioCaptureStartErr, nullptr, nullptr, nullptr, napi_default, nullptr},
4735     {"audioCapturePause", nullptr, AudioCapturePause, nullptr, nullptr, nullptr, napi_default, nullptr},
4736     {"audioCapturePauseErr", nullptr, AudioCapturePauseErr, nullptr, nullptr, nullptr, napi_default, nullptr},
4737     {"audioCaptureStop", nullptr, AudioCaptureStop, nullptr, nullptr, nullptr, napi_default, nullptr},
4738     {"audioCaptureStopErr", nullptr, AudioCaptureStopErr, nullptr, nullptr, nullptr, napi_default, nullptr},
4739     {"audioCaptureFlush", nullptr, AudioCaptureFlush, nullptr, nullptr, nullptr, napi_default, nullptr},
4740     {"audioCaptureFlushErr", nullptr, AudioCaptureFlushErr, nullptr, nullptr, nullptr, napi_default, nullptr},
4741     {"audioCaptureRelease", nullptr, AudioCaptureRelease, nullptr, nullptr, nullptr, napi_default, nullptr},
4742     {"audioCaptureReleaseErr", nullptr, AudioCaptureReleaseErr, nullptr, nullptr, nullptr, napi_default, nullptr},
4743     {"audioCaptureGetParameter", nullptr, AudioCaptureGetParameter,
4744         nullptr, nullptr, nullptr, napi_default, nullptr},
4745     {"audioCaptureGetCurrentState", nullptr, AudioCaptureGetCurrentState,
4746         nullptr, nullptr, nullptr, napi_default, nullptr},
4747     {"audioCaptureGetStreamId", nullptr, AudioCaptureGetStreamId,
4748         nullptr, nullptr, nullptr, napi_default, nullptr},
4749     {"audioCaptureGetSamplingRate", nullptr, AudioCaptureGetSamplingRate,
4750         nullptr, nullptr, nullptr, napi_default, nullptr},
4751     {"audioCaptureGetSampleFormat", nullptr, AudioCaptureGetSampleFormat,
4752         nullptr, nullptr, nullptr, napi_default, nullptr},
4753     {"audioCaptureGetEncodingType", nullptr, AudioCaptureGetEncodingType,
4754         nullptr, nullptr, nullptr, napi_default, nullptr},
4755     {"audioCaptureGetCapturerInfo", nullptr, AudioCaptureGetCapturerInfo,
4756         nullptr, nullptr, nullptr, napi_default, nullptr},
4757     {"audioCaptureGetTimestamp", nullptr, AudioCaptureGetTimestamp,
4758         nullptr, nullptr, nullptr, napi_default, nullptr},
4759     {"audioCaptureGetFramesRead", nullptr, AudioCaptureGetFramesRead,
4760         nullptr, nullptr, nullptr, napi_default, nullptr},
4761     {"audioCaptureGetFrameSizeInCallback", nullptr, AudioCaptureGetFrameSizeInCallback,
4762         nullptr, nullptr, nullptr, napi_default, nullptr},
4763     {"audioRendererSetSpeed", nullptr, AudioRendererSetSpeed,
4764         nullptr, nullptr, nullptr, napi_default, nullptr},
4765     {"audioRendererGetSpeed", nullptr, AudioRendererGetSpeed,
4766         nullptr, nullptr, nullptr, napi_default, nullptr},
4767     {"audioRendererSetGetSpeed", nullptr, AudioRendererSetGetSpeed,
4768         nullptr, nullptr, nullptr, napi_default, nullptr},
4769     {"audioSetRendererOutputDeviceChangeCallback", nullptr, AudioSetRendererOutputDeviceChangeCallback,
4770         nullptr, nullptr, nullptr, napi_default, nullptr},
4771     {"audioRenderGetFramesWritten", nullptr, AudioRenderGetFramesWritten,
4772         nullptr, nullptr, nullptr, napi_default, nullptr},
4773     {"audioRenderGetTimestamp", nullptr, AudioRenderGetTimestamp,
4774         nullptr, nullptr, nullptr, napi_default, nullptr},
4775     {"audioRenderGetFrameSizeInCallback", nullptr, AudioRenderGetFrameSizeInCallback,
4776         nullptr, nullptr, nullptr, napi_default, nullptr},
4777     {"audioRenderGenerate", nullptr, AudioRenderGenerate, nullptr, nullptr, nullptr, napi_default, nullptr},
4778     {"audioRenderGenerateErr", nullptr, AudioRenderGenerateErr, nullptr, nullptr, nullptr, napi_default, nullptr},
4779     {"audioRenderStart", nullptr, AudioRenderStart, nullptr, nullptr, nullptr, napi_default, nullptr},
4780     {"audioRenderStartErr", nullptr, AudioRenderStartErr, nullptr, nullptr, nullptr, napi_default, nullptr},
4781     {"audioRenderPause", nullptr, AudioRenderPause, nullptr, nullptr, nullptr, napi_default, nullptr},
4782     {"audioRenderPauseErr", nullptr, AudioRenderPauseErr, nullptr, nullptr, nullptr, napi_default, nullptr},
4783     {"audioRenderStop", nullptr, AudioRenderStop, nullptr, nullptr, nullptr, napi_default, nullptr},
4784     {"audioRenderStopErr", nullptr, AudioRenderStopErr, nullptr, nullptr, nullptr, napi_default, nullptr},
4785     {"audioRenderFlush", nullptr, AudioRenderFlush, nullptr, nullptr, nullptr, napi_default, nullptr},
4786     {"audioRenderFlushErr", nullptr, AudioRenderFlushErr, nullptr, nullptr, nullptr, napi_default, nullptr},
4787     {"audioRenderRelease", nullptr, AudioRenderRelease, nullptr, nullptr, nullptr, napi_default, nullptr},
4788     {"audioRenderReleaseErr", nullptr, AudioRenderReleaseErr, nullptr, nullptr, nullptr, napi_default, nullptr},
4789     {"audioRenderGetCurrentState", nullptr, AudioRenderGetCurrentState,
4790         nullptr, nullptr, nullptr, napi_default, nullptr},
4791     {"audioRenderGetParameter", nullptr, AudioRenderGetParameter,
4792         nullptr, nullptr, nullptr, napi_default, nullptr},
4793     {"audioRenderGetStreamId", nullptr, AudioRenderGetStreamId, nullptr, nullptr, nullptr, napi_default, nullptr},
4794     {"audioRenderGetSamplingRate", nullptr, AudioRenderGetSamplingRate,
4795         nullptr, nullptr, nullptr, napi_default, nullptr},
4796     {"audioRenderGetSampleFormat", nullptr, AudioRenderGetSampleFormat,
4797         nullptr, nullptr, nullptr, napi_default, nullptr},
4798     {"audioRenderGetEncodingType", nullptr, AudioRenderGetEncodingType,
4799         nullptr, nullptr, nullptr, napi_default, nullptr},
4800     {"audioRenderGetRendererInfo", nullptr, AudioRenderGetRendererInfo,
4801         nullptr, nullptr, nullptr, napi_default, nullptr},
4802     {"audioStreamBuilderSetSamplingRate", nullptr, AudioStreamBuilderSetSamplingRate,
4803         nullptr, nullptr, nullptr, napi_default, nullptr},
4804     {"audioStreamBuilderSetChannelCount", nullptr, AudioStreamBuilderSetChannelCount,
4805         nullptr, nullptr, nullptr, napi_default, nullptr},
4806     {"audioStreamBuilderSetSampleFormat", nullptr, AudioStreamBuilderSetSampleFormat,
4807         nullptr, nullptr, nullptr, napi_default, nullptr},
4808     {"audioStreamBuilderSetEncodingType", nullptr, AudioStreamBuilderSetEncodingType,
4809         nullptr, nullptr, nullptr, napi_default, nullptr},
4810     {"audioStreamBuilderSetLatencyMode", nullptr, AudioStreamBuilderSetLatencyMode,
4811         nullptr, nullptr, nullptr, napi_default, nullptr},
4812     {"audioStreamBuilderSetRendererInfo", nullptr, AudioStreamBuilderSetRendererInfo,
4813         nullptr, nullptr, nullptr, napi_default, nullptr},
4814     {"audioStreamBuilderSetCapturerInfo", nullptr, AudioStreamBuilderSetCapturerInfo,
4815         nullptr, nullptr, nullptr, napi_default, nullptr},
4816     {"audioStreamBuilderSetRendererCallback", nullptr, AudioStreamBuilderSetRendererCallback,
4817         nullptr, nullptr, nullptr, napi_default, nullptr},
4818     {"audioStreamBuilderSetCapturerCallback", nullptr, AudioStreamBuilderSetCapturerCallback,
4819         nullptr, nullptr, nullptr, napi_default, nullptr},
4820     {"audioCaptureGetChannelCount", nullptr, AudioCaptureGetChannelCount,
4821         nullptr, nullptr, nullptr, napi_default, nullptr},
4822     {"audioRenderGetChannelCount", nullptr, AudioRenderGetChannelCount,
4823         nullptr, nullptr, nullptr, napi_default, nullptr},
4824     {"audioStreamBuilderSetFrameSizeInCallback", nullptr, AudioStreamBuilderSetFrameSizeInCallback,
4825         nullptr, nullptr, nullptr, napi_default, nullptr},
4826     {"audioRendererGetVolume_01", nullptr, AudioRendererGetVolume_01,
4827         nullptr, nullptr, nullptr, napi_default, nullptr},
4828     {"audioRendererSetVolume_01", nullptr, AudioRendererSetVolume_01,
4829         nullptr, nullptr, nullptr, napi_default, nullptr},
4830     {"audioRendererSetVolume_02", nullptr, AudioRendererSetVolume_02,
4831         nullptr, nullptr, nullptr, napi_default, nullptr},
4832     {"audioRendererSetVolume_03", nullptr, AudioRendererSetVolume_03,
4833         nullptr, nullptr, nullptr, napi_default, nullptr},
4834     {"audioRendererSetVolume_04", nullptr, AudioRendererSetVolume_04,
4835         nullptr, nullptr, nullptr, napi_default, nullptr},
4836     {"audioRendererSetVolume_05", nullptr, AudioRendererSetVolume_05,
4837         nullptr, nullptr, nullptr, napi_default, nullptr},
4838     {"audioRendererSetVolume_06", nullptr, AudioRendererSetVolume_06,
4839         nullptr, nullptr, nullptr, napi_default, nullptr},
4840     {"audioRendererSetVolumeWithRamp_01", nullptr, AudioRendererSetVolumeWithRamp_01,
4841         nullptr, nullptr, nullptr, napi_default, nullptr},
4842     {"audioRendererSetVolumeWithRamp_02", nullptr, AudioRendererSetVolumeWithRamp_02,
4843         nullptr, nullptr, nullptr, napi_default, nullptr},
4844     {"audioRendererSetVolumeWithRamp_03", nullptr, AudioRendererSetVolumeWithRamp_03,
4845         nullptr, nullptr, nullptr, napi_default, nullptr},
4846     {"audioRendererSetVolumeWithRamp_04", nullptr, AudioRendererSetVolumeWithRamp_04,
4847         nullptr, nullptr, nullptr, napi_default, nullptr},
4848     {"audioRendererSetVolumeWithRamp_05", nullptr, AudioRendererSetVolumeWithRamp_05,
4849         nullptr, nullptr, nullptr, napi_default, nullptr},
4850     {"audioRendererSetVolumeWithRamp_06", nullptr, AudioRendererSetVolumeWithRamp_06,
4851         nullptr, nullptr, nullptr, napi_default, nullptr},
4852     {"audioRendererSetVolumeWithRamp_07", nullptr, AudioRendererSetVolumeWithRamp_07,
4853         nullptr, nullptr, nullptr, napi_default, nullptr},
4854     {"audioRendererSetVolumeWithRamp_08", nullptr, AudioRendererSetVolumeWithRamp_08,
4855         nullptr, nullptr, nullptr, napi_default, nullptr},
4856     {"audioRendererSetVolumeWithRamp_09", nullptr, AudioRendererSetVolumeWithRamp_09,
4857         nullptr, nullptr, nullptr, napi_default, nullptr},
4858     {"audioRendererSetOnMarkReached_01", nullptr, AudioRendererSetOnMarkReached_01,
4859         nullptr, nullptr, nullptr, napi_default, nullptr},
4860     {"audioRendererSetOnMarkReached_02", nullptr, AudioRendererSetOnMarkReached_02,
4861         nullptr, nullptr, nullptr, napi_default, nullptr},
4862     {"audioRendererSetOnMarkReached_03", nullptr, AudioRendererSetOnMarkReached_03,
4863         nullptr, nullptr, nullptr, napi_default, nullptr},
4864     {"audioRendererSetOnMarkReached_04", nullptr, AudioRendererSetOnMarkReached_04,
4865         nullptr, nullptr, nullptr, napi_default, nullptr},
4866     {"audioRendererSetOnMarkReached_05", nullptr, AudioRendererSetOnMarkReached_05,
4867         nullptr, nullptr, nullptr, napi_default, nullptr},
4868     {"audioRendererSetOnMarkReached_06", nullptr, AudioRendererSetOnMarkReached_06,
4869         nullptr, nullptr, nullptr, napi_default, nullptr},
4870     {"audioRendererSetOnMarkReached_07", nullptr, AudioRendererSetOnMarkReached_07,
4871         nullptr, nullptr, nullptr, napi_default, nullptr},
4872     {"audioRendererSetOnMarkReached_08", nullptr, AudioRendererSetOnMarkReached_08,
4873         nullptr, nullptr, nullptr, napi_default, nullptr},
4874     {"audioRendererCancelMark_01", nullptr, AudioRendererCancelMark_01,
4875         nullptr, nullptr, nullptr, napi_default, nullptr},
4876     {"audioRendererCancelMark_02", nullptr, AudioRendererCancelMark_02,
4877         nullptr, nullptr, nullptr, napi_default, nullptr},
4878     {"audioRendererCancelMark_03", nullptr, AudioRendererCancelMark_03,
4879         nullptr, nullptr, nullptr, napi_default, nullptr},
4880     {"audioRendererSetInterruptMode_01", nullptr, AudioRendererSetInterruptMode_01,
4881         nullptr, nullptr, nullptr, napi_default, nullptr},
4882     {"audioRendererSetInterruptMode_02", nullptr, AudioRendererSetInterruptMode_02,
4883         nullptr, nullptr, nullptr, napi_default, nullptr},
4884     {"audioRendererSetInterruptMode_03", nullptr, AudioRendererSetInterruptMode_03,
4885         nullptr, nullptr, nullptr, napi_default, nullptr},
4886     {"audioRendererSetInterruptMode_04", nullptr, AudioRendererSetInterruptMode_04,
4887         nullptr, nullptr, nullptr, napi_default, nullptr},
4888     {"audioManagerGetAudioRoutingManager_01", nullptr, AudioManagerGetAudioRoutingManager_01,
4889         nullptr, nullptr, nullptr, napi_default, nullptr},
4890     {"audioRoutingManagerGetDevices_01", nullptr, AudioRoutingManagerGetDevices_01,
4891         nullptr, nullptr, nullptr, napi_default, nullptr},
4892     {"audioRoutingManagerGetDevices_02", nullptr, AudioRoutingManagerGetDevices_02,
4893         nullptr, nullptr, nullptr, napi_default, nullptr},
4894     {"audioRoutingManagerGetDevices_03", nullptr, AudioRoutingManagerGetDevices_03,
4895         nullptr, nullptr, nullptr, napi_default, nullptr},
4896     {"audioRoutingManagerGetDevices_04", nullptr, AudioRoutingManagerGetDevices_04,
4897         nullptr, nullptr, nullptr, napi_default, nullptr},
4898     {"audioRoutingManagerGetDevices_05", nullptr, AudioRoutingManagerGetDevices_05,
4899         nullptr, nullptr, nullptr, napi_default, nullptr},
4900     {"audioRoutingManagerGetDevices_06", nullptr, AudioRoutingManagerGetDevices_06,
4901         nullptr, nullptr, nullptr, napi_default, nullptr},
4902     {"audioRoutingManagerGetDevices_07", nullptr, AudioRoutingManagerGetDevices_07,
4903         nullptr, nullptr, nullptr, napi_default, nullptr},
4904     {"audioManagerGetManager_01", nullptr, AudioManagerGetManager_01, nullptr, nullptr, nullptr, napi_default,
4905         nullptr},
4906     {"audioManagerGetManager_02", nullptr, AudioManagerGetManager_02, nullptr, nullptr, nullptr, napi_default,
4907         nullptr},
4908     {"audioManagerGetAudioScene_01", nullptr, AudioManagerGetAudioScene_01, nullptr, nullptr, nullptr, napi_default,
4909         nullptr}
4910 };
4911 napi_property_descriptor desc2[] = {
4912     {"audioManagerGetAudioScene_02", nullptr, AudioManagerGetAudioScene_02, nullptr, nullptr, nullptr, napi_default,
4913         nullptr},
4914     {"audioRoutingManagerGetAvailableDevices001", nullptr, AudioRoutingManagerGetAvailableDevices001, nullptr,
4915         nullptr, nullptr, napi_default, nullptr},
4916     {"audioRoutingManagerGetPreferredOutputDevice001", nullptr, AudioRoutingManagerGetPreferredOutputDevice001,
4917         nullptr, nullptr, nullptr, napi_default, nullptr},
4918     {"audioRoutingManagerGetPreferredInputDevice001", nullptr, AudioRoutingManagerGetPreferredInputDevice001,
4919         nullptr, nullptr, nullptr, napi_default, nullptr},
4920     {"audioRoutingManagerSetMicBlockStatusCallback_001", nullptr,
4921         AudioRoutingManagerSetMicBlockStatusCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
4922     {"audioRoutingManagerSetMicBlockStatusCallback_002", nullptr,
4923         AudioRoutingManagerSetMicBlockStatusCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
4924     {"audioRoutingManagerRegisterDeviceChangeCallback_001", nullptr,
4925         AudioRoutingManagerRegisterDeviceChangeCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
4926     {"audioRoutingManagerRegisterDeviceChangeCallback_002", nullptr,
4927         AudioRoutingManagerRegisterDeviceChangeCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
4928     {"audioRoutingManagerRegisterDeviceChangeCallback_003", nullptr,
4929         AudioRoutingManagerRegisterDeviceChangeCallback_003, nullptr, nullptr, nullptr, napi_default, nullptr},
4930     {"audioRoutingManagerRegisterDeviceChangeCallback_004", nullptr,
4931         AudioRoutingManagerRegisterDeviceChangeCallback_004, nullptr, nullptr, nullptr, napi_default, nullptr},
4932     {"audioRoutingManagerRegisterDeviceChangeCallback_005", nullptr,
4933         AudioRoutingManagerRegisterDeviceChangeCallback_005, nullptr, nullptr, nullptr, napi_default, nullptr},
4934     {"audioRoutingManagerRegisterDeviceChangeCallback_006", nullptr,
4935         AudioRoutingManagerRegisterDeviceChangeCallback_006, nullptr, nullptr, nullptr, napi_default, nullptr},
4936     {"audioRoutingManagerRegisterDeviceChangeCallback_007", nullptr,
4937         AudioRoutingManagerRegisterDeviceChangeCallback_007, nullptr, nullptr, nullptr, napi_default, nullptr},
4938     {"audioRoutingManagerRegisterDeviceChangeCallback_008", nullptr,
4939         AudioRoutingManagerRegisterDeviceChangeCallback_008, nullptr, nullptr, nullptr, napi_default, nullptr},
4940     {"audioRoutingManagerUnregisterDeviceChangeCallback_001", nullptr,
4941         AudioRoutingManagerUnregisterDeviceChangeCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
4942     {"audioRoutingManagerUnregisterDeviceChangeCallback_002", nullptr,
4943         AudioRoutingManagerUnregisterDeviceChangeCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
4944     {"audioRoutingManagerUnregisterDeviceChangeCallback_003", nullptr,
4945         AudioRoutingManagerUnregisterDeviceChangeCallback_003, nullptr, nullptr, nullptr, napi_default, nullptr},
4946     {"audioRoutingManagerReleaseDevices_001", nullptr, AudioRoutingManagerReleaseDevices_001,
4947         nullptr, nullptr, nullptr, napi_default, nullptr},
4948     {"audioRoutingManagerReleaseDevices_002", nullptr, AudioRoutingManagerReleaseDevices_002,
4949         nullptr, nullptr, nullptr, napi_default, nullptr},
4950     {"audioAudioDeviceDescriptorGetDeviceType_001", nullptr, AudioAudioDeviceDescriptorGetDeviceType_001,
4951         nullptr, nullptr, nullptr, napi_default, nullptr},
4952     {"audioAudioDeviceDescriptorGetDeviceType_002", nullptr, AudioAudioDeviceDescriptorGetDeviceType_002,
4953         nullptr, nullptr, nullptr, napi_default, nullptr},
4954     {"audioAudioDeviceDescriptorGetDeviceType_003", nullptr, AudioAudioDeviceDescriptorGetDeviceType_003,
4955         nullptr, nullptr, nullptr, napi_default, nullptr},
4956     {"audioAudioDeviceDescriptorGetDeviceRole_001", nullptr, AudioAudioDeviceDescriptorGetDeviceRole_001,
4957         nullptr, nullptr, nullptr, napi_default, nullptr},
4958     {"audioAudioDeviceDescriptorGetDeviceRole_002", nullptr, AudioAudioDeviceDescriptorGetDeviceRole_002,
4959         nullptr, nullptr, nullptr, napi_default, nullptr},
4960     {"audioAudioDeviceDescriptorGetDeviceRole_003", nullptr, AudioAudioDeviceDescriptorGetDeviceRole_003,
4961         nullptr, nullptr, nullptr, napi_default, nullptr},
4962     {"audioAudioDeviceDescriptorGetDeviceId_001", nullptr, AudioAudioDeviceDescriptorGetDeviceId_001,
4963         nullptr, nullptr, nullptr, napi_default, nullptr},
4964     {"audioAudioDeviceDescriptorGetDeviceId_002", nullptr, AudioAudioDeviceDescriptorGetDeviceId_002,
4965         nullptr, nullptr, nullptr, napi_default, nullptr},
4966     {"audioAudioDeviceDescriptorGetDeviceId_003", nullptr, AudioAudioDeviceDescriptorGetDeviceId_003,
4967         nullptr, nullptr, nullptr, napi_default, nullptr},
4968     {"audioAudioDeviceDescriptorGetDeviceName_001", nullptr, AudioAudioDeviceDescriptorGetDeviceName_001,
4969         nullptr, nullptr, nullptr, napi_default, nullptr},
4970     {"audioAudioDeviceDescriptorGetDeviceName_002", nullptr, AudioAudioDeviceDescriptorGetDeviceName_002,
4971         nullptr, nullptr, nullptr, napi_default, nullptr},
4972     {"audioAudioDeviceDescriptorGetDeviceName_003", nullptr, AudioAudioDeviceDescriptorGetDeviceName_003,
4973         nullptr, nullptr, nullptr, napi_default, nullptr},
4974     {"audioAudioDeviceDescriptorGetDeviceAddress_001", nullptr, AudioAudioDeviceDescriptorGetDeviceAddress_001,
4975         nullptr, nullptr, nullptr, napi_default, nullptr},
4976     {"audioAudioDeviceDescriptorGetDeviceAddress_002", nullptr, AudioAudioDeviceDescriptorGetDeviceAddress_002,
4977         nullptr, nullptr, nullptr, napi_default, nullptr},
4978     {"audioAudioDeviceDescriptorGetDeviceAddress_003", nullptr, AudioAudioDeviceDescriptorGetDeviceAddress_003,
4979         nullptr, nullptr, nullptr, napi_default, nullptr},
4980     {"audioAudioDeviceDescriptorGetDeviceSampleRates_001", nullptr,
4981         AudioAudioDeviceDescriptorGetDeviceSampleRates_001, nullptr, nullptr, nullptr, napi_default, nullptr},
4982     {"audioAudioDeviceDescriptorGetDeviceSampleRates_002", nullptr,
4983         AudioAudioDeviceDescriptorGetDeviceSampleRates_002, nullptr, nullptr, nullptr, napi_default, nullptr},
4984     {"audioAudioDeviceDescriptorGetDeviceSampleRates_003", nullptr,
4985         AudioAudioDeviceDescriptorGetDeviceSampleRates_003, nullptr, nullptr, nullptr, napi_default, nullptr},
4986     {"audioAudioDeviceDescriptorGetDeviceSampleRates_004", nullptr,
4987         AudioAudioDeviceDescriptorGetDeviceSampleRates_004, nullptr, nullptr, nullptr, napi_default, nullptr},
4988     {"audioAudioDeviceDescriptorGetDeviceChannelCounts_001", nullptr,
4989         AudioAudioDeviceDescriptorGetDeviceChannelCounts_001, nullptr, nullptr, nullptr, napi_default, nullptr},
4990     {"audioAudioDeviceDescriptorGetDeviceChannelCounts_002", nullptr,
4991         AudioAudioDeviceDescriptorGetDeviceChannelCounts_002, nullptr, nullptr, nullptr, napi_default, nullptr},
4992     {"audioAudioDeviceDescriptorGetDeviceChannelCounts_003", nullptr,
4993         AudioAudioDeviceDescriptorGetDeviceChannelCounts_003, nullptr, nullptr, nullptr, napi_default, nullptr},
4994     {"audioAudioDeviceDescriptorGetDeviceChannelCounts_004", nullptr,
4995         AudioAudioDeviceDescriptorGetDeviceChannelCounts_004, nullptr, nullptr, nullptr, napi_default, nullptr},
4996     {"audioAudioDeviceDescriptorGetDeviceDisplayName_001", nullptr,
4997         AudioAudioDeviceDescriptorGetDeviceDisplayName_001, nullptr, nullptr, nullptr, napi_default, nullptr},
4998     {"audioAudioDeviceDescriptorGetDeviceDisplayName_002", nullptr,
4999         AudioAudioDeviceDescriptorGetDeviceDisplayName_002, nullptr, nullptr, nullptr, napi_default, nullptr},
5000     {"audioAudioDeviceDescriptorGetDeviceDisplayName_003", nullptr,
5001         AudioAudioDeviceDescriptorGetDeviceDisplayName_003, nullptr, nullptr, nullptr, napi_default, nullptr},
5002     {"audioAudioDeviceDescriptorGetDeviceEncodingTypes_001", nullptr,
5003         AudioAudioDeviceDescriptorGetDeviceEncodingTypes_001, nullptr, nullptr, nullptr, napi_default, nullptr},
5004     {"audioAudioDeviceDescriptorGetDeviceEncodingTypes_002", nullptr,
5005         AudioAudioDeviceDescriptorGetDeviceEncodingTypes_002, nullptr, nullptr, nullptr, napi_default, nullptr},
5006     {"audioAudioDeviceDescriptorGetDeviceEncodingTypes_003", nullptr,
5007         AudioAudioDeviceDescriptorGetDeviceEncodingTypes_003, nullptr, nullptr, nullptr, napi_default, nullptr},
5008     {"audioAudioDeviceDescriptorGetDeviceEncodingTypes_004", nullptr,
5009         AudioAudioDeviceDescriptorGetDeviceEncodingTypes_004, nullptr, nullptr, nullptr, napi_default, nullptr},
5010     {"audioAudioInternalRecordingSuccess01", nullptr,
5011         AudioAudioInternalRecordingSuccess01, nullptr, nullptr, nullptr, napi_default, nullptr},
5012     {"audioAudioInternalRecordingSuccess02", nullptr,
5013         AudioAudioInternalRecordingSuccess02, nullptr, nullptr, nullptr, napi_default, nullptr},
5014     {"audioAudioInternalRecordingFalse", nullptr,
5015         AudioAudioInternalRecordingFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
5016     {"audioStreamBuilderSetRendererWriteDataCallback_001", nullptr,
5017         AudioStreamBuilderSetRendererWriteDataCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
5018     {"audioStreamBuilderSetRendererWriteDataCallback_002", nullptr,
5019         AudioStreamBuilderSetRendererWriteDataCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
5020     {"audioCapturerGetOverflowCount_001", nullptr,
5021         audioCapturerGetOverflowCount_001, nullptr, nullptr, nullptr, napi_default, nullptr},
5022     {"AudioSessionManagerStrategy_001", nullptr,
5023         AudioSessionManagerStrategy_001, nullptr, nullptr, nullptr, napi_default, nullptr},
5024     {"AudioSessionManagerStrategy_002", nullptr,
5025         AudioSessionManagerStrategy_002, nullptr, nullptr, nullptr, napi_default, nullptr},
5026     {"AudioSessionManagerStrategy_003", nullptr,
5027         AudioSessionManagerStrategy_003, nullptr, nullptr, nullptr, napi_default, nullptr},
5028     {"AudioSessionManagerStrategy_004", nullptr,
5029         AudioSessionManagerStrategy_004, nullptr, nullptr, nullptr, napi_default, nullptr},
5030     {"AudioSessionManagerStrategyError_001", nullptr,
5031         AudioSessionManagerStrategyError_001, nullptr, nullptr, nullptr, napi_default, nullptr},
5032     {"AudioSessionManagerActivatedError_001", nullptr,
5033         AudioSessionManagerActivatedError_001, nullptr, nullptr, nullptr, napi_default, nullptr},
5034     {"AudioSessionManagerStopError_001", nullptr,
5035         AudioSessionManagerStopError_001, nullptr, nullptr, nullptr, napi_default, nullptr},
5036     {"AudioSessionManagerStopError_002", nullptr,
5037         AudioSessionManagerStopError_002, nullptr, nullptr, nullptr, napi_default, nullptr},
5038     {"AudioSessionManagerRegisterError_001", nullptr,
5039         AudioSessionManagerRegisterError_001, nullptr, nullptr, nullptr, napi_default, nullptr},
5040     {"AudioSessionManagerRegisterError_002", nullptr,
5041         AudioSessionManagerRegisterError_002, nullptr, nullptr, nullptr, napi_default, nullptr},
5042     {"AudioSessionManagerUnregisterError_001", nullptr,
5043         AudioSessionManagerUnregisterError_001, nullptr, nullptr, nullptr, napi_default, nullptr},
5044     {"AudioSessionManagerUnregisterError_002", nullptr,
5045         AudioSessionManagerUnregisterError_002, nullptr, nullptr, nullptr, napi_default, nullptr},
5046     {"AudioSessionManagerReason_001", nullptr,
5047         AudioSessionManagerReason_001, nullptr, nullptr, nullptr, napi_default, nullptr},
5048     {"AudioSessionManagerReason_002", nullptr,
5049         AudioSessionManagerReason_002, nullptr, nullptr, nullptr, napi_default, nullptr},
5050     {"audioRendererSetDefaultOutputDevice_01", nullptr,
5051         AudioRendererSetDefaultOutputDevice_01, nullptr, nullptr, nullptr, napi_default, nullptr},
5052     {"audioRendererSetDefaultOutputDevice_02", nullptr,
5053         AudioRendererSetDefaultOutputDevice_02, nullptr, nullptr, nullptr, napi_default, nullptr},
5054     {"audioRendererSetDefaultOutputDevice_03", nullptr,
5055         AudioRendererSetDefaultOutputDevice_03, nullptr, nullptr, nullptr, napi_default, nullptr}
5056 };
5057 
Init(napi_env env,napi_value exports)5058 static napi_value Init(napi_env env, napi_value exports)
5059 {
5060     size_t mergedLength = sizeof(desc1) / sizeof(desc1[0]) +
5061     sizeof(desc2) / sizeof(desc2[0]);
5062     napi_property_descriptor mergedArray[mergedLength];
5063     for (size_t i = 0; i < sizeof(desc1) / sizeof(desc1[0]); ++i) {
5064         mergedArray[i] = desc1[i];
5065     }
5066     for (size_t i = 0; i < sizeof(desc2) / sizeof(desc2[0]); ++i) {
5067         mergedArray[sizeof(desc1) / sizeof(desc1[0]) + i] = desc2[i];
5068     }
5069     napi_define_properties(env, exports, mergedLength, mergedArray);
5070     return exports;
5071 }
5072 EXTERN_C_END
5073 
5074 /*
5075 
5076  * module define
5077  */
5078 static napi_module g_module = {
5079     .nm_version = 1,
5080     .nm_flags = 0,
5081     .nm_filename = nullptr,
5082     .nm_register_func = Init,
5083     .nm_modname = "entry",
5084     .nm_priv = ((void *)0),
5085     .reserved = {0}};
5086 
5087 /*
5088  * module register
5089  */
RegisterEntryModule(void)5090 extern "C" __attribute__((constructor)) void RegisterEntryModule(void)
5091 {
5092     napi_module_register(&g_module);
5093 }