• 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 "ohaudio/native_audio_resource_manager.h"
32 #include "ohaudio/native_audio_volume_manager.h"
33 #include "ohaudio/native_audio_stream_manager.h"
34 #include "hilog/log.h"
35 #include <ctime>
36 #include <set>
37 #include <algorithm>
38 #include <random>
39 
40 #include "AudioResourceManagerTest.h"
41 
42 #define AUDIO_LOG_TAG "AUDIO_TAGLOG"
43 #define AUDIO_LOG_DOMAIN 0x3200
44 
45 #define LOG(fmt, ...) (void)OH_LOG_Print(LOG_APP, LOG_INFO, AUDIO_LOG_DOMAIN, AUDIO_LOG_TAG, fmt, ##__VA_ARGS__)
46 
47 const int32_t g_samplingRate = 48000; // 48000:g_samplingRate value
48 const int32_t g_channelCount = 2; // 2:g_channelCount value
49 const int32_t g_latencyMode = 0;
50 const int32_t g_sampleFormat = 1;
51 const int32_t g_frameSize = 240; // 240:g_frameSize value
52 const int32_t CHANNEL_LAYOUT = 3;
53 const int32_t ENCODING_TYPE = 0;
54 const int32_t STATE_TIME = 0;
55 const int32_t END_TIME = 20;
56 const int32_t NORMAL_RATE = 32000;
57 bool g_flag = false;
58 bool g_mark = false;
59 static std::string g_filePath = "/data/storage/el2/base/haps/entry_test/files/test_44100_2.wav";
60 FILE *g_file = nullptr;
61 bool g_readEnd = false;
62 const int32_t TEST_PASS = 0; // success result
63 const int32_t TEST_FAIL = 1; // fail result
64 
65 static OH_AudioCapturer *g_audioCapturer;
66 static OH_AudioRenderer *g_audioRenderer;
67 static OH_AudioStreamBuilder *g_capturerBuilder;
68 static OH_AudioStreamBuilder *g_rendererBuilder;
69 static std::string g_pcmFilePath = "/data/storage/el2/base/haps/entry_test/files/oh_test_audio.pcm";
70 FILE *g_pcmFile = nullptr;
71 
72 OH_AudioStream_Usage g_ohRendererStreamUsage;
73 OH_AudioStream_SourceType g_ohCapturerStreamUsage;
74 OH_AudioStream_SampleFormat g_ohFormat;
75 static int32_t g_ohSamplingRate;
76 static int32_t g_ohChannelCount;
77 OH_AudioStream_LatencyMode g_ohLatencyMode;
78 constexpr int32_t INVALID_VALUE = -1;
79 
80 static OH_AudioRenderer *audioRenderer;
81 static OH_AudioStreamBuilder *builder;
82 
83 size_t g_fileOffset = 0;
84 bool randomTestEnable = true;
85 size_t latencySize = 0;
86 constexpr size_t g_smallUnit = 4;
87 constexpr size_t g_randomLowerBound = 1;
88 
89 std::random_device rd;  // 真随机数源(硬件依赖)
90 std::mt19937 gen(rd()); // 使用默认种子
91 // 2. 分布器:指定分布区间
92 std::uniform_int_distribution<> dist;  // [1, 100]
93 
94 enum class TEST_RESULT {
95     TEST_FAIL = 0,
96     TEST_PASS = 1
97 };
98 
99 const std::set<OH_AudioStream_Usage> VALID_OH_STREAM_USAGES = {
100     AUDIOSTREAM_USAGE_UNKNOWN,
101     AUDIOSTREAM_USAGE_MUSIC,
102     AUDIOSTREAM_USAGE_VOICE_COMMUNICATION,
103     AUDIOSTREAM_USAGE_VOICE_ASSISTANT,
104     AUDIOSTREAM_USAGE_ALARM,
105     AUDIOSTREAM_USAGE_VOICE_MESSAGE,
106     AUDIOSTREAM_USAGE_RINGTONE,
107     AUDIOSTREAM_USAGE_NOTIFICATION,
108     AUDIOSTREAM_USAGE_ACCESSIBILITY,
109     AUDIOSTREAM_USAGE_MOVIE,
110     AUDIOSTREAM_USAGE_GAME,
111     AUDIOSTREAM_USAGE_AUDIOBOOK,
112     AUDIOSTREAM_USAGE_NAVIGATION,
113     AUDIOSTREAM_USAGE_VIDEO_COMMUNICATION
114 };
115 
116 const std::set<OH_AudioStream_SourceType> VALID_OH_SOURCE_TYPES = {
117     AUDIOSTREAM_SOURCE_TYPE_MIC,
118     AUDIOSTREAM_SOURCE_TYPE_VOICE_RECOGNITION,
119     AUDIOSTREAM_SOURCE_TYPE_PLAYBACK_CAPTURE,
120     AUDIOSTREAM_SOURCE_TYPE_VOICE_COMMUNICATION,
121     AUDIOSTREAM_SOURCE_TYPE_VOICE_MESSAGE,
122     AUDIOSTREAM_SOURCE_TYPE_CAMCORDER
123 };
124 
uDelay(int time)125 void uDelay(int time)//time*1000为秒数
126 {
127     clock_t now = clock();
128     while(clock() - now < time);
129 }
130 
Delay(int time)131 void Delay(int time)//time为秒数
132 {
133     time = time * 1000;
134     clock_t now = clock();
135     while(clock() - now < time);
136 }
137 
AudioRendererOnMarkReachedWriteData(OH_AudioRenderer * capturer,void * userData,void * buffer,int32_t bufferLen)138 static int32_t AudioRendererOnMarkReachedWriteData(OH_AudioRenderer* capturer,
139     void* userData,
140     void* buffer,
141     int32_t bufferLen)
142 {
143     size_t readCount = fread(buffer, bufferLen, 1, g_file);
144     if (!readCount) {
145         if (ferror(g_file)) {
146             LOG("Error reading myfile");
147         } else if (feof(g_file)) {
148             LOG("EOF found");
149             g_readEnd = true;
150         }
151     }
152     return 0;
153 }
154 
155 
MyAudioSessionDeactivatedCallback(OH_AudioSession_DeactivatedEvent event)156 static int32_t MyAudioSessionDeactivatedCallback(OH_AudioSession_DeactivatedEvent event)
157 {
158     switch(event.reason) {
159         case DEACTIVATED_LOWER_PRIORITY:
160         // 应用焦点被抢占
161             LOG("MyAudioSessionDeactivatedCallback, event is %{public}d", event.reason);
162             return 0;
163         case DEACTIVATED_TIMEOUT:
164         // 超时
165             LOG("MyAudioSessionDeactivatedCallback, event is %{public}d", event.reason);
166           return 0;
167     }
168 }
169 
MyOnAudioSceneChangeCallback(void * userData,OH_AudioScene scene)170 void MyOnAudioSceneChangeCallback(void *userData, OH_AudioScene scene)
171 {
172     (void)userData;
173     LOG("MyOnAudioSceneChangeCallback, scene is %{public}d", scene);
174 }
175 
MyOnStreamVolumeChangeCallback1(void * userData,OH_AudioStream_Usage usage,int32_t volumeLevel,bool updateUi)176 void MyOnStreamVolumeChangeCallback1(void *userData, OH_AudioStream_Usage usage, int32_t volumeLevel, bool updateUi)
177 {
178     (void)userData;
179     (void)updateUi;
180     LOG("MyOnStreamVolumeChangeCallback, usage:%{public}d, volumeLevel: %{public}d", usage, volumeLevel);
181 }
182 
MyOnStreamVolumeChangeCallback2(void * userData,OH_AudioStream_Usage usage,int32_t volumeLevel,bool updateUi)183 void MyOnStreamVolumeChangeCallback2(void *userData, OH_AudioStream_Usage usage, int32_t volumeLevel, bool updateUi)
184 {
185     (void)userData;
186     (void)updateUi;
187     LOG("MyOnStreamVolumeChangeCallback, usage:%{public}d, volumeLevel: %{public}d", usage, volumeLevel);
188 }
189 
MyOnRingerModeChangeCallback(void * userData,OH_AudioRingerMode ringerMode)190 void MyOnRingerModeChangeCallback(void *userData, OH_AudioRingerMode ringerMode)
191 {
192     (void)userData;
193     LOG("MyOnRingerModeChangeCallback, ringerMode is %{public}d", ringerMode);
194 }
195 
MyAudioCapturerOnFastStatusChangeCallback(OH_AudioCapturer * capturer,void * userData,OH_AudioStream_FastStatus status)196 void MyAudioCapturerOnFastStatusChangeCallback(OH_AudioCapturer* capturer, void* userData,
197     OH_AudioStream_FastStatus status)
198 {
199     (void)userData;
200     LOG("MyAudioCapturerOnFastStatusChangeCallback, status is %{public}d", status);
201 }
202 
MyAudioRendererOnFastStatusChangeCallback(OH_AudioRenderer * renderer,void * userData,OH_AudioStream_FastStatus status)203 void MyAudioRendererOnFastStatusChangeCallback(OH_AudioRenderer* renderer, void* userData,
204     OH_AudioStream_FastStatus status)
205 {
206     (void)userData;
207     LOG("MyAudioRendererOnFastStatusChangeCallback, status is %{public}d", status);
208 }
209 
CreateAudioStreamBuilder(napi_env env,napi_callback_info info)210 static napi_value CreateAudioStreamBuilder(napi_env env, napi_callback_info info)
211 {
212     OH_AudioStreamBuilder *builder;
213     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
214     OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
215     OH_AudioStreamBuilder_Destroy(builder);
216     napi_value res;
217     napi_create_int32(env, result, &res);
218     return res;
219 }
220 
CreateCapturerBuilder()221 OH_AudioStreamBuilder *CreateCapturerBuilder()
222 {
223     OH_AudioStreamBuilder *builder;
224     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
225     OH_AudioStreamBuilder_Create(&builder, type);
226     return builder;
227 }
228 
229 
AudioCaptureGenerate(napi_env env,napi_callback_info info)230 static napi_value AudioCaptureGenerate(napi_env env, napi_callback_info info)
231 {
232     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
233 
234     OH_AudioCapturer *audioCapturer;
235     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
236 
237     OH_AudioCapturer_Release(audioCapturer);
238     OH_AudioStreamBuilder_Destroy(builder);
239     napi_value res;
240     napi_create_int32(env, result, &res);
241     return res;
242 }
243 
AudioWorkGroup(napi_env env,napi_callback_info info)244 static napi_value AudioWorkGroup(napi_env env, napi_callback_info info)
245 {
246     int32_t tid;
247     OH_AudioResourceManager *mgr;
248     OH_AudioWorkgroup *grp;
249     OH_AudioManager_GetAudioResourceManager(&mgr);
250     OH_AudioResourceManager_CreateWorkgroup(mgr, "new", &grp);
251     OH_AudioWorkgroup_AddCurrentThread(grp, &tid);
252     OH_AudioWorkgroup_Start(grp, STATE_TIME, END_TIME);
253     OH_AudioWorkgroup_Stop(grp);
254     OH_AudioWorkgroup_RemoveThread(grp, tid);
255     OH_AudioCommon_Result result=OH_AudioResourceManager_ReleaseWorkgroup(mgr, grp);
256     napi_value res;
257     napi_create_int32(env, result, &res);
258     return res;
259 }
260 
AudioCaptureGenerateErr(napi_env env,napi_callback_info info)261 static napi_value AudioCaptureGenerateErr(napi_env env, napi_callback_info info)
262 {
263     OH_AudioStreamBuilder *builder = nullptr;
264     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
265     OH_AudioStreamBuilder_Create(&builder, type);
266 
267     OH_AudioCapturer *audioCapturer = nullptr;
268     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
269 
270     OH_AudioCapturer_Release(audioCapturer);
271     OH_AudioStreamBuilder_Destroy(builder);
272     napi_value res;
273     napi_create_int32(env, result, &res);
274     return res;
275 }
276 
AudioCaptureStart(napi_env env,napi_callback_info info)277 static napi_value AudioCaptureStart(napi_env env, napi_callback_info info)
278 {
279     LOG("AudioCaptureStart SUCCESS");
280     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
281     OH_AudioCapturer *audioCapturer;
282     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
283 
284     OH_AudioStream_Result result = OH_AudioCapturer_Start(audioCapturer);
285 
286     OH_AudioCapturer_Release(audioCapturer);
287     OH_AudioStreamBuilder_Destroy(builder);
288     napi_value res;
289     napi_create_int32(env, result, &res);
290     return res;
291 }
292 
AudioCaptureStartErr(napi_env env,napi_callback_info info)293 static napi_value AudioCaptureStartErr(napi_env env, napi_callback_info info)
294 {
295     LOG("AudioCaptureStart SUCCESS");
296     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
297     OH_AudioCapturer *audioCapturer;
298     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
299     OH_AudioCapturer_Start(audioCapturer);
300     OH_AudioStream_Result result = OH_AudioCapturer_Start(audioCapturer);
301 
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 
AudioCapturePause(napi_env env,napi_callback_info info)309 static napi_value AudioCapturePause(napi_env env, napi_callback_info info)
310 {
311     LOG("AudioCaptureStart SUCCESS");
312     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
313     OH_AudioCapturer *audioCapturer;
314     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
315     OH_AudioCapturer_Start(audioCapturer);
316     OH_AudioStream_Result result = OH_AudioCapturer_Pause(audioCapturer);
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 
324 
AudioCapturePauseErr(napi_env env,napi_callback_info info)325 static napi_value AudioCapturePauseErr(napi_env env, napi_callback_info info)
326 {
327     LOG("AudioCaptureStart SUCCESS");
328     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
329     OH_AudioCapturer *audioCapturer;
330     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
331     OH_AudioStream_Result result = OH_AudioCapturer_Pause(audioCapturer);
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 
AudioCaptureStop(napi_env env,napi_callback_info info)339 static napi_value AudioCaptureStop(napi_env env, napi_callback_info info)
340 {
341     LOG("AudioCaptureStart SUCCESS");
342     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
343     OH_AudioCapturer *audioCapturer;
344     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
345     OH_AudioCapturer_Start(audioCapturer);
346     OH_AudioStream_Result result = OH_AudioCapturer_Stop(audioCapturer);
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 
AudioCaptureStopErr(napi_env env,napi_callback_info info)354 static napi_value AudioCaptureStopErr(napi_env env, napi_callback_info info)
355 {
356     LOG("AudioCaptureStart SUCCESS");
357     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
358     OH_AudioCapturer *audioCapturer;
359     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
360     OH_AudioStream_Result result = OH_AudioCapturer_Stop(audioCapturer);
361     OH_AudioCapturer_Release(audioCapturer);
362     OH_AudioStreamBuilder_Destroy(builder);
363     napi_value res;
364     napi_create_int32(env, result, &res);
365     return res;
366 }
367 
AudioCaptureFlush(napi_env env,napi_callback_info info)368 static napi_value AudioCaptureFlush(napi_env env, napi_callback_info info)
369 {
370     LOG("AudioCaptureFlush SUCCESS");
371     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
372     OH_AudioCapturer *audioCapturer;
373     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
374     OH_AudioCapturer_Start(audioCapturer);
375     OH_AudioStream_Result result = OH_AudioCapturer_Flush(audioCapturer);
376     OH_AudioCapturer_Release(audioCapturer);
377     OH_AudioStreamBuilder_Destroy(builder);
378     napi_value res;
379     napi_create_int32(env, result, &res);
380     return res;
381 }
382 
383 
AudioCaptureFlushErr(napi_env env,napi_callback_info info)384 static napi_value AudioCaptureFlushErr(napi_env env, napi_callback_info info)
385 {
386     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
387     OH_AudioCapturer *audioCapturer;
388     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
389     OH_AudioStream_Result result = OH_AudioCapturer_Flush(audioCapturer);
390     OH_AudioCapturer_Release(audioCapturer);
391     OH_AudioStreamBuilder_Destroy(builder);
392     napi_value res;
393     napi_create_int32(env, result, &res);
394     return res;
395 }
396 
AudioCaptureRelease(napi_env env,napi_callback_info info)397 static napi_value AudioCaptureRelease(napi_env env, napi_callback_info info)
398 {
399     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
400     OH_AudioCapturer *audioCapturer;
401     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
402     OH_AudioCapturer_Start(audioCapturer);
403     OH_AudioStream_Result result = OH_AudioCapturer_Release(audioCapturer);
404     OH_AudioStreamBuilder_Destroy(builder);
405     napi_value res;
406     napi_create_int32(env, result, &res);
407     return res;
408 }
409 
AudioCaptureReleaseErr(napi_env env,napi_callback_info info)410 static napi_value AudioCaptureReleaseErr(napi_env env, napi_callback_info info)
411 {
412     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
413     OH_AudioCapturer *audioCapturer;
414     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
415     OH_AudioCapturer_Release(audioCapturer);
416     audioCapturer = nullptr;
417     OH_AudioStream_Result result = OH_AudioCapturer_Release(audioCapturer);
418     OH_AudioStreamBuilder_Destroy(builder);
419     napi_value res;
420     napi_create_int32(env, result, &res);
421     return res;
422 }
423 
AudioCaptureGetParameter(napi_env env,napi_callback_info info)424 static napi_value AudioCaptureGetParameter(napi_env env, napi_callback_info info)
425 {
426     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
427     OH_AudioCapturer *audioCapturer;
428     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
429 
430     OH_AudioStream_LatencyMode latencyMode = AUDIOSTREAM_LATENCY_MODE_NORMAL;
431     OH_AudioStream_Result result = OH_AudioCapturer_GetLatencyMode(audioCapturer, &latencyMode);
432     OH_AudioCapturer_Release(audioCapturer);
433     OH_AudioStreamBuilder_Destroy(builder);
434     napi_value res;
435     napi_create_int32(env, result, &res);
436     return res;
437 }
438 
AudioCaptureGetCurrentState(napi_env env,napi_callback_info info)439 static napi_value AudioCaptureGetCurrentState(napi_env env, napi_callback_info info)
440 {
441     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
442     OH_AudioCapturer *audioCapturer;
443     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
444 
445     OH_AudioStream_State state;
446     OH_AudioStream_Result result = OH_AudioCapturer_GetCurrentState(audioCapturer, &state);
447     OH_AudioCapturer_Release(audioCapturer);
448     OH_AudioStreamBuilder_Destroy(builder);
449     napi_value res;
450     napi_create_int32(env, result, &res);
451     return res;
452 }
453 
AudioCaptureGetStreamId(napi_env env,napi_callback_info info)454 static napi_value AudioCaptureGetStreamId(napi_env env, napi_callback_info info)
455 {
456     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
457     OH_AudioCapturer *audioCapturer;
458     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
459 
460     uint32_t streamId;
461     OH_AudioStream_Result result = OH_AudioCapturer_GetStreamId(audioCapturer, &streamId);
462     OH_AudioCapturer_Release(audioCapturer);
463     OH_AudioStreamBuilder_Destroy(builder);
464     napi_value res;
465     napi_create_int32(env, result, &res);
466     return res;
467 }
468 
AudioCaptureGetSamplingRate(napi_env env,napi_callback_info info)469 static napi_value AudioCaptureGetSamplingRate(napi_env env, napi_callback_info info)
470 {
471     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
472     OH_AudioCapturer *audioCapturer;
473     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
474 
475     int32_t rate;
476     OH_AudioStream_Result result = OH_AudioCapturer_GetSamplingRate(audioCapturer, &rate);
477     OH_AudioCapturer_Release(audioCapturer);
478     OH_AudioStreamBuilder_Destroy(builder);
479     napi_value res;
480     napi_create_int32(env, result, &res);
481     return res;
482 }
483 
AudioCaptureGetSampleFormat(napi_env env,napi_callback_info info)484 static napi_value AudioCaptureGetSampleFormat(napi_env env, napi_callback_info info)
485 {
486     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
487     OH_AudioCapturer *audioCapturer;
488     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
489 
490     OH_AudioStream_SampleFormat sampleFormat;
491     OH_AudioStream_Result result = OH_AudioCapturer_GetSampleFormat(audioCapturer, &sampleFormat);
492     OH_AudioCapturer_Release(audioCapturer);
493     OH_AudioStreamBuilder_Destroy(builder);
494     napi_value res;
495     napi_create_int32(env, result, &res);
496     return res;
497 }
498 
AudioCaptureGetEncodingType(napi_env env,napi_callback_info info)499 static napi_value AudioCaptureGetEncodingType(napi_env env, napi_callback_info info)
500 {
501     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
502     OH_AudioCapturer *audioCapturer;
503     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
504 
505     OH_AudioStream_EncodingType encodingType;
506     OH_AudioStream_Result result = OH_AudioCapturer_GetEncodingType(audioCapturer, &encodingType);
507     OH_AudioCapturer_Release(audioCapturer);
508     OH_AudioStreamBuilder_Destroy(builder);
509     napi_value res;
510     napi_create_int32(env, result, &res);
511     return res;
512 }
513 
AudioCaptureGetCapturerInfo(napi_env env,napi_callback_info info)514 static napi_value AudioCaptureGetCapturerInfo(napi_env env, napi_callback_info info)
515 {
516     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
517     OH_AudioCapturer *audioCapturer;
518     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
519 
520     OH_AudioStream_SourceType sourceType;
521     OH_AudioStream_Result result = OH_AudioCapturer_GetCapturerInfo(audioCapturer, &sourceType);
522     OH_AudioCapturer_Release(audioCapturer);
523     OH_AudioStreamBuilder_Destroy(builder);
524     napi_value res;
525     napi_create_int32(env, result, &res);
526     return res;
527 }
528 
AudioCaptureGetTimestamp(napi_env env,napi_callback_info info)529 static napi_value AudioCaptureGetTimestamp(napi_env env, napi_callback_info info)
530 {
531     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
532     OH_AudioCapturer *audioCapturer;
533     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
534     OH_AudioCapturer_Start(audioCapturer);
535 
536     int sleepNum = 30000;
537     uDelay(sleepNum);
538     int64_t  framePosition;
539     int64_t  timestamp;
540     OH_AudioStream_Result result = OH_AudioCapturer_GetTimestamp(audioCapturer, CLOCK_MONOTONIC, &framePosition, &timestamp);
541     OH_AudioCapturer_Stop(audioCapturer);
542     OH_AudioCapturer_Release(audioCapturer);
543     OH_AudioStreamBuilder_Destroy(builder);
544     napi_value res;
545     napi_create_int32(env, result, &res);
546     return res;
547 }
548 
AudioCaptureGetFramesRead(napi_env env,napi_callback_info info)549 static napi_value AudioCaptureGetFramesRead(napi_env env, napi_callback_info info)
550 {
551     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
552     OH_AudioCapturer *audioCapturer;
553     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
554 
555     int64_t  frames;
556     OH_AudioStream_Result result = OH_AudioCapturer_GetFramesRead(audioCapturer, &frames);
557     OH_AudioCapturer_Release(audioCapturer);
558     OH_AudioStreamBuilder_Destroy(builder);
559     napi_value res;
560     napi_create_int32(env, result, &res);
561     return res;
562 }
563 
AudioCaptureGetFrameSizeInCallback(napi_env env,napi_callback_info info)564 static napi_value AudioCaptureGetFrameSizeInCallback(napi_env env, napi_callback_info info)
565 {
566     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
567     OH_AudioCapturer *audioCapturer;
568     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
569 
570     int32_t  frameSize;
571     OH_AudioStream_Result result = OH_AudioCapturer_GetFrameSizeInCallback(audioCapturer, &frameSize);
572     OH_AudioCapturer_Release(audioCapturer);
573     OH_AudioStreamBuilder_Destroy(builder);
574     napi_value res;
575     napi_create_int32(env, result, &res);
576     return res;
577 }
578 
579 
CreateRenderBuilder()580 OH_AudioStreamBuilder *CreateRenderBuilder()
581 {
582     OH_AudioStreamBuilder *builder;
583     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
584     OH_AudioStreamBuilder_Create(&builder, type);
585     return builder;
586 }
587 
AudioRendererSetSpeed(napi_env env,napi_callback_info info)588 static napi_value AudioRendererSetSpeed(napi_env env, napi_callback_info info)
589 {
590     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
591 
592     OH_AudioRenderer *audioRenderer;
593     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
594     float speed = 2;
595     OH_AudioStream_Result result = OH_AudioRenderer_SetSpeed(audioRenderer,speed);
596     OH_AudioRenderer_Release(audioRenderer);
597     OH_AudioStreamBuilder_Destroy(builder);
598     napi_value res;
599     napi_create_int32(env, result, &res);
600     return res;
601 }
602 
AudioRendererGetSpeed(napi_env env,napi_callback_info info)603 static napi_value AudioRendererGetSpeed(napi_env env, napi_callback_info info)
604 {
605     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
606 
607     OH_AudioRenderer *audioRenderer;
608     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
609     float speed;
610     OH_AudioStream_Result result = OH_AudioRenderer_GetSpeed(audioRenderer,&speed);
611     OH_AudioRenderer_Release(audioRenderer);
612     OH_AudioStreamBuilder_Destroy(builder);
613     napi_value res;
614     napi_create_int32(env, result, &res);
615     return res;
616 }
617 
AudioRendererSetGetSpeed(napi_env env,napi_callback_info info)618 static napi_value AudioRendererSetGetSpeed(napi_env env, napi_callback_info info)
619 {
620     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
621 
622     OH_AudioRenderer *audioRenderer;
623     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
624     float setSpeed = 1.5;
625     OH_AudioRenderer_SetSpeed(audioRenderer,setSpeed);
626     float getSpeed;
627     OH_AudioRenderer_GetSpeed(audioRenderer,&getSpeed);
628     OH_AudioRenderer_Release(audioRenderer);
629     OH_AudioStreamBuilder_Destroy(builder);
630     napi_value res;
631     napi_create_double(env, getSpeed, &res);
632     return res;
633 }
634 
AudioRendererDeviceChangeCb(OH_AudioRenderer * renderer,void * userData,OH_AudioStream_DeviceChangeReason reason)635 static void AudioRendererDeviceChangeCb(OH_AudioRenderer* renderer, void* userData,
636     OH_AudioStream_DeviceChangeReason reason)
637 {}
638 
AudioSetRendererOutputDeviceChangeCallback(napi_env env,napi_callback_info info)639 static napi_value AudioSetRendererOutputDeviceChangeCallback(napi_env env, napi_callback_info info)
640 {
641     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
642     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
643     OH_AudioStreamBuilder_Create(&builder, type);
644 
645     OH_AudioRenderer_OutputDeviceChangeCallback deviceChangeCb = AudioRendererDeviceChangeCb;
646 
647     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererOutputDeviceChangeCallback(builder, deviceChangeCb, NULL);
648 
649     OH_AudioStreamBuilder_Destroy(builder);
650     napi_value res;
651     napi_create_int32(env, result, &res);
652     return res;
653 }
654 
MicBlockedCallback(OH_AudioDeviceDescriptorArray * audioDeviceDescriptorArray,OH_AudioDevice_BlockStatus status,void * userData)655 static void MicBlockedCallback(OH_AudioDeviceDescriptorArray *audioDeviceDescriptorArray,
656     OH_AudioDevice_BlockStatus status, void *userData)
657 {
658     switch (status) {
659         case AUDIO_DEVICE_UNBLOCKED:
660         // 麦克风未被堵住
661             LOG("MyAudioSessionDeactivatedCallback, event is %{public}d", status);
662         case AUDIO_DEVICE_BLOCKED:
663         // 麦克风被堵住
664             LOG("MyAudioSessionDeactivatedCallback, event is %{public}d", status);
665     }
666 }
667 
AudioRenderGetFramesWritten(napi_env env,napi_callback_info info)668 static napi_value AudioRenderGetFramesWritten(napi_env env, napi_callback_info info)
669 {
670     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
671 
672     OH_AudioRenderer *audioRenderer;
673     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
674     int64_t frames;
675     OH_AudioStream_Result result = OH_AudioRenderer_GetFramesWritten(audioRenderer, &frames);
676     OH_AudioRenderer_Release(audioRenderer);
677     OH_AudioStreamBuilder_Destroy(builder);
678     napi_value res;
679     napi_create_int32(env, result, &res);
680     return res;
681 }
682 
AudioRenderGetTimestamp(napi_env env,napi_callback_info info)683 static napi_value AudioRenderGetTimestamp(napi_env env, napi_callback_info info)
684 {
685     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
686 
687     OH_AudioRenderer *audioRenderer;
688     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
689     OH_AudioRenderer_Start(audioRenderer);
690 
691     int sleepNum = 30000;
692     uDelay(sleepNum);
693     int64_t framePosition;
694     int64_t  timestamp;
695     OH_AudioStream_Result result = OH_AudioRenderer_GetTimestamp(audioRenderer, CLOCK_MONOTONIC, &framePosition, &timestamp);
696     OH_AudioRenderer_Stop(audioRenderer);
697     OH_AudioRenderer_Release(audioRenderer);
698     OH_AudioStreamBuilder_Destroy(builder);
699     napi_value res;
700     napi_create_int32(env, result, &res);
701     return res;
702 }
703 
AudioRenderGetFrameSizeInCallback(napi_env env,napi_callback_info info)704 static napi_value AudioRenderGetFrameSizeInCallback(napi_env env, napi_callback_info info)
705 {
706     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
707 
708     OH_AudioRenderer *audioRenderer;
709     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
710     int32_t  frameSize;
711     OH_AudioStream_Result result = OH_AudioRenderer_GetFrameSizeInCallback(audioRenderer, &frameSize);
712     OH_AudioRenderer_Release(audioRenderer);
713     OH_AudioStreamBuilder_Destroy(builder);
714     napi_value res;
715     napi_create_int32(env, result, &res);
716     return res;
717 }
718 
AudioRenderGenerate(napi_env env,napi_callback_info info)719 static napi_value AudioRenderGenerate(napi_env env, napi_callback_info info)
720 {
721     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
722 
723     OH_AudioRenderer *audioRenderer;
724     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
725     OH_AudioRenderer_Release(audioRenderer);
726     OH_AudioStreamBuilder_Destroy(builder);
727     napi_value res;
728     napi_create_int32(env, result, &res);
729     return res;
730 }
731 
AudioRenderGenerateErr(napi_env env,napi_callback_info info)732 static napi_value AudioRenderGenerateErr(napi_env env, napi_callback_info info)
733 {
734     OH_AudioStreamBuilder *builder;
735     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
736     OH_AudioStreamBuilder_Create(&builder, type);
737 
738     OH_AudioRenderer *audioRenderer;
739     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
740 
741     OH_AudioStreamBuilder_Destroy(builder);
742     napi_value res;
743     napi_create_int32(env, result, &res);
744     return res;
745 }
746 
AudioRenderStart(napi_env env,napi_callback_info info)747 static napi_value AudioRenderStart(napi_env env, napi_callback_info info)
748 {
749     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
750 
751     OH_AudioRenderer *audioRenderer;
752     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
753     OH_AudioStream_Result result = OH_AudioRenderer_Start(audioRenderer);
754     OH_AudioRenderer_Release(audioRenderer);
755     OH_AudioStreamBuilder_Destroy(builder);
756     napi_value res;
757     napi_create_int32(env, result, &res);
758     return res;
759 }
760 
761 
AudioRenderStartErr(napi_env env,napi_callback_info info)762 static napi_value AudioRenderStartErr(napi_env env, napi_callback_info info)
763 {
764     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
765 
766     OH_AudioRenderer *audioRenderer;
767     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
768     OH_AudioRenderer_Start(audioRenderer);
769     OH_AudioStream_Result result = OH_AudioRenderer_Start(audioRenderer);
770     OH_AudioRenderer_Release(audioRenderer);
771     OH_AudioStreamBuilder_Destroy(builder);
772     napi_value res;
773     napi_create_int32(env, result, &res);
774     return res;
775 }
776 
AudioRenderPause(napi_env env,napi_callback_info info)777 static napi_value AudioRenderPause(napi_env env, napi_callback_info info)
778 {
779     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
780 
781     OH_AudioRenderer *audioRenderer;
782     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
783     OH_AudioRenderer_Start(audioRenderer);
784     OH_AudioStream_Result result = OH_AudioRenderer_Pause(audioRenderer);
785     OH_AudioRenderer_Release(audioRenderer);
786     OH_AudioStreamBuilder_Destroy(builder);
787     napi_value res;
788     napi_create_int32(env, result, &res);
789     return res;
790 }
791 
AudioRenderPauseErr(napi_env env,napi_callback_info info)792 static napi_value AudioRenderPauseErr(napi_env env, napi_callback_info info)
793 {
794     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
795 
796     OH_AudioRenderer *audioRenderer;
797     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
798     OH_AudioStream_Result result = OH_AudioRenderer_Pause(audioRenderer);
799     OH_AudioRenderer_Release(audioRenderer);
800     OH_AudioStreamBuilder_Destroy(builder);
801     napi_value res;
802     napi_create_int32(env, result, &res);
803     return res;
804 }
805 
AudioRenderStop(napi_env env,napi_callback_info info)806 static napi_value AudioRenderStop(napi_env env, napi_callback_info info)
807 {
808     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
809 
810     OH_AudioRenderer *audioRenderer;
811     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
812     OH_AudioRenderer_Start(audioRenderer);
813     OH_AudioStream_Result result = OH_AudioRenderer_Stop(audioRenderer);
814     OH_AudioRenderer_Release(audioRenderer);
815     OH_AudioStreamBuilder_Destroy(builder);
816     napi_value res;
817     napi_create_int32(env, result, &res);
818     return res;
819 }
820 
AudioRenderStopErr(napi_env env,napi_callback_info info)821 static napi_value AudioRenderStopErr(napi_env env, napi_callback_info info)
822 {
823     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
824 
825     OH_AudioRenderer *audioRenderer;
826     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
827     OH_AudioStream_Result result = OH_AudioRenderer_Stop(audioRenderer);
828     OH_AudioRenderer_Release(audioRenderer);
829     OH_AudioStreamBuilder_Destroy(builder);
830     napi_value res;
831     napi_create_int32(env, result, &res);
832     return res;
833 }
834 
AudioRenderFlush(napi_env env,napi_callback_info info)835 static napi_value AudioRenderFlush(napi_env env, napi_callback_info info)
836 {
837     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
838 
839     OH_AudioRenderer *audioRenderer;
840     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
841     OH_AudioRenderer_Start(audioRenderer);
842     OH_AudioStream_Result result = OH_AudioRenderer_Flush(audioRenderer);
843     OH_AudioRenderer_Release(audioRenderer);
844     OH_AudioStreamBuilder_Destroy(builder);
845     napi_value res;
846     napi_create_int32(env, result, &res);
847     return res;
848 }
849 
850 
AudioRenderFlushErr(napi_env env,napi_callback_info info)851 static napi_value AudioRenderFlushErr(napi_env env, napi_callback_info info)
852 {
853     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
854 
855     OH_AudioRenderer *audioRenderer;
856     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
857     OH_AudioStream_Result result = OH_AudioRenderer_Flush(audioRenderer);
858     OH_AudioRenderer_Release(audioRenderer);
859     OH_AudioStreamBuilder_Destroy(builder);
860     napi_value res;
861     napi_create_int32(env, result, &res);
862     return res;
863 }
864 
AudioRenderRelease(napi_env env,napi_callback_info info)865 static napi_value AudioRenderRelease(napi_env env, napi_callback_info info)
866 {
867     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
868 
869     OH_AudioRenderer *audioRenderer;
870     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
871     OH_AudioRenderer_Start(audioRenderer);
872     OH_AudioStream_Result result = OH_AudioRenderer_Release(audioRenderer);
873     OH_AudioStreamBuilder_Destroy(builder);
874     napi_value res;
875     napi_create_int32(env, result, &res);
876     return res;
877 }
878 
879 
AudioRenderReleaseErr(napi_env env,napi_callback_info info)880 static napi_value AudioRenderReleaseErr(napi_env env, napi_callback_info info)
881 {
882     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
883 
884     OH_AudioRenderer *audioRenderer;
885     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
886     OH_AudioRenderer_Release(audioRenderer);
887     audioRenderer = nullptr;
888     OH_AudioStream_Result result = OH_AudioRenderer_Release(audioRenderer);
889     OH_AudioStreamBuilder_Destroy(builder);
890     napi_value res;
891     napi_create_int32(env, result, &res);
892     return res;
893 }
894 
AudioRenderGetCurrentState(napi_env env,napi_callback_info info)895 static napi_value AudioRenderGetCurrentState(napi_env env, napi_callback_info info)
896 {
897     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
898 
899     OH_AudioRenderer *audioRenderer;
900     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
901     OH_AudioStream_State state;
902     OH_AudioStream_Result result = OH_AudioRenderer_GetCurrentState(audioRenderer, &state);
903     OH_AudioRenderer_Release(audioRenderer);
904     OH_AudioStreamBuilder_Destroy(builder);
905     napi_value res;
906     napi_create_int32(env, result, &res);
907     return res;
908 }
909 
910 
AudioRenderGetParameter(napi_env env,napi_callback_info info)911 static napi_value AudioRenderGetParameter(napi_env env, napi_callback_info info)
912 {
913     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
914 
915     OH_AudioRenderer *audioRenderer;
916     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
917     OH_AudioStream_LatencyMode latencyMode = AUDIOSTREAM_LATENCY_MODE_NORMAL;
918     OH_AudioStream_Result result = OH_AudioRenderer_GetLatencyMode(audioRenderer, &latencyMode);
919     OH_AudioRenderer_Release(audioRenderer);
920     OH_AudioStreamBuilder_Destroy(builder);
921     napi_value res;
922     napi_create_int32(env, result, &res);
923     return res;
924 }
925 
926 
AudioRenderGetStreamId(napi_env env,napi_callback_info info)927 static napi_value AudioRenderGetStreamId(napi_env env, napi_callback_info info)
928 {
929     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
930 
931     OH_AudioRenderer *audioRenderer;
932     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
933 
934     uint32_t streamId;
935     OH_AudioStream_Result result = OH_AudioRenderer_GetStreamId(audioRenderer, &streamId);
936     OH_AudioRenderer_Release(audioRenderer);
937     OH_AudioStreamBuilder_Destroy(builder);
938     napi_value res;
939     napi_create_int32(env, result, &res);
940     return res;
941 }
942 
AudioRenderGetSamplingRate(napi_env env,napi_callback_info info)943 static napi_value AudioRenderGetSamplingRate(napi_env env, napi_callback_info info)
944 {
945     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
946 
947     OH_AudioRenderer *audioRenderer;
948     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
949     int32_t rate;
950     OH_AudioStream_Result result = OH_AudioRenderer_GetSamplingRate(audioRenderer, &rate);
951     OH_AudioRenderer_Release(audioRenderer);
952     OH_AudioStreamBuilder_Destroy(builder);
953     napi_value res;
954     napi_create_int32(env, result, &res);
955     return res;
956 }
957 
958 
AudioRenderGetSampleFormat(napi_env env,napi_callback_info info)959 static napi_value AudioRenderGetSampleFormat(napi_env env, napi_callback_info info)
960 {
961     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
962 
963     OH_AudioRenderer *audioRenderer;
964     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
965     OH_AudioStream_SampleFormat sampleFormat;
966     OH_AudioStream_Result result = OH_AudioRenderer_GetSampleFormat(audioRenderer, &sampleFormat);
967     OH_AudioRenderer_Release(audioRenderer);
968     OH_AudioStreamBuilder_Destroy(builder);
969     napi_value res;
970     napi_create_int32(env, result, &res);
971     return res;
972 }
973 
974 
AudioRenderGetEncodingType(napi_env env,napi_callback_info info)975 static napi_value AudioRenderGetEncodingType(napi_env env, napi_callback_info info)
976 {
977     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
978 
979     OH_AudioRenderer *audioRenderer;
980     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
981     OH_AudioStream_EncodingType encodingType;
982     OH_AudioStream_Result result = OH_AudioRenderer_GetEncodingType(audioRenderer, &encodingType);
983     OH_AudioRenderer_Release(audioRenderer);
984     OH_AudioStreamBuilder_Destroy(builder);
985     napi_value res;
986     napi_create_int32(env, result, &res);
987     return res;
988 }
989 
AudioRenderGetRendererInfo(napi_env env,napi_callback_info info)990 static napi_value AudioRenderGetRendererInfo(napi_env env, napi_callback_info info)
991 {
992     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
993 
994     OH_AudioRenderer *audioRenderer;
995     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
996     OH_AudioStream_Usage usage;
997     OH_AudioStream_Result result = OH_AudioRenderer_GetRendererInfo(audioRenderer, &usage);
998     OH_AudioRenderer_Release(audioRenderer);
999     OH_AudioStreamBuilder_Destroy(builder);
1000     napi_value res;
1001     napi_create_int32(env, result, &res);
1002     return res;
1003 }
1004 
1005 
AudioStreamBuilderSetSamplingRate(napi_env env,napi_callback_info info)1006 static napi_value AudioStreamBuilderSetSamplingRate(napi_env env, napi_callback_info info)
1007 {
1008     OH_AudioStreamBuilder* builder;
1009     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
1010     OH_AudioStreamBuilder_Create(&builder, type);
1011     int32_t samplingRate = 48000;
1012     OH_AudioStreamBuilder_SetSamplingRate(builder, samplingRate);
1013     OH_AudioStream_Result result = OH_AudioStreamBuilder_Destroy(builder);
1014     napi_value res;
1015     napi_create_int32(env, result, &res);
1016     return res;
1017 }
1018 
AudioStreamBuilderSetChannelCount(napi_env env,napi_callback_info info)1019 static napi_value AudioStreamBuilderSetChannelCount(napi_env env, napi_callback_info info)
1020 {
1021     OH_AudioStreamBuilder* builder;
1022     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
1023     OH_AudioStreamBuilder_Create(&builder, type);
1024     int32_t channelCount = 1;
1025     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetChannelCount(builder, channelCount);
1026     OH_AudioStreamBuilder_Destroy(builder);
1027     napi_value res;
1028     napi_create_int32(env, result, &res);
1029     return res;
1030 }
1031 
1032 
AudioStreamBuilderSetSampleFormat(napi_env env,napi_callback_info info)1033 static napi_value AudioStreamBuilderSetSampleFormat(napi_env env, napi_callback_info info)
1034 {
1035     OH_AudioStreamBuilder* builder;
1036     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
1037     OH_AudioStreamBuilder_Create(&builder, type);
1038     OH_AudioStream_SampleFormat format = AUDIOSTREAM_SAMPLE_U8;
1039     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetSampleFormat(builder, format);
1040     OH_AudioStreamBuilder_Destroy(builder);
1041     napi_value res;
1042     napi_create_int32(env, result, &res);
1043     return res;
1044 }
1045 
1046 
AudioStreamBuilderSetEncodingType(napi_env env,napi_callback_info info)1047 static napi_value AudioStreamBuilderSetEncodingType(napi_env env, napi_callback_info info)
1048 {
1049     OH_AudioStreamBuilder* builder;
1050     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
1051     OH_AudioStreamBuilder_Create(&builder, type);
1052     OH_AudioStream_EncodingType encodingType = AUDIOSTREAM_ENCODING_TYPE_RAW;
1053     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetEncodingType(builder, encodingType);
1054     OH_AudioStreamBuilder_Destroy(builder);
1055     napi_value res;
1056     napi_create_int32(env, result, &res);
1057     return res;
1058 }
1059 
1060 
AudioStreamBuilderSetLatencyMode(napi_env env,napi_callback_info info)1061 static napi_value AudioStreamBuilderSetLatencyMode(napi_env env, napi_callback_info info)
1062 {
1063     OH_AudioStreamBuilder* builder;
1064     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
1065     OH_AudioStreamBuilder_Create(&builder, type);
1066 
1067     OH_AudioStream_LatencyMode latencyMode = AUDIOSTREAM_LATENCY_MODE_NORMAL;
1068     OH_AudioStreamBuilder_SetLatencyMode(builder, latencyMode);
1069 
1070     OH_AudioStream_Result result = OH_AudioStreamBuilder_Destroy(builder);
1071     napi_value res;
1072     napi_create_int32(env, result, &res);
1073     return res;
1074 }
1075 
1076 
AudioStreamBuilderSetRendererInfo(napi_env env,napi_callback_info info)1077 static napi_value AudioStreamBuilderSetRendererInfo(napi_env env, napi_callback_info info)
1078 {
1079     OH_AudioStreamBuilder* builder;
1080     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
1081     OH_AudioStreamBuilder_Create(&builder, type);
1082     OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_MUSIC;
1083     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
1084 
1085     OH_AudioStreamBuilder_Destroy(builder);
1086     napi_value res;
1087     napi_create_int32(env, result, &res);
1088     return res;
1089 }
1090 
1091 
AudioStreamBuilderSetCapturerInfo(napi_env env,napi_callback_info info)1092 static napi_value AudioStreamBuilderSetCapturerInfo(napi_env env, napi_callback_info info)
1093 {
1094     OH_AudioStreamBuilder* builder;
1095     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
1096     OH_AudioStreamBuilder_Create(&builder, type);
1097     OH_AudioStream_SourceType sourceType = AUDIOSTREAM_SOURCE_TYPE_MIC;
1098     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetCapturerInfo(builder, sourceType);
1099     OH_AudioStreamBuilder_Destroy(builder);
1100     napi_value res;
1101     napi_create_int32(env, result, &res);
1102     return res;
1103 }
1104 
AudioRendererOnWriteData(OH_AudioRenderer * capturer,void * userData,void * buffer,int32_t bufferLen)1105 static int32_t AudioRendererOnWriteData(OH_AudioRenderer* capturer,
1106     void* userData,
1107     void* buffer,
1108     int32_t bufferLen)
1109 {
1110     return 0;
1111 }
AudioStreamBuilderSetRendererCallback(napi_env env,napi_callback_info info)1112 static napi_value AudioStreamBuilderSetRendererCallback(napi_env env, napi_callback_info info)
1113 {
1114     OH_AudioStreamBuilder* builder;
1115     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
1116     OH_AudioStreamBuilder_Create(&builder, type);
1117     OH_AudioRenderer_Callbacks callbacks;
1118     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
1119     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, NULL);
1120     OH_AudioStreamBuilder_Destroy(builder);
1121     napi_value res;
1122     napi_create_int32(env, result, &res);
1123     return res;
1124 }
1125 
AudioCapturerOnReadData(OH_AudioCapturer * capturer,void * userData,void * buffer,int32_t bufferLen)1126 static int32_t AudioCapturerOnReadData(
1127     OH_AudioCapturer* capturer,
1128     void* userData,
1129     void* buffer,
1130     int32_t bufferLen)
1131 {
1132     return 0;
1133 }
AudioStreamBuilderSetCapturerCallback(napi_env env,napi_callback_info info)1134 static napi_value AudioStreamBuilderSetCapturerCallback(napi_env env, napi_callback_info info)
1135 {
1136     OH_AudioStreamBuilder* builder;
1137     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
1138     OH_AudioStreamBuilder_Create(&builder, type);
1139 
1140     OH_AudioCapturer_Callbacks callbacks;
1141     callbacks.OH_AudioCapturer_OnReadData = AudioCapturerOnReadData;
1142     callbacks.OH_AudioCapturer_OnStreamEvent = nullptr;
1143     callbacks.OH_AudioCapturer_OnInterruptEvent = nullptr;
1144     callbacks.OH_AudioCapturer_OnError = nullptr;
1145     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetCapturerCallback(builder, callbacks, NULL);
1146 
1147     OH_AudioStreamBuilder_Destroy(builder);
1148     napi_value res;
1149     napi_create_int32(env, result, &res);
1150     return res;
1151 }
1152 
AudioCaptureGetChannelCount(napi_env env,napi_callback_info info)1153 static napi_value AudioCaptureGetChannelCount(napi_env env, napi_callback_info info)
1154 {
1155     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
1156     OH_AudioCapturer *audioCapturer;
1157     OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
1158 
1159     int32_t channelCount;
1160     OH_AudioStream_Result result = OH_AudioCapturer_GetChannelCount(audioCapturer, &channelCount);
1161     OH_AudioCapturer_Release(audioCapturer);
1162     OH_AudioStreamBuilder_Destroy(builder);
1163     napi_value res;
1164     napi_create_int32(env, result, &res);
1165     return res;
1166 }
1167 
AudioRenderGetChannelCount(napi_env env,napi_callback_info info)1168 static napi_value AudioRenderGetChannelCount(napi_env env, napi_callback_info info)
1169 {
1170     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
1171 
1172     OH_AudioRenderer *audioRenderer;
1173     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1174 
1175     int32_t channelCount;
1176     OH_AudioStream_Result result = OH_AudioRenderer_GetChannelCount(audioRenderer, &channelCount);
1177     OH_AudioRenderer_Release(audioRenderer);
1178     OH_AudioStreamBuilder_Destroy(builder);
1179     napi_value res;
1180     napi_create_int32(env, result, &res);
1181     return res;
1182 }
1183 
AudioStreamBuilderSetFrameSizeInCallback(napi_env env,napi_callback_info info)1184 static napi_value AudioStreamBuilderSetFrameSizeInCallback(napi_env env, napi_callback_info info)
1185 {
1186     OH_AudioStreamBuilder *builder;
1187     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
1188     OH_AudioStreamBuilder_Create(&builder, type);
1189     int32_t framesize = 960;
1190     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetFrameSizeInCallback(builder, framesize);
1191     OH_AudioStreamBuilder_Destroy(builder);
1192     napi_value res;
1193     napi_create_int32(env, result, &res);
1194     return res;
1195 }
1196 
AudioRendererGetVolume_01(napi_env env,napi_callback_info info)1197 static napi_value AudioRendererGetVolume_01(napi_env env, napi_callback_info info)
1198 {
1199     OH_AudioRenderer* audioRenderer = nullptr;
1200     float volume;
1201     OH_AudioStream_Result result = OH_AudioRenderer_GetVolume(audioRenderer, &volume);
1202     LOG("OH_AudioRenderer_GetVolume, volumeGet is %f, result %{public}d", volume, result);
1203     napi_value res;
1204     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1205         napi_create_int32(env, TEST_FAIL, &res);
1206     } else {
1207         napi_create_int32(env, TEST_PASS, &res);
1208     }
1209     return res;
1210 }
1211 
AudioRendererSetVolume_01(napi_env env,napi_callback_info info)1212 static napi_value AudioRendererSetVolume_01(napi_env env, napi_callback_info info)
1213 {
1214     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1215     OH_AudioRenderer* audioRenderer;
1216     napi_value res;
1217     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1218     if (result != AUDIOSTREAM_SUCCESS) {
1219         napi_create_int32(env, TEST_FAIL, &res);
1220         return res;
1221     }
1222     float volumeSet = 1.0;
1223     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1224     LOG("OH_AudioRenderer_SetVolume 1.0, result is %{public}d", result);
1225     if (result != AUDIOSTREAM_SUCCESS) {
1226         napi_create_int32(env, TEST_FAIL, &res);
1227         return res;
1228     }
1229     float volumeGet;
1230     result = OH_AudioRenderer_GetVolume(audioRenderer, &volumeGet);
1231     LOG("OH_AudioRenderer_GetVolume, volumeGet is %f, %{public}d", volumeGet, result);
1232     if (result != AUDIOSTREAM_SUCCESS || volumeGet != volumeSet) {
1233         napi_create_int32(env, TEST_FAIL, &res);
1234     } else {
1235         napi_create_int32(env, TEST_PASS, &res);
1236     }
1237     OH_AudioRenderer_Release(audioRenderer);
1238     OH_AudioStreamBuilder_Destroy(builder);
1239     return res;
1240 }
1241 
AudioRendererSetVolume_02(napi_env env,napi_callback_info info)1242 static napi_value AudioRendererSetVolume_02(napi_env env, napi_callback_info info)
1243 {
1244     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1245     OH_AudioRenderer* audioRenderer;
1246     napi_value res;
1247     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1248     if (result != AUDIOSTREAM_SUCCESS) {
1249         napi_create_int32(env, TEST_FAIL, &res);
1250         return res;
1251     }
1252     float volumeSet = 0.0;
1253     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1254     LOG("OH_AudioRenderer_SetVolume 0.0, result is %{public}d", result);
1255     if (result != AUDIOSTREAM_SUCCESS) {
1256         napi_create_int32(env, TEST_FAIL, &res);
1257         return res;
1258     }
1259     float volumeGet;
1260     result = OH_AudioRenderer_GetVolume(audioRenderer, &volumeGet);
1261     LOG("OH_AudioRenderer_GetVolume, volumeGet is %f, %{public}d", volumeGet, result);
1262     if (result != AUDIOSTREAM_SUCCESS || volumeGet != volumeSet) {
1263         napi_create_int32(env, TEST_FAIL, &res);
1264     } else {
1265         napi_create_int32(env, TEST_PASS, &res);
1266     }
1267     OH_AudioRenderer_Release(audioRenderer);
1268     OH_AudioStreamBuilder_Destroy(builder);
1269     return res;
1270 }
1271 
AudioRendererSetVolume_03(napi_env env,napi_callback_info info)1272 static napi_value AudioRendererSetVolume_03(napi_env env, napi_callback_info info)
1273 {
1274     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1275     OH_AudioRenderer* audioRenderer;
1276     napi_value res;
1277     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1278     if (result != AUDIOSTREAM_SUCCESS) {
1279         napi_create_int32(env, TEST_FAIL, &res);
1280         return res;
1281     }
1282     float volumeSet = 0.3; // 0.3:value of volumeSet
1283     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1284     LOG("OH_AudioRenderer_SetVolume 0.3, result is %{public}d", result);
1285     if (result != AUDIOSTREAM_SUCCESS) {
1286         napi_create_int32(env, TEST_FAIL, &res);
1287         return res;
1288     }
1289     volumeSet = 0.8; // 0.8:value of volumeSet
1290     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1291     LOG("OH_AudioRenderer_SetVolume 0.8, result is %{public}d", result);
1292     if (result != AUDIOSTREAM_SUCCESS) {
1293         napi_create_int32(env, TEST_FAIL, &res);
1294         return res;
1295     }
1296     float volumeGet;
1297     result = OH_AudioRenderer_GetVolume(audioRenderer, &volumeGet);
1298     LOG("OH_AudioRenderer_GetVolume, volumeGet is %f, %{public}d", volumeGet, result);
1299     if (result != AUDIOSTREAM_SUCCESS || volumeGet != volumeSet) {
1300         napi_create_int32(env, TEST_FAIL, &res);
1301     } else {
1302         napi_create_int32(env, TEST_PASS, &res);
1303     }
1304     OH_AudioRenderer_Release(audioRenderer);
1305     OH_AudioStreamBuilder_Destroy(builder);
1306     return res;
1307 }
1308 
AudioRendererSetVolume_04(napi_env env,napi_callback_info info)1309 static napi_value AudioRendererSetVolume_04(napi_env env, napi_callback_info info)
1310 {
1311     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1312     OH_AudioRenderer* audioRenderer;
1313     napi_value res;
1314     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1315     if (result != AUDIOSTREAM_SUCCESS) {
1316         napi_create_int32(env, TEST_FAIL, &res);
1317         return res;
1318     }
1319     float volumeSet = -1.0;
1320     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1321     LOG("OH_AudioRenderer_SetVolume -1.0 result is %{public}d", result);
1322     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1323         napi_create_int32(env, TEST_FAIL, &res);
1324     } else {
1325         napi_create_int32(env, TEST_PASS, &res);
1326     }
1327     OH_AudioRenderer_Release(audioRenderer);
1328     OH_AudioStreamBuilder_Destroy(builder);
1329     return res;
1330 }
1331 
AudioRendererSetVolume_05(napi_env env,napi_callback_info info)1332 static napi_value AudioRendererSetVolume_05(napi_env env, napi_callback_info info)
1333 {
1334     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1335     OH_AudioRenderer* audioRenderer;
1336     napi_value res;
1337     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1338     if (result != AUDIOSTREAM_SUCCESS) {
1339         napi_create_int32(env, TEST_FAIL, &res);
1340         return res;
1341     }
1342     float volumeSet = 1.5; // 1.5:value of volumeSet
1343     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1344     LOG("OH_AudioRenderer_SetVolume 1.5 result is %{public}d", result);
1345     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1346         napi_create_int32(env, TEST_FAIL, &res);
1347     } else {
1348         napi_create_int32(env, TEST_PASS, &res);
1349     }
1350     OH_AudioRenderer_Release(audioRenderer);
1351     OH_AudioStreamBuilder_Destroy(builder);
1352     return res;
1353 }
1354 
AudioRendererSetVolume_06(napi_env env,napi_callback_info info)1355 static napi_value AudioRendererSetVolume_06(napi_env env, napi_callback_info info)
1356 {
1357     OH_AudioRenderer* audioRenderer = nullptr;
1358     float volumeSet = 0.5; // 0.5:value of volumeSet
1359     napi_value res;
1360     OH_AudioStream_Result result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1361     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1362         napi_create_int32(env, TEST_FAIL, &res);
1363     } else {
1364         napi_create_int32(env, TEST_PASS, &res);
1365     }
1366     LOG("OH_AudioRenderer_GetVolume, volumeGet is %f, %{public}d", volumeSet, result);
1367     return res;
1368 }
1369 
AudioRendererSetVolumeWithRamp_01(napi_env env,napi_callback_info info)1370 static napi_value AudioRendererSetVolumeWithRamp_01(napi_env env, napi_callback_info info)
1371 {
1372     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1373     OH_AudioRenderer* audioRenderer;
1374     napi_value res;
1375     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1376     if (result != AUDIOSTREAM_SUCCESS) {
1377         napi_create_int32(env, TEST_FAIL, &res);
1378         return res;
1379     }
1380     float volumeSet = 0.0;
1381     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1382     LOG("OH_AudioRenderer_SetVolume 0.0 result is %{public}d", result);
1383     if (result != AUDIOSTREAM_SUCCESS) {
1384         napi_create_int32(env, TEST_FAIL, &res);
1385         return res;
1386     }
1387     int32_t durationMs = 1000; // 1000:value of durationMs
1388     volumeSet = 1.0;
1389     result = OH_AudioRenderer_SetVolumeWithRamp(audioRenderer, volumeSet, durationMs);
1390     LOG("OH_AudioRenderer_SetVolumeWithRamp 0.0->1.0 1000 result is %{public}d", result);
1391     if (result != AUDIOSTREAM_SUCCESS) {
1392         napi_create_int32(env, TEST_FAIL, &res);
1393     } else {
1394         napi_create_int32(env, TEST_PASS, &res);
1395     }
1396     OH_AudioRenderer_Release(audioRenderer);
1397     OH_AudioStreamBuilder_Destroy(builder);
1398     return res;
1399 }
1400 
AudioRendererSetVolumeWithRamp_02(napi_env env,napi_callback_info info)1401 static napi_value AudioRendererSetVolumeWithRamp_02(napi_env env, napi_callback_info info)
1402 {
1403     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1404     OH_AudioRenderer* audioRenderer;
1405     napi_value res;
1406     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1407     if (result != AUDIOSTREAM_SUCCESS) {
1408         napi_create_int32(env, TEST_FAIL, &res);
1409         return res;
1410     }
1411     float volumeSet = 1.0;
1412     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1413     LOG("OH_AudioRenderer_SetVolume 1.0 result is %{public}d", result);
1414     if (result != AUDIOSTREAM_SUCCESS) {
1415         napi_create_int32(env, TEST_FAIL, &res);
1416         return res;
1417     }
1418     int32_t durationMs = 100; // 100:value of durationMs
1419     volumeSet = 0.0;
1420     result = OH_AudioRenderer_SetVolumeWithRamp(audioRenderer, volumeSet, durationMs);
1421     LOG("OH_AudioRenderer_SetVolumeWithRamp 1.0->0.0 100 result is %{public}d", result);
1422     if (result != AUDIOSTREAM_SUCCESS) {
1423         napi_create_int32(env, TEST_FAIL, &res);
1424     } else {
1425         napi_create_int32(env, TEST_PASS, &res);
1426     }
1427     OH_AudioRenderer_Release(audioRenderer);
1428     OH_AudioStreamBuilder_Destroy(builder);
1429     return res;
1430 }
1431 
AudioRendererSetVolumeWithRamp_03(napi_env env,napi_callback_info info)1432 static napi_value AudioRendererSetVolumeWithRamp_03(napi_env env, napi_callback_info info)
1433 {
1434     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1435     OH_AudioRenderer* audioRenderer;
1436     napi_value res;
1437     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1438     if (result != AUDIOSTREAM_SUCCESS) {
1439         napi_create_int32(env, TEST_FAIL, &res);
1440         return res;
1441     }
1442     float volumeSet = 0.0;
1443     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1444     LOG("OH_AudioRenderer_SetVolume 0.0 result is %{public}d", result);
1445     if (result != AUDIOSTREAM_SUCCESS) {
1446         napi_create_int32(env, TEST_FAIL, &res);
1447         return res;
1448     }
1449     int32_t durationMs = 10; // 10:value of durationMs
1450     volumeSet = 0.5; // 0.5:value of volumeSet
1451     result = OH_AudioRenderer_SetVolumeWithRamp(audioRenderer, volumeSet, durationMs);
1452     LOG("OH_AudioRenderer_SetVolumeWithRamp 0.0->0.5 10 result is %{public}d", result);
1453     if (result != AUDIOSTREAM_SUCCESS) {
1454         napi_create_int32(env, TEST_FAIL, &res);
1455     } else {
1456         napi_create_int32(env, TEST_PASS, &res);
1457     }
1458     OH_AudioRenderer_Release(audioRenderer);
1459     OH_AudioStreamBuilder_Destroy(builder);
1460     return res;
1461 }
1462 
AudioRendererSetVolumeWithRamp_04(napi_env env,napi_callback_info info)1463 static napi_value AudioRendererSetVolumeWithRamp_04(napi_env env, napi_callback_info info)
1464 {
1465     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1466     OH_AudioRenderer* audioRenderer;
1467     napi_value res;
1468     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1469     if (result != AUDIOSTREAM_SUCCESS) {
1470         napi_create_int32(env, TEST_FAIL, &res);
1471         return res;
1472     }
1473     float volumeSet = 1.0;
1474     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1475     LOG("OH_AudioRenderer_SetVolume 1.0 result is %{public}d", result);
1476     if (result != AUDIOSTREAM_SUCCESS) {
1477         napi_create_int32(env, TEST_FAIL, &res);
1478         return res;
1479     }
1480     int32_t durationMs = 10; // 10:value of durationMs
1481     volumeSet = 0.5; // 0.5:value of volumeSet
1482     result = OH_AudioRenderer_SetVolumeWithRamp(audioRenderer, volumeSet, durationMs);
1483     LOG("OH_AudioRenderer_SetVolumeWithRamp 1.0->0.5 10 result is %{public}d", result);
1484     if (result != AUDIOSTREAM_SUCCESS) {
1485         napi_create_int32(env, TEST_FAIL, &res);
1486     } else {
1487         napi_create_int32(env, TEST_PASS, &res);
1488     }
1489     OH_AudioRenderer_Release(audioRenderer);
1490     OH_AudioStreamBuilder_Destroy(builder);
1491     return res;
1492 }
1493 
AudioRendererSetVolumeWithRamp_05(napi_env env,napi_callback_info info)1494 static napi_value AudioRendererSetVolumeWithRamp_05(napi_env env, napi_callback_info info)
1495 {
1496     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1497     OH_AudioRenderer* audioRenderer;
1498     napi_value res;
1499     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1500     if (result != AUDIOSTREAM_SUCCESS) {
1501         napi_create_int32(env, TEST_FAIL, &res);
1502         return res;
1503     }
1504     float volumeSet = 0.0;
1505     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1506     LOG("OH_AudioRenderer_SetVolume 0.0 result is %{public}d", result);
1507     if (result != AUDIOSTREAM_SUCCESS) {
1508         napi_create_int32(env, TEST_FAIL, &res);
1509         return res;
1510     }
1511     int32_t durationMs = 10; // 10:value of durationMs
1512     volumeSet = 0.0;
1513     result = OH_AudioRenderer_SetVolumeWithRamp(audioRenderer, volumeSet, durationMs);
1514     LOG("OH_AudioRenderer_SetVolumeWithRamp 0.0->0.0 10 result is %{public}d", result);
1515     if (result != AUDIOSTREAM_SUCCESS) {
1516         napi_create_int32(env, TEST_FAIL, &res);
1517     } else {
1518         napi_create_int32(env, TEST_PASS, &res);
1519     }
1520     OH_AudioRenderer_Release(audioRenderer);
1521     OH_AudioStreamBuilder_Destroy(builder);
1522     return res;
1523 }
1524 
AudioRendererSetVolumeWithRamp_06(napi_env env,napi_callback_info info)1525 static napi_value AudioRendererSetVolumeWithRamp_06(napi_env env, napi_callback_info info)
1526 {
1527     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1528     OH_AudioRenderer* audioRenderer;
1529     napi_value res;
1530     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1531     if (result != AUDIOSTREAM_SUCCESS) {
1532         napi_create_int32(env, TEST_FAIL, &res);
1533         return res;
1534     }
1535     float volumeSet = 1.0;
1536     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1537     LOG("OH_AudioRenderer_SetVolume 1.0 result is %{public}d", result);
1538     if (result != AUDIOSTREAM_SUCCESS) {
1539         napi_create_int32(env, TEST_FAIL, &res);
1540         return res;
1541     }
1542     int32_t durationMs = 10; // 10:value of durationMs
1543     volumeSet = 1.0;
1544     result = OH_AudioRenderer_SetVolumeWithRamp(audioRenderer, volumeSet, durationMs);
1545     LOG("OH_AudioRenderer_SetVolumeWithRamp 1.0->1.0 10 result is %{public}d", result);
1546     if (result != AUDIOSTREAM_SUCCESS) {
1547         napi_create_int32(env, TEST_FAIL, &res);
1548     } else {
1549         napi_create_int32(env, TEST_PASS, &res);
1550     }
1551     OH_AudioRenderer_Release(audioRenderer);
1552     OH_AudioStreamBuilder_Destroy(builder);
1553     return res;
1554 }
1555 
AudioRendererSetVolumeWithRamp_07(napi_env env,napi_callback_info info)1556 static napi_value AudioRendererSetVolumeWithRamp_07(napi_env env, napi_callback_info info)
1557 {
1558     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1559     OH_AudioRenderer* audioRenderer;
1560     napi_value res;
1561     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1562     if (result != AUDIOSTREAM_SUCCESS) {
1563         napi_create_int32(env, TEST_FAIL, &res);
1564         return res;
1565     }
1566     float volumeSet = 1.0;
1567     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1568     LOG("OH_AudioRenderer_SetVolume 1.0 result is %{public}d", result);
1569     if (result != AUDIOSTREAM_SUCCESS) {
1570         napi_create_int32(env, TEST_FAIL, &res);
1571         return res;
1572     }
1573     int32_t durationMs = 100; // 100:value of durationMs
1574     volumeSet = 1.2; // 1.2:value of volumeSet
1575     result = OH_AudioRenderer_SetVolumeWithRamp(audioRenderer, volumeSet, durationMs);
1576     LOG("OH_AudioRenderer_SetVolumeWithRamp 1.0->1.2 100 result is %{public}d", result);
1577     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1578         napi_create_int32(env, TEST_FAIL, &res);
1579     } else {
1580         napi_create_int32(env, TEST_PASS, &res);
1581     }
1582     OH_AudioRenderer_Release(audioRenderer);
1583     OH_AudioStreamBuilder_Destroy(builder);
1584     return res;
1585 }
1586 
AudioRendererSetVolumeWithRamp_08(napi_env env,napi_callback_info info)1587 static napi_value AudioRendererSetVolumeWithRamp_08(napi_env env, napi_callback_info info)
1588 {
1589     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1590     OH_AudioRenderer* audioRenderer;
1591     napi_value res;
1592     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1593     if (result != AUDIOSTREAM_SUCCESS) {
1594         napi_create_int32(env, TEST_FAIL, &res);
1595         return res;
1596     }
1597     float volumeSet = 0.0;
1598     result = OH_AudioRenderer_SetVolume(audioRenderer, volumeSet);
1599     LOG("OH_AudioRenderer_SetVolume 0.0 result is %{public}d", result);
1600     if (result != AUDIOSTREAM_SUCCESS) {
1601         napi_create_int32(env, TEST_FAIL, &res);
1602         return res;
1603     }
1604     int32_t durationMs = 100; // 100:value of durationMs
1605     volumeSet = -0.2; // -0.2:invalid value of volumeSet
1606     result = OH_AudioRenderer_SetVolumeWithRamp(audioRenderer, volumeSet, durationMs);
1607     LOG("OH_AudioRenderer_SetVolumeWithRamp 0.0->-0.2 100 result is %{public}d", result);
1608     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1609         napi_create_int32(env, TEST_FAIL, &res);
1610     } else {
1611         napi_create_int32(env, TEST_PASS, &res);
1612     }
1613     OH_AudioRenderer_Release(audioRenderer);
1614     OH_AudioStreamBuilder_Destroy(builder);
1615     return res;
1616 }
1617 
AudioRendererSetVolumeWithRamp_09(napi_env env,napi_callback_info info)1618 static napi_value AudioRendererSetVolumeWithRamp_09(napi_env env, napi_callback_info info)
1619 {
1620     OH_AudioRenderer* audioRenderer = nullptr;
1621     float volumeSet = 0.5; // 0.5:value of volumeSet
1622     int32_t durationMs = 10; // 10:value of durationMs
1623     OH_AudioStream_Result result = OH_AudioRenderer_SetVolumeWithRamp(audioRenderer, volumeSet, durationMs);
1624     napi_value res;
1625     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1626         napi_create_int32(env, TEST_FAIL, &res);
1627     } else {
1628         napi_create_int32(env, TEST_PASS, &res);
1629     }
1630     return res;
1631 }
1632 
AudioRendererOnMarkReachedCb(OH_AudioRenderer * renderer,uint32_t samplePos,void * userData)1633 static void AudioRendererOnMarkReachedCb(OH_AudioRenderer* renderer, uint32_t samplePos, void* userData)
1634 {
1635     g_flag = true;
1636     LOG("AudioRendererOnMarkReachedCb samplePos: %{public}d \n", samplePos);
1637 }
1638 
AudioRendererSetOnMarkReached_01(napi_env env,napi_callback_info info)1639 static napi_value AudioRendererSetOnMarkReached_01(napi_env env, napi_callback_info info)
1640 {
1641     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
1642     OH_AudioRenderer *audioRenderer;
1643     napi_value res;
1644     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1645     if (result != AUDIOSTREAM_SUCCESS) {
1646         napi_create_int32(env, TEST_FAIL, &res);
1647         return res;
1648     }
1649     uint32_t samplePos = 1;
1650     OH_AudioRenderer_OnMarkReachedCallback callback = AudioRendererOnMarkReachedCb;
1651     result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1652     LOG("OH_Audio_Renderer_SetOnMarkReached_01 result is: %{public}d", result);
1653     if (result != AUDIOSTREAM_SUCCESS) {
1654         napi_create_int32(env, TEST_FAIL, &res);
1655     } else {
1656         napi_create_int32(env, TEST_PASS, &res);
1657     }
1658     OH_AudioRenderer_Release(audioRenderer);
1659     OH_AudioStreamBuilder_Destroy(builder);
1660     return res;
1661 }
1662 
AudioRendererSetOnMarkReached_02(napi_env env,napi_callback_info info)1663 static napi_value AudioRendererSetOnMarkReached_02(napi_env env, napi_callback_info info)
1664 {
1665     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
1666     OH_AudioRenderer *audioRenderer;
1667     napi_value res;
1668     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1669     if (result != AUDIOSTREAM_SUCCESS) {
1670         napi_create_int32(env, TEST_FAIL, &res);
1671         return res;
1672     }
1673     uint32_t samplePos = 0;
1674     OH_AudioRenderer_OnMarkReachedCallback callback = AudioRendererOnMarkReachedCb;
1675     result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1676     LOG("OH_Audio_Renderer_SetOnMarkReached_02 result is: %{public}d", result);
1677     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1678         napi_create_int32(env, TEST_FAIL, &res);
1679     } else {
1680         napi_create_int32(env, TEST_PASS, &res);
1681     }
1682     OH_AudioRenderer_Release(audioRenderer);
1683     OH_AudioStreamBuilder_Destroy(builder);
1684     return res;
1685 }
1686 
AudioRendererSetOnMarkReached_03(napi_env env,napi_callback_info info)1687 static napi_value AudioRendererSetOnMarkReached_03(napi_env env, napi_callback_info info)
1688 {
1689     g_flag = false;
1690     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
1691     napi_value res;
1692     OH_AudioStreamBuilder_SetSamplingRate(builder, g_samplingRate);
1693     OH_AudioStreamBuilder_SetChannelCount(builder, g_channelCount);
1694     OH_AudioStreamBuilder_SetLatencyMode(builder, (OH_AudioStream_LatencyMode)g_latencyMode);
1695     OH_AudioStreamBuilder_SetSampleFormat(builder, (OH_AudioStream_SampleFormat)g_sampleFormat);
1696     OH_AudioRenderer_Callbacks callbacks;
1697     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
1698     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr);
1699     if (result != AUDIOSTREAM_SUCCESS) {
1700         napi_create_int32(env, TEST_FAIL, &res);
1701         return res;
1702     }
1703     // set buffer size to g_frameSize
1704     OH_AudioStreamBuilder_SetFrameSizeInCallback(builder, g_frameSize);
1705 
1706     OH_AudioRenderer *audioRenderer;
1707     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1708     uint32_t samplePos = 1;
1709     OH_AudioRenderer_OnMarkReachedCallback callback = AudioRendererOnMarkReachedCb;
1710     result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1711     LOG("OH_Audio_Renderer_SetOnMarkReached_03 result is: %{public}d", result);
1712     if (result != AUDIOSTREAM_SUCCESS) {
1713         napi_create_int32(env, TEST_FAIL, &res);
1714         return res;
1715     }
1716     const int waitTime = 2;
1717     OH_AudioRenderer_Start(audioRenderer);
1718     sleep(waitTime); // 2:sleep 2 seconds
1719     OH_AudioRenderer_Stop(audioRenderer);
1720     if (!g_flag) {
1721         napi_create_int32(env, TEST_FAIL, &res);
1722     } else {
1723         napi_create_int32(env, TEST_PASS, &res);
1724     }
1725     OH_AudioRenderer_Release(audioRenderer);
1726     OH_AudioStreamBuilder_Destroy(builder);
1727     return res;
1728 }
1729 
AudioRendererSetOnMarkReached_04(napi_env env,napi_callback_info info)1730 static napi_value AudioRendererSetOnMarkReached_04(napi_env env, napi_callback_info info)
1731 {
1732     OH_AudioRenderer* audioRenderer = nullptr;
1733     uint32_t samplePos = 1;
1734     OH_AudioRenderer_OnMarkReachedCallback callback = AudioRendererOnMarkReachedCb;
1735     OH_AudioStream_Result result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1736     napi_value res;
1737     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
1738         napi_create_int32(env, TEST_FAIL, &res);
1739     } else {
1740         napi_create_int32(env, TEST_PASS, &res);
1741     }
1742     return res;
1743 }
1744 
AudioRendererSetOnMarkReached_05(napi_env env,napi_callback_info info)1745 static napi_value AudioRendererSetOnMarkReached_05(napi_env env, napi_callback_info info)
1746 {
1747     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
1748     OH_AudioRenderer *audioRenderer;
1749     napi_value res;
1750     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1751     uint32_t samplePos = 4294967295; // 4294967295:uint32_t 2^32 - 1
1752     OH_AudioRenderer_OnMarkReachedCallback callback = AudioRendererOnMarkReachedCb;
1753     OH_AudioStream_Result result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1754     LOG("OH_Audio_Renderer_SetOnMarkReached_05 result is: %{public}d", result);
1755     if (result != AUDIOSTREAM_SUCCESS) {
1756         napi_create_int32(env, TEST_FAIL, &res);
1757     } else {
1758         napi_create_int32(env, TEST_PASS, &res);
1759     }
1760     OH_AudioRenderer_Release(audioRenderer);
1761     OH_AudioStreamBuilder_Destroy(builder);
1762     return res;
1763 }
1764 
AudioRendererSetOnMarkReached_06(napi_env env,napi_callback_info info)1765 static napi_value AudioRendererSetOnMarkReached_06(napi_env env, napi_callback_info info)
1766 {
1767     g_flag = false;
1768     g_file = fopen(g_filePath.c_str(), "rb");
1769     if (g_file == nullptr) {
1770         LOG("fopen fail. g_file: %p\n", g_file);
1771     }
1772     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
1773     napi_value res;
1774     OH_AudioStreamBuilder_SetSamplingRate(builder, g_samplingRate);
1775     OH_AudioStreamBuilder_SetChannelCount(builder, g_channelCount);
1776     OH_AudioStreamBuilder_SetLatencyMode(builder, (OH_AudioStream_LatencyMode)g_latencyMode);
1777     OH_AudioStreamBuilder_SetSampleFormat(builder, (OH_AudioStream_SampleFormat)g_sampleFormat);
1778     OH_AudioRenderer_Callbacks callbacks;
1779     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnMarkReachedWriteData;
1780     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr);
1781     if (result != AUDIOSTREAM_SUCCESS) {
1782         napi_create_int32(env, TEST_FAIL, &res);
1783         return res;
1784     }
1785     // set buffer size to g_frameSize
1786     OH_AudioStreamBuilder_SetFrameSizeInCallback(builder, g_frameSize);
1787 
1788     OH_AudioRenderer *audioRenderer;
1789     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1790     uint32_t samplePos = 10538568; // 10538568:Test_44100_2.wav The total number of frames in the audio file
1791     OH_AudioRenderer_OnMarkReachedCallback callback = AudioRendererOnMarkReachedCb;
1792     result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1793     LOG("OH_Audio_Renderer_SetOnMarkReached_06 result is: %{public}d", result);
1794     if (result != AUDIOSTREAM_SUCCESS) {
1795         napi_create_int32(env, TEST_FAIL, &res);
1796         return res;
1797     }
1798     const int waitTime = 220;
1799     OH_AudioRenderer_Start(audioRenderer);
1800     Delay(waitTime); // 220:Play the entire music
1801     OH_AudioRenderer_Stop(audioRenderer);
1802     if (!g_flag) {
1803         napi_create_int32(env, TEST_FAIL, &res);
1804     } else {
1805         napi_create_int32(env, TEST_PASS, &res);
1806     }
1807     OH_AudioRenderer_Release(audioRenderer);
1808     OH_AudioStreamBuilder_Destroy(builder);
1809     return res;
1810 }
1811 
AudioRendererSetOnMarkReached_07(napi_env env,napi_callback_info info)1812 static napi_value AudioRendererSetOnMarkReached_07(napi_env env, napi_callback_info info)
1813 {
1814     g_flag = false;
1815     g_file = fopen(g_filePath.c_str(), "rb");
1816     if (g_file == nullptr) {
1817         LOG("fopen fail. g_file: %p\n", g_file);
1818     }
1819     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
1820     napi_value res;
1821     OH_AudioStreamBuilder_SetSamplingRate(builder, g_samplingRate);
1822     OH_AudioStreamBuilder_SetChannelCount(builder, g_channelCount);
1823     OH_AudioStreamBuilder_SetLatencyMode(builder, (OH_AudioStream_LatencyMode)g_latencyMode);
1824     OH_AudioStreamBuilder_SetSampleFormat(builder, (OH_AudioStream_SampleFormat)g_sampleFormat);
1825     OH_AudioRenderer_Callbacks callbacks;
1826     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnMarkReachedWriteData;
1827     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr);
1828     if (result != AUDIOSTREAM_SUCCESS) {
1829         napi_create_int32(env, TEST_FAIL, &res);
1830         return res;
1831     }
1832     // set buffer size to g_frameSize
1833     OH_AudioStreamBuilder_SetFrameSizeInCallback(builder, g_frameSize);
1834 
1835     OH_AudioRenderer *audioRenderer;
1836     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1837     uint32_t samplePos = 10538570; // 10538570:Test_44100_2.wav The total number of frames in the audio file + 2
1838     OH_AudioRenderer_OnMarkReachedCallback callback = AudioRendererOnMarkReachedCb;
1839     result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1840     LOG("OH_Audio_Renderer_SetOnMarkReached_07 result is: %{public}d", result);
1841     if (result != AUDIOSTREAM_SUCCESS) {
1842         napi_create_int32(env, TEST_FAIL, &res);
1843         return res;
1844     }
1845     const int waitTime = 10;
1846     OH_AudioRenderer_Start(audioRenderer);
1847     Delay(waitTime); // 10:Play for 10 seconds
1848     OH_AudioRenderer_Stop(audioRenderer);
1849     if (!g_flag) {
1850         napi_create_int32(env, TEST_PASS, &res);
1851     } else {
1852         napi_create_int32(env, TEST_FAIL, &res);
1853     }
1854     OH_AudioRenderer_Release(audioRenderer);
1855     OH_AudioStreamBuilder_Destroy(builder);
1856     return res;
1857 }
1858 
AudioRendererSetOnMarkReached_08(napi_env env,napi_callback_info info)1859 static napi_value AudioRendererSetOnMarkReached_08(napi_env env, napi_callback_info info)
1860 {
1861     g_flag = false;
1862     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
1863     napi_value res;
1864     OH_AudioStreamBuilder_SetSamplingRate(builder, g_samplingRate);
1865     OH_AudioStreamBuilder_SetChannelCount(builder, g_channelCount);
1866     OH_AudioStreamBuilder_SetLatencyMode(builder, (OH_AudioStream_LatencyMode)g_latencyMode);
1867     OH_AudioStreamBuilder_SetSampleFormat(builder, (OH_AudioStream_SampleFormat)g_sampleFormat);
1868     OH_AudioRenderer_Callbacks callbacks;
1869     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
1870     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr);
1871     if (result != AUDIOSTREAM_SUCCESS) {
1872         napi_create_int32(env, TEST_FAIL, &res);
1873         return res;
1874     }
1875     // set buffer size to g_frameSize
1876     OH_AudioStreamBuilder_SetFrameSizeInCallback(builder, g_frameSize);
1877 
1878     OH_AudioRenderer *audioRenderer;
1879     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1880     uint32_t samplePos = 1;
1881     OH_AudioRenderer_OnMarkReachedCallback callback = AudioRendererOnMarkReachedCb;
1882     result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1883     if (result != AUDIOSTREAM_SUCCESS) {
1884         napi_create_int32(env, TEST_FAIL, &res);
1885         return res;
1886     }
1887     result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1888     if (result != AUDIOSTREAM_SUCCESS) {
1889         napi_create_int32(env, TEST_FAIL, &res);
1890         return res;
1891     }
1892     result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1893     LOG("OH_Audio_Renderer_SetOnMarkReached_08 result is: %{public}d", result);
1894     if (result != AUDIOSTREAM_SUCCESS) {
1895         napi_create_int32(env, TEST_FAIL, &res);
1896         return res;
1897     }
1898     LOG("audioRendererSetOnMarkReached_08 result = AUDIOSTREAM_SUCCESS");
1899     int waitTime = 10;
1900     OH_AudioRenderer_Start(audioRenderer);
1901     LOG("audioRendererSetOnMarkReached_08 OH_AudioRenderer_Start SUCCESS");
1902     Delay(waitTime);
1903     OH_AudioRenderer_Stop(audioRenderer);
1904     LOG("audioRendererSetOnMarkReached_08 OH_AudioRenderer_Stop SUCCESS");
1905     if (!g_flag) {
1906         napi_create_int32(env, TEST_FAIL, &res);
1907     } else {
1908         napi_create_int32(env, TEST_PASS, &res);
1909     }
1910     OH_AudioRenderer_Release(audioRenderer);
1911     LOG("audioRendererSetOnMarkReached_08 OH_AudioRenderer_Release SUCCESS");
1912     OH_AudioStreamBuilder_Destroy(builder);
1913     LOG("audioRendererSetOnMarkReached_08 OH_AudioStreamBuilder_Destroy SUCCESS");
1914     return res;
1915 }
1916 
AudioRendererCancelMark_01(napi_env env,napi_callback_info info)1917 static napi_value AudioRendererCancelMark_01(napi_env env, napi_callback_info info)
1918 {
1919     g_flag = false;
1920     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
1921     napi_value res;
1922     OH_AudioStreamBuilder_SetSamplingRate(builder, g_samplingRate);
1923     OH_AudioStreamBuilder_SetChannelCount(builder, g_channelCount);
1924     OH_AudioStreamBuilder_SetLatencyMode(builder, (OH_AudioStream_LatencyMode)g_latencyMode);
1925     OH_AudioStreamBuilder_SetSampleFormat(builder, (OH_AudioStream_SampleFormat)g_sampleFormat);
1926     OH_AudioRenderer_Callbacks callbacks;
1927     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
1928     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr);
1929     if (result != AUDIOSTREAM_SUCCESS) {
1930         napi_create_int32(env, TEST_FAIL, &res);
1931         return res;
1932     }
1933     // set buffer size to g_frameSize
1934     result = OH_AudioStreamBuilder_SetFrameSizeInCallback(builder, g_frameSize);
1935     if (result != AUDIOSTREAM_SUCCESS) {
1936         napi_create_int32(env, TEST_FAIL, &res);
1937         return res;
1938     }
1939 
1940     OH_AudioRenderer *audioRenderer;
1941     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1942     uint32_t samplePos = 1;
1943     OH_AudioRenderer_OnMarkReachedCallback callback = AudioRendererOnMarkReachedCb;
1944     result = OH_AudioRenderer_SetMarkPosition(audioRenderer, samplePos, callback, nullptr);
1945     LOG("OH_Audio_Renderer_SetOnMarkReached_03 result is: %{public}d", result);
1946     if (result != AUDIOSTREAM_SUCCESS) {
1947         napi_create_int32(env, TEST_FAIL, &res);
1948         return res;
1949     }
1950     result = OH_AudioRenderer_Start(audioRenderer);
1951     if (result != AUDIOSTREAM_SUCCESS) {
1952         napi_create_int32(env, TEST_FAIL, &res);
1953         return res;
1954     }
1955     const int waitTime = 2;
1956     sleep(waitTime); // 2:sleep 2 seconds
1957     // CancelMark
1958     result = OH_AudioRenderer_CancelMark(audioRenderer);
1959     LOG("OH_AudioRenderer_CancelMark result is %{public}d", result);
1960     if (result != AUDIOSTREAM_SUCCESS) {
1961         napi_create_int32(env, TEST_FAIL, &res);
1962         return res;
1963     }
1964     OH_AudioRenderer_Stop(audioRenderer);
1965     if (!g_flag) {
1966         napi_create_int32(env, TEST_FAIL, &res);
1967     } else {
1968         napi_create_int32(env, TEST_PASS, &res);
1969     }
1970     OH_AudioRenderer_Release(audioRenderer);
1971     OH_AudioStreamBuilder_Destroy(builder);
1972     return res;
1973 }
1974 
AudioRendererCancelMark_02(napi_env env,napi_callback_info info)1975 static napi_value AudioRendererCancelMark_02(napi_env env, napi_callback_info info)
1976 {
1977     OH_AudioStreamBuilder* builder = CreateRenderBuilder();
1978     OH_AudioRenderer* audioRenderer;
1979     napi_value res;
1980     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
1981     if (result != AUDIOSTREAM_SUCCESS) {
1982         napi_create_int32(env, TEST_FAIL, &res);
1983         return res;
1984     }
1985     result = OH_AudioRenderer_CancelMark(audioRenderer);
1986     LOG("OH_AudioRenderer_CancelMark result is %{public}d", result);
1987     OH_AudioRenderer_Release(audioRenderer);
1988     OH_AudioStreamBuilder_Destroy(builder);
1989     if (result != AUDIOSTREAM_SUCCESS) {
1990         napi_create_int32(env, TEST_FAIL, &res);
1991     } else {
1992         napi_create_int32(env, TEST_PASS, &res);
1993     }
1994     return res;
1995 }
1996 
AudioRendererCancelMark_03(napi_env env,napi_callback_info info)1997 static napi_value AudioRendererCancelMark_03(napi_env env, napi_callback_info info)
1998 {
1999     OH_AudioRenderer* audioRenderer = nullptr;
2000     OH_AudioStream_Result result = OH_AudioRenderer_CancelMark(audioRenderer);
2001     napi_value res;
2002     LOG("OH_AudioRenderer_CancelMark result is %{public}d", result);
2003     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
2004         napi_create_int32(env, TEST_FAIL, &res);
2005     } else {
2006         napi_create_int32(env, TEST_PASS, &res);
2007     }
2008     return res;
2009 }
2010 
AudioRendererInterruptEvent(OH_AudioRenderer * renderer,void * userData,OH_AudioInterrupt_ForceType type,OH_AudioInterrupt_Hint hint)2011 static int32_t AudioRendererInterruptEvent(OH_AudioRenderer* renderer,
2012     void* userData,
2013     OH_AudioInterrupt_ForceType type,
2014     OH_AudioInterrupt_Hint hint)
2015 {
2016     g_mark = true;
2017     LOG("AudioRendererInterruptEvent type = %{public}d, hint = %{public}d\n", type, hint);
2018     return 0;
2019 }
2020 
AudioRendererSetInterruptMode_01(napi_env env,napi_callback_info info)2021 static napi_value AudioRendererSetInterruptMode_01(napi_env env, napi_callback_info info)
2022 {
2023     g_mark = false;
2024     napi_value res;
2025     // 1. create builder
2026     OH_AudioStreamBuilder* builder1;
2027     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
2028     OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_MUSIC;
2029     OH_AudioStreamBuilder_Create(&builder1, type);
2030 
2031     OH_AudioStreamBuilder* builder2;
2032     OH_AudioStreamBuilder_Create(&builder2, type);
2033 
2034     // 2. set builder1 builder2 params
2035     OH_AudioStreamBuilder_SetRendererInfo(builder1, usage);
2036     OH_AudioRenderer_Callbacks callbacks;
2037     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
2038     callbacks.OH_AudioRenderer_OnInterruptEvent = AudioRendererInterruptEvent;
2039     OH_AudioStreamBuilder_SetRendererCallback(builder1, callbacks, nullptr);
2040     OH_AudioStreamBuilder_SetFrameSizeInCallback(builder1, g_frameSize);
2041 
2042     usage = AUDIOSTREAM_USAGE_MOVIE;
2043     OH_AudioStreamBuilder_SetRendererInfo(builder2, usage);
2044     OH_AudioStreamBuilder_SetRendererCallback(builder2, callbacks, nullptr);
2045     OH_AudioStreamBuilder_SetFrameSizeInCallback(builder2, g_frameSize);
2046 
2047     OH_AudioInterrupt_Mode mode = AUDIOSTREAM_INTERRUPT_MODE_SHARE;
2048     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder1, mode);
2049     LOG("OH_AudioStreamBuilder_SetRendererInterruptMode builder1 result is %{public}d", result);
2050     if (result != AUDIOSTREAM_SUCCESS) {
2051         napi_create_int32(env, TEST_FAIL, &res);
2052         return res;
2053     }
2054     result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder2, mode);
2055     LOG("OH_AudioStreamBuilder_SetRendererInterruptMode builder2 result is %{public}d", result);
2056     if (result != AUDIOSTREAM_SUCCESS) {
2057         napi_create_int32(env, TEST_FAIL, &res);
2058         return res;
2059     }
2060 
2061     // 3. create audioRenderer1 audioRenderer2
2062     OH_AudioRenderer* audioRenderer1;
2063     result = OH_AudioStreamBuilder_GenerateRenderer(builder1, &audioRenderer1);
2064     if (result != AUDIOSTREAM_SUCCESS) {
2065         napi_create_int32(env, TEST_FAIL, &res);
2066         return res;
2067     }
2068 
2069     OH_AudioRenderer* audioRenderer2;
2070     result = OH_AudioStreamBuilder_GenerateRenderer(builder2, &audioRenderer2);
2071     if (result != AUDIOSTREAM_SUCCESS) {
2072         napi_create_int32(env, TEST_FAIL, &res);
2073         return res;
2074     }
2075 
2076     // 4. start
2077     result = OH_AudioRenderer_Start(audioRenderer1);
2078     if (result != AUDIOSTREAM_SUCCESS) {
2079         napi_create_int32(env, TEST_FAIL, &res);
2080         return res;
2081     }
2082     const int waitTime = 1;
2083     Delay(waitTime);
2084     result = OH_AudioRenderer_Start(audioRenderer2);
2085     if (result != AUDIOSTREAM_SUCCESS) {
2086         napi_create_int32(env, TEST_FAIL, &res);
2087     } else {
2088         napi_create_int32(env, TEST_PASS, &res);
2089     }
2090 
2091     // 5. stop and release client
2092     OH_AudioRenderer_Stop(audioRenderer2);
2093     OH_AudioRenderer_Release(audioRenderer2);
2094     OH_AudioRenderer_Stop(audioRenderer1);
2095     OH_AudioRenderer_Release(audioRenderer1);
2096     OH_AudioStreamBuilder_Destroy(builder2);
2097     OH_AudioStreamBuilder_Destroy(builder1);
2098     return res;
2099 }
2100 
AudioRendererSetInterruptMode_02(napi_env env,napi_callback_info info)2101 static napi_value AudioRendererSetInterruptMode_02(napi_env env, napi_callback_info info)
2102 {
2103     g_mark = false;
2104     napi_value res;
2105     // 1. create builder
2106     OH_AudioStreamBuilder* builder;
2107     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
2108     OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_MUSIC;
2109     OH_AudioStreamBuilder_Create(&builder, type);
2110 
2111     OH_AudioStreamBuilder* builder2;
2112     OH_AudioStreamBuilder_Create(&builder2, type);
2113 
2114     // 2. set builder params
2115     OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
2116     OH_AudioRenderer_Callbacks callbacks;
2117     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
2118     callbacks.OH_AudioRenderer_OnInterruptEvent = AudioRendererInterruptEvent;
2119     OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr);
2120     OH_AudioStreamBuilder_SetFrameSizeInCallback(builder, g_frameSize);
2121 
2122     usage = AUDIOSTREAM_USAGE_VOICE_MESSAGE;
2123     OH_AudioStreamBuilder_SetRendererInfo(builder2, usage);
2124     OH_AudioStreamBuilder_SetRendererCallback(builder2, callbacks, nullptr);
2125     OH_AudioStreamBuilder_SetFrameSizeInCallback(builder2, g_frameSize);
2126 
2127     OH_AudioInterrupt_Mode mode = AUDIOSTREAM_INTERRUPT_MODE_INDEPENDENT;
2128     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder, mode);
2129     LOG("OH_AudioStreamBuilder_SetRendererInterruptMode builder1 result is %{public}d", result);
2130     if (result != AUDIOSTREAM_SUCCESS) {
2131         napi_create_int32(env, TEST_FAIL, &res);
2132         return res;
2133     }
2134     result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder2, mode);
2135     LOG("OH_AudioStreamBuilder_SetRendererInterruptMode builder2 result is %{public}d", result);
2136     if (result != AUDIOSTREAM_SUCCESS) {
2137         napi_create_int32(env, TEST_FAIL, &res);
2138         return res;
2139     }
2140     LOG("AudioRendererSetInterruptMode_02 result == AUDIOSTREAM_SUCCESS");
2141     // 3. create audioRenderer1 audioRenderer2
2142     OH_AudioRenderer* audioRenderer1;
2143     result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer1);
2144     if (result != AUDIOSTREAM_SUCCESS) {
2145         napi_create_int32(env, TEST_FAIL, &res);
2146         return res;
2147     }
2148     LOG("AudioRendererSetInterruptMode_02 after audioRenderer1 OH_AudioStreamBuilder_GenerateRenderer");
2149     OH_AudioRenderer* audioRenderer2;
2150     result = OH_AudioStreamBuilder_GenerateRenderer(builder2, &audioRenderer2);
2151     if (result != AUDIOSTREAM_SUCCESS) {
2152         napi_create_int32(env, TEST_FAIL, &res);
2153         return res;
2154     }
2155     LOG("AudioRendererSetInterruptMode_02 after audioRenderer2 OH_AudioStreamBuilder_GenerateRenderer");
2156     // 4. start
2157     result = OH_AudioRenderer_Start(audioRenderer1);
2158     if (result != AUDIOSTREAM_SUCCESS) {
2159         napi_create_int32(env, TEST_FAIL, &res);
2160         return res;
2161     }
2162     LOG("AudioRendererSetInterruptMode_02 after audioRenderer1 OH_AudioRenderer_Start");
2163     const int waitTime = 1;
2164     sleep(waitTime);
2165     result = OH_AudioRenderer_Start(audioRenderer2);
2166     if (result != AUDIOSTREAM_SUCCESS) {
2167         napi_create_int32(env, TEST_FAIL, &res);
2168         return res;
2169     }
2170     LOG("AudioRendererSetInterruptMode_02 after audioRenderer2 OH_AudioRenderer_Start");
2171     sleep(waitTime); // 2:sleep 2 seconds
2172 
2173     if (!g_mark) {
2174         napi_create_int32(env, TEST_FAIL, &res);
2175     } else {
2176         napi_create_int32(env, TEST_PASS, &res);
2177     }
2178     if (g_mark) {
2179         LOG("AudioRendererSetInterruptMode_02 g_mark is : %{public}d", 1);
2180     } else {
2181         LOG("AudioRendererSetInterruptMode_02 g_mark is : %{public}d", 0);
2182     }
2183     // 5. stop and release client
2184     OH_AudioRenderer_Stop(audioRenderer2);
2185     OH_AudioRenderer_Release(audioRenderer2);
2186     OH_AudioRenderer_Stop(audioRenderer1);
2187     OH_AudioRenderer_Release(audioRenderer1);
2188     OH_AudioStreamBuilder_Destroy(builder);
2189     OH_AudioStreamBuilder_Destroy(builder2);
2190     LOG("AudioRendererSetInterruptMode_02 res is:  %{public}d", res);
2191     return res;
2192 }
2193 
AudioRendererSetInterruptMode_03(napi_env env,napi_callback_info info)2194 static napi_value AudioRendererSetInterruptMode_03(napi_env env, napi_callback_info info)
2195 {
2196     napi_value res;
2197     OH_AudioStreamBuilder* builder = nullptr;
2198     OH_AudioInterrupt_Mode mode = AUDIOSTREAM_INTERRUPT_MODE_SHARE;
2199     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder, mode);
2200     LOG("OH_AudioRenderer_SetInterruptMode_03, result is: %{public}d", result);
2201     OH_AudioStreamBuilder_Destroy(builder);
2202     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
2203         napi_create_int32(env, TEST_FAIL, &res);
2204     } else {
2205         napi_create_int32(env, TEST_PASS, &res);
2206     }
2207     return res;
2208 }
2209 
AudioRendererSetInterruptMode_04(napi_env env,napi_callback_info info)2210 static napi_value AudioRendererSetInterruptMode_04(napi_env env, napi_callback_info info)
2211 {
2212     napi_value res;
2213     OH_AudioStreamBuilder* builder = nullptr;
2214     OH_AudioInterrupt_Mode mode = static_cast<OH_AudioInterrupt_Mode>(-2);
2215     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder, mode);
2216     LOG("OH_AudioRenderer_SetInterruptMode_04, result is: %{public}d", result);
2217     OH_AudioStreamBuilder_Destroy(builder);
2218     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
2219         napi_create_int32(env, TEST_FAIL, &res);
2220     } else {
2221         napi_create_int32(env, TEST_PASS, &res);
2222     }
2223     return res;
2224 }
2225 
DeviceChangeCallback(OH_AudioDevice_ChangeType type,OH_AudioDeviceDescriptorArray * audioDeviceDescriptorArray)2226 static int32_t DeviceChangeCallback(OH_AudioDevice_ChangeType type,
2227     OH_AudioDeviceDescriptorArray *audioDeviceDescriptorArray)
2228 {
2229     LOG("DeviceChangeCallback triggrred, ChangeType: %{public}d\n", type);
2230     if (type == AUDIO_DEVICE_CHANGE_TYPE_CONNECT) {
2231         int size = audioDeviceDescriptorArray->size;
2232         for (int index = 0; index < size; index++) {
2233             OH_AudioDeviceDescriptor *audioDeviceDescriptor = audioDeviceDescriptorArray->descriptors[index];
2234             if (audioDeviceDescriptor) {
2235                 OH_AudioDevice_Role deviceRole = AUDIO_DEVICE_ROLE_OUTPUT;
2236                 OH_AudioDeviceDescriptor_GetDeviceRole(audioDeviceDescriptor, &deviceRole);
2237                 OH_AudioDevice_Type deviceType = AUDIO_DEVICE_TYPE_INVALID;
2238                 OH_AudioDeviceDescriptor_GetDeviceType(audioDeviceDescriptor, &deviceType);
2239                 LOG("Receive new device: DeviceRole: %{public}d, DeviceType: %{public}d\n", deviceRole, deviceType);
2240             }
2241         }
2242     }
2243     return 0;
2244 }
2245 
AudioManagerGetAudioRoutingManager_01(napi_env env,napi_callback_info info)2246 static napi_value AudioManagerGetAudioRoutingManager_01(napi_env env, napi_callback_info info)
2247 {
2248     napi_value res;
2249     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2250     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2251     LOG("AudioManagerGetAudioRoutingManager_01, result is: %{public}d", result);
2252     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2253         napi_create_int32(env, TEST_FAIL, &res);
2254     } else {
2255         napi_create_int32(env, TEST_PASS, &res);
2256     }
2257     return res;
2258 }
2259 
AudioRoutingManagerGetDevices_01(napi_env env,napi_callback_info info)2260 static napi_value AudioRoutingManagerGetDevices_01(napi_env env, napi_callback_info info)
2261 {
2262     napi_value res;
2263     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2264     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2265     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2266         napi_create_int32(env, TEST_FAIL, &res);
2267         return res;
2268     }
2269     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_NONE;
2270     OH_AudioDeviceDescriptorArray *array = nullptr;
2271     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2272     LOG("AudioRoutingManagerGetDevices_01, result is: %{public}d", result);
2273     if (result != AUDIOCOMMON_RESULT_ERROR_NO_MEMORY || array != nullptr) {
2274         napi_create_int32(env, TEST_FAIL, &res);
2275     } else {
2276         napi_create_int32(env, TEST_PASS, &res);
2277     }
2278     return res;
2279 }
2280 
AudioRoutingManagerGetDevices_02(napi_env env,napi_callback_info info)2281 static napi_value AudioRoutingManagerGetDevices_02(napi_env env, napi_callback_info info)
2282 {
2283     napi_value res;
2284     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2285     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2286     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2287         napi_create_int32(env, TEST_FAIL, &res);
2288         return res;
2289     }
2290     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
2291     OH_AudioDeviceDescriptorArray *array = nullptr;
2292     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2293     LOG("AudioRoutingManagerGetDevices_02, result is: %{public}d", result);
2294     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
2295         napi_create_int32(env, TEST_FAIL, &res);
2296     } else {
2297         napi_create_int32(env, TEST_PASS, &res);
2298     }
2299     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
2300     return res;
2301 }
2302 
AudioRoutingManagerGetDevices_03(napi_env env,napi_callback_info info)2303 static napi_value AudioRoutingManagerGetDevices_03(napi_env env, napi_callback_info info)
2304 {
2305     napi_value res;
2306     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2307     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2308     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2309         napi_create_int32(env, TEST_FAIL, &res);
2310         return res;
2311     }
2312     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_INPUT;
2313     OH_AudioDeviceDescriptorArray *array = nullptr;
2314     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2315     LOG("AudioRoutingManagerGetDevices_03, result is: %{public}d", result);
2316     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
2317         napi_create_int32(env, TEST_FAIL, &res);
2318     } else {
2319         napi_create_int32(env, TEST_PASS, &res);
2320     }
2321     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
2322     return res;
2323 }
2324 
AudioRoutingManagerGetDevices_04(napi_env env,napi_callback_info info)2325 static napi_value AudioRoutingManagerGetDevices_04(napi_env env, napi_callback_info info)
2326 {
2327     napi_value res;
2328     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2329     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2330     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2331         napi_create_int32(env, TEST_FAIL, &res);
2332         return res;
2333     }
2334     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
2335     OH_AudioDeviceDescriptorArray *array = nullptr;
2336     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2337     LOG("AudioRoutingManagerGetDevices_04, result is: %{public}d", result);
2338     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
2339         napi_create_int32(env, TEST_FAIL, &res);
2340     } else {
2341         napi_create_int32(env, TEST_PASS, &res);
2342     }
2343     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
2344     return res;
2345 }
2346 
AudioRoutingManagerGetDevices_05(napi_env env,napi_callback_info info)2347 static napi_value AudioRoutingManagerGetDevices_05(napi_env env, napi_callback_info info)
2348 {
2349     napi_value res;
2350     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2351     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2352     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2353         napi_create_int32(env, TEST_FAIL, &res);
2354         return res;
2355     }
2356     int32_t flag = -1;
2357     OH_AudioDevice_Flag deviceFlag = (OH_AudioDevice_Flag)flag;
2358     OH_AudioDeviceDescriptorArray *array = nullptr;
2359     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2360     LOG("AudioRoutingManagerGetDevices_05, result is: %{public}d", result);
2361     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM || array != nullptr) {
2362         napi_create_int32(env, TEST_FAIL, &res);
2363     } else {
2364         napi_create_int32(env, TEST_PASS, &res);
2365     }
2366     return res;
2367 }
2368 
AudioRoutingManagerGetDevices_06(napi_env env,napi_callback_info info)2369 static napi_value AudioRoutingManagerGetDevices_06(napi_env env, napi_callback_info info)
2370 {
2371     napi_value res;
2372     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2373     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
2374     OH_AudioDeviceDescriptorArray *array = nullptr;
2375     OH_AudioCommon_Result result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2376     LOG("AudioRoutingManagerGetDevices_06, result is: %{public}d", result);
2377     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM || array != nullptr) {
2378         napi_create_int32(env, TEST_FAIL, &res);
2379     } else {
2380         napi_create_int32(env, TEST_PASS, &res);
2381     }
2382     return res;
2383 }
2384 
AudioRoutingManagerGetDevices_07(napi_env env,napi_callback_info info)2385 static napi_value AudioRoutingManagerGetDevices_07(napi_env env, napi_callback_info info)
2386 {
2387     napi_value res;
2388     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2389     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2390     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2391         napi_create_int32(env, TEST_FAIL, &res);
2392         return res;
2393     }
2394     int32_t flag = 4;
2395     OH_AudioDevice_Flag deviceFlag = (OH_AudioDevice_Flag)flag;
2396     OH_AudioDeviceDescriptorArray *array = nullptr;
2397     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
2398     LOG("AudioRoutingManagerGetDevices_07, result is: %{public}d", result);
2399     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM || array != nullptr) {
2400         napi_create_int32(env, TEST_FAIL, &res);
2401     } else {
2402         napi_create_int32(env, TEST_PASS, &res);
2403     }
2404     return res;
2405 }
2406 
AudioManagerGetManager_01(napi_env env,napi_callback_info info)2407 static napi_value AudioManagerGetManager_01(napi_env env, napi_callback_info info)
2408 {
2409     napi_value res;
2410     OH_AudioManager **audioManager = nullptr;
2411     OH_AudioCommon_Result result = OH_GetAudioManager(audioManager);
2412     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2413         napi_create_int32(env, TEST_FAIL, &res);
2414         return res;
2415     }
2416     napi_create_int32(env, TEST_PASS, &res);
2417     return res;
2418 }
2419 
AudioManagerGetManager_02(napi_env env,napi_callback_info info)2420 static napi_value AudioManagerGetManager_02(napi_env env, napi_callback_info info)
2421 {
2422     napi_value res;
2423     OH_AudioManager *audioManager = nullptr;
2424     OH_AudioCommon_Result result = OH_GetAudioManager(&audioManager);
2425     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioManager == nullptr) {
2426         napi_create_int32(env, TEST_FAIL, &res);
2427         return res;
2428     }
2429     napi_create_int32(env, TEST_PASS, &res);
2430     return res;
2431 }
2432 
AudioManagerGetAudioScene_01(napi_env env,napi_callback_info info)2433 static napi_value AudioManagerGetAudioScene_01(napi_env env, napi_callback_info info)
2434 {
2435     napi_value res;
2436     OH_AudioManager *audioManager = nullptr;
2437     OH_AudioCommon_Result result = OH_GetAudioManager(&audioManager);
2438     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioManager == nullptr) {
2439         napi_create_int32(env, TEST_FAIL, &res);
2440         return res;
2441     }
2442     OH_AudioScene scene = AUDIO_SCENE_DEFAULT;
2443     result = OH_GetAudioScene(audioManager, &scene);
2444     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2445         napi_create_int32(env, TEST_FAIL, &res);
2446         return res;
2447     }
2448     napi_create_int32(env, TEST_PASS, &res);
2449     return res;
2450 }
2451 
AudioManagerGetAudioScene_02(napi_env env,napi_callback_info info)2452 static napi_value AudioManagerGetAudioScene_02(napi_env env, napi_callback_info info)
2453 {
2454     napi_value res;
2455 
2456     OH_AudioScene scene = AUDIO_SCENE_DEFAULT;
2457     OH_AudioCommon_Result result = OH_GetAudioScene(nullptr, &scene);
2458     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2459         napi_create_int32(env, TEST_FAIL, &res);
2460         return res;
2461     }
2462 
2463     result = OH_GetAudioScene(nullptr, nullptr);
2464     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2465         napi_create_int32(env, TEST_FAIL, &res);
2466         return res;
2467     }
2468 
2469     OH_AudioManager *audioManager = nullptr;
2470     result = OH_GetAudioManager(&audioManager);
2471     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioManager == nullptr) {
2472         napi_create_int32(env, TEST_FAIL, &res);
2473         return res;
2474     }
2475 
2476     result = OH_GetAudioScene(audioManager, nullptr);
2477     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2478         napi_create_int32(env, TEST_FAIL, &res);
2479         return res;
2480     }
2481 
2482     napi_create_int32(env, TEST_PASS, &res);
2483     return res;
2484 }
2485 
AudioManagerRegisterAudioSceneChangeCallback_01(napi_env env,napi_callback_info info)2486 static napi_value AudioManagerRegisterAudioSceneChangeCallback_01(napi_env env, napi_callback_info info)
2487 {
2488     napi_value res;
2489     OH_AudioManager *audioManager = nullptr;
2490     OH_AudioCommon_Result result = OH_GetAudioManager(&audioManager);
2491     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2492         LOG("OH_GetAudioManager error, result is: %{public}d", result);
2493         napi_create_int32(env, TEST_FAIL, &res);
2494         return res;
2495     }
2496 
2497     // MyOnAudioSceneChangeCallback
2498     result = OH_AudioManager_RegisterAudioSceneChangeCallback(audioManager, MyOnAudioSceneChangeCallback, nullptr);
2499     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2500         LOG("OH_AudioManager_RegisterAudioSceneChangeCallback error, result is: %{public}d", result);
2501         napi_create_int32(env, TEST_FAIL, &res);
2502         return res;
2503     }
2504 
2505     result = OH_AudioManager_UnregisterAudioSceneChangeCallback(audioManager, MyOnAudioSceneChangeCallback);
2506     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2507         LOG("OH_AudioManager_UnregisterAudioSceneChangeCallback error, result is: %{public}d", result);
2508         napi_create_int32(env, TEST_FAIL, &res);
2509         return res;
2510     }
2511 
2512     napi_create_int32(env, TEST_PASS, &res);
2513     return res;
2514 }
2515 
AudioManagerRegisterAudioSceneChangeCallback_02(napi_env env,napi_callback_info info)2516 static napi_value AudioManagerRegisterAudioSceneChangeCallback_02(napi_env env, napi_callback_info info)
2517 {
2518     napi_value res;
2519     // MyOnAudioSceneChangeCallback
2520     OH_AudioCommon_Result result = OH_AudioManager_RegisterAudioSceneChangeCallback(nullptr, nullptr, nullptr);
2521     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2522         LOG("OH_AudioManager_RegisterAudioSceneChangeCallback error, result is: %{public}d", result);
2523         napi_create_int32(env, TEST_FAIL, &res);
2524         return res;
2525     }
2526 
2527     napi_create_int32(env, TEST_PASS, &res);
2528     return res;
2529 }
2530 
AudioManagerRegisterAudioSceneChangeCallback_03(napi_env env,napi_callback_info info)2531 static napi_value AudioManagerRegisterAudioSceneChangeCallback_03(napi_env env, napi_callback_info info)
2532 {
2533     napi_value res;
2534     OH_AudioManager *audioManager = nullptr;
2535     OH_AudioCommon_Result result = OH_GetAudioManager(&audioManager);
2536     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2537         LOG("OH_GetAudioManager error, result is: %{public}d", result);
2538         napi_create_int32(env, TEST_FAIL, &res);
2539         return res;
2540     }
2541 
2542     // MyOnAudioSceneChangeCallback
2543     result = OH_AudioManager_RegisterAudioSceneChangeCallback(audioManager, nullptr, nullptr);
2544     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2545         LOG("OH_AudioManager_RegisterAudioSceneChangeCallback error, result is: %{public}d", result);
2546         napi_create_int32(env, TEST_FAIL, &res);
2547         return res;
2548     }
2549 
2550     napi_create_int32(env, TEST_PASS, &res);
2551     return res;
2552 }
2553 
AudioManagerUnregisterAudioSceneChangeCallback_01(napi_env env,napi_callback_info info)2554 static napi_value AudioManagerUnregisterAudioSceneChangeCallback_01(napi_env env, napi_callback_info info)
2555 {
2556     napi_value res;
2557     // MyOnAudioSceneChangeCallback
2558     OH_AudioCommon_Result result = OH_AudioManager_UnregisterAudioSceneChangeCallback(nullptr,
2559         MyOnAudioSceneChangeCallback);
2560     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2561         LOG("OH_AudioManager_UnregisterAudioSceneChangeCallback error, result is: %{public}d", result);
2562         napi_create_int32(env, TEST_FAIL, &res);
2563         return res;
2564     }
2565 
2566     napi_create_int32(env, TEST_PASS, &res);
2567     return res;
2568 }
2569 
AudioManagerUnregisterAudioSceneChangeCallback_02(napi_env env,napi_callback_info info)2570 static napi_value AudioManagerUnregisterAudioSceneChangeCallback_02(napi_env env, napi_callback_info info)
2571 {
2572     napi_value res;
2573     OH_AudioManager *audioManager = nullptr;
2574     OH_AudioCommon_Result result = OH_GetAudioManager(&audioManager);
2575     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2576         LOG("OH_GetAudioManager error, result is: %{public}d", result);
2577         napi_create_int32(env, TEST_FAIL, &res);
2578         return res;
2579     }
2580 
2581     // MyOnAudioSceneChangeCallback
2582     result = OH_AudioManager_UnregisterAudioSceneChangeCallback(audioManager, nullptr);
2583     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2584         LOG("OH_AudioManager_UnregisterAudioSceneChangeCallback error, result is: %{public}d", result);
2585         napi_create_int32(env, TEST_FAIL, &res);
2586         return res;
2587     }
2588 
2589     napi_create_int32(env, TEST_PASS, &res);
2590     return res;
2591 }
2592 
AudioManagerUnregisterAudioSceneChangeCallback_03(napi_env env,napi_callback_info info)2593 static napi_value AudioManagerUnregisterAudioSceneChangeCallback_03(napi_env env, napi_callback_info info)
2594 {
2595     napi_value res;
2596     OH_AudioManager *audioManager = nullptr;
2597     OH_AudioCommon_Result result = OH_GetAudioManager(&audioManager);
2598     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2599         LOG("OH_GetAudioManager error, result is: %{public}d", result);
2600         napi_create_int32(env, TEST_FAIL, &res);
2601         return res;
2602     }
2603 
2604     // MyOnAudioSceneChangeCallback
2605     result = OH_AudioManager_UnregisterAudioSceneChangeCallback(audioManager, MyOnAudioSceneChangeCallback);
2606     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2607         LOG("OH_AudioManager_UnregisterAudioSceneChangeCallback error, result is: %{public}d", result);
2608         napi_create_int32(env, TEST_FAIL, &res);
2609         return res;
2610     }
2611 
2612     napi_create_int32(env, TEST_PASS, &res);
2613     return res;
2614 }
2615 
AudioManagerUnregisterAudioSceneChangeCallback_04(napi_env env,napi_callback_info info)2616 static napi_value AudioManagerUnregisterAudioSceneChangeCallback_04(napi_env env, napi_callback_info info)
2617 {
2618     napi_value res;
2619     OH_AudioManager *audioManager = nullptr;
2620     OH_AudioCommon_Result result = OH_GetAudioManager(&audioManager);
2621     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2622         LOG("OH_GetAudioManager error, result is: %{public}d", result);
2623         napi_create_int32(env, TEST_FAIL, &res);
2624         return res;
2625     }
2626 
2627     // MyOnAudioSceneChangeCallback
2628     result = OH_AudioManager_RegisterAudioSceneChangeCallback(audioManager, MyOnAudioSceneChangeCallback, nullptr);
2629     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2630         LOG("OH_AudioManager_RegisterAudioSceneChangeCallback error, result is: %{public}d", result);
2631         napi_create_int32(env, TEST_FAIL, &res);
2632         return res;
2633     }
2634 
2635     result = OH_AudioManager_UnregisterAudioSceneChangeCallback(audioManager, MyOnAudioSceneChangeCallback);
2636     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2637         LOG("OH_AudioManager_UnregisterAudioSceneChangeCallback 1 error, result is: %{public}d", result);
2638         napi_create_int32(env, TEST_FAIL, &res);
2639         return res;
2640     }
2641 
2642     result = OH_AudioManager_UnregisterAudioSceneChangeCallback(audioManager, MyOnAudioSceneChangeCallback);
2643     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2644         LOG("OH_AudioManager_UnregisterAudioSceneChangeCallback 2 error, result is: %{public}d", result);
2645         napi_create_int32(env, TEST_FAIL, &res);
2646         return res;
2647     }
2648 
2649     napi_create_int32(env, TEST_PASS, &res);
2650     return res;
2651 }
2652 
AudioRoutingManagerGetAvailableDevices001(napi_env env,napi_callback_info info)2653 static napi_value AudioRoutingManagerGetAvailableDevices001(napi_env env, napi_callback_info info)
2654 {
2655     napi_value res;
2656     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2657     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2658     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2659         napi_create_int32(env, TEST_FAIL, &res);
2660         return res;
2661     }
2662     OH_AudioDevice_Usage deviceUsage = AUDIO_DEVICE_USAGE_MEDIA_OUTPUT;
2663     OH_AudioDeviceDescriptorArray *array;
2664     result = OH_AudioRoutingManager_GetAvailableDevices(audioRoutingManager, deviceUsage, &array);
2665     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2666         napi_create_int32(env, TEST_FAIL, &res);
2667         return res;
2668     }
2669 
2670     result = OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
2671     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2672         napi_create_int32(env, TEST_FAIL, &res);
2673         return res;
2674     }
2675     napi_create_int32(env, TEST_PASS, &res);
2676     return res;
2677 }
2678 
AudioRoutingManagerGetPreferredOutputDevice001(napi_env env,napi_callback_info info)2679 static napi_value AudioRoutingManagerGetPreferredOutputDevice001(napi_env env, napi_callback_info info)
2680 {
2681     napi_value res;
2682     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2683     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2684     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2685         napi_create_int32(env, TEST_FAIL, &res);
2686         return res;
2687     }
2688     OH_AudioStream_Usage streamUsage = AUDIOSTREAM_USAGE_MUSIC;
2689     OH_AudioDeviceDescriptorArray *array;
2690     result = OH_AudioRoutingManager_GetPreferredOutputDevice(audioRoutingManager, streamUsage, &array);
2691     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2692         napi_create_int32(env, TEST_FAIL, &res);
2693         return res;
2694     }
2695 
2696     result = OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
2697     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2698         napi_create_int32(env, TEST_FAIL, &res);
2699         return res;
2700     }
2701     napi_create_int32(env, TEST_PASS, &res);
2702     return res;
2703 }
2704 
AudioRoutingManagerGetPreferredInputDevice001(napi_env env,napi_callback_info info)2705 static napi_value AudioRoutingManagerGetPreferredInputDevice001(napi_env env, napi_callback_info info)
2706 {
2707     napi_value res;
2708     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2709     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2710     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2711         napi_create_int32(env, TEST_FAIL, &res);
2712         return res;
2713     }
2714     OH_AudioStream_SourceType sourceType = AUDIOSTREAM_SOURCE_TYPE_MIC;
2715     OH_AudioDeviceDescriptorArray *array;
2716     result = OH_AudioRoutingManager_GetPreferredInputDevice(audioRoutingManager, sourceType, &array);
2717     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2718         napi_create_int32(env, TEST_FAIL, &res);
2719         return res;
2720     }
2721 
2722     result = OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
2723     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2724         napi_create_int32(env, TEST_FAIL, &res);
2725         return res;
2726     }
2727     napi_create_int32(env, TEST_PASS, &res);
2728     return res;
2729 }
2730 
AudioRoutingManagerSetMicBlockStatusCallback_001(napi_env env,napi_callback_info info)2731 static napi_value AudioRoutingManagerSetMicBlockStatusCallback_001(napi_env env, napi_callback_info info)
2732 {
2733     napi_value res;
2734     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2735     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2736     LOG("AudioRoutingManagerSetMicBlockStatusCallback_Test, result1 is: %{public}d", result);
2737     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2738         napi_create_int32(env, TEST_FAIL, &res);
2739         return res;
2740     }
2741     bool supported = false;
2742     void *userData = nullptr;
2743     result = OH_AudioRoutingManager_IsMicBlockDetectionSupported(audioRoutingManager, &supported);
2744     LOG("AudioRoutingManagerSetMicBlockStatusCallback_Test, result2 is: %{public}d", result);
2745     if (result == AUDIOCOMMON_RESULT_SUCCESS) {
2746         if (supported == true) {
2747             OH_AudioRoutingManager_OnDeviceBlockStatusCallback micBlockedCallback = MicBlockedCallback;
2748             result = OH_AudioRoutingManager_SetMicBlockStatusCallback(audioRoutingManager, micBlockedCallback, userData);
2749             LOG("AudioRoutingManagerSetMicBlockStatusCallback_Test, result3 is: %{public}d", result);
2750             if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2751                 napi_create_int32(env, TEST_FAIL, &res);
2752                 return res;
2753             }
2754         } else {
2755             LOG("AudioRoutingManagerSetMicBlockStatusCallback_Test, result3 is: false");
2756         }
2757     } else {
2758         napi_create_int32(env, TEST_FAIL, &res);
2759         return res;
2760     }
2761     napi_create_int32(env, TEST_PASS, &res);
2762     return res;
2763 }
2764 
AudioRoutingManagerSetMicBlockStatusCallback_002(napi_env env,napi_callback_info info)2765 static napi_value AudioRoutingManagerSetMicBlockStatusCallback_002(napi_env env, napi_callback_info info)
2766 {
2767     napi_value res;
2768     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2769     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2770     LOG("AudioRoutingManagerSetMicBlockStatusCallback_Test, result1 is: %{public}d", result);
2771     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2772         napi_create_int32(env, TEST_FAIL, &res);
2773         return res;
2774     }
2775     bool supported = false;
2776     void *userData = nullptr;
2777     result = OH_AudioRoutingManager_IsMicBlockDetectionSupported(audioRoutingManager, &supported);
2778     LOG("AudioRoutingManagerSetMicBlockStatusCallback_Test, result2 is: %{public}d", result);
2779     if (result == AUDIOCOMMON_RESULT_SUCCESS) {
2780         if (supported == true) {
2781             OH_AudioRoutingManager_OnDeviceBlockStatusCallback micBlockedCallback = MicBlockedCallback;
2782             result = OH_AudioRoutingManager_SetMicBlockStatusCallback(nullptr, micBlockedCallback, userData);
2783             LOG("AudioRoutingManagerSetMicBlockStatusCallback_Test, result3 is: %{public}d", result);
2784             if (result == AUDIOCOMMON_RESULT_SUCCESS) {
2785                 napi_create_int32(env, TEST_FAIL, &res);
2786                 return res;
2787             }
2788         } else {
2789             LOG("OH_AudioRoutingManager_IsMicBlockDetectionSupported_Test, supported is: false");
2790         }
2791     } else {
2792         napi_create_int32(env, TEST_FAIL, &res);
2793         return res;
2794     }
2795     napi_create_int32(env, TEST_PASS, &res);
2796     return res;
2797 }
2798 
AudioRoutingManagerRegisterDeviceChangeCallback_001(napi_env env,napi_callback_info info)2799 static napi_value AudioRoutingManagerRegisterDeviceChangeCallback_001(napi_env env, napi_callback_info info)
2800 {
2801     napi_value res;
2802     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2803     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2804     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2805         napi_create_int32(env, TEST_FAIL, &res);
2806         return res;
2807     }
2808     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_NONE;
2809     OH_AudioRoutingManager_OnDeviceChangedCallback callback = DeviceChangeCallback;
2810     result = OH_AudioRoutingManager_RegisterDeviceChangeCallback(audioRoutingManager, deviceFlag, callback);
2811     LOG("AudioRoutingManagerRegisterDeviceChangeCallback_001, result is: %{public}d", result);
2812     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2813         napi_create_int32(env, TEST_FAIL, &res);
2814     } else {
2815         napi_create_int32(env, TEST_PASS, &res);
2816     }
2817     return res;
2818 }
2819 
AudioRoutingManagerRegisterDeviceChangeCallback_002(napi_env env,napi_callback_info info)2820 static napi_value AudioRoutingManagerRegisterDeviceChangeCallback_002(napi_env env, napi_callback_info info)
2821 {
2822     napi_value res;
2823     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2824     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2825     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2826         napi_create_int32(env, TEST_FAIL, &res);
2827         return res;
2828     }
2829     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
2830     OH_AudioRoutingManager_OnDeviceChangedCallback callback = DeviceChangeCallback;
2831     result = OH_AudioRoutingManager_RegisterDeviceChangeCallback(audioRoutingManager, deviceFlag, callback);
2832     LOG("AudioRoutingManagerRegisterDeviceChangeCallback_002, result is: %{public}d", result);
2833     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2834         napi_create_int32(env, TEST_FAIL, &res);
2835     } else {
2836         napi_create_int32(env, TEST_PASS, &res);
2837     }
2838     return res;
2839 }
2840 
AudioRoutingManagerRegisterDeviceChangeCallback_003(napi_env env,napi_callback_info info)2841 static napi_value AudioRoutingManagerRegisterDeviceChangeCallback_003(napi_env env, napi_callback_info info)
2842 {
2843     napi_value res;
2844     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2845     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2846     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2847         napi_create_int32(env, TEST_FAIL, &res);
2848         return res;
2849     }
2850     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_INPUT;
2851     OH_AudioRoutingManager_OnDeviceChangedCallback callback = DeviceChangeCallback;
2852     result = OH_AudioRoutingManager_RegisterDeviceChangeCallback(audioRoutingManager, deviceFlag, callback);
2853     LOG("AudioRoutingManagerRegisterDeviceChangeCallback_003, result is: %{public}d", result);
2854     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2855         napi_create_int32(env, TEST_FAIL, &res);
2856     } else {
2857         napi_create_int32(env, TEST_PASS, &res);
2858     }
2859     return res;
2860 }
2861 
AudioRoutingManagerRegisterDeviceChangeCallback_004(napi_env env,napi_callback_info info)2862 static napi_value AudioRoutingManagerRegisterDeviceChangeCallback_004(napi_env env, napi_callback_info info)
2863 {
2864     napi_value res;
2865     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2866     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2867     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2868         napi_create_int32(env, TEST_FAIL, &res);
2869         return res;
2870     }
2871     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
2872     OH_AudioRoutingManager_OnDeviceChangedCallback callback = DeviceChangeCallback;
2873     result = OH_AudioRoutingManager_RegisterDeviceChangeCallback(audioRoutingManager, deviceFlag, callback);
2874     LOG("AudioRoutingManagerRegisterDeviceChangeCallback_004, result is: %{public}d", result);
2875     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2876         napi_create_int32(env, TEST_FAIL, &res);
2877     } else {
2878         napi_create_int32(env, TEST_PASS, &res);
2879     }
2880     return res;
2881 }
2882 
AudioRoutingManagerRegisterDeviceChangeCallback_005(napi_env env,napi_callback_info info)2883 static napi_value AudioRoutingManagerRegisterDeviceChangeCallback_005(napi_env env, napi_callback_info info)
2884 {
2885     napi_value res;
2886     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2887     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
2888     OH_AudioRoutingManager_OnDeviceChangedCallback callback = DeviceChangeCallback;
2889     OH_AudioCommon_Result result =
2890         OH_AudioRoutingManager_RegisterDeviceChangeCallback(audioRoutingManager, deviceFlag, callback);
2891     LOG("AudioRoutingManagerRegisterDeviceChangeCallback_005, result is: %{public}d", result);
2892     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2893         napi_create_int32(env, TEST_FAIL, &res);
2894     } else {
2895         napi_create_int32(env, TEST_PASS, &res);
2896     }
2897     return res;
2898 }
2899 
AudioRoutingManagerRegisterDeviceChangeCallback_006(napi_env env,napi_callback_info info)2900 static napi_value AudioRoutingManagerRegisterDeviceChangeCallback_006(napi_env env, napi_callback_info info)
2901 {
2902     napi_value res;
2903     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2904     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2905     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2906         napi_create_int32(env, TEST_FAIL, &res);
2907         return res;
2908     }
2909     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
2910     OH_AudioRoutingManager_OnDeviceChangedCallback callback = nullptr;
2911     result = OH_AudioRoutingManager_RegisterDeviceChangeCallback(audioRoutingManager, deviceFlag, callback);
2912     LOG("AudioRoutingManagerRegisterDeviceChangeCallback_006, result is: %{public}d", result);
2913     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2914         napi_create_int32(env, TEST_FAIL, &res);
2915     } else {
2916         napi_create_int32(env, TEST_PASS, &res);
2917     }
2918     return res;
2919 }
2920 
AudioRoutingManagerRegisterDeviceChangeCallback_007(napi_env env,napi_callback_info info)2921 static napi_value AudioRoutingManagerRegisterDeviceChangeCallback_007(napi_env env, napi_callback_info info)
2922 {
2923     napi_value res;
2924     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2925     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2926     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2927         napi_create_int32(env, TEST_FAIL, &res);
2928         return res;
2929     }
2930     int32_t flag = -1;
2931     OH_AudioDevice_Flag deviceFlag = (OH_AudioDevice_Flag)flag;
2932     OH_AudioRoutingManager_OnDeviceChangedCallback callback = DeviceChangeCallback;
2933     result = OH_AudioRoutingManager_RegisterDeviceChangeCallback(audioRoutingManager, deviceFlag, callback);
2934     LOG("AudioRoutingManagerRegisterDeviceChangeCallback_007, result is: %{public}d", result);
2935     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2936         napi_create_int32(env, TEST_FAIL, &res);
2937     } else {
2938         napi_create_int32(env, TEST_PASS, &res);
2939     }
2940     return res;
2941 }
2942 
AudioRoutingManagerRegisterDeviceChangeCallback_008(napi_env env,napi_callback_info info)2943 static napi_value AudioRoutingManagerRegisterDeviceChangeCallback_008(napi_env env, napi_callback_info info)
2944 {
2945     napi_value res;
2946     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2947     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2948     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2949         napi_create_int32(env, TEST_FAIL, &res);
2950         return res;
2951     }
2952     int32_t flag = 4;
2953     OH_AudioDevice_Flag deviceFlag = (OH_AudioDevice_Flag)flag;
2954     OH_AudioRoutingManager_OnDeviceChangedCallback callback = DeviceChangeCallback;
2955     result = OH_AudioRoutingManager_RegisterDeviceChangeCallback(audioRoutingManager, deviceFlag, callback);
2956     LOG("AudioRoutingManagerRegisterDeviceChangeCallback_008, result is: %{public}d", result);
2957     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2958         napi_create_int32(env, TEST_FAIL, &res);
2959     } else {
2960         napi_create_int32(env, TEST_PASS, &res);
2961     }
2962     return res;
2963 }
2964 
AudioRoutingManagerUnregisterDeviceChangeCallback_001(napi_env env,napi_callback_info info)2965 static napi_value AudioRoutingManagerUnregisterDeviceChangeCallback_001(napi_env env, napi_callback_info info)
2966 {
2967     napi_value res;
2968     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2969     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
2970     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
2971         napi_create_int32(env, TEST_FAIL, &res);
2972         return res;
2973     }
2974     OH_AudioRoutingManager_OnDeviceChangedCallback callback = DeviceChangeCallback;
2975     result = OH_AudioRoutingManager_UnregisterDeviceChangeCallback(audioRoutingManager, callback);
2976     LOG("AudioRoutingManagerUnregisterDeviceChangeCallback_001, result is: %{public}d", result);
2977     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
2978         napi_create_int32(env, TEST_FAIL, &res);
2979     } else {
2980         napi_create_int32(env, TEST_PASS, &res);
2981     }
2982     return res;
2983 }
2984 
AudioRoutingManagerUnregisterDeviceChangeCallback_002(napi_env env,napi_callback_info info)2985 static napi_value AudioRoutingManagerUnregisterDeviceChangeCallback_002(napi_env env, napi_callback_info info)
2986 {
2987     napi_value res;
2988     OH_AudioRoutingManager *audioRoutingManager = nullptr;
2989     OH_AudioRoutingManager_OnDeviceChangedCallback callback = DeviceChangeCallback;
2990     OH_AudioCommon_Result result = OH_AudioRoutingManager_UnregisterDeviceChangeCallback(
2991         audioRoutingManager, callback);
2992     LOG("AudioRoutingManagerUnregisterDeviceChangeCallback_002, result is: %{public}d", result);
2993     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
2994         napi_create_int32(env, TEST_FAIL, &res);
2995     } else {
2996         napi_create_int32(env, TEST_PASS, &res);
2997     }
2998     return res;
2999 }
3000 
AudioRoutingManagerUnregisterDeviceChangeCallback_003(napi_env env,napi_callback_info info)3001 static napi_value AudioRoutingManagerUnregisterDeviceChangeCallback_003(napi_env env, napi_callback_info info)
3002 {
3003     napi_value res;
3004     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3005     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3006     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3007         napi_create_int32(env, TEST_FAIL, &res);
3008         return res;
3009     }
3010     OH_AudioRoutingManager_OnDeviceChangedCallback callback = nullptr;
3011     result = OH_AudioRoutingManager_UnregisterDeviceChangeCallback(audioRoutingManager, callback);
3012     LOG("AudioRoutingManagerUnregisterDeviceChangeCallback_003, result is: %{public}d", result);
3013     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3014         napi_create_int32(env, TEST_FAIL, &res);
3015     } else {
3016         napi_create_int32(env, TEST_PASS, &res);
3017     }
3018     return res;
3019 }
3020 
AudioRoutingManagerReleaseDevices_001(napi_env env,napi_callback_info info)3021 static napi_value AudioRoutingManagerReleaseDevices_001(napi_env env, napi_callback_info info)
3022 {
3023     napi_value res;
3024     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3025     OH_AudioDeviceDescriptorArray *audioDeviceDescriptorArray = nullptr;
3026     OH_AudioCommon_Result result =
3027         OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, audioDeviceDescriptorArray);
3028     LOG("AudioRoutingManagerReleaseDevices_001, result is: %{public}d", result);
3029     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3030         napi_create_int32(env, TEST_FAIL, &res);
3031     } else {
3032         napi_create_int32(env, TEST_PASS, &res);
3033     }
3034     return res;
3035 }
3036 
AudioRoutingManagerReleaseDevices_002(napi_env env,napi_callback_info info)3037 static napi_value AudioRoutingManagerReleaseDevices_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_AudioDeviceDescriptorArray *audioDeviceDescriptorArray = nullptr;
3047     result = OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, audioDeviceDescriptorArray);
3048     LOG("AudioRoutingManagerReleaseDevices_002, result is: %{public}d", result);
3049     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3050         napi_create_int32(env, TEST_FAIL, &res);
3051     } else {
3052         napi_create_int32(env, TEST_PASS, &res);
3053     }
3054     return res;
3055 }
3056 
AudioAudioDeviceDescriptorGetDeviceType_001(napi_env env,napi_callback_info info)3057 static napi_value AudioAudioDeviceDescriptorGetDeviceType_001(napi_env env, napi_callback_info info)
3058 {
3059     napi_value res;
3060     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3061     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3062     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3063         napi_create_int32(env, TEST_FAIL, &res);
3064         return res;
3065     }
3066     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
3067     OH_AudioDeviceDescriptorArray *array = nullptr;
3068     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3069     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
3070         napi_create_int32(env, TEST_FAIL, &res);
3071         return res;
3072     }
3073     int size = array->size;
3074     for (int i = 0; i < size; i++) {
3075         OH_AudioDeviceDescriptor *descriptor = array->descriptors[i];
3076         if (descriptor == nullptr) {
3077             napi_create_int32(env, TEST_FAIL, &res);
3078             return res;
3079         }
3080         OH_AudioDevice_Type deviceType = AUDIO_DEVICE_TYPE_INVALID;
3081         result = OH_AudioDeviceDescriptor_GetDeviceType(descriptor, &deviceType);
3082         LOG("AudioAudioDeviceDescriptorGetDeviceType_001, result is: %{public}d", result);
3083         if (result != AUDIOCOMMON_RESULT_SUCCESS) {
3084             napi_create_int32(env, TEST_FAIL, &res);
3085             break;
3086         } else {
3087             napi_create_int32(env, TEST_PASS, &res);
3088         }
3089     }
3090     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
3091     return res;
3092 }
3093 
AudioAudioDeviceDescriptorGetDeviceType_002(napi_env env,napi_callback_info info)3094 static napi_value AudioAudioDeviceDescriptorGetDeviceType_002(napi_env env, napi_callback_info info)
3095 {
3096     napi_value res;
3097     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3098     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3099     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3100         napi_create_int32(env, TEST_FAIL, &res);
3101         return res;
3102     }
3103     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3104     OH_AudioDeviceDescriptorArray *array = nullptr;
3105     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3106     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3107     if (result != AUDIOCOMMON_RESULT_SUCCESS || descriptor == nullptr || array == nullptr) {
3108         napi_create_int32(env, TEST_FAIL, &res);
3109         return res;
3110     }
3111 
3112     result = OH_AudioDeviceDescriptor_GetDeviceType(descriptor, nullptr);
3113     LOG("AudioAudioDeviceDescriptorGetDeviceType_002, result is: %{public}d", result);
3114     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3115         napi_create_int32(env, TEST_FAIL, &res);
3116     } else {
3117         napi_create_int32(env, TEST_PASS, &res);
3118     }
3119     return res;
3120 }
3121 
AudioAudioDeviceDescriptorGetDeviceType_003(napi_env env,napi_callback_info info)3122 static napi_value AudioAudioDeviceDescriptorGetDeviceType_003(napi_env env, napi_callback_info info)
3123 {
3124     OH_AudioDeviceDescriptor *descriptor = nullptr;
3125     OH_AudioDevice_Type deviceType = AUDIO_DEVICE_TYPE_INVALID;
3126     OH_AudioCommon_Result result = OH_AudioDeviceDescriptor_GetDeviceType(descriptor, &deviceType);
3127     LOG("AudioAudioDeviceDescriptorGetDeviceType_003, result is: %{public}d", result);
3128     napi_value res;
3129     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3130         napi_create_int32(env, TEST_FAIL, &res);
3131     } else {
3132         napi_create_int32(env, TEST_PASS, &res);
3133     }
3134     return res;
3135 }
3136 
AudioAudioDeviceDescriptorGetDeviceRole_001(napi_env env,napi_callback_info info)3137 static napi_value AudioAudioDeviceDescriptorGetDeviceRole_001(napi_env env, napi_callback_info info)
3138 {
3139     napi_value res;
3140     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3141     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3142     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3143         napi_create_int32(env, TEST_FAIL, &res);
3144         return res;
3145     }
3146     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
3147     OH_AudioDeviceDescriptorArray *array = nullptr;
3148     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3149     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
3150         napi_create_int32(env, TEST_FAIL, &res);
3151         return res;
3152     }
3153 
3154     int size = array->size;
3155     for (int i = 0; i < size; i++) {
3156         OH_AudioDeviceDescriptor *descriptor = array->descriptors[i];
3157         if (descriptor == nullptr) {
3158             napi_create_int32(env, TEST_FAIL, &res);
3159             return res;
3160         }
3161         OH_AudioDevice_Role deviceRole = AUDIO_DEVICE_ROLE_OUTPUT;
3162         result = OH_AudioDeviceDescriptor_GetDeviceRole(descriptor, &deviceRole);
3163         LOG("AudioAudioDeviceDescriptorGetDeviceRole_001, result is: %{public}d", result);
3164         if (result != AUDIOCOMMON_RESULT_SUCCESS) {
3165             napi_create_int32(env, TEST_FAIL, &res);
3166             break;
3167         } else {
3168             napi_create_int32(env, TEST_PASS, &res);
3169         }
3170     }
3171     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
3172     return res;
3173 }
3174 
AudioAudioDeviceDescriptorGetDeviceRole_002(napi_env env,napi_callback_info info)3175 static napi_value AudioAudioDeviceDescriptorGetDeviceRole_002(napi_env env, napi_callback_info info)
3176 {
3177     napi_value res;
3178     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3179     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3180     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3181         napi_create_int32(env, TEST_FAIL, &res);
3182         return res;
3183     }
3184     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3185     OH_AudioDeviceDescriptorArray *array = nullptr;
3186     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3187     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3188     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3189         napi_create_int32(env, TEST_FAIL, &res);
3190         return res;
3191     }
3192 
3193     result = OH_AudioDeviceDescriptor_GetDeviceRole(descriptor, nullptr);
3194     LOG("AudioAudioDeviceDescriptorGetDeviceRole_002, result is: %{public}d", result);
3195     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3196         napi_create_int32(env, TEST_FAIL, &res);
3197     } else {
3198         napi_create_int32(env, TEST_PASS, &res);
3199     }
3200     return res;
3201 }
3202 
AudioAudioDeviceDescriptorGetDeviceRole_003(napi_env env,napi_callback_info info)3203 static napi_value AudioAudioDeviceDescriptorGetDeviceRole_003(napi_env env, napi_callback_info info)
3204 {
3205     napi_value res;
3206     OH_AudioDeviceDescriptor *descriptor = nullptr;
3207     OH_AudioDevice_Role deviceRole = AUDIO_DEVICE_ROLE_OUTPUT;
3208     OH_AudioCommon_Result result = OH_AudioDeviceDescriptor_GetDeviceRole(descriptor, &deviceRole);
3209     LOG("AudioAudioDeviceDescriptorGetDeviceRole_003, result is: %{public}d", result);
3210     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3211         napi_create_int32(env, TEST_FAIL, &res);
3212     } else {
3213         napi_create_int32(env, TEST_PASS, &res);
3214     }
3215     return res;
3216 }
3217 
AudioAudioDeviceDescriptorGetDeviceId_001(napi_env env,napi_callback_info info)3218 static napi_value AudioAudioDeviceDescriptorGetDeviceId_001(napi_env env, napi_callback_info info)
3219 {
3220     napi_value res;
3221     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3222     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3223     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3224         napi_create_int32(env, TEST_FAIL, &res);
3225         return res;
3226     }
3227     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
3228     OH_AudioDeviceDescriptorArray *array = nullptr;
3229     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3230     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
3231         napi_create_int32(env, TEST_FAIL, &res);
3232         return res;
3233     }
3234 
3235     int size = array->size;
3236     for (int i = 0; i < size; i++) {
3237     OH_AudioDeviceDescriptor *descriptor = array->descriptors[i];
3238     if (descriptor == nullptr) {
3239         napi_create_int32(env, TEST_FAIL, &res);
3240         return res;
3241     }
3242     uint32_t id = 0;
3243     result = OH_AudioDeviceDescriptor_GetDeviceId(descriptor, &id);
3244     LOG("AudioAudioDeviceDescriptorGetDeviceId_001, result is: %{public}d", result);
3245     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
3246         napi_create_int32(env, TEST_FAIL, &res);
3247             break;
3248         } else {
3249             napi_create_int32(env, TEST_PASS, &res);
3250         }
3251     }
3252     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
3253     return res;
3254 }
3255 
AudioAudioDeviceDescriptorGetDeviceId_002(napi_env env,napi_callback_info info)3256 static napi_value AudioAudioDeviceDescriptorGetDeviceId_002(napi_env env, napi_callback_info info)
3257 {
3258     napi_value res;
3259     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3260     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3261     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3262         napi_create_int32(env, TEST_FAIL, &res);
3263         return res;
3264     }
3265     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3266     OH_AudioDeviceDescriptorArray *array = nullptr;
3267     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3268     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3269     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3270         napi_create_int32(env, TEST_FAIL, &res);
3271         return res;
3272     }
3273 
3274     result = OH_AudioDeviceDescriptor_GetDeviceId(descriptor, nullptr);
3275     LOG("AudioAudioDeviceDescriptorGetDeviceId_002, result is: %{public}d", result);
3276     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3277         napi_create_int32(env, TEST_FAIL, &res);
3278     } else {
3279         napi_create_int32(env, TEST_PASS, &res);
3280     }
3281     return res;
3282 }
3283 
AudioAudioDeviceDescriptorGetDeviceId_003(napi_env env,napi_callback_info info)3284 static napi_value AudioAudioDeviceDescriptorGetDeviceId_003(napi_env env, napi_callback_info info)
3285 {
3286     napi_value res;
3287     OH_AudioDeviceDescriptor *descriptor = nullptr;
3288     uint32_t id = 0;
3289     OH_AudioCommon_Result result = OH_AudioDeviceDescriptor_GetDeviceId(descriptor, &id);
3290     LOG("AudioAudioDeviceDescriptorGetDeviceId_003, result is: %{public}d", result);
3291     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3292         napi_create_int32(env, TEST_FAIL, &res);
3293     } else {
3294         napi_create_int32(env, TEST_PASS, &res);
3295     }
3296     return res;
3297 }
3298 
AudioAudioDeviceDescriptorGetDeviceName_001(napi_env env,napi_callback_info info)3299 static napi_value AudioAudioDeviceDescriptorGetDeviceName_001(napi_env env, napi_callback_info info)
3300 {
3301     napi_value res;
3302     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3303     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3304     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3305         napi_create_int32(env, TEST_FAIL, &res);
3306         return res;
3307     }
3308     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
3309     OH_AudioDeviceDescriptorArray *array = nullptr;
3310     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3311     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
3312         napi_create_int32(env, TEST_FAIL, &res);
3313         return res;
3314     }
3315 
3316     int size = array->size;
3317     for (int i = 0; i < size; i++) {
3318         OH_AudioDeviceDescriptor *descriptor = array->descriptors[i];
3319         if (descriptor == nullptr) {
3320             napi_create_int32(env, TEST_FAIL, &res);
3321             return res;
3322         }
3323         char* deviceName;
3324         result = OH_AudioDeviceDescriptor_GetDeviceName(descriptor, &deviceName);
3325         LOG("AudioAudioDeviceDescriptorGetDeviceName_001, result is: %{public}d", result);
3326         if (result != AUDIOCOMMON_RESULT_SUCCESS) {
3327             napi_create_int32(env, TEST_FAIL, &res);
3328             break;
3329         } else {
3330             napi_create_int32(env, TEST_PASS, &res);
3331         }
3332     }
3333     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
3334     return res;
3335 }
3336 
AudioAudioDeviceDescriptorGetDeviceName_002(napi_env env,napi_callback_info info)3337 static napi_value AudioAudioDeviceDescriptorGetDeviceName_002(napi_env env, napi_callback_info info)
3338 {
3339     napi_value res;
3340     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3341     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3342     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3343         napi_create_int32(env, TEST_FAIL, &res);
3344         return res;
3345     }
3346     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3347     OH_AudioDeviceDescriptorArray *array = nullptr;
3348     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3349     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3350     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3351         napi_create_int32(env, TEST_FAIL, &res);
3352         return res;
3353     }
3354 
3355     result = OH_AudioDeviceDescriptor_GetDeviceName(descriptor, nullptr);
3356     LOG("AudioAudioDeviceDescriptorGetDeviceName_002, result is: %{public}d", result);
3357     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3358         napi_create_int32(env, TEST_FAIL, &res);
3359     } else {
3360         napi_create_int32(env, TEST_PASS, &res);
3361     }
3362     return res;
3363 }
3364 
AudioAudioDeviceDescriptorGetDeviceName_003(napi_env env,napi_callback_info info)3365 static napi_value AudioAudioDeviceDescriptorGetDeviceName_003(napi_env env, napi_callback_info info)
3366 {
3367     napi_value res;
3368     OH_AudioDeviceDescriptor *descriptor = nullptr;
3369     char* deviceName;
3370     OH_AudioCommon_Result result = OH_AudioDeviceDescriptor_GetDeviceName(descriptor, &deviceName);
3371     LOG("AudioAudioDeviceDescriptorGetDeviceName_003, result is: %{public}d", result);
3372     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3373         napi_create_int32(env, TEST_FAIL, &res);
3374     } else {
3375         napi_create_int32(env, TEST_PASS, &res);
3376     }
3377     return res;
3378 }
3379 
AudioAudioDeviceDescriptorGetDeviceAddress_001(napi_env env,napi_callback_info info)3380 static napi_value AudioAudioDeviceDescriptorGetDeviceAddress_001(napi_env env, napi_callback_info info)
3381 {
3382     napi_value res;
3383     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3384     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3385     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3386         napi_create_int32(env, TEST_FAIL, &res);
3387         return res;
3388     }
3389     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
3390     OH_AudioDeviceDescriptorArray *array = nullptr;
3391     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3392     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
3393         napi_create_int32(env, TEST_FAIL, &res);
3394         return res;
3395     }
3396 
3397     int size = array->size;
3398     for (int i = 0; i < size; i++) {
3399         OH_AudioDeviceDescriptor *descriptor = array->descriptors[i];
3400         if (descriptor == nullptr) {
3401             napi_create_int32(env, TEST_FAIL, &res);
3402             return res;
3403         }
3404         char *address;
3405         result = OH_AudioDeviceDescriptor_GetDeviceAddress(descriptor, &address);
3406         LOG("AudioAudioDeviceDescriptorGetDeviceAddress_001, result is: %{public}d", result);
3407         if (result != AUDIOCOMMON_RESULT_SUCCESS) {
3408             napi_create_int32(env, TEST_FAIL, &res);
3409             break;
3410         } else {
3411             napi_create_int32(env, TEST_PASS, &res);
3412         }
3413     }
3414     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
3415     return res;
3416 }
3417 
AudioAudioDeviceDescriptorGetDeviceAddress_002(napi_env env,napi_callback_info info)3418 static napi_value AudioAudioDeviceDescriptorGetDeviceAddress_002(napi_env env, napi_callback_info info)
3419 {
3420     napi_value res;
3421     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3422     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3423     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3424         napi_create_int32(env, TEST_FAIL, &res);
3425         return res;
3426     }
3427     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3428     OH_AudioDeviceDescriptorArray *array = nullptr;
3429     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3430     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3431     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3432         napi_create_int32(env, TEST_FAIL, &res);
3433         return res;
3434     }
3435 
3436     result = OH_AudioDeviceDescriptor_GetDeviceAddress(descriptor, nullptr);
3437     LOG("AudioAudioDeviceDescriptorGetDeviceAddress_002, result is: %{public}d", result);
3438     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3439         napi_create_int32(env, TEST_FAIL, &res);
3440     } else {
3441         napi_create_int32(env, TEST_PASS, &res);
3442     }
3443     return res;
3444 }
3445 
AudioAudioDeviceDescriptorGetDeviceAddress_003(napi_env env,napi_callback_info info)3446 static napi_value AudioAudioDeviceDescriptorGetDeviceAddress_003(napi_env env, napi_callback_info info)
3447 {
3448     napi_value res;
3449     OH_AudioDeviceDescriptor *descriptor = nullptr;
3450     char *address;
3451     OH_AudioCommon_Result result = OH_AudioDeviceDescriptor_GetDeviceAddress(descriptor, &address);
3452     LOG("AudioAudioDeviceDescriptorGetDeviceAddress_003, result is: %{public}d", result);
3453     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3454         napi_create_int32(env, TEST_FAIL, &res);
3455     } else {
3456         napi_create_int32(env, TEST_PASS, &res);
3457     }
3458     return res;
3459 }
3460 
AudioAudioDeviceDescriptorGetDeviceSampleRates_001(napi_env env,napi_callback_info info)3461 static napi_value AudioAudioDeviceDescriptorGetDeviceSampleRates_001(napi_env env, napi_callback_info info)
3462 {
3463     napi_value res;
3464     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3465     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3466     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3467         napi_create_int32(env, TEST_FAIL, &res);
3468         return res;
3469     }
3470     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
3471     OH_AudioDeviceDescriptorArray *array = nullptr;
3472     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3473     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
3474         napi_create_int32(env, TEST_FAIL, &res);
3475         return res;
3476     }
3477 
3478     int size = array->size;
3479     for (int i = 0; i < size; i++) {
3480         OH_AudioDeviceDescriptor *descriptor = array->descriptors[i];
3481         if (descriptor == nullptr) {
3482             napi_create_int32(env, TEST_FAIL, &res);
3483             return res;
3484         }
3485         uint32_t *sampleRates;
3486         uint32_t size = 0;
3487         result = OH_AudioDeviceDescriptor_GetDeviceSampleRates(descriptor, &sampleRates, &size);
3488         LOG("AudioAudioDeviceDescriptorGetDeviceSampleRates_001, result is: %{public}d", result);
3489         if (result != AUDIOCOMMON_RESULT_SUCCESS) {
3490             napi_create_int32(env, TEST_FAIL, &res);
3491             break;
3492         } else {
3493             napi_create_int32(env, TEST_PASS, &res);
3494         }
3495     }
3496     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
3497     return res;
3498 }
3499 
AudioAudioDeviceDescriptorGetDeviceSampleRates_002(napi_env env,napi_callback_info info)3500 static napi_value AudioAudioDeviceDescriptorGetDeviceSampleRates_002(napi_env env, napi_callback_info info)
3501 {
3502     napi_value res;
3503     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3504     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3505     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3506         napi_create_int32(env, TEST_FAIL, &res);
3507         return res;
3508     }
3509     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3510     OH_AudioDeviceDescriptorArray *array = nullptr;
3511     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3512     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3513     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3514         napi_create_int32(env, TEST_FAIL, &res);
3515         return res;
3516     }
3517 
3518     uint32_t size = 0;
3519     result = OH_AudioDeviceDescriptor_GetDeviceSampleRates(descriptor, nullptr, &size);
3520     LOG("AudioAudioDeviceDescriptorGetDeviceSampleRates_002, result is: %{public}d", result);
3521     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3522         napi_create_int32(env, TEST_FAIL, &res);
3523     } else {
3524         napi_create_int32(env, TEST_PASS, &res);
3525     }
3526     return res;
3527 }
3528 
AudioAudioDeviceDescriptorGetDeviceSampleRates_003(napi_env env,napi_callback_info info)3529 static napi_value AudioAudioDeviceDescriptorGetDeviceSampleRates_003(napi_env env, napi_callback_info info)
3530 {
3531     napi_value res;
3532     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3533     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3534     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3535         napi_create_int32(env, TEST_FAIL, &res);
3536         return res;
3537     }
3538     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3539     OH_AudioDeviceDescriptorArray *array = nullptr;
3540     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3541     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3542     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3543         napi_create_int32(env, TEST_FAIL, &res);
3544         return res;
3545     }
3546 
3547     uint32_t *sampleRates;
3548     result = OH_AudioDeviceDescriptor_GetDeviceSampleRates(descriptor, &sampleRates, nullptr);
3549     LOG("AudioAudioDeviceDescriptorGetDeviceSampleRates_003, result is: %{public}d", result);
3550     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3551         napi_create_int32(env, TEST_FAIL, &res);
3552     } else {
3553         napi_create_int32(env, TEST_PASS, &res);
3554     }
3555     return res;
3556 }
3557 
AudioAudioDeviceDescriptorGetDeviceSampleRates_004(napi_env env,napi_callback_info info)3558 static napi_value AudioAudioDeviceDescriptorGetDeviceSampleRates_004(napi_env env, napi_callback_info info)
3559 {
3560     napi_value res;
3561     OH_AudioDeviceDescriptor *descriptor = nullptr;
3562     uint32_t *sampleRates;
3563     uint32_t size = 0;
3564     OH_AudioCommon_Result result = OH_AudioDeviceDescriptor_GetDeviceSampleRates(descriptor, &sampleRates, &size);
3565     LOG("AudioAudioDeviceDescriptorGetDeviceSampleRates_004, result is: %{public}d", result);
3566     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3567         napi_create_int32(env, TEST_FAIL, &res);
3568     } else {
3569         napi_create_int32(env, TEST_PASS, &res);
3570     }
3571     return res;
3572 }
3573 
AudioAudioDeviceDescriptorGetDeviceChannelCounts_001(napi_env env,napi_callback_info info)3574 static napi_value AudioAudioDeviceDescriptorGetDeviceChannelCounts_001(napi_env env, napi_callback_info info)
3575 {
3576     napi_value res;
3577     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3578     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3579     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3580         napi_create_int32(env, TEST_FAIL, &res);
3581         return res;
3582     }
3583     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
3584     OH_AudioDeviceDescriptorArray *array = nullptr;
3585     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3586     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
3587         napi_create_int32(env, TEST_FAIL, &res);
3588         return res;
3589     }
3590 
3591     int size = array->size;
3592     for (int i = 0; i < size; i++) {
3593         OH_AudioDeviceDescriptor *descriptor = array->descriptors[i];
3594         if (descriptor == nullptr) {
3595             napi_create_int32(env, TEST_FAIL, &res);
3596             return res;
3597         }
3598         uint32_t *channelCounts;
3599         uint32_t channelSize = 0;
3600         result = OH_AudioDeviceDescriptor_GetDeviceChannelCounts(descriptor, &channelCounts, &channelSize);
3601         LOG("AudioAudioDeviceDescriptorGetDeviceChannelCounts_001, result is: %{public}d", result);
3602         if (result != AUDIOCOMMON_RESULT_SUCCESS) {
3603             napi_create_int32(env, TEST_FAIL, &res);
3604             break;
3605         } else {
3606             napi_create_int32(env, TEST_PASS, &res);
3607         }
3608     }
3609     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
3610     return res;
3611 }
3612 
AudioAudioDeviceDescriptorGetDeviceChannelCounts_002(napi_env env,napi_callback_info info)3613 static napi_value AudioAudioDeviceDescriptorGetDeviceChannelCounts_002(napi_env env, napi_callback_info info)
3614 {
3615     napi_value res;
3616     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3617     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3618     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3619         napi_create_int32(env, TEST_FAIL, &res);
3620         return res;
3621     }
3622     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3623     OH_AudioDeviceDescriptorArray *array = nullptr;
3624     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3625     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3626     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3627         napi_create_int32(env, TEST_FAIL, &res);
3628         return res;
3629     }
3630 
3631     uint32_t channelSize = 0;
3632     result = OH_AudioDeviceDescriptor_GetDeviceChannelCounts(descriptor, nullptr, &channelSize);
3633     LOG("AudioAudioDeviceDescriptorGetDeviceChannelCounts_002, result is: %{public}d", result);
3634     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3635         napi_create_int32(env, TEST_FAIL, &res);
3636     } else {
3637         napi_create_int32(env, TEST_PASS, &res);
3638     }
3639     return res;
3640 }
3641 
AudioAudioDeviceDescriptorGetDeviceChannelCounts_003(napi_env env,napi_callback_info info)3642 static napi_value AudioAudioDeviceDescriptorGetDeviceChannelCounts_003(napi_env env, napi_callback_info info)
3643 {
3644     napi_value res;
3645     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3646     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3647     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3648         napi_create_int32(env, TEST_FAIL, &res);
3649         return res;
3650     }
3651     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3652     OH_AudioDeviceDescriptorArray *array = nullptr;
3653     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3654     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3655     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3656         napi_create_int32(env, TEST_FAIL, &res);
3657         return res;
3658     }
3659 
3660     uint32_t *channelCounts;
3661     result = OH_AudioDeviceDescriptor_GetDeviceChannelCounts(descriptor, &channelCounts, nullptr);
3662     LOG("AudioAudioDeviceDescriptorGetDeviceChannelCounts_003, result is: %{public}d", result);
3663     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3664         napi_create_int32(env, TEST_FAIL, &res);
3665     } else {
3666         napi_create_int32(env, TEST_PASS, &res);
3667     }
3668     return res;
3669 }
3670 
AudioAudioDeviceDescriptorGetDeviceChannelCounts_004(napi_env env,napi_callback_info info)3671 static napi_value AudioAudioDeviceDescriptorGetDeviceChannelCounts_004(napi_env env, napi_callback_info info)
3672 {
3673     napi_value res;
3674     OH_AudioDeviceDescriptor *descriptor = nullptr;
3675     uint32_t *channelCounts;
3676     uint32_t channelSize = 0;
3677     OH_AudioCommon_Result result = OH_AudioDeviceDescriptor_GetDeviceChannelCounts(
3678         descriptor, &channelCounts, &channelSize);
3679     LOG("AudioAudioDeviceDescriptorGetDeviceChannelCounts_004, result is: %{public}d", result);
3680     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3681         napi_create_int32(env, TEST_FAIL, &res);
3682     } else {
3683         napi_create_int32(env, TEST_PASS, &res);
3684     }
3685     return res;
3686 }
3687 
AudioAudioDeviceDescriptorGetDeviceDisplayName_001(napi_env env,napi_callback_info info)3688 static napi_value AudioAudioDeviceDescriptorGetDeviceDisplayName_001(napi_env env, napi_callback_info info)
3689 {
3690     napi_value res;
3691     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3692     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3693     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3694         napi_create_int32(env, TEST_FAIL, &res);
3695         return res;
3696     }
3697     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
3698     OH_AudioDeviceDescriptorArray *array = nullptr;
3699     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3700     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
3701         napi_create_int32(env, TEST_FAIL, &res);
3702         return res;
3703     }
3704 
3705     int size = array->size;
3706     for (int i = 0; i < size; i++) {
3707         OH_AudioDeviceDescriptor *descriptor = array->descriptors[i];
3708         if (descriptor == nullptr) {
3709             napi_create_int32(env, TEST_FAIL, &res);
3710             return res;
3711         }
3712         char *displayName;
3713         result = OH_AudioDeviceDescriptor_GetDeviceDisplayName(descriptor, &displayName);
3714         LOG("AudioAudioDeviceDescriptorGetDeviceDisplayName_001, result is: %{public}d", result);
3715         if (result != AUDIOCOMMON_RESULT_SUCCESS) {
3716             napi_create_int32(env, TEST_FAIL, &res);
3717             break;
3718         } else {
3719             napi_create_int32(env, TEST_PASS, &res);
3720         }
3721     }
3722     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
3723     return res;
3724 }
3725 
AudioAudioDeviceDescriptorGetDeviceDisplayName_002(napi_env env,napi_callback_info info)3726 static napi_value AudioAudioDeviceDescriptorGetDeviceDisplayName_002(napi_env env, napi_callback_info info)
3727 {
3728     napi_value res;
3729     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3730     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3731     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3732         napi_create_int32(env, TEST_FAIL, &res);
3733         return res;
3734     }
3735     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3736     OH_AudioDeviceDescriptorArray *array = nullptr;
3737     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3738     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3739     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3740         napi_create_int32(env, TEST_FAIL, &res);
3741         return res;
3742     }
3743 
3744     result = OH_AudioDeviceDescriptor_GetDeviceDisplayName(descriptor, nullptr);
3745     LOG("AudioAudioDeviceDescriptorGetDeviceDisplayName_002, result is: %{public}d", result);
3746     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3747         napi_create_int32(env, TEST_FAIL, &res);
3748     } else {
3749         napi_create_int32(env, TEST_PASS, &res);
3750     }
3751     return res;
3752 }
3753 
AudioAudioDeviceDescriptorGetDeviceDisplayName_003(napi_env env,napi_callback_info info)3754 static napi_value AudioAudioDeviceDescriptorGetDeviceDisplayName_003(napi_env env, napi_callback_info info)
3755 {
3756     napi_value res;
3757     OH_AudioDeviceDescriptor *descriptor = nullptr;
3758     char *displayName;
3759     OH_AudioCommon_Result result = OH_AudioDeviceDescriptor_GetDeviceDisplayName(descriptor, &displayName);
3760     LOG("AudioAudioDeviceDescriptorGetDeviceDisplayName_003, result is: %{public}d", result);
3761     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3762         napi_create_int32(env, TEST_FAIL, &res);
3763     } else {
3764         napi_create_int32(env, TEST_PASS, &res);
3765     }
3766     return res;
3767 }
3768 
AudioAudioDeviceDescriptorGetDeviceEncodingTypes_001(napi_env env,napi_callback_info info)3769 static napi_value AudioAudioDeviceDescriptorGetDeviceEncodingTypes_001(napi_env env, napi_callback_info info)
3770 {
3771     napi_value res;
3772     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3773     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3774     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3775         napi_create_int32(env, TEST_FAIL, &res);
3776         return res;
3777     }
3778     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_ALL;
3779     OH_AudioDeviceDescriptorArray *array = nullptr;
3780     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3781     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
3782         napi_create_int32(env, TEST_FAIL, &res);
3783         return res;
3784     }
3785 
3786     int size = array->size;
3787     for (int i = 0; i < size; i++) {
3788         OH_AudioDeviceDescriptor *descriptor = array->descriptors[i];
3789         if (descriptor == nullptr) {
3790             napi_create_int32(env, TEST_FAIL, &res);
3791             return res;
3792         }
3793         OH_AudioStream_EncodingType *encodingTypes;
3794         uint32_t encodingTypeSize = 0;
3795         result = OH_AudioDeviceDescriptor_GetDeviceEncodingTypes(descriptor, &encodingTypes, &encodingTypeSize);
3796         LOG("AudioAudioDeviceDescriptorGetDeviceEncodingTypes_001, result is: %{public}d", result);
3797         if (result != AUDIOCOMMON_RESULT_SUCCESS) {
3798             napi_create_int32(env, TEST_FAIL, &res);
3799             break;
3800         } else {
3801             napi_create_int32(env, TEST_PASS, &res);
3802         }
3803     }
3804     OH_AudioRoutingManager_ReleaseDevices(audioRoutingManager, array);
3805     return res;
3806 }
3807 
AudioAudioDeviceDescriptorGetDeviceEncodingTypes_002(napi_env env,napi_callback_info info)3808 static napi_value AudioAudioDeviceDescriptorGetDeviceEncodingTypes_002(napi_env env, napi_callback_info info)
3809 {
3810     napi_value res;
3811     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3812     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3813     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3814         napi_create_int32(env, TEST_FAIL, &res);
3815         return res;
3816     }
3817     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3818     OH_AudioDeviceDescriptorArray *array = nullptr;
3819     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3820     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3821     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3822         napi_create_int32(env, TEST_FAIL, &res);
3823         return res;
3824     }
3825 
3826     uint32_t encodingTypeSize = 0;
3827     result = OH_AudioDeviceDescriptor_GetDeviceEncodingTypes(descriptor, nullptr, &encodingTypeSize);
3828     LOG("AudioAudioDeviceDescriptorGetDeviceEncodingTypes_002, result is: %{public}d", result);
3829     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3830         napi_create_int32(env, TEST_FAIL, &res);
3831     } else {
3832         napi_create_int32(env, TEST_PASS, &res);
3833     }
3834     return res;
3835 }
3836 
AudioAudioDeviceDescriptorGetDeviceEncodingTypes_003(napi_env env,napi_callback_info info)3837 static napi_value AudioAudioDeviceDescriptorGetDeviceEncodingTypes_003(napi_env env, napi_callback_info info)
3838 {
3839     napi_value res;
3840     OH_AudioRoutingManager *audioRoutingManager = nullptr;
3841     OH_AudioCommon_Result result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
3842     if (result != AUDIOCOMMON_RESULT_SUCCESS || audioRoutingManager == nullptr) {
3843         napi_create_int32(env, TEST_FAIL, &res);
3844         return res;
3845     }
3846     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
3847     OH_AudioDeviceDescriptorArray *array = nullptr;
3848     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
3849     OH_AudioDeviceDescriptor *descriptor = array->descriptors[0];
3850     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr || descriptor == nullptr) {
3851         napi_create_int32(env, TEST_FAIL, &res);
3852         return res;
3853     }
3854 
3855     OH_AudioStream_EncodingType *encodingTypes;
3856     result = OH_AudioDeviceDescriptor_GetDeviceEncodingTypes(descriptor, &encodingTypes, nullptr);
3857     LOG("AudioAudioDeviceDescriptorGetDeviceEncodingTypes_003, result is: %{public}d", result);
3858     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3859         napi_create_int32(env, TEST_FAIL, &res);
3860     } else {
3861         napi_create_int32(env, TEST_PASS, &res);
3862     }
3863     return res;
3864 }
3865 
AudioAudioDeviceDescriptorGetDeviceEncodingTypes_004(napi_env env,napi_callback_info info)3866 static napi_value AudioAudioDeviceDescriptorGetDeviceEncodingTypes_004(napi_env env, napi_callback_info info)
3867 {
3868     napi_value res;
3869     OH_AudioDeviceDescriptor *descriptor = nullptr;
3870     OH_AudioStream_EncodingType *encodingTypes;
3871     uint32_t encodingTypeSize = 0;
3872     OH_AudioCommon_Result result = OH_AudioDeviceDescriptor_GetDeviceEncodingTypes(
3873         descriptor, &encodingTypes, &encodingTypeSize);
3874     LOG("AudioAudioDeviceDescriptorGetDeviceEncodingTypes_004, result is: %{public}d", result);
3875     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
3876         napi_create_int32(env, TEST_FAIL, &res);
3877     } else {
3878         napi_create_int32(env, TEST_PASS, &res);
3879     }
3880     return res;
3881 }
3882 
AudioAudioInternalRecordingSuccess01(napi_env env,napi_callback_info info)3883 static napi_value AudioAudioInternalRecordingSuccess01(napi_env env, napi_callback_info info)
3884 {
3885     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
3886     OH_AudioRenderer *audioRenderer;
3887     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
3888     OH_AudioStream_PrivacyType type = AUDIO_STREAM_PRIVACY_TYPE_PUBLIC;
3889     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererPrivacy(builder, type);
3890     OH_AudioRenderer_Release(audioRenderer);
3891     OH_AudioStreamBuilder_Destroy(builder);
3892     napi_value res;
3893     napi_create_int32(env, result, &res);
3894     return res;
3895 }
3896 
AudioAudioInternalRecordingSuccess02(napi_env env,napi_callback_info info)3897 static napi_value AudioAudioInternalRecordingSuccess02(napi_env env, napi_callback_info info)
3898 {
3899     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
3900     OH_AudioStream_PrivacyType type = AUDIO_STREAM_PRIVACY_TYPE_PRIVATE;
3901     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererPrivacy(builder, type);
3902     OH_AudioRenderer *audioRenderer = nullptr;
3903     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
3904     OH_AudioStream_PrivacyType type_get;
3905     OH_AudioStream_Result result1 = OH_AudioRenderer_GetRendererPrivacy(audioRenderer, &type_get);
3906     if (result == AUDIOSTREAM_SUCCESS && result1 == AUDIOSTREAM_SUCCESS
3907         && type_get == AUDIO_STREAM_PRIVACY_TYPE_PRIVATE) {
3908         result = AUDIOSTREAM_SUCCESS;
3909     } else {
3910         result = AUDIOSTREAM_ERROR_INVALID_PARAM;
3911     };
3912     OH_AudioRenderer_Release(audioRenderer);
3913     OH_AudioStreamBuilder_Destroy(builder);
3914     napi_value res;
3915     napi_create_int32(env, result, &res);
3916     return res;
3917 }
3918 
AudioAudioInternalRecordingFalse(napi_env env,napi_callback_info info)3919 static napi_value AudioAudioInternalRecordingFalse(napi_env env, napi_callback_info info)
3920 {
3921     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
3922     OH_AudioRenderer *audioRenderer;
3923     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
3924     OH_AudioStream_PrivacyType type = static_cast<OH_AudioStream_PrivacyType>(2);
3925     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererPrivacy(builder, type);
3926     OH_AudioRenderer_Release(audioRenderer);
3927     OH_AudioStreamBuilder_Destroy(builder);
3928     napi_value res;
3929     napi_create_int32(env, result, &res);
3930     return res;
3931 }
3932 
WriteDataCallbackWithValidResult(OH_AudioRenderer * renderer,void * userData,void * buffer,int32_t bufferLen)3933 static OH_AudioData_Callback_Result WriteDataCallbackWithValidResult(OH_AudioRenderer* renderer,
3934     void* userData,
3935     void* buffer,
3936     int32_t bufferLen)
3937 {
3938     return AUDIO_DATA_CALLBACK_RESULT_VALID;
3939 }
3940 
WriteDataCallbackWithInvalidResult(OH_AudioRenderer * renderer,void * userData,void * buffer,int32_t bufferLen)3941 static OH_AudioData_Callback_Result WriteDataCallbackWithInvalidResult(OH_AudioRenderer* renderer,
3942     void* userData,
3943     void* buffer,
3944     int32_t bufferLen)
3945 {
3946     return AUDIO_DATA_CALLBACK_RESULT_INVALID;
3947 }
3948 
RendererInterruptCallbackWithResult(OH_AudioRenderer * renderer,void * userData,OH_AudioInterrupt_ForceType type,OH_AudioInterrupt_Hint hint)3949 static void RendererInterruptCallbackWithResult(OH_AudioRenderer* renderer,
3950     void* userData,
3951     OH_AudioInterrupt_ForceType type,
3952     OH_AudioInterrupt_Hint hint)
3953 {
3954     LOG("call CapturerDeviceChangeCallbackWithResult function.");
3955 }
3956 
RendererErrorCallbackCallbackWithResult(OH_AudioRenderer * renderer,void * userData,OH_AudioStream_Result error)3957 static void RendererErrorCallbackCallbackWithResult(OH_AudioRenderer* renderer,
3958     void* userData,
3959     OH_AudioStream_Result error)
3960 {
3961     LOG("call CapturerDeviceChangeCallbackWithResult function.");
3962 }
3963 
CapturerReadDataCallbackWithResult(OH_AudioCapturer * capturer,void * userData,void * audioData,int32_t audioDataSize)3964 static void CapturerReadDataCallbackWithResult(OH_AudioCapturer* capturer,
3965     void* userData,
3966     void* audioData,
3967     int32_t audioDataSize)
3968 {
3969     LOG("call CapturerDeviceChangeCallbackWithResult function.");
3970 }
3971 
CapturerDeviceChangeCallback(OH_AudioCapturer * capturer,void * userData,OH_AudioDeviceDescriptorArray * deviceArray)3972 static void CapturerDeviceChangeCallback(OH_AudioCapturer* capturer,
3973     void* userData,
3974     OH_AudioDeviceDescriptorArray* deviceArray)
3975 {
3976     LOG("call CapturerDeviceChangeCallbackWithResult function.");
3977 }
3978 
CapturerInterruptCallbackWithResult(OH_AudioCapturer * capturer,void * userData,OH_AudioInterrupt_ForceType forceType,OH_AudioInterrupt_Hint hintType)3979 static void CapturerInterruptCallbackWithResult(OH_AudioCapturer* capturer,
3980     void* userData,
3981     OH_AudioInterrupt_ForceType forceType,
3982     OH_AudioInterrupt_Hint hintType)
3983 {
3984     LOG("call CapturerDeviceChangeCallbackWithResult function.");
3985 }
3986 
CapturerErrorCallbackWithResult(OH_AudioCapturer * capturer,void * userData,OH_AudioStream_Result error)3987 static void CapturerErrorCallbackWithResult(OH_AudioCapturer* capturer,
3988     void* userData,
3989     OH_AudioStream_Result error)
3990 {
3991     LOG("call CapturerDeviceChangeCallbackWithResult function.");
3992 }
3993 
AudioStreamBuilderSetRendererWriteDataCallback_001(napi_env env,napi_callback_info info)3994 static napi_value AudioStreamBuilderSetRendererWriteDataCallback_001(napi_env env, napi_callback_info info)
3995 {
3996     OH_AudioStreamBuilder* builder;
3997     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
3998     OH_AudioStreamBuilder_Create(&builder, type);
3999     OH_AudioRenderer_OnWriteDataCallback onWriteDataCallback = WriteDataCallbackWithValidResult;
4000     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererWriteDataCallback(builder,
4001         onWriteDataCallback, nullptr);
4002     OH_AudioStreamBuilder_Destroy(builder);
4003     napi_value res;
4004     napi_create_int32(env, result, &res);
4005     return res;
4006 }
4007 
AudioStreamBuilderSetRendererWriteDataCallback_002(napi_env env,napi_callback_info info)4008 static napi_value AudioStreamBuilderSetRendererWriteDataCallback_002(napi_env env, napi_callback_info info)
4009 {
4010     OH_AudioStreamBuilder* builder;
4011     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
4012     OH_AudioStreamBuilder_Create(&builder, type);
4013     OH_AudioRenderer_OnWriteDataCallback onWriteDataCallback = WriteDataCallbackWithInvalidResult;
4014     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererWriteDataCallback(builder,
4015         onWriteDataCallback, nullptr);
4016     OH_AudioStreamBuilder_Destroy(builder);
4017     napi_value res;
4018     napi_create_int32(env, result, &res);
4019     return res;
4020 }
4021 
AudioStreamBuilderSetRendererInterruptCallback_001(napi_env env,napi_callback_info info)4022 static napi_value AudioStreamBuilderSetRendererInterruptCallback_001(napi_env env, napi_callback_info info)
4023 {
4024     OH_AudioStreamBuilder* builder;
4025     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
4026     OH_AudioStreamBuilder_Create(&builder, type);
4027     OH_AudioRenderer_OnInterruptCallback onInterruptCallback = RendererInterruptCallbackWithResult;
4028     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererInterruptCallback(builder,
4029         onInterruptCallback, nullptr);
4030     OH_AudioStreamBuilder_Destroy(builder);
4031     napi_value res;
4032     napi_create_int32(env, result, &res);
4033     return res;
4034 }
4035 
AudioStreamBuilderSetRendererErrorCallback_001(napi_env env,napi_callback_info info)4036 static napi_value AudioStreamBuilderSetRendererErrorCallback_001(napi_env env, napi_callback_info info)
4037 {
4038     OH_AudioStreamBuilder* builder;
4039     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
4040     OH_AudioStreamBuilder_Create(&builder, type);
4041     OH_AudioRenderer_OnErrorCallback onErrorCallback = RendererErrorCallbackCallbackWithResult;
4042     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererErrorCallback(builder,
4043         onErrorCallback, nullptr);
4044     OH_AudioStreamBuilder_Destroy(builder);
4045     napi_value res;
4046     napi_create_int32(env, result, &res);
4047     return res;
4048 }
4049 
AudioStreamBuilderSetCapturerReadDataCallback_001(napi_env env,napi_callback_info info)4050 static napi_value AudioStreamBuilderSetCapturerReadDataCallback_001(napi_env env, napi_callback_info info)
4051 {
4052     OH_AudioStreamBuilder* builder;
4053     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
4054     OH_AudioStreamBuilder_Create(&builder, type);
4055 
4056     OH_AudioCapturer_OnReadDataCallback onReadDataCallback = CapturerReadDataCallbackWithResult;
4057     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetCapturerReadDataCallback(builder,
4058         onReadDataCallback, NULL);
4059 
4060     OH_AudioStreamBuilder_Destroy(builder);
4061     napi_value res;
4062     napi_create_int32(env, result, &res);
4063     return res;
4064 }
4065 
AudioStreamBuilderSetCapturerDeviceChangeCallback_001(napi_env env,napi_callback_info info)4066 static napi_value AudioStreamBuilderSetCapturerDeviceChangeCallback_001(napi_env env, napi_callback_info info)
4067 {
4068     OH_AudioStreamBuilder* builder;
4069     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
4070     OH_AudioStreamBuilder_Create(&builder, type);
4071 
4072     OH_AudioCapturer_OnDeviceChangeCallback onDeviceChangeCallback = CapturerDeviceChangeCallback;
4073     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetCapturerDeviceChangeCallback(builder,
4074         onDeviceChangeCallback, NULL);
4075 
4076     OH_AudioStreamBuilder_Destroy(builder);
4077     napi_value res;
4078     napi_create_int32(env, result, &res);
4079     return res;
4080 }
4081 
AudioStreamBuilderSetCapturerInterruptCallback_001(napi_env env,napi_callback_info info)4082 static napi_value AudioStreamBuilderSetCapturerInterruptCallback_001(napi_env env, napi_callback_info info)
4083 {
4084     OH_AudioStreamBuilder* builder;
4085     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
4086     OH_AudioStreamBuilder_Create(&builder, type);
4087 
4088     OH_AudioCapturer_OnInterruptCallback onInterruptCallback = CapturerInterruptCallbackWithResult;
4089     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetCapturerInterruptCallback(builder,
4090         onInterruptCallback, NULL);
4091 
4092     OH_AudioStreamBuilder_Destroy(builder);
4093     napi_value res;
4094     napi_create_int32(env, result, &res);
4095     return res;
4096 }
4097 
AudioStreamBuilderSetCapturerErrorCallback_001(napi_env env,napi_callback_info info)4098 static napi_value AudioStreamBuilderSetCapturerErrorCallback_001(napi_env env, napi_callback_info info)
4099 {
4100     OH_AudioStreamBuilder* builder;
4101     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
4102     OH_AudioStreamBuilder_Create(&builder, type);
4103 
4104     OH_AudioCapturer_OnErrorCallback onErrorCallback = CapturerErrorCallbackWithResult;
4105     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetCapturerErrorCallback(builder, onErrorCallback, NULL);
4106 
4107     OH_AudioStreamBuilder_Destroy(builder);
4108     napi_value res;
4109     napi_create_int32(env, result, &res);
4110     return res;
4111 }
4112 
AudioStreamBuilderSetRendererInterruptCallback_002(napi_env env,napi_callback_info info)4113 static napi_value AudioStreamBuilderSetRendererInterruptCallback_002(napi_env env, napi_callback_info info)
4114 {
4115     OH_AudioStreamBuilder* builder;
4116     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
4117     OH_AudioStreamBuilder_Create(&builder, type);
4118     OH_AudioRenderer_OnInterruptCallback onInterruptCallback = RendererInterruptCallbackWithResult;
4119     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererInterruptCallback(builder,
4120         onInterruptCallback, nullptr);
4121     OH_AudioStreamBuilder_Destroy(builder);
4122     napi_value res;
4123     napi_create_int32(env, result, &res);
4124     return res;
4125 }
4126 
AudioStreamBuilderSetRendererErrorCallback_002(napi_env env,napi_callback_info info)4127 static napi_value AudioStreamBuilderSetRendererErrorCallback_002(napi_env env, napi_callback_info info)
4128 {
4129     OH_AudioStreamBuilder* builder;
4130     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
4131     OH_AudioStreamBuilder_Create(&builder, type);
4132     OH_AudioRenderer_OnErrorCallback onErrorCallback = RendererErrorCallbackCallbackWithResult;
4133     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererErrorCallback(builder,
4134         onErrorCallback, nullptr);
4135     OH_AudioStreamBuilder_Destroy(builder);
4136     napi_value res;
4137     napi_create_int32(env, result, &res);
4138     return res;
4139 }
4140 
AudioStreamBuilderSetCapturerReadDataCallback_002(napi_env env,napi_callback_info info)4141 static napi_value AudioStreamBuilderSetCapturerReadDataCallback_002(napi_env env, napi_callback_info info)
4142 {
4143     OH_AudioStreamBuilder* builder;
4144     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
4145     OH_AudioStreamBuilder_Create(&builder, type);
4146 
4147     OH_AudioCapturer_OnReadDataCallback onReadDataCallback = CapturerReadDataCallbackWithResult;
4148     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetCapturerReadDataCallback(builder,
4149         onReadDataCallback, NULL);
4150 
4151     OH_AudioStreamBuilder_Destroy(builder);
4152     napi_value res;
4153     napi_create_int32(env, result, &res);
4154     return res;
4155 }
4156 
AudioStreamBuilderSetCapturerDeviceChangeCallback_002(napi_env env,napi_callback_info info)4157 static napi_value AudioStreamBuilderSetCapturerDeviceChangeCallback_002(napi_env env, napi_callback_info info)
4158 {
4159     OH_AudioStreamBuilder* builder;
4160     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
4161     OH_AudioStreamBuilder_Create(&builder, type);
4162 
4163     OH_AudioCapturer_OnDeviceChangeCallback onDeviceChangeCallback = CapturerDeviceChangeCallback;
4164     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetCapturerDeviceChangeCallback(builder,
4165         onDeviceChangeCallback, NULL);
4166 
4167     OH_AudioStreamBuilder_Destroy(builder);
4168     napi_value res;
4169     napi_create_int32(env, result, &res);
4170     return res;
4171 }
4172 
AudioStreamBuilderSetCapturerInterruptCallback_002(napi_env env,napi_callback_info info)4173 static napi_value AudioStreamBuilderSetCapturerInterruptCallback_002(napi_env env, napi_callback_info info)
4174 {
4175     OH_AudioStreamBuilder* builder;
4176     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
4177     OH_AudioStreamBuilder_Create(&builder, type);
4178 
4179     OH_AudioCapturer_OnInterruptCallback onInterruptCallback = CapturerInterruptCallbackWithResult;
4180     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetCapturerInterruptCallback(builder,
4181         onInterruptCallback, NULL);
4182 
4183     OH_AudioStreamBuilder_Destroy(builder);
4184     napi_value res;
4185     napi_create_int32(env, result, &res);
4186     return res;
4187 }
4188 
AudioStreamBuilderSetCapturerErrorCallback_002(napi_env env,napi_callback_info info)4189 static napi_value AudioStreamBuilderSetCapturerErrorCallback_002(napi_env env, napi_callback_info info)
4190 {
4191     OH_AudioStreamBuilder* builder;
4192     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
4193     OH_AudioStreamBuilder_Create(&builder, type);
4194 
4195     OH_AudioCapturer_OnErrorCallback onErrorCallback = CapturerErrorCallbackWithResult;
4196     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetCapturerErrorCallback(builder, onErrorCallback, NULL);
4197 
4198     OH_AudioStreamBuilder_Destroy(builder);
4199     napi_value res;
4200     napi_create_int32(env, result, &res);
4201     return res;
4202 }
4203 
audioCapturerGetOverflowCount_001(napi_env env,napi_callback_info info)4204 static napi_value audioCapturerGetOverflowCount_001(napi_env env, napi_callback_info info)
4205 {
4206     OH_AudioStreamBuilder* builder = CreateCapturerBuilder();
4207     int32_t samplingRate = 48000;
4208     OH_AudioStreamBuilder_SetSamplingRate(builder, samplingRate);
4209     int32_t channelCount = 2;
4210     OH_AudioStreamBuilder_SetChannelCount(builder, channelCount);
4211 
4212     OH_AudioCapturer_Callbacks callbacks;
4213     callbacks.OH_AudioCapturer_OnReadData = AudioCapturerOnReadData;
4214     callbacks.OH_AudioCapturer_OnStreamEvent = nullptr;
4215     callbacks.OH_AudioCapturer_OnInterruptEvent = nullptr;
4216     callbacks.OH_AudioCapturer_OnError = nullptr;
4217     OH_AudioStreamBuilder_SetCapturerCallback(builder, callbacks, NULL);
4218 
4219     OH_AudioCapturer* audioCapturer;
4220     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
4221     result = OH_AudioCapturer_Start(audioCapturer);
4222 
4223     uint32_t overFlowCount;
4224     result = OH_AudioCapturer_GetOverflowCount(audioCapturer, &overFlowCount);
4225 
4226     OH_AudioCapturer_Stop(audioCapturer);
4227     OH_AudioCapturer_Release(audioCapturer);
4228 
4229     OH_AudioStreamBuilder_Destroy(builder);
4230     napi_value res;
4231     napi_create_int32(env, result, &res);
4232     return res;
4233 }
4234 
AudioSessionManagerStrategy_001(napi_env env,napi_callback_info info)4235 static napi_value AudioSessionManagerStrategy_001(napi_env env, napi_callback_info info)
4236 {
4237     napi_value res;
4238     OH_AudioSessionManager* audioSessionManager;
4239     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4240     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4241         napi_create_int32(env, TEST_FAIL, &res);
4242         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4243         return res;
4244     }
4245     OH_AudioSession_Strategy strategy = {
4246         CONCURRENCY_MIX_WITH_OTHERS
4247     };
4248     // 设置音频并发模式并激活音频会话
4249     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4250     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4251         napi_create_int32(env, TEST_FAIL, &res);
4252         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4253         return res;
4254     }
4255 
4256     // 查询音频会话是否已激活。
4257     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
4258     if (!isActivated) {
4259         napi_create_int32(env, TEST_FAIL, &res);
4260         LOG("isActivated, result is: %{public}d", TEST_FAIL);
4261         return res;
4262     }
4263 
4264     // 监听音频会话停用事件
4265     OH_AudioCommon_Result resultRegister =
4266         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(
4267             audioSessionManager, MyAudioSessionDeactivatedCallback);
4268     if (resultRegister != AUDIOCOMMON_RESULT_SUCCESS) {
4269         napi_create_int32(env, TEST_FAIL, &res);
4270         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4271         return res;
4272     }
4273 
4274     // 等待1秒
4275     Delay(1);
4276 
4277     // 取消监听音频会话停用事件
4278     OH_AudioCommon_Result resultUnregister =
4279         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(
4280             audioSessionManager, MyAudioSessionDeactivatedCallback);
4281     if (resultUnregister != AUDIOCOMMON_RESULT_SUCCESS) {
4282         napi_create_int32(env, TEST_FAIL, &res);
4283         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
4284         return res;
4285     }
4286 
4287     // 停用音频会话
4288     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4289     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
4290         napi_create_int32(env, TEST_FAIL, &res);
4291         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4292         return res;
4293     }
4294 
4295     // 查询音频会话是否已激活。
4296     isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
4297     if (isActivated) {
4298         napi_create_int32(env, TEST_FAIL, &res);
4299         LOG("isActivated, result is: %{public}d", TEST_FAIL);
4300         return res;
4301     }
4302 
4303     napi_create_int32(env, TEST_PASS, &res);
4304     return res;
4305 }
4306 
4307 
AudioSessionManagerStrategy_002(napi_env env,napi_callback_info info)4308 static napi_value AudioSessionManagerStrategy_002(napi_env env, napi_callback_info info)
4309 {
4310     napi_value res;
4311     OH_AudioSessionManager* audioSessionManager;
4312     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4313     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4314         napi_create_int32(env, TEST_FAIL, &res);
4315         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4316         return res;
4317     }
4318     OH_AudioSession_Strategy strategy = {
4319         CONCURRENCY_DEFAULT
4320     };
4321 
4322     // 设置音频并发模式并激活音频会话
4323     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4324     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4325         napi_create_int32(env, TEST_FAIL, &res);
4326         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4327         return res;
4328     }
4329 
4330     // 查询音频会话是否已激活。
4331     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
4332     if (!isActivated) {
4333         napi_create_int32(env, TEST_FAIL, &res);
4334         LOG("isActivated, result is: %{public}d", TEST_FAIL);
4335         return res;
4336     }
4337 
4338     // 监听音频会话停用事件
4339     OH_AudioCommon_Result resultRegister =
4340         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(
4341             audioSessionManager, MyAudioSessionDeactivatedCallback);
4342     if (resultRegister != AUDIOCOMMON_RESULT_SUCCESS) {
4343         napi_create_int32(env, TEST_FAIL, &res);
4344         LOG("resultRegister, result is: %{public}d", TEST_FAIL);
4345         return res;
4346     }
4347     // sleep 1 seconds
4348     Delay(1);
4349 
4350     // 取消监听音频会话停用事件
4351     OH_AudioCommon_Result resultUnregister =
4352         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(
4353             audioSessionManager, MyAudioSessionDeactivatedCallback);
4354     if (resultUnregister != AUDIOCOMMON_RESULT_SUCCESS) {
4355         napi_create_int32(env, TEST_FAIL, &res);
4356         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
4357         return res;
4358     }
4359 
4360     // 停用音频会话
4361     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4362     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
4363         napi_create_int32(env, TEST_FAIL, &res);
4364         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4365         return res;
4366     }
4367 
4368     napi_create_int32(env, TEST_PASS, &res);
4369     return res;
4370 }
4371 
4372 
AudioSessionManagerStrategy_003(napi_env env,napi_callback_info info)4373 static napi_value AudioSessionManagerStrategy_003(napi_env env, napi_callback_info info)
4374 {
4375     napi_value res;
4376     OH_AudioSessionManager* audioSessionManager;
4377     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4378     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4379         napi_create_int32(env, TEST_FAIL, &res);
4380         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4381         return res;
4382     }
4383     OH_AudioSession_Strategy strategy = {
4384         CONCURRENCY_DUCK_OTHERS
4385     };
4386 
4387     // 设置音频并发模式并激活音频会话
4388     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4389     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4390         napi_create_int32(env, TEST_FAIL, &res);
4391         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4392         return res;
4393     }
4394 
4395     // 查询音频会话是否已激活。
4396     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
4397     if (!isActivated) {
4398         napi_create_int32(env, TEST_FAIL, &res);
4399         LOG("isActivated, result is: %{public}d", TEST_FAIL);
4400         return res;
4401     }
4402 
4403     // 监听音频会话停用事件
4404     OH_AudioCommon_Result resultRegister =
4405         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(
4406             audioSessionManager, MyAudioSessionDeactivatedCallback);
4407     if (resultRegister != AUDIOCOMMON_RESULT_SUCCESS) {
4408         napi_create_int32(env, TEST_FAIL, &res);
4409         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4410         return res;
4411     }
4412     // sleep 1 seconds
4413     Delay(1);
4414 
4415     // 取消监听音频会话停用事件
4416     OH_AudioCommon_Result resultUnregister =
4417         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(
4418             audioSessionManager, MyAudioSessionDeactivatedCallback);
4419     if (resultUnregister != AUDIOCOMMON_RESULT_SUCCESS) {
4420         napi_create_int32(env, TEST_FAIL, &res);
4421         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
4422         return res;
4423     }
4424 
4425     // 停用音频会话
4426     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4427     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
4428         napi_create_int32(env, TEST_FAIL, &res);
4429         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4430         return res;
4431     }
4432 
4433     napi_create_int32(env, TEST_PASS, &res);
4434     return res;
4435 }
4436 
4437 
AudioSessionManagerStrategy_004(napi_env env,napi_callback_info info)4438 static napi_value AudioSessionManagerStrategy_004(napi_env env, napi_callback_info info)
4439 {
4440     napi_value res;
4441     OH_AudioSessionManager* audioSessionManager;
4442     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4443     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4444         napi_create_int32(env, TEST_FAIL, &res);
4445         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4446         return res;
4447     }
4448     OH_AudioSession_Strategy strategy = {
4449         CONCURRENCY_PAUSE_OTHERS
4450     };
4451 
4452     // 设置音频并发模式并激活音频会话
4453     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4454     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4455         napi_create_int32(env, TEST_FAIL, &res);
4456         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4457         return res;
4458     }
4459 
4460     // 查询音频会话是否已激活。
4461     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
4462     if (!isActivated) {
4463         napi_create_int32(env, TEST_FAIL, &res);
4464         LOG("isActivated, result is: %{public}d", TEST_FAIL);
4465         return res;
4466     }
4467 
4468     // 监听音频会话停用事件
4469     OH_AudioCommon_Result resultRegister =
4470         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(
4471             audioSessionManager, MyAudioSessionDeactivatedCallback);
4472     if (resultRegister != AUDIOCOMMON_RESULT_SUCCESS) {
4473         napi_create_int32(env, TEST_FAIL, &res);
4474         LOG("resultRegister, result is: %{public}d", TEST_FAIL);
4475         return res;
4476     }
4477     // sleep 1 seconds
4478     Delay(1);
4479 
4480     // 取消监听音频会话停用事件
4481     OH_AudioCommon_Result resultUnregister =
4482         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(
4483             audioSessionManager, MyAudioSessionDeactivatedCallback);
4484     if (resultUnregister != AUDIOCOMMON_RESULT_SUCCESS) {
4485         napi_create_int32(env, TEST_FAIL, &res);
4486         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
4487         return res;
4488     }
4489 
4490     // 停用音频会话
4491     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4492     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
4493         napi_create_int32(env, TEST_FAIL, &res);
4494         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4495         return res;
4496     }
4497 
4498     napi_create_int32(env, TEST_PASS, &res);
4499     return res;
4500 }
4501 
4502 
AudioSessionManagerStrategyError_001(napi_env env,napi_callback_info info)4503 static napi_value AudioSessionManagerStrategyError_001(napi_env env, napi_callback_info info)
4504 {
4505     napi_value res;
4506     OH_AudioSessionManager* audioSessionManager;
4507     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4508     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4509         napi_create_int32(env, TEST_FAIL, &res);
4510         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4511         return res;
4512     }
4513     OH_AudioSession_Strategy strategy = {
4514         CONCURRENCY_MIX_WITH_OTHERS
4515     };
4516 
4517     // 设置音频并发模式并激活音频会话
4518     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(nullptr, &strategy);
4519     if (resultActivate != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
4520         napi_create_int32(env, TEST_FAIL, &res);
4521         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4522         return res;
4523     }
4524 
4525     napi_create_int32(env, TEST_PASS, &res);
4526     return res;
4527 }
4528 
4529 
AudioSessionManagerActivatedError_001(napi_env env,napi_callback_info info)4530 static napi_value AudioSessionManagerActivatedError_001(napi_env env, napi_callback_info info)
4531 {
4532     napi_value res;
4533     OH_AudioSessionManager* audioSessionManager;
4534     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4535     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4536         napi_create_int32(env, TEST_FAIL, &res);
4537         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4538         return res;
4539     }
4540     OH_AudioSession_Strategy strategy = {
4541         CONCURRENCY_MIX_WITH_OTHERS
4542     };
4543 
4544     // 设置音频并发模式并激活音频会话
4545     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4546     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4547         napi_create_int32(env, TEST_FAIL, &res);
4548         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4549         return res;
4550     }
4551 
4552     // 查询音频会话是否已激活
4553     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(nullptr);
4554     if (isActivated) {
4555         napi_create_int32(env, TEST_FAIL, &res);
4556         LOG("isActivated, result is: %{public}d", TEST_FAIL);
4557         return res;
4558     }
4559 
4560     // 停用音频会话
4561     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4562     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
4563         napi_create_int32(env, TEST_FAIL, &res);
4564         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4565         return res;
4566     }
4567 
4568     napi_create_int32(env, TEST_PASS, &res);
4569     return res;
4570 }
4571 
4572 
AudioSessionManagerStopError_001(napi_env env,napi_callback_info info)4573 static napi_value AudioSessionManagerStopError_001(napi_env env, napi_callback_info info)
4574 {
4575     napi_value res;
4576     OH_AudioSessionManager* audioSessionManager;
4577     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4578     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4579         napi_create_int32(env, TEST_FAIL, &res);
4580         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4581         return res;
4582     }
4583     OH_AudioSession_Strategy strategy = {
4584         CONCURRENCY_MIX_WITH_OTHERS
4585     };
4586 
4587     // 设置音频并发模式并激活音频会话
4588     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4589     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4590         napi_create_int32(env, TEST_FAIL, &res);
4591         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4592         return res;
4593     }
4594 
4595     // 停用音频会话
4596     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(nullptr);
4597     if (resultDeactivate != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
4598         napi_create_int32(env, TEST_FAIL, &res);
4599         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4600         return res;
4601     }
4602 
4603     // 停用音频会话
4604     resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4605     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
4606         napi_create_int32(env, TEST_FAIL, &res);
4607         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4608         return res;
4609     }
4610 
4611     napi_create_int32(env, TEST_PASS, &res);
4612     return res;
4613 }
4614 
4615 
AudioSessionManagerStopError_002(napi_env env,napi_callback_info info)4616 static napi_value AudioSessionManagerStopError_002(napi_env env, napi_callback_info info)
4617 {
4618     napi_value res;
4619     OH_AudioSessionManager* audioSessionManager;
4620     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4621     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4622         napi_create_int32(env, TEST_FAIL, &res);
4623         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4624         return res;
4625     }
4626     OH_AudioSession_Strategy strategy = {
4627         CONCURRENCY_MIX_WITH_OTHERS
4628     };
4629 
4630     // 设置音频并发模式并激活音频会话
4631     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4632     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4633         napi_create_int32(env, TEST_FAIL, &res);
4634         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4635         return res;
4636     }
4637     // 停用音频会话
4638     OH_AudioCommon_Result resultDeactivate1 = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4639     if (resultDeactivate1 != AUDIOCOMMON_RESULT_SUCCESS) {
4640         napi_create_int32(env, TEST_FAIL, &res);
4641         LOG("resultDeactivate1, result is: %{public}d", TEST_FAIL);
4642         return res;
4643     }
4644     // 停用音频会话
4645     OH_AudioCommon_Result resultDeactivate2 = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4646     if (resultDeactivate2 != AUDIOCOMMON_RESULT_ERROR_ILLEGAL_STATE) {
4647         napi_create_int32(env, TEST_FAIL, &res);
4648         LOG("resultDeactivate2, result is: %{public}d", TEST_FAIL);
4649         return res;
4650     }
4651 
4652     napi_create_int32(env, TEST_PASS, &res);
4653     return res;
4654 }
4655 
4656 
AudioSessionManagerRegisterError_001(napi_env env,napi_callback_info info)4657 static napi_value AudioSessionManagerRegisterError_001(napi_env env, napi_callback_info info)
4658 {
4659     napi_value res;
4660     OH_AudioSessionManager* audioSessionManager;
4661     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4662     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4663         napi_create_int32(env, TEST_FAIL, &res);
4664         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4665         return res;
4666     }
4667     OH_AudioSession_Strategy strategy = {
4668         CONCURRENCY_MIX_WITH_OTHERS
4669     };
4670 
4671     // 设置音频并发模式并激活音频会话
4672     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4673     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4674         napi_create_int32(env, TEST_FAIL, &res);
4675         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4676         return res;
4677     }
4678 
4679     // 查询音频会话是否已激活。
4680     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
4681     if (!isActivated) {
4682         napi_create_int32(env, TEST_FAIL, &res);
4683         LOG("isActivated, result is: %{public}d", TEST_FAIL);
4684         return res;
4685     }
4686 
4687     // 监听音频会话停用事件
4688     OH_AudioCommon_Result resultRegister =
4689         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(nullptr, MyAudioSessionDeactivatedCallback);
4690     if (resultRegister != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
4691         napi_create_int32(env, TEST_FAIL, &res);
4692         LOG("resultRegister, result is: %{public}d", TEST_FAIL);
4693         return res;
4694     }
4695 
4696     // 停用音频会话
4697     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4698     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
4699         napi_create_int32(env, TEST_FAIL, &res);
4700         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4701         return res;
4702     }
4703 
4704     napi_create_int32(env, TEST_PASS, &res);
4705     return res;
4706 }
4707 
4708 
AudioSessionManagerRegisterError_002(napi_env env,napi_callback_info info)4709 static napi_value AudioSessionManagerRegisterError_002(napi_env env, napi_callback_info info)
4710 {
4711     napi_value res;
4712     OH_AudioSessionManager* audioSessionManager;
4713     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4714     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4715         napi_create_int32(env, TEST_FAIL, &res);
4716         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4717         return res;
4718     }
4719     OH_AudioSession_Strategy strategy = {
4720         CONCURRENCY_MIX_WITH_OTHERS
4721     };
4722 
4723     // 设置音频并发模式并激活音频会话
4724     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4725     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4726         napi_create_int32(env, TEST_FAIL, &res);
4727         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4728         return res;
4729     }
4730 
4731     // 查询音频会话是否已激活。
4732     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
4733     if (!isActivated) {
4734         napi_create_int32(env, TEST_FAIL, &res);
4735         LOG("isActivated, result is: %{public}d", TEST_FAIL);
4736         return res;
4737     }
4738 
4739     // 监听音频会话停用事件
4740     OH_AudioCommon_Result resultRegister =
4741         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(audioSessionManager, nullptr);
4742     if (resultRegister != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
4743         napi_create_int32(env, TEST_FAIL, &res);
4744         LOG("resultRegister, result is: %{public}d", TEST_FAIL);
4745         return res;
4746     }
4747 
4748     // 停用音频会话
4749     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4750     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
4751         napi_create_int32(env, TEST_FAIL, &res);
4752         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4753         return res;
4754     }
4755 
4756     napi_create_int32(env, TEST_PASS, &res);
4757     return res;
4758 }
4759 
4760 
AudioSessionManagerUnregisterError_001(napi_env env,napi_callback_info info)4761 static napi_value AudioSessionManagerUnregisterError_001(napi_env env, napi_callback_info info)
4762 {
4763     napi_value res;
4764     OH_AudioSessionManager* audioSessionManager;
4765     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4766     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4767         napi_create_int32(env, TEST_FAIL, &res);
4768         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4769         return res;
4770     }
4771     OH_AudioSession_Strategy strategy = {
4772         CONCURRENCY_MIX_WITH_OTHERS
4773     };
4774 
4775     // 设置音频并发模式并激活音频会话
4776     OH_AudioCommon_Result resultActivate =
4777         OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4778     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4779         napi_create_int32(env, TEST_FAIL, &res);
4780         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4781         return res;
4782     }
4783 
4784     // 查询音频会话是否已激活。
4785     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
4786     if (!isActivated) {
4787         napi_create_int32(env, TEST_FAIL, &res);
4788         LOG("isActivated, result is: %{public}d", TEST_FAIL);
4789         return res;
4790     }
4791 
4792     // 监听音频会话停用事件
4793     OH_AudioCommon_Result resultRegister =
4794         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(
4795             audioSessionManager, MyAudioSessionDeactivatedCallback);
4796     if (resultRegister != AUDIOCOMMON_RESULT_SUCCESS) {
4797         napi_create_int32(env, TEST_FAIL, &res);
4798         LOG("resultRegister, result is: %{public}d", TEST_FAIL);
4799         return res;
4800     }
4801 
4802     // 取消监听音频会话停用事件
4803     OH_AudioCommon_Result resultUnregister =
4804         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(nullptr, MyAudioSessionDeactivatedCallback);
4805     if (resultUnregister != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
4806         napi_create_int32(env, TEST_FAIL, &res);
4807         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
4808         return res;
4809     }
4810 
4811     // 取消监听音频会话停用事件
4812     resultUnregister =
4813         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(
4814             audioSessionManager, MyAudioSessionDeactivatedCallback);
4815     if (resultUnregister != AUDIOCOMMON_RESULT_SUCCESS) {
4816         napi_create_int32(env, TEST_FAIL, &res);
4817         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
4818         return res;
4819     }
4820 
4821     // 停用音频会话
4822     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4823     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
4824         napi_create_int32(env, TEST_FAIL, &res);
4825         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4826         return res;
4827     }
4828 
4829     napi_create_int32(env, TEST_PASS, &res);
4830     return res;
4831 }
4832 
4833 
AudioSessionManagerUnregisterError_002(napi_env env,napi_callback_info info)4834 static napi_value AudioSessionManagerUnregisterError_002(napi_env env, napi_callback_info info)
4835 {
4836     napi_value res;
4837     OH_AudioSessionManager* audioSessionManager;
4838     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4839     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4840         napi_create_int32(env, TEST_FAIL, &res);
4841         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4842         return res;
4843     }
4844     OH_AudioSession_Strategy strategy = {
4845         CONCURRENCY_MIX_WITH_OTHERS
4846     };
4847 
4848     // 设置音频并发模式并激活音频会话
4849     OH_AudioCommon_Result resultActivate =
4850         OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4851     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4852         napi_create_int32(env, TEST_FAIL, &res);
4853         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4854         return res;
4855     }
4856 
4857     // 查询音频会话是否已激活。
4858     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
4859     if (!isActivated) {
4860         napi_create_int32(env, TEST_FAIL, &res);
4861         LOG("isActivated, result is: %{public}d", TEST_FAIL);
4862         return res;
4863     }
4864 
4865     // 监听音频会话停用事件
4866     OH_AudioCommon_Result resultRegister =
4867         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(
4868             audioSessionManager, MyAudioSessionDeactivatedCallback);
4869     if (resultRegister != AUDIOCOMMON_RESULT_SUCCESS) {
4870         napi_create_int32(env, TEST_FAIL, &res);
4871         LOG("resultRegister, result is: %{public}d", TEST_FAIL);
4872         return res;
4873     }
4874 
4875     // 取消监听音频会话停用事件
4876     OH_AudioCommon_Result resultUnregister =
4877         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(audioSessionManager, nullptr);
4878     if (resultUnregister != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
4879         napi_create_int32(env, TEST_FAIL, &res);
4880         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
4881         return res;
4882     }
4883 
4884     // 取消监听音频会话停用事件
4885     resultUnregister =
4886         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(
4887             audioSessionManager, MyAudioSessionDeactivatedCallback);
4888     if (resultUnregister != AUDIOCOMMON_RESULT_SUCCESS) {
4889         napi_create_int32(env, TEST_FAIL, &res);
4890         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
4891         return res;
4892     }
4893 
4894     // 停用音频会话
4895     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
4896     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
4897         napi_create_int32(env, TEST_FAIL, &res);
4898         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
4899         return res;
4900     }
4901 
4902     napi_create_int32(env, TEST_PASS, &res);
4903     return res;
4904 }
4905 
4906 
AudioSessionManagerReason_001(napi_env env,napi_callback_info info)4907 static napi_value AudioSessionManagerReason_001(napi_env env, napi_callback_info info)
4908 {
4909     napi_value res;
4910     OH_AudioSessionManager* audioSessionManager;
4911     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
4912     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
4913         napi_create_int32(env, TEST_FAIL, &res);
4914         LOG("resultManager, result is: %{public}d", TEST_FAIL);
4915         return res;
4916     }
4917     OH_AudioSession_Strategy strategy = {
4918         CONCURRENCY_MIX_WITH_OTHERS
4919     };
4920 
4921     // 设置音频并发模式并激活音频会话
4922     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
4923     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
4924         napi_create_int32(env, TEST_FAIL, &res);
4925         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
4926         return res;
4927     }
4928 
4929     // 查询音频会话是否已激活。
4930     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
4931     if (!isActivated) {
4932         napi_create_int32(env, TEST_FAIL, &res);
4933         LOG("isActivated, result is: %{public}d", TEST_FAIL);
4934         return res;
4935     }
4936 
4937     // create builder
4938     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
4939     OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_MUSIC;
4940     OH_AudioStreamBuilder* builder;
4941     OH_AudioStreamBuilder_Create(&builder, type);
4942     OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
4943     OH_AudioRenderer* audioRenderer1;
4944     OH_AudioStream_Result createResult = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer1);
4945     if (createResult != AUDIOSTREAM_SUCCESS) {
4946         napi_create_int32(env, TEST_FAIL, &res);
4947         return res;
4948     }
4949 
4950     // create audioRenderer1 audioRenderer2
4951     OH_AudioStreamBuilder* builder2;
4952     OH_AudioStreamBuilder_Create(&builder2, type);
4953     OH_AudioStreamBuilder_SetRendererInfo(builder2, usage);
4954     OH_AudioRenderer* audioRenderer2;
4955     createResult = OH_AudioStreamBuilder_GenerateRenderer(builder2, &audioRenderer2);
4956     if (createResult != AUDIOSTREAM_SUCCESS) {
4957         napi_create_int32(env, TEST_FAIL, &res);
4958         return res;
4959     }
4960 
4961     // 监听音频会话停用事件
4962     OH_AudioCommon_Result resultRegister =
4963         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(
4964             audioSessionManager, MyAudioSessionDeactivatedCallback);
4965     if (resultRegister != AUDIOCOMMON_RESULT_SUCCESS) {
4966         napi_create_int32(env, TEST_FAIL, &res);
4967         LOG("resultRegister, result is: %{public}d", TEST_FAIL);
4968         return res;
4969     }
4970 
4971     // start
4972     createResult = OH_AudioRenderer_Start(audioRenderer1);
4973     if (createResult != AUDIOSTREAM_SUCCESS) {
4974         napi_create_int32(env, TEST_FAIL, &res);
4975         return res;
4976     }
4977     //sleep 1 seconds
4978     Delay(1);
4979     createResult = OH_AudioRenderer_Start(audioRenderer2);
4980     if (createResult != AUDIOSTREAM_SUCCESS) {
4981         napi_create_int32(env, TEST_FAIL, &res);
4982         return res;
4983     }
4984     //sleep 1 seconds
4985     Delay(1);
4986 
4987     // stop and release client
4988     OH_AudioRenderer_Release(audioRenderer2);
4989     OH_AudioRenderer_Release(audioRenderer1);
4990     OH_AudioStreamBuilder_Destroy(builder);
4991     OH_AudioStreamBuilder_Destroy(builder2);
4992     Delay(1);
4993 
4994     // 取消监听音频会话停用事件
4995     OH_AudioCommon_Result resultUnregister =
4996         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(
4997             audioSessionManager, MyAudioSessionDeactivatedCallback);
4998     if (resultUnregister != AUDIOCOMMON_RESULT_SUCCESS) {
4999         napi_create_int32(env, TEST_FAIL, &res);
5000         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
5001         return res;
5002     }
5003 
5004     // 停用音频会话
5005     OH_AudioCommon_Result resultDeactivate = OH_AudioSessionManager_DeactivateAudioSession(audioSessionManager);
5006     if (resultDeactivate != AUDIOCOMMON_RESULT_SUCCESS) {
5007         napi_create_int32(env, TEST_FAIL, &res);
5008         LOG("resultDeactivate, result is: %{public}d", TEST_FAIL);
5009         return res;
5010     }
5011 
5012     napi_create_int32(env, TEST_PASS, &res);
5013     return res;
5014 }
5015 
5016 
AudioSessionManagerReason_002(napi_env env,napi_callback_info info)5017 static napi_value AudioSessionManagerReason_002(napi_env env, napi_callback_info info)
5018 {
5019     napi_value res;
5020     OH_AudioSessionManager* audioSessionManager;
5021     OH_AudioCommon_Result resultManager = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
5022     if (resultManager != AUDIOCOMMON_RESULT_SUCCESS) {
5023         napi_create_int32(env, TEST_FAIL, &res);
5024         LOG("resultManager, result is: %{public}d", TEST_FAIL);
5025         return res;
5026     }
5027     OH_AudioSession_Strategy strategy = {
5028         CONCURRENCY_MIX_WITH_OTHERS
5029     };
5030 
5031     // 设置音频并发模式并激活音频会话
5032     OH_AudioCommon_Result resultActivate = OH_AudioSessionManager_ActivateAudioSession(audioSessionManager, &strategy);
5033     if (resultActivate != AUDIOCOMMON_RESULT_SUCCESS) {
5034         napi_create_int32(env, TEST_FAIL, &res);
5035         LOG("resultActivate, result is: %{public}d", TEST_FAIL);
5036         return res;
5037     }
5038 
5039     // 查询音频会话是否已激活。
5040     bool isActivated = OH_AudioSessionManager_IsAudioSessionActivated(audioSessionManager);
5041     if (!isActivated) {
5042         napi_create_int32(env, TEST_FAIL, &res);
5043         LOG("isActivated, result is: %{public}d", TEST_FAIL);
5044         return res;
5045     }
5046 
5047     // create builder
5048     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
5049     OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_MUSIC;
5050     OH_AudioStreamBuilder* builder;
5051     OH_AudioStreamBuilder_Create(&builder, type);
5052     OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
5053     OH_AudioRenderer* audioRenderer1;
5054     OH_AudioStream_Result createResult = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer1);
5055     if (createResult != AUDIOSTREAM_SUCCESS) {
5056         napi_create_int32(env, TEST_FAIL, &res);
5057         return res;
5058     }
5059 
5060     // 监听音频会话停用事件
5061     OH_AudioCommon_Result resultRegister =
5062         OH_AudioSessionManager_RegisterSessionDeactivatedCallback(
5063             audioSessionManager, MyAudioSessionDeactivatedCallback);
5064     if (resultRegister != AUDIOCOMMON_RESULT_SUCCESS) {
5065         napi_create_int32(env, TEST_FAIL, &res);
5066         LOG("resultRegister, result is: %{public}d", TEST_FAIL);
5067         return res;
5068     }
5069 
5070     // start
5071     createResult = OH_AudioRenderer_Start(audioRenderer1);
5072     if (createResult != AUDIOSTREAM_SUCCESS) {
5073         napi_create_int32(env, TEST_FAIL, &res);
5074         return res;
5075     }
5076     Delay(1);
5077     OH_AudioRenderer_Stop(audioRenderer1);
5078     //sleep 65 seconds 创造超时条件
5079     Delay(65);
5080 
5081     // release client
5082     OH_AudioRenderer_Release(audioRenderer1);
5083     OH_AudioStreamBuilder_Destroy(builder);
5084 
5085     // 取消监听音频会话停用事件
5086     OH_AudioCommon_Result resultUnregister =
5087         OH_AudioSessionManager_UnregisterSessionDeactivatedCallback(
5088             audioSessionManager, MyAudioSessionDeactivatedCallback);
5089     if (resultUnregister != AUDIOCOMMON_RESULT_SUCCESS) {
5090         napi_create_int32(env, TEST_FAIL, &res);
5091         LOG("resultUnregister, result is: %{public}d", TEST_FAIL);
5092         return res;
5093     }
5094 
5095     napi_create_int32(env, TEST_PASS, &res);
5096     return res;
5097 }
5098 
MyStateCallback(OH_AudioSession_StateChangedEvent event)5099 static void MyStateCallback(OH_AudioSession_StateChangedEvent event)
5100 {
5101     return;
5102 }
5103 
MyDeviceCallback(OH_AudioDeviceDescriptorArray * devices,OH_AudioStream_DeviceChangeReason changeReason,OH_AudioSession_OutputDeviceChangeRecommendedAction recommendedAction)5104 static void MyDeviceCallback(OH_AudioDeviceDescriptorArray *devices,
5105     OH_AudioStream_DeviceChangeReason changeReason,
5106     OH_AudioSession_OutputDeviceChangeRecommendedAction recommendedAction)
5107 {
5108     return;
5109 }
5110 
AudioSessionManagerSetScene_001(napi_env env,napi_callback_info info)5111 static napi_value AudioSessionManagerSetScene_001(napi_env env, napi_callback_info info)
5112 {
5113     napi_value res;
5114     OH_AudioSessionManager *audioSessionManager;
5115     OH_AudioCommon_Result result = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
5116     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5117         napi_create_int32(env, TEST_FAIL, &res);
5118         LOG("get audio session manager fail, result is: %{public}d", TEST_FAIL);
5119         return res;
5120     }
5121 
5122     OH_AudioSession_Scene scene = AUDIO_SESSION_SCENE_MEDIA;
5123     result = OH_AudioSessionManager_SetScene(audioSessionManager, scene);
5124     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5125         napi_create_int32(env, TEST_FAIL, &res);
5126         LOG("SetScene fail AUDIO_SESSION_SCENE_MEDIA, result is: %{public}d", TEST_FAIL);
5127         return res;
5128     }
5129 
5130     scene = AUDIO_SESSION_SCENE_GAME;
5131     result = OH_AudioSessionManager_SetScene(audioSessionManager, scene);
5132     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5133         napi_create_int32(env, TEST_FAIL, &res);
5134         LOG("SetScene fail AUDIO_SESSION_SCENE_GAME, result is: %{public}d", TEST_FAIL);
5135         return res;
5136     }
5137 
5138     scene = AUDIO_SESSION_SCENE_VOICE_COMMUNICATION;
5139     result = OH_AudioSessionManager_SetScene(audioSessionManager, scene);
5140     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5141         napi_create_int32(env, TEST_FAIL, &res);
5142         LOG("SetScene fail AUDIO_SESSION_SCENE_VOICE_COMMUNICATION, result is: %{public}d", TEST_FAIL);
5143         return res;
5144     }
5145     napi_create_int32(env, TEST_PASS, &res);
5146     return res;
5147 }
5148 
AudioSessionManagerRegisterStateChangeCallback_001(napi_env env,napi_callback_info info)5149 static napi_value AudioSessionManagerRegisterStateChangeCallback_001(napi_env env, napi_callback_info info)
5150 {
5151     napi_value res;
5152     OH_AudioSessionManager *audioSessionManager;
5153     OH_AudioCommon_Result result = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
5154     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5155         napi_create_int32(env, TEST_FAIL, &res);
5156         LOG("get audio session manager fail, result is: %{public}d", TEST_FAIL);
5157         return res;
5158     }
5159 
5160     result = OH_AudioSessionManager_RegisterStateChangeCallback(audioSessionManager, MyStateCallback);
5161     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5162         napi_create_int32(env, TEST_FAIL, &res);
5163         LOG("RegisterStateChangeCallback fail, result is: %{public}d", TEST_FAIL);
5164         return res;
5165     }
5166     result = OH_AudioSessionManager_UnregisterStateChangeCallback(audioSessionManager, MyStateCallback);
5167     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5168         napi_create_int32(env, TEST_FAIL, &res);
5169         LOG("UnregisterStateChangeCallback fail, result is: %{public}d", TEST_FAIL);
5170         return res;
5171     }
5172     napi_create_int32(env, TEST_PASS, &res);
5173     return res;
5174 }
5175 
AudioSessionManagerRegisterStateChangeCallback_002(napi_env env,napi_callback_info info)5176 static napi_value AudioSessionManagerRegisterStateChangeCallback_002(napi_env env, napi_callback_info info)
5177 {
5178     napi_value res;
5179     OH_AudioSessionManager *audioSessionManager = nullptr;
5180     OH_AudioCommon_Result result = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
5181     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5182         napi_create_int32(env, TEST_FAIL, &res);
5183         LOG("get audio session manager fail, result is: %{public}d", TEST_FAIL);
5184         return res;
5185     }
5186 
5187     result = OH_AudioSessionManager_RegisterStateChangeCallback(audioSessionManager, nullptr);
5188     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
5189         napi_create_int32(env, TEST_FAIL, &res);
5190         LOG("RegisterStateChangeCallback fail, result is: %{public}d", TEST_FAIL);
5191         return res;
5192     }
5193 
5194     result = OH_AudioSessionManager_UnregisterStateChangeCallback(audioSessionManager, nullptr);
5195     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
5196         napi_create_int32(env, TEST_FAIL, &res);
5197         LOG("UnregisterStateChangeCallback fail, result is: %{public}d", TEST_FAIL);
5198         return res;
5199     }
5200     napi_create_int32(env, TEST_PASS, &res);
5201     return res;
5202 }
5203 
AudioSessionManagerRegisterStateChangeCallback_003(napi_env env,napi_callback_info info)5204 static napi_value AudioSessionManagerRegisterStateChangeCallback_003(napi_env env, napi_callback_info info)
5205 {
5206     napi_value res;
5207     OH_AudioSessionManager *audioSessionManager = nullptr;
5208     OH_AudioCommon_Result result = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
5209     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5210         napi_create_int32(env, TEST_FAIL, &res);
5211         LOG("get audio session manager fail, result is: %{public}d", TEST_FAIL);
5212         return res;
5213     }
5214 
5215     result = OH_AudioSessionManager_RegisterStateChangeCallback(audioSessionManager, MyStateCallback);
5216     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5217         napi_create_int32(env, TEST_FAIL, &res);
5218         LOG("RegisterStateChangeCallback fail, result is: %{public}d", TEST_FAIL);
5219         return res;
5220     }
5221 
5222     result = OH_AudioSessionManager_RegisterStateChangeCallback(audioSessionManager, MyStateCallback);
5223     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5224         napi_create_int32(env, TEST_FAIL, &res);
5225         LOG("RegisterStateChangeCallback double fail, result is: %{public}d", TEST_FAIL);
5226         return res;
5227     }
5228 
5229     result = OH_AudioSessionManager_UnregisterStateChangeCallback(audioSessionManager, MyStateCallback);
5230     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5231         napi_create_int32(env, TEST_FAIL, &res);
5232         LOG("UnregisterStateChangeCallback fail, result is: %{public}d", TEST_FAIL);
5233         return res;
5234     }
5235 
5236     result = OH_AudioSessionManager_UnregisterStateChangeCallback(audioSessionManager, MyStateCallback);
5237     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
5238         napi_create_int32(env, TEST_FAIL, &res);
5239         LOG("UnregisterStateChangeCallback double fail, result is: %{public}d", TEST_FAIL);
5240         return res;
5241     }
5242     napi_create_int32(env, TEST_PASS, &res);
5243     return res;
5244 }
5245 
AudioSessionManagerSetDefaultOutputDevice_001(napi_env env,napi_callback_info info)5246 static napi_value AudioSessionManagerSetDefaultOutputDevice_001(napi_env env, napi_callback_info info)
5247 {
5248     napi_value res;
5249     OH_AudioSessionManager *audioSessionManager = nullptr;
5250     OH_AudioCommon_Result result = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
5251     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5252         napi_create_int32(env, TEST_FAIL, &res);
5253         LOG("get audio session manager fail, result is: %{public}d", TEST_FAIL);
5254         return res;
5255     }
5256 
5257     OH_AudioDevice_Type deviceTypeGet = AUDIO_DEVICE_TYPE_EARPIECE;
5258     result = OH_AudioSessionManager_GetDefaultOutputDevice(audioSessionManager, &deviceTypeGet);
5259     if (result != AUDIOCOMMON_RESULT_SUCCESS || deviceTypeGet != AUDIO_DEVICE_TYPE_INVALID) {
5260         napi_create_int32(env, TEST_FAIL, &res);
5261         LOG("GetDefaultOutputDevice fail, result is: %{public}d", TEST_FAIL);
5262         return res;
5263     }
5264 
5265     OH_AudioDevice_Type deviceType = AUDIO_DEVICE_TYPE_DEFAULT;
5266     result = OH_AudioSessionManager_SetDefaultOutputDevice(audioSessionManager, deviceType);
5267     if ((result != AUDIOCOMMON_RESULT_SUCCESS) && (result != AUDIOCOMMON_RESULT_ERROR_SYSTEM)) {
5268         napi_create_int32(env, TEST_FAIL, &res);
5269         LOG("SetDefaultOutputDevice AUDIO_DEVICE_TYPE_DEFAULT fail, result is: %{public}d", TEST_FAIL);
5270         return res;
5271     }
5272 
5273     result = OH_AudioSessionManager_GetDefaultOutputDevice(audioSessionManager, &deviceTypeGet);
5274     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5275         napi_create_int32(env, TEST_FAIL, &res);
5276         LOG("GetDefaultOutputDevice  fail, result is: %{public}d", TEST_FAIL);
5277         return res;
5278     }
5279     napi_create_int32(env, TEST_PASS, &res);
5280     return res;
5281 }
5282 
AudioSessionManagerSetDefaultOutputDevice_002(napi_env env,napi_callback_info info)5283 static napi_value AudioSessionManagerSetDefaultOutputDevice_002(napi_env env, napi_callback_info info)
5284 {
5285     napi_value res;
5286     OH_AudioSessionManager *audioSessionManager = nullptr;
5287     OH_AudioCommon_Result result = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
5288     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5289         napi_create_int32(env, TEST_FAIL, &res);
5290         LOG("get audio session manager fail, result is: %{public}d", TEST_FAIL);
5291         return res;
5292     }
5293 
5294     OH_AudioDevice_Type deviceType = AUDIO_DEVICE_TYPE_INVALID;
5295     result = OH_AudioSessionManager_SetDefaultOutputDevice(audioSessionManager, deviceType);
5296     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
5297         napi_create_int32(env, TEST_FAIL, &res);
5298         LOG("SetDefaultOutputDevice fail, result is: %{public}d", TEST_FAIL);
5299         return res;
5300     }
5301     napi_create_int32(env, TEST_PASS, &res);
5302     return res;
5303 }
5304 
AudioSessionManagerGetDefaultOutputDevice_001(napi_env env,napi_callback_info info)5305 static napi_value AudioSessionManagerGetDefaultOutputDevice_001(napi_env env, napi_callback_info info)
5306 {
5307     napi_value res;
5308     OH_AudioSessionManager *audioSessionManager = nullptr;
5309     OH_AudioCommon_Result result = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
5310     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5311         napi_create_int32(env, TEST_FAIL, &res);
5312         LOG("get audio session manager fail, result is: %{public}d", TEST_FAIL);
5313         return res;
5314     }
5315 
5316     result = OH_AudioSessionManager_GetDefaultOutputDevice(audioSessionManager, nullptr);
5317     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
5318         napi_create_int32(env, TEST_FAIL, &res);
5319         LOG("GetDefaultOutputDevice fail, result is: %{public}d", TEST_FAIL);
5320         return res;
5321     }
5322     napi_create_int32(env, TEST_PASS, &res);
5323     return res;
5324 }
5325 
AudioSessionManagerRegisterDeviceCallback_001(napi_env env,napi_callback_info info)5326 static napi_value AudioSessionManagerRegisterDeviceCallback_001(napi_env env, napi_callback_info info)
5327 {
5328     napi_value res;
5329     OH_AudioSessionManager *audioSessionManager = nullptr;
5330     OH_AudioCommon_Result result = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
5331     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5332         napi_create_int32(env, TEST_FAIL, &res);
5333         LOG("get audio session manager fail, result is: %{public}d", TEST_FAIL);
5334         return res;
5335     }
5336 
5337     result = OH_AudioSessionManager_RegisterCurrentOutputDeviceChangeCallback(audioSessionManager, MyDeviceCallback);
5338     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5339         napi_create_int32(env, TEST_FAIL, &res);
5340         LOG("RegisterStateChangeCallback fail, result is: %{public}d", TEST_FAIL);
5341         return res;
5342     }
5343     result = OH_AudioSessionManager_UnregisterCurrentOutputDeviceChangeCallback(audioSessionManager, MyDeviceCallback);
5344     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5345         napi_create_int32(env, TEST_FAIL, &res);
5346         LOG("UnregisterStateChangeCallback fail, result is: %{public}d", TEST_FAIL);
5347         return res;
5348     }
5349     napi_create_int32(env, TEST_PASS, &res);
5350     return res;
5351 }
5352 
AudioSessionManagerRegisterDeviceCallback_002(napi_env env,napi_callback_info info)5353 static napi_value AudioSessionManagerRegisterDeviceCallback_002(napi_env env, napi_callback_info info)
5354 {
5355     napi_value res;
5356     OH_AudioSessionManager *audioSessionManager = nullptr;
5357     OH_AudioCommon_Result result = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
5358     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5359         napi_create_int32(env, TEST_FAIL, &res);
5360         LOG("get audio session manager fail, result is: %{public}d", TEST_FAIL);
5361         return res;
5362     }
5363 
5364     result = OH_AudioSessionManager_RegisterCurrentOutputDeviceChangeCallback(audioSessionManager, nullptr);
5365     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
5366         napi_create_int32(env, TEST_FAIL, &res);
5367         LOG("RegisterStateChangeCallback fail, result is: %{public}d", TEST_FAIL);
5368         return res;
5369     }
5370 
5371     result = OH_AudioSessionManager_UnregisterCurrentOutputDeviceChangeCallback(audioSessionManager, nullptr);
5372     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
5373         napi_create_int32(env, TEST_FAIL, &res);
5374         LOG("UnregisterStateChangeCallback fail, result is: %{public}d", TEST_FAIL);
5375         return res;
5376     }
5377     napi_create_int32(env, TEST_PASS, &res);
5378     return res;
5379 }
5380 
AudioSessionManagerRegisterDeviceCallback_003(napi_env env,napi_callback_info info)5381 static napi_value AudioSessionManagerRegisterDeviceCallback_003(napi_env env, napi_callback_info info)
5382 {
5383     napi_value res;
5384     OH_AudioSessionManager *audioSessionManager = nullptr;
5385     OH_AudioCommon_Result result = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
5386     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5387         napi_create_int32(env, TEST_FAIL, &res);
5388         LOG("get audio session manager fail, result is: %{public}d", TEST_FAIL);
5389         return res;
5390     }
5391 
5392     result = OH_AudioSessionManager_RegisterCurrentOutputDeviceChangeCallback(audioSessionManager, MyDeviceCallback);
5393     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5394         napi_create_int32(env, TEST_FAIL, &res);
5395         LOG("RegisterStateChangeCallback fail, result is: %{public}d", TEST_FAIL);
5396         return res;
5397     }
5398 
5399     result = OH_AudioSessionManager_RegisterCurrentOutputDeviceChangeCallback(audioSessionManager, MyDeviceCallback);
5400     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5401         napi_create_int32(env, TEST_FAIL, &res);
5402         LOG("RegisterStateChangeCallback double fail, result is: %{public}d", TEST_FAIL);
5403         return res;
5404     }
5405 
5406     result = OH_AudioSessionManager_UnregisterCurrentOutputDeviceChangeCallback(audioSessionManager, MyDeviceCallback);
5407     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5408         napi_create_int32(env, TEST_FAIL, &res);
5409         LOG("UnregisterStateChangeCallback fail, result is: %{public}d", TEST_FAIL);
5410         return res;
5411     }
5412 
5413     result = OH_AudioSessionManager_UnregisterCurrentOutputDeviceChangeCallback(audioSessionManager, MyDeviceCallback);
5414     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
5415         napi_create_int32(env, TEST_FAIL, &res);
5416         LOG("UnregisterStateChangeCallback double fail, result is: %{public}d", TEST_FAIL);
5417         return res;
5418     }
5419     napi_create_int32(env, TEST_PASS, &res);
5420     return res;
5421 }
5422 
AudioSessionManagerReleaseDevices_001(napi_env env,napi_callback_info info)5423 static napi_value AudioSessionManagerReleaseDevices_001(napi_env env, napi_callback_info info)
5424 {
5425     napi_value res;
5426     OH_AudioSessionManager *audioSessionManager = nullptr;
5427     OH_AudioCommon_Result result = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
5428     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5429         napi_create_int32(env, TEST_FAIL, &res);
5430         LOG("get audio session manager fail, result is: %{public}d", TEST_FAIL);
5431         return res;
5432     }
5433 
5434     OH_AudioRoutingManager *audioRoutingManager = nullptr;
5435     result = OH_AudioManager_GetAudioRoutingManager(&audioRoutingManager);
5436     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5437         napi_create_int32(env, TEST_FAIL, &res);
5438         LOG("get audio route manager fail, result is: %{public}d", TEST_FAIL);
5439         return res;
5440     }
5441 
5442     OH_AudioDevice_Flag deviceFlag = AUDIO_DEVICE_FLAG_OUTPUT;
5443     OH_AudioDeviceDescriptorArray *array = nullptr;
5444     result = OH_AudioRoutingManager_GetDevices(audioRoutingManager, deviceFlag, &array);
5445     if (result != AUDIOCOMMON_RESULT_SUCCESS || array == nullptr) {
5446         napi_create_int32(env, TEST_FAIL, &res);
5447         LOG("AudioRoutingManager_GetDevices fail, result is: %{public}d", TEST_FAIL);
5448         return res;
5449     }
5450 
5451     result = OH_AudioSessionManager_ReleaseDevices(audioSessionManager, array);
5452     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5453         napi_create_int32(env, TEST_FAIL, &res);
5454         LOG("AudioSessionManager_ReleaseDevices fail, result is: %{public}d", TEST_FAIL);
5455         return res;
5456     }
5457     napi_create_int32(env, TEST_PASS, &res);
5458     return res;
5459 }
5460 
AudioSessionManagerReleaseDevices_002(napi_env env,napi_callback_info info)5461 static napi_value AudioSessionManagerReleaseDevices_002(napi_env env, napi_callback_info info)
5462 {
5463     napi_value res;
5464     OH_AudioSessionManager *audioSessionManager = nullptr;
5465     OH_AudioCommon_Result result = OH_AudioManager_GetAudioSessionManager(&audioSessionManager);
5466     if (result != AUDIOCOMMON_RESULT_SUCCESS) {
5467         napi_create_int32(env, TEST_FAIL, &res);
5468         LOG("get audio session manager fail, result is: %{public}d", TEST_FAIL);
5469         return res;
5470     }
5471 
5472     result = OH_AudioSessionManager_ReleaseDevices(nullptr, nullptr);
5473     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
5474         napi_create_int32(env, TEST_FAIL, &res);
5475         LOG("AudioSessionManager_ReleaseDevices fail, manager nullptr, result is: %{public}d", TEST_FAIL);
5476         return res;
5477     }
5478 
5479     result = OH_AudioSessionManager_ReleaseDevices(audioSessionManager, nullptr);
5480     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
5481         napi_create_int32(env, TEST_FAIL, &res);
5482         LOG("AudioSessionManager_ReleaseDevices fail, devices nullptr, result is: %{public}d", TEST_FAIL);
5483         return res;
5484     }
5485     OH_AudioDeviceDescriptorArray audioDeviceDescriptorArray;
5486     audioDeviceDescriptorArray.descriptors = nullptr;
5487 
5488     result = OH_AudioSessionManager_ReleaseDevices(audioSessionManager, &audioDeviceDescriptorArray);
5489     if (result != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
5490         napi_create_int32(env, TEST_FAIL, &res);
5491         LOG("AudioSessionManager_ReleaseDevices fail, descriptors nullptr, result is: %{public}d", TEST_FAIL);
5492         return res;
5493     }
5494     napi_create_int32(env, TEST_PASS, &res);
5495     return res;
5496 }
5497 
AudioRendererSetDefaultOutputDevice_01(napi_env env,napi_callback_info info)5498 static napi_value AudioRendererSetDefaultOutputDevice_01(napi_env env, napi_callback_info info)
5499 {
5500     napi_value res;
5501     OH_AudioStreamBuilder* builder;
5502     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
5503     OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_VOICE_COMMUNICATION;
5504     OH_AudioDevice_Type deviceType = AUDIO_DEVICE_TYPE_WIRED_HEADSET;
5505     OH_AudioStreamBuilder_Create(&builder, type);
5506 
5507     // 2. set builder params
5508     OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
5509 
5510     OH_AudioRenderer_Callbacks callbacks;
5511     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
5512     OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr);
5513 
5514     // 3. generate audiorenderer
5515     OH_AudioRenderer* audioRenderer;
5516     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
5517     if (result != AUDIOSTREAM_SUCCESS) {
5518         napi_create_int32(env, TEST_FAIL, &res);
5519         return res;
5520     }
5521 
5522     // 4. start
5523     result = OH_AudioRenderer_Start(audioRenderer);
5524     if (result != AUDIOSTREAM_SUCCESS) {
5525         napi_create_int32(env, TEST_FAIL, &res);
5526         return res;
5527     }
5528 
5529     // 5. OH_AudioRenderer_SetDefaultOutputDevice
5530     result = OH_AudioRenderer_SetDefaultOutputDevice(audioRenderer, deviceType);
5531     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
5532         napi_create_int32(env, TEST_FAIL, &res);
5533     } else {
5534         napi_create_int32(env, TEST_PASS, &res);
5535     }
5536 
5537     OH_AudioRenderer_Release(audioRenderer);
5538     OH_AudioStreamBuilder_Destroy(builder);
5539     return res;
5540 }
5541 
AudioRendererSetDefaultOutputDevice_02(napi_env env,napi_callback_info info)5542 static napi_value AudioRendererSetDefaultOutputDevice_02(napi_env env, napi_callback_info info)
5543 {
5544     napi_value res;
5545     OH_AudioStreamBuilder* builder;
5546     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
5547     OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_MUSIC;
5548     OH_AudioDevice_Type deviceType = AUDIO_DEVICE_TYPE_SPEAKER;
5549     OH_AudioStreamBuilder_Create(&builder, type);
5550 
5551     // 2. set builder params
5552     OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
5553 
5554     OH_AudioRenderer_Callbacks callbacks;
5555     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
5556     OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr);
5557 
5558     // 3. generate audiorenderer
5559     OH_AudioRenderer* audioRenderer;
5560     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
5561     if (result != AUDIOSTREAM_SUCCESS) {
5562         napi_create_int32(env, TEST_FAIL, &res);
5563         return res;
5564     }
5565 
5566     // 4. start
5567     result = OH_AudioRenderer_Start(audioRenderer);
5568     if (result != AUDIOSTREAM_SUCCESS) {
5569         napi_create_int32(env, TEST_FAIL, &res);
5570         return res;
5571     }
5572 
5573     // 5. OH_AudioRenderer_SetDefaultOutputDevice
5574     result = OH_AudioRenderer_SetDefaultOutputDevice(audioRenderer, deviceType);
5575     if (result != AUDIOSTREAM_ERROR_ILLEGAL_STATE) {
5576         napi_create_int32(env, TEST_FAIL, &res);
5577     } else {
5578         napi_create_int32(env, TEST_PASS, &res);
5579     }
5580 
5581     OH_AudioRenderer_Release(audioRenderer);
5582     OH_AudioStreamBuilder_Destroy(builder);
5583     return res;
5584 }
5585 
AudioRendererSetDefaultOutputDevice_03(napi_env env,napi_callback_info info)5586 static napi_value AudioRendererSetDefaultOutputDevice_03(napi_env env, napi_callback_info info)
5587 {
5588     napi_value res;
5589     OH_AudioStreamBuilder* builder;
5590     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
5591     OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_VOICE_COMMUNICATION;
5592     OH_AudioDevice_Type deviceType = AUDIO_DEVICE_TYPE_SPEAKER;
5593     OH_AudioStreamBuilder_Create(&builder, type);
5594 
5595     // 2. set builder params
5596     OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
5597 
5598     OH_AudioRenderer_Callbacks callbacks;
5599     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
5600     OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr);
5601 
5602     // 3. generate audiorenderer
5603     OH_AudioRenderer* audioRenderer;
5604     OH_AudioStream_Result result = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
5605     if (result != AUDIOSTREAM_SUCCESS) {
5606         napi_create_int32(env, TEST_FAIL, &res);
5607         return res;
5608     }
5609 
5610     // 4. start
5611     result = OH_AudioRenderer_Start(audioRenderer);
5612     if (result != AUDIOSTREAM_SUCCESS) {
5613         napi_create_int32(env, TEST_FAIL, &res);
5614         return res;
5615     }
5616 
5617     // 5. OH_AudioRenderer_SetDefaultOutputDevice
5618     result = OH_AudioRenderer_SetDefaultOutputDevice(nullptr, deviceType);
5619     if (result != AUDIOSTREAM_ERROR_INVALID_PARAM) {
5620         napi_create_int32(env, TEST_FAIL, &res);
5621     } else {
5622         napi_create_int32(env, TEST_PASS, &res);
5623     }
5624 
5625     OH_AudioRenderer_Release(audioRenderer);
5626     OH_AudioStreamBuilder_Destroy(builder);
5627     return res;
5628 }
5629 
Add(napi_env env,napi_callback_info info)5630 static napi_value Add(napi_env env, napi_callback_info info)
5631 {
5632     size_t requireArgc = 2;
5633     size_t argc = 2;
5634     napi_value args[2] = {nullptr};
5635 
5636     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
5637 
5638     napi_valuetype valuetype0;
5639     napi_typeof(env, args[0], &valuetype0);
5640 
5641     napi_valuetype valuetype1;
5642     napi_typeof(env, args[1], &valuetype1);
5643 
5644     double value0;
5645     napi_get_value_double(env, args[0], &value0);
5646 
5647     double value1;
5648     napi_get_value_double(env, args[1], &value1);
5649 
5650     napi_value sum;
5651     napi_create_double(env, value0 + value1, &sum);
5652 
5653     return sum;
5654 }
5655 
CreateRenderBuilderAddCallBack()5656 OH_AudioStreamBuilder *CreateRenderBuilderAddCallBack()
5657 {
5658     OH_AudioStreamBuilder *builder;
5659     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
5660     OH_AudioStreamBuilder_Create(&builder, type);
5661     OH_AudioRenderer_Callbacks callbacks;
5662     callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
5663     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, NULL);
5664     return builder;
5665 }
5666 
AudioRenderGetAudioTimestampInfo(napi_env env,napi_callback_info info)5667 static napi_value AudioRenderGetAudioTimestampInfo(napi_env env, napi_callback_info info)
5668 {
5669     OH_AudioStreamBuilder *builder = CreateRenderBuilderAddCallBack();
5670 
5671     OH_AudioRenderer *audioRenderer;
5672     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
5673 
5674     napi_value res;
5675     int64_t framePosition0;
5676     int64_t timestamp0;
5677     OH_AudioStream_Result result = OH_AudioRenderer_GetAudioTimestampInfo(
5678         audioRenderer, &framePosition0, &timestamp0);
5679     if (result == AUDIOSTREAM_SUCCESS) {
5680         napi_create_int32(env, TEST_FAIL, &res);
5681         return res;
5682     }
5683     OH_AudioRenderer_Start(audioRenderer);
5684 
5685     int sleepNum = 30000;
5686     uDelay(sleepNum);
5687 
5688     int64_t framePosition1;
5689     int64_t timestamp1;
5690     result = OH_AudioRenderer_GetAudioTimestampInfo(audioRenderer, &framePosition1, &timestamp1);
5691     if (result != AUDIOSTREAM_SUCCESS) {
5692         napi_create_int32(env, TEST_FAIL, &res);
5693         return res;
5694     }
5695 
5696     OH_AudioRenderer_Stop(audioRenderer);
5697     result = OH_AudioRenderer_GetAudioTimestampInfo(audioRenderer, &framePosition0, &timestamp0);
5698         if (result == AUDIOSTREAM_SUCCESS) {
5699         napi_create_int32(env, TEST_FAIL, &res);
5700         return res;
5701     }
5702     OH_AudioRenderer_Release(audioRenderer);
5703     OH_AudioStreamBuilder_Destroy(builder);
5704     napi_create_int32(env, TEST_PASS, &res);
5705     return res;
5706 }
5707 
AudioRenderGetAudioTimestampInfoInterval(napi_env env,napi_callback_info info)5708 static napi_value AudioRenderGetAudioTimestampInfoInterval(napi_env env, napi_callback_info info)
5709 {
5710     OH_AudioStreamBuilder *builder = CreateRenderBuilderAddCallBack();
5711 
5712     OH_AudioRenderer *audioRenderer;
5713     OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
5714 
5715     OH_AudioRenderer_Start(audioRenderer);
5716 
5717     int sleepNum = 500000;
5718     uDelay(sleepNum);
5719 
5720     napi_value res;
5721     float rate = 0.15;
5722     int counti = 5;
5723     int64_t framePositionLastDuration = 0;
5724     int64_t timestampLastDuration = 0;
5725     OH_AudioStream_Result result = AUDIOSTREAM_SUCCESS;
5726 
5727     for (int i = 0; i < counti; ++i) {
5728         int64_t framePosition1 = 0;
5729         int64_t framePosition2 = 0;
5730         int64_t timestamp1 = 0;
5731         int64_t timestamp2 = 0;
5732         result = OH_AudioRenderer_GetAudioTimestampInfo(audioRenderer, &framePosition1, &timestamp1);
5733 
5734         uDelay(sleepNum);
5735 
5736         result = OH_AudioRenderer_GetAudioTimestampInfo(audioRenderer, &framePosition2, &timestamp2);
5737         if (framePositionLastDuration == 0) {
5738             framePositionLastDuration = framePosition2 - framePosition1;
5739             timestampLastDuration = timestamp2 - timestamp1;
5740             continue;
5741         }
5742 
5743         int64_t timestampCurDuration = timestamp2 - timestamp1;
5744         int64_t framePositionCurDuration = (framePosition2 - framePosition1) *
5745         ((timestampLastDuration * 1.0) / (timestampCurDuration));
5746 
5747         if (framePositionLastDuration <= framePositionCurDuration * (1 - rate) ||
5748 		    framePositionLastDuration >= framePositionCurDuration * (1 + rate)) {
5749             napi_create_int32(env, TEST_FAIL, &res);
5750             OH_AudioRenderer_Stop(audioRenderer);
5751             OH_AudioRenderer_Release(audioRenderer);
5752             OH_AudioStreamBuilder_Destroy(builder);
5753             return res;
5754             }
5755 
5756         framePositionLastDuration = framePosition2 - framePosition1;
5757         timestampLastDuration = timestamp2 - timestamp1;
5758     }
5759     OH_AudioRenderer_Stop(audioRenderer);
5760     OH_AudioRenderer_Release(audioRenderer);
5761     OH_AudioStreamBuilder_Destroy(builder);
5762     napi_create_int32(env, TEST_PASS, &res);
5763     return res;
5764 }
5765 
getTargetStreamInfo(napi_env env,napi_callback_info info)5766 static napi_status getTargetStreamInfo(napi_env env, napi_callback_info info)
5767 {
5768     napi_status res = napi_status::napi_invalid_arg;
5769     size_t argc = 1;
5770     napi_value args[1] = {nullptr};
5771     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
5772     napi_value n_streamRendererUsageNum;
5773     napi_value n_streamSourceTypeNum;
5774     napi_value n_streamSamplingRateNum;
5775     napi_value n_streamSampleFormatNum;
5776     napi_value n_streamChannelCountNum;
5777     napi_value n_streamLatencyModeNum;
5778     if (napi_get_named_property(env, args[0], "streamRendererUsageNum", &n_streamRendererUsageNum) != napi_ok) {
5779         return res;
5780     }
5781     if (napi_get_named_property(env, args[0], "streamSourceTypeNum", &n_streamSourceTypeNum) != napi_ok) {
5782         return res;
5783     }
5784     if (napi_get_named_property(env, args[0], "streamSamplingRateNum", &n_streamSamplingRateNum) != napi_ok) {
5785         return res;
5786     }
5787     if (napi_get_named_property(env, args[0], "streamSampleFormatNum", &n_streamSampleFormatNum) != napi_ok) {
5788         return res;
5789     }
5790     if (napi_get_named_property(env, args[0], "streamChannelCountNum", &n_streamChannelCountNum) != napi_ok) {
5791         return res;
5792     }
5793     if (napi_get_named_property(env, args[0], "streamLatencyModeNum", &n_streamLatencyModeNum) != napi_ok) {
5794         return res;
5795     }
5796     int32_t capturerStreamUsage;
5797     napi_get_value_int32(env, n_streamSourceTypeNum, &capturerStreamUsage);
5798     g_ohCapturerStreamUsage = (OH_AudioStream_SourceType)capturerStreamUsage;
5799     int32_t rendererStreamUsage;
5800     napi_get_value_int32(env, n_streamRendererUsageNum, &rendererStreamUsage);
5801     g_ohRendererStreamUsage = (OH_AudioStream_Usage)rendererStreamUsage;
5802     int32_t format;
5803     napi_get_value_int32(env, n_streamSampleFormatNum, &format);
5804     g_ohFormat = (OH_AudioStream_SampleFormat)format;
5805     int32_t samplingRate;
5806     napi_get_value_int32(env, n_streamSamplingRateNum, &samplingRate);
5807     g_ohSamplingRate = samplingRate;
5808     int32_t channelCount;
5809     napi_get_value_int32(env, n_streamChannelCountNum, &channelCount);
5810     g_ohChannelCount = channelCount;
5811     int32_t latencyMode;
5812     napi_get_value_int32(env, n_streamLatencyModeNum, &latencyMode);
5813     g_ohLatencyMode = (OH_AudioStream_LatencyMode)latencyMode;
5814     return napi_status::napi_ok;
5815 }
5816 
AudioCapturerOnReadDataPcm(OH_AudioCapturer * capturer,void * userData,void * buffer,int32_t bufferLen)5817 static int32_t AudioCapturerOnReadDataPcm(OH_AudioCapturer *capturer, void *userData, void *buffer, int32_t bufferLen)
5818 {
5819     size_t count = 1;
5820     if (fwrite(buffer, bufferLen, count, g_pcmFile) != count) {
5821         printf("buffer fwrite err");
5822     }
5823     return 0;
5824 }
5825 
AudioCapturerInit(napi_env env,napi_callback_info info)5826 static napi_value AudioCapturerInit(napi_env env, napi_callback_info info)
5827 {
5828     napi_value result;
5829     napi_status res = getTargetStreamInfo(env, info);
5830     if (res != napi_status::napi_ok) {
5831         napi_create_int32(env, TEST_FAIL, &result);
5832         return result;
5833     }
5834 
5835     if (g_audioCapturer) {
5836         OH_AudioCapturer_Release(g_audioCapturer);
5837         OH_AudioStreamBuilder_Destroy(g_capturerBuilder);
5838         g_audioCapturer = nullptr;
5839         g_capturerBuilder = nullptr;
5840     }
5841 
5842     if (g_pcmFile) {
5843         fclose(g_pcmFile);
5844         g_pcmFile = nullptr;
5845     }
5846 
5847     g_pcmFile = fopen(g_pcmFilePath.c_str(), "wb");
5848     if (g_pcmFile == nullptr) {
5849         LOG("AudioCapturerInit open g_pcmFilePath fail");
5850         napi_create_int32(env, TEST_FAIL, &result);
5851         return result;
5852     }
5853 
5854     // 1. create builder
5855     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
5856     OH_AudioStreamBuilder_Create(&g_capturerBuilder, type);
5857     // 2. set params and callbacks
5858     // 设置音频采样格式
5859     OH_AudioStreamBuilder_SetSampleFormat(g_capturerBuilder, g_ohFormat);
5860     // 设置音频流的编码类型
5861     OH_AudioStreamBuilder_SetEncodingType(g_capturerBuilder, AUDIOSTREAM_ENCODING_TYPE_RAW);
5862     // 设置输出音频流的工作场景
5863     OH_AudioStreamBuilder_SetCapturerInfo(g_capturerBuilder, g_ohCapturerStreamUsage);
5864 
5865     OH_AudioStreamBuilder_SetSamplingRate(g_capturerBuilder, g_ohSamplingRate);
5866     OH_AudioStreamBuilder_SetChannelCount(g_capturerBuilder, g_ohChannelCount);
5867     OH_AudioStreamBuilder_SetLatencyMode(g_capturerBuilder, g_ohLatencyMode);
5868 
5869     OH_AudioCapturer_Callbacks callbacks;
5870     callbacks.OH_AudioCapturer_OnReadData = AudioCapturerOnReadDataPcm;
5871     callbacks.OH_AudioCapturer_OnStreamEvent = nullptr;
5872     callbacks.OH_AudioCapturer_OnInterruptEvent = nullptr;
5873     callbacks.OH_AudioCapturer_OnError = nullptr;
5874 
5875     OH_AudioStreamBuilder_SetCapturerCallback(g_capturerBuilder, callbacks, nullptr);
5876 
5877     // 3. create OH_AudioCapturer
5878     OH_AudioStreamBuilder_GenerateCapturer(g_capturerBuilder, &g_audioCapturer);
5879 
5880     napi_create_int32(env, TEST_PASS, &result);
5881     LOG("AudioCapturerInit succ");
5882     return result;
5883 }
5884 
AudioCapturerStart(napi_env env,napi_callback_info info)5885 static napi_value AudioCapturerStart(napi_env env, napi_callback_info info)
5886 {
5887     napi_value result;
5888     OH_AudioStream_Result res = AUDIOSTREAM_SUCCESS;
5889 
5890     if (g_audioCapturer == nullptr) {
5891         LOG("AudioCapturerStart fail");
5892         res = AUDIOSTREAM_ERROR_INVALID_PARAM;
5893     } else {
5894         res = OH_AudioCapturer_Start(g_audioCapturer);
5895         if (res != AUDIOSTREAM_SUCCESS) {
5896             LOG("AudioCapturerStart fail");
5897         } else {
5898             LOG("AudioCapturerStart succ");
5899         }
5900     }
5901 
5902     napi_create_int32(env, res, &result);
5903     return result;
5904 }
5905 
AudioCapturerStop(napi_env env,napi_callback_info info)5906 static napi_value AudioCapturerStop(napi_env env, napi_callback_info info)
5907 {
5908     napi_value result;
5909     OH_AudioStream_Result res = AUDIOSTREAM_SUCCESS;
5910 
5911     if (g_audioCapturer == nullptr) {
5912         LOG("AudioCapturerStop fail");
5913         res = AUDIOSTREAM_ERROR_INVALID_PARAM;
5914     } else {
5915         res = OH_AudioCapturer_Stop(g_audioCapturer);
5916         if (res != AUDIOSTREAM_SUCCESS) {
5917             LOG("AudioCapturerStop fail");
5918         } else {
5919             LOG("AudioCapturerStop succ");
5920         }
5921     }
5922 
5923     napi_create_int32(env, res, &result);
5924     return result;
5925 }
5926 
AudioCapturerRelease(napi_env env,napi_callback_info info)5927 static napi_value AudioCapturerRelease(napi_env env, napi_callback_info info)
5928 {
5929     napi_value result;
5930     if (g_audioCapturer) {
5931         OH_AudioCapturer_Release(g_audioCapturer);
5932         OH_AudioStreamBuilder_Destroy(g_capturerBuilder);
5933         g_audioCapturer = nullptr;
5934         g_capturerBuilder = nullptr;
5935     }
5936     if (g_pcmFile) {
5937         fclose(g_pcmFile);
5938         g_pcmFile = nullptr;
5939     }
5940 
5941     napi_create_int32(env, TEST_PASS, &result);
5942     return result;
5943 }
5944 
AudioRendererOnWriteDataPcm(OH_AudioRenderer * renderer,void * userData,void * buffer,int32_t bufferLen)5945 static int32_t AudioRendererOnWriteDataPcm(OH_AudioRenderer *renderer, void *userData, void *buffer, int32_t bufferLen)
5946 {
5947     size_t readCount = fread(buffer, bufferLen, 1, g_pcmFile);
5948     if (!readCount) {
5949         if (feof(g_pcmFile)) {
5950             OH_AudioRenderer_Stop(g_audioRenderer);
5951         }
5952     }
5953     return 0;
5954 }
5955 
AudioRendererInit(napi_env env,napi_callback_info info)5956 static napi_value AudioRendererInit(napi_env env, napi_callback_info info)
5957 {
5958     napi_value result;
5959     napi_status res = getTargetStreamInfo(env, info);
5960     if (res != napi_status::napi_ok) {
5961         napi_create_int32(env, TEST_FAIL, &result);
5962         return result;
5963     }
5964 
5965     if (g_audioRenderer) {
5966         OH_AudioRenderer_Release(g_audioRenderer);
5967         OH_AudioStreamBuilder_Destroy(g_rendererBuilder);
5968         g_audioRenderer = nullptr;
5969         g_rendererBuilder = nullptr;
5970     }
5971     if (g_pcmFile) {
5972         fclose(g_pcmFile);
5973         g_pcmFile = nullptr;
5974     }
5975 
5976     g_pcmFile = fopen(g_pcmFilePath.c_str(), "rb");
5977     if (g_pcmFile == nullptr) {
5978         return 0;
5979     }
5980     // create builder
5981     OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
5982     OH_AudioStreamBuilder_Create(&g_rendererBuilder, type);
5983 
5984     // set params and callbacks
5985     // 设置音频采样格式
5986     OH_AudioStreamBuilder_SetSampleFormat(g_rendererBuilder, g_ohFormat);
5987     // 设置音频流的编码类型
5988     OH_AudioStreamBuilder_SetEncodingType(g_rendererBuilder, AUDIOSTREAM_ENCODING_TYPE_RAW);
5989     // 设置输出音频流的工作场景
5990     OH_AudioStreamBuilder_SetRendererInfo(g_rendererBuilder, g_ohRendererStreamUsage);
5991 
5992     OH_AudioStreamBuilder_SetSamplingRate(g_rendererBuilder, g_ohSamplingRate);
5993     OH_AudioStreamBuilder_SetChannelCount(g_rendererBuilder, g_ohChannelCount);
5994     OH_AudioStreamBuilder_SetLatencyMode(g_rendererBuilder, g_ohLatencyMode);
5995 
5996     OH_AudioRenderer_Callbacks rendererCallbacks;
5997     rendererCallbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteDataPcm;
5998     rendererCallbacks.OH_AudioRenderer_OnStreamEvent = nullptr;
5999     rendererCallbacks.OH_AudioRenderer_OnInterruptEvent = nullptr;
6000     rendererCallbacks.OH_AudioRenderer_OnError = nullptr;
6001     OH_AudioStreamBuilder_SetRendererCallback(g_rendererBuilder, rendererCallbacks, nullptr);
6002 
6003     // create OH_AudioRenderer
6004     OH_AudioStreamBuilder_GenerateRenderer(g_rendererBuilder, &g_audioRenderer);
6005 
6006     napi_create_int32(env, TEST_PASS, &result);
6007     LOG("AudioRendererInit succ");
6008     return result;
6009 }
6010 
AudioRendererStart(napi_env env,napi_callback_info info)6011 static napi_value AudioRendererStart(napi_env env, napi_callback_info info)
6012 {
6013     napi_value result;
6014     OH_AudioStream_Result res = AUDIOSTREAM_SUCCESS;
6015 
6016     if (g_audioRenderer == nullptr) {
6017         LOG("AudioRendererStart fail");
6018         res = AUDIOSTREAM_ERROR_INVALID_PARAM;
6019     } else {
6020         res = OH_AudioRenderer_Start(g_audioRenderer);
6021         if (res != AUDIOSTREAM_SUCCESS) {
6022             LOG("AudioRendererStart fail");
6023         } else {
6024             LOG("AudioRendererStart succ");
6025         }
6026     }
6027 
6028     napi_create_int32(env, res, &result);
6029     return result;
6030 }
6031 
AudioRendererStop(napi_env env,napi_callback_info info)6032 static napi_value AudioRendererStop(napi_env env, napi_callback_info info)
6033 {
6034     napi_value result;
6035     OH_AudioStream_Result res = AUDIOSTREAM_SUCCESS;
6036 
6037     if (g_audioRenderer == nullptr) {
6038         LOG("AudioRendererStop fail");
6039         res = AUDIOSTREAM_ERROR_INVALID_PARAM;
6040     } else {
6041         res = OH_AudioRenderer_Stop(g_audioRenderer);
6042         if (res != AUDIOSTREAM_SUCCESS) {
6043             LOG("AudioRendererStop fail");
6044         } else {
6045             LOG("AudioRendererStop succ");
6046         }
6047     }
6048 
6049     napi_create_int32(env, res, &result);
6050     return result;
6051 }
6052 
AudioRendererRelease(napi_env env,napi_callback_info info)6053 static napi_value AudioRendererRelease(napi_env env, napi_callback_info info)
6054 {
6055     napi_value result;
6056     if (g_audioRenderer) {
6057         OH_AudioRenderer_Release(g_audioRenderer);
6058         OH_AudioStreamBuilder_Destroy(g_rendererBuilder);
6059         g_audioRenderer = nullptr;
6060         g_rendererBuilder = nullptr;
6061     }
6062     if (g_pcmFile) {
6063         fclose(g_pcmFile);
6064         g_pcmFile = nullptr;
6065     }
6066     napi_create_int32(env, TEST_PASS, &result);
6067     return result;
6068 }
6069 
OH_AudioStreamBuilder_SetVolumeMode_Test_001(napi_env env,napi_callback_info info)6070 static napi_value OH_AudioStreamBuilder_SetVolumeMode_Test_001(napi_env env, napi_callback_info info)
6071 {
6072     napi_value result;
6073     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
6074     OH_AudioStream_VolumeMode volumeMode = OH_AudioStream_VolumeMode::AUDIOSTREAM_VOLUMEMODE_SYSTEM_GLOBAL;
6075     OH_AudioStream_Result res = OH_AudioStreamBuilder_SetVolumeMode(builder, volumeMode);
6076 
6077     if (res == OH_AudioStream_Result::AUDIOSTREAM_SUCCESS) {
6078         LOG("OH_AudioStreamBuilder_SetVolumeMode_Test_001 SUCCESS, res is %{public}d", res);
6079         napi_create_int32(env, TEST_PASS, &result);
6080     }
6081     else {
6082         LOG("OH_AudioStreamBuilder_SetVolumeMode_Test_001 FAILED, res is %{public}d", res);
6083         napi_create_int32(env, TEST_FAIL, &result);
6084     }
6085 
6086     return result;
6087 }
6088 
OH_AudioStreamBuilder_SetVolumeMode_Test_002(napi_env env,napi_callback_info info)6089 static napi_value OH_AudioStreamBuilder_SetVolumeMode_Test_002(napi_env env, napi_callback_info info)
6090 {
6091     napi_value result;
6092     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
6093     OH_AudioStream_VolumeMode volumeMode = OH_AudioStream_VolumeMode::AUDIOSTREAM_VOLUMEMODE_APP_INDIVIDUAL;
6094     OH_AudioStream_Result res = OH_AudioStreamBuilder_SetVolumeMode(builder, volumeMode);
6095 
6096     if (res == OH_AudioStream_Result::AUDIOSTREAM_SUCCESS) {
6097         LOG("OH_AudioStreamBuilder_SetVolumeMode_Test_002 SUCCESS, res is %{public}d", res);
6098         napi_create_int32(env, TEST_PASS, &result);
6099     }
6100     else {
6101         LOG("OH_AudioStreamBuilder_SetVolumeMode_Test_002 FAILED, res is %{public}d", res);
6102         napi_create_int32(env, TEST_FAIL, &result);
6103     }
6104 
6105     return result;
6106 }
6107 
OH_AudioStreamBuilder_SetVolumeMode_Test_003(napi_env env,napi_callback_info info)6108 static napi_value OH_AudioStreamBuilder_SetVolumeMode_Test_003(napi_env env, napi_callback_info info)
6109 {
6110     napi_value result;
6111     OH_AudioStreamBuilder *builder = nullptr;
6112     OH_AudioStream_VolumeMode volumeMode = OH_AudioStream_VolumeMode::AUDIOSTREAM_VOLUMEMODE_SYSTEM_GLOBAL;
6113     OH_AudioStream_Result res = OH_AudioStreamBuilder_SetVolumeMode(builder, volumeMode);
6114 
6115     if (res == OH_AudioStream_Result::AUDIOSTREAM_ERROR_INVALID_PARAM) {
6116         LOG("OH_AudioStreamBuilder_SetVolumeMode_Test_003 SUCCESS, res is %{public}d", res);
6117         napi_create_int32(env, TEST_PASS, &result);
6118     }
6119     else {
6120         LOG("OH_AudioStreamBuilder_SetVolumeMode_Test_003 FAILED, res is %{public}d", res);
6121         napi_create_int32(env, TEST_FAIL, &result);
6122     }
6123 
6124     return result;
6125 }
6126 
OH_AudioStreamBuilder_SetVolumeMode_Test_004(napi_env env,napi_callback_info info)6127 static napi_value OH_AudioStreamBuilder_SetVolumeMode_Test_004(napi_env env, napi_callback_info info)
6128 {
6129     napi_value result;
6130     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
6131     int volumeMode = -1;
6132     OH_AudioStream_Result res = OH_AudioStreamBuilder_SetVolumeMode(builder, static_cast<OH_AudioStream_VolumeMode>(volumeMode));
6133 
6134     if (res == OH_AudioStream_Result::AUDIOSTREAM_ERROR_INVALID_PARAM) {
6135         LOG("OH_AudioStreamBuilder_SetVolumeMode_Test_004 SUCCESS, res is %{public}d", res);
6136         napi_create_int32(env, TEST_PASS, &result);
6137     }
6138     else {
6139         LOG("OH_AudioStreamBuilder_SetVolumeMode_Test_004 FAILED, res is %{public}d", res);
6140         napi_create_int32(env, TEST_FAIL, &result);
6141     }
6142 
6143     return result;
6144 }
6145 
AudioManagerGetAudioVolumeManager_001(napi_env env,napi_callback_info info)6146 static napi_value AudioManagerGetAudioVolumeManager_001(napi_env env, napi_callback_info info)
6147 {
6148     napi_value result;
6149     OH_AudioVolumeManager *volumeManager = nullptr;
6150     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6151     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6152         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6153         napi_create_int32(env, TEST_FAIL, &result);
6154         return result;
6155     }
6156 
6157     napi_create_int32(env, TEST_PASS, &result);
6158     return result;
6159 }
6160 
AudioManagerGetAudioVolumeManager_002(napi_env env,napi_callback_info info)6161 static napi_value AudioManagerGetAudioVolumeManager_002(napi_env env, napi_callback_info info)
6162 {
6163     napi_value result;
6164     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(nullptr);
6165     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6166         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6167         napi_create_int32(env, TEST_FAIL, &result);
6168         return result;
6169     }
6170 
6171     napi_create_int32(env, TEST_PASS, &result);
6172     return result;
6173 }
6174 
AudioVolumeManagerGetMaxVolumeByUsage_001(napi_env env,napi_callback_info info)6175 static napi_value AudioVolumeManagerGetMaxVolumeByUsage_001(napi_env env, napi_callback_info info)
6176 {
6177     napi_value result;
6178     OH_AudioVolumeManager *volumeManager = nullptr;
6179     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6180     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6181         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6182         napi_create_int32(env, TEST_FAIL, &result);
6183         return result;
6184     }
6185 
6186     int32_t maxVolumeLevel = 0;
6187     for (auto usage : VALID_OH_STREAM_USAGES) {
6188         res = OH_AudioVolumeManager_GetMaxVolumeByUsage(volumeManager, usage, &maxVolumeLevel);
6189         if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6190             LOG("OH_AudioVolumeManager_GetMaxVolumeByUsage FAILED, res is %{public}d, usage is %{public}d", res, usage);
6191             napi_create_int32(env, TEST_FAIL, &result);
6192             return result;
6193         }
6194     }
6195 
6196     napi_create_int32(env, TEST_PASS, &result);
6197     return result;
6198 }
6199 
AudioVolumeManagerGetMaxVolumeByUsage_002(napi_env env,napi_callback_info info)6200 static napi_value AudioVolumeManagerGetMaxVolumeByUsage_002(napi_env env, napi_callback_info info)
6201 {
6202     napi_value result;
6203     OH_AudioCommon_Result res = OH_AudioVolumeManager_GetMaxVolumeByUsage(nullptr, AUDIOSTREAM_USAGE_MUSIC, nullptr);
6204     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6205         LOG("OH_AudioVolumeManager_GetMaxVolumeByUsage FAILED, res is %{public}d", res);
6206         napi_create_int32(env, TEST_FAIL, &result);
6207         return result;
6208     }
6209 
6210     napi_create_int32(env, TEST_PASS, &result);
6211     return result;
6212 }
6213 
AudioVolumeManagerGetMaxVolumeByUsage_003(napi_env env,napi_callback_info info)6214 static napi_value AudioVolumeManagerGetMaxVolumeByUsage_003(napi_env env, napi_callback_info info)
6215 {
6216     napi_value result;
6217     OH_AudioVolumeManager *volumeManager = nullptr;
6218     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6219     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6220         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6221         napi_create_int32(env, TEST_FAIL, &result);
6222         return result;
6223     }
6224 
6225     res = OH_AudioVolumeManager_GetMaxVolumeByUsage(volumeManager, (OH_AudioStream_Usage)INVALID_VALUE, nullptr);
6226     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6227         LOG("OH_AudioVolumeManager_GetMaxVolumeByUsage FAILED, res is %{public}d", res);
6228         napi_create_int32(env, TEST_FAIL, &result);
6229         return result;
6230     }
6231 
6232     napi_create_int32(env, TEST_PASS, &result);
6233     return result;
6234 }
6235 
AudioVolumeManagerGetMaxVolumeByUsage_004(napi_env env,napi_callback_info info)6236 static napi_value AudioVolumeManagerGetMaxVolumeByUsage_004(napi_env env, napi_callback_info info)
6237 {
6238     napi_value result;
6239     OH_AudioVolumeManager *volumeManager = nullptr;
6240     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6241     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6242         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6243         napi_create_int32(env, TEST_FAIL, &result);
6244         return result;
6245     }
6246 
6247     res = OH_AudioVolumeManager_GetMaxVolumeByUsage(volumeManager, AUDIOSTREAM_USAGE_MUSIC, nullptr);
6248     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6249         LOG("OH_AudioVolumeManager_GetMaxVolumeByUsage FAILED, res is %{public}d", res);
6250         napi_create_int32(env, TEST_FAIL, &result);
6251         return result;
6252     }
6253 
6254     napi_create_int32(env, TEST_PASS, &result);
6255     return result;
6256 }
6257 
AudioVolumeManagerGetMinVolumeByUsage_001(napi_env env,napi_callback_info info)6258 static napi_value AudioVolumeManagerGetMinVolumeByUsage_001(napi_env env, napi_callback_info info)
6259 {
6260     napi_value result;
6261     OH_AudioVolumeManager *volumeManager = nullptr;
6262     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6263     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6264         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6265         napi_create_int32(env, TEST_FAIL, &result);
6266         return result;
6267     }
6268 
6269     int32_t minVolumeLevel = 0;
6270     for (auto usage : VALID_OH_STREAM_USAGES) {
6271         res = OH_AudioVolumeManager_GetMinVolumeByUsage(volumeManager, usage, &minVolumeLevel);
6272         if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6273             LOG("OH_AudioVolumeManager_GetMinVolumeByUsage FAILED, res is %{public}d, usage is %{public}d", res, usage);
6274             napi_create_int32(env, TEST_FAIL, &result);
6275             return result;
6276         }
6277     }
6278 
6279     napi_create_int32(env, TEST_PASS, &result);
6280     return result;
6281 }
6282 
AudioVolumeManagerGetMinVolumeByUsage_002(napi_env env,napi_callback_info info)6283 static napi_value AudioVolumeManagerGetMinVolumeByUsage_002(napi_env env, napi_callback_info info)
6284 {
6285     napi_value result;
6286     OH_AudioCommon_Result res = OH_AudioVolumeManager_GetMinVolumeByUsage(nullptr, AUDIOSTREAM_USAGE_MUSIC, nullptr);
6287     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6288         LOG("OH_AudioVolumeManager_GetMinVolumeByUsage FAILED, res is %{public}d", res);
6289         napi_create_int32(env, TEST_FAIL, &result);
6290         return result;
6291     }
6292 
6293     napi_create_int32(env, TEST_PASS, &result);
6294     return result;
6295 }
6296 
AudioVolumeManagerGetMinVolumeByUsage_003(napi_env env,napi_callback_info info)6297 static napi_value AudioVolumeManagerGetMinVolumeByUsage_003(napi_env env, napi_callback_info info)
6298 {
6299     napi_value result;
6300     OH_AudioVolumeManager *volumeManager = nullptr;
6301     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6302     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6303         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6304         napi_create_int32(env, TEST_FAIL, &result);
6305         return result;
6306     }
6307 
6308     res = OH_AudioVolumeManager_GetMinVolumeByUsage(volumeManager, (OH_AudioStream_Usage)INVALID_VALUE, nullptr);
6309     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6310         LOG("OH_AudioVolumeManager_GetMinVolumeByUsage FAILED, res is %{public}d", res);
6311         napi_create_int32(env, TEST_FAIL, &result);
6312         return result;
6313     }
6314 
6315     napi_create_int32(env, TEST_PASS, &result);
6316     return result;
6317 }
6318 
AudioVolumeManagerGetMinVolumeByUsage_004(napi_env env,napi_callback_info info)6319 static napi_value AudioVolumeManagerGetMinVolumeByUsage_004(napi_env env, napi_callback_info info)
6320 {
6321     napi_value result;
6322     OH_AudioVolumeManager *volumeManager = nullptr;
6323     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6324     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6325         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6326         napi_create_int32(env, TEST_FAIL, &result);
6327         return result;
6328     }
6329 
6330     res = OH_AudioVolumeManager_GetMinVolumeByUsage(volumeManager, AUDIOSTREAM_USAGE_MUSIC, nullptr);
6331     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6332         LOG("OH_AudioVolumeManager_GetMinVolumeByUsage FAILED, res is %{public}d", res);
6333         napi_create_int32(env, TEST_FAIL, &result);
6334         return result;
6335     }
6336 
6337     napi_create_int32(env, TEST_PASS, &result);
6338     return result;
6339 }
6340 
AudioVolumeManagerGetVolumeByUsage_001(napi_env env,napi_callback_info info)6341 static napi_value AudioVolumeManagerGetVolumeByUsage_001(napi_env env, napi_callback_info info)
6342 {
6343     napi_value result;
6344     OH_AudioVolumeManager *volumeManager = nullptr;
6345     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6346     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6347         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6348         napi_create_int32(env, TEST_FAIL, &result);
6349         return result;
6350     }
6351 
6352     int32_t volumeLevel = 0;
6353     for (auto usage : VALID_OH_STREAM_USAGES) {
6354         res = OH_AudioVolumeManager_GetVolumeByUsage(volumeManager, usage, &volumeLevel);
6355         if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6356             LOG("OH_AudioVolumeManager_GetVolumeByUsage FAILED, res is %{public}d, usage is %{public}d", res, usage);
6357             napi_create_int32(env, TEST_FAIL, &result);
6358             return result;
6359         }
6360     }
6361 
6362     napi_create_int32(env, TEST_PASS, &result);
6363     return result;
6364 }
6365 
AudioVolumeManagerGetVolumeByUsage_002(napi_env env,napi_callback_info info)6366 static napi_value AudioVolumeManagerGetVolumeByUsage_002(napi_env env, napi_callback_info info)
6367 {
6368     napi_value result;
6369     OH_AudioCommon_Result res = OH_AudioVolumeManager_GetVolumeByUsage(nullptr, AUDIOSTREAM_USAGE_MUSIC, nullptr);
6370     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6371         LOG("OH_AudioVolumeManager_GetVolumeByUsage FAILED, res is %{public}d", res);
6372         napi_create_int32(env, TEST_FAIL, &result);
6373         return result;
6374     }
6375 
6376     napi_create_int32(env, TEST_PASS, &result);
6377     return result;
6378 }
6379 
AudioVolumeManagerGetVolumeByUsage_003(napi_env env,napi_callback_info info)6380 static napi_value AudioVolumeManagerGetVolumeByUsage_003(napi_env env, napi_callback_info info)
6381 {
6382     napi_value result;
6383     OH_AudioVolumeManager *volumeManager = nullptr;
6384     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6385     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6386         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6387         napi_create_int32(env, TEST_FAIL, &result);
6388         return result;
6389     }
6390 
6391     res = OH_AudioVolumeManager_GetVolumeByUsage(volumeManager, (OH_AudioStream_Usage)INVALID_VALUE, nullptr);
6392     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6393         LOG("OH_AudioVolumeManager_GetVolumeByUsage FAILED, res is %{public}d", res);
6394         napi_create_int32(env, TEST_FAIL, &result);
6395         return result;
6396     }
6397 
6398     napi_create_int32(env, TEST_PASS, &result);
6399     return result;
6400 }
6401 
AudioVolumeManagerGetVolumeByUsage_004(napi_env env,napi_callback_info info)6402 static napi_value AudioVolumeManagerGetVolumeByUsage_004(napi_env env, napi_callback_info info)
6403 {
6404     napi_value result;
6405     OH_AudioVolumeManager *volumeManager = nullptr;
6406     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6407     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6408         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6409         napi_create_int32(env, TEST_FAIL, &result);
6410         return result;
6411         napi_create_int32(env, TEST_FAIL, &result);
6412         return result;
6413     }
6414 
6415     res = OH_AudioVolumeManager_GetVolumeByUsage(volumeManager, AUDIOSTREAM_USAGE_MUSIC, nullptr);
6416     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6417         LOG("OH_AudioVolumeManager_GetVolumeByUsage FAILED, res is %{public}d", res);
6418         napi_create_int32(env, TEST_FAIL, &result);
6419         return result;
6420     }
6421 
6422     napi_create_int32(env, TEST_PASS, &result);
6423     return result;
6424 }
6425 
AudioVolumeManagerIsMuteByUsage_001(napi_env env,napi_callback_info info)6426 static napi_value AudioVolumeManagerIsMuteByUsage_001(napi_env env, napi_callback_info info)
6427 {
6428     napi_value result;
6429     OH_AudioVolumeManager *volumeManager = nullptr;
6430     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6431     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6432         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6433         napi_create_int32(env, TEST_FAIL, &result);
6434         return result;
6435     }
6436 
6437     bool muted = false;
6438     for (auto usage : VALID_OH_STREAM_USAGES) {
6439         res = OH_AudioVolumeManager_IsMuteByUsage(volumeManager, usage, &muted);
6440         if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6441             LOG("OH_AudioVolumeManager_IsMuteByUsage FAILED, res is %{public}d, usage is %{public}d", res, usage);
6442             napi_create_int32(env, TEST_FAIL, &result);
6443             return result;
6444         }
6445     }
6446 
6447     napi_create_int32(env, TEST_PASS, &result);
6448     return result;
6449 }
6450 
AudioVolumeManagerIsMuteByUsage_002(napi_env env,napi_callback_info info)6451 static napi_value AudioVolumeManagerIsMuteByUsage_002(napi_env env, napi_callback_info info)
6452 {
6453     napi_value result;
6454     OH_AudioCommon_Result res = OH_AudioVolumeManager_IsMuteByUsage(nullptr, AUDIOSTREAM_USAGE_MUSIC, nullptr);
6455     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6456         LOG("OH_AudioVolumeManager_IsMuteByUsage FAILED, res is %{public}d", res);
6457         napi_create_int32(env, TEST_FAIL, &result);
6458         return result;
6459     }
6460 
6461     napi_create_int32(env, TEST_PASS, &result);
6462     return result;
6463 }
6464 
AudioVolumeManagerIsMuteByUsage_003(napi_env env,napi_callback_info info)6465 static napi_value AudioVolumeManagerIsMuteByUsage_003(napi_env env, napi_callback_info info)
6466 {
6467     napi_value result;
6468     OH_AudioVolumeManager *volumeManager = nullptr;
6469     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6470     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6471         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6472         napi_create_int32(env, TEST_FAIL, &result);
6473         return result;
6474     }
6475 
6476     res = OH_AudioVolumeManager_IsMuteByUsage(volumeManager, (OH_AudioStream_Usage)INVALID_VALUE, nullptr);
6477     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6478         LOG("OH_AudioVolumeManager_IsMuteByUsage FAILED, res is %{public}d", res);
6479         napi_create_int32(env, TEST_FAIL, &result);
6480         return result;
6481     }
6482 
6483     napi_create_int32(env, TEST_PASS, &result);
6484     return result;
6485 }
6486 
AudioVolumeManagerIsMuteByUsage_004(napi_env env,napi_callback_info info)6487 static napi_value AudioVolumeManagerIsMuteByUsage_004(napi_env env, napi_callback_info info)
6488 {
6489     napi_value result;
6490     OH_AudioVolumeManager *volumeManager = nullptr;
6491     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6492     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6493         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6494         napi_create_int32(env, TEST_FAIL, &result);
6495         return result;
6496     }
6497 
6498     res = OH_AudioVolumeManager_IsMuteByUsage(volumeManager, AUDIOSTREAM_USAGE_MUSIC, nullptr);
6499     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6500         LOG("OH_AudioVolumeManager_IsMuteByUsage FAILED, res is %{public}d", res);
6501         napi_create_int32(env, TEST_FAIL, &result);
6502         return result;
6503     }
6504 
6505     napi_create_int32(env, TEST_PASS, &result);
6506     return result;
6507 }
6508 
AudioVolumeManagerRegisterStreamVolumeChangeCallback_001(napi_env env,napi_callback_info info)6509 static napi_value AudioVolumeManagerRegisterStreamVolumeChangeCallback_001(napi_env env, napi_callback_info info)
6510 {
6511     napi_value result;
6512     OH_AudioVolumeManager *volumeManager = nullptr;
6513     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6514     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6515         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6516         napi_create_int32(env, TEST_FAIL, &result);
6517         return result;
6518     }
6519 
6520     for (auto usage : VALID_OH_STREAM_USAGES) {
6521         res = OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback(volumeManager, usage,
6522             MyOnStreamVolumeChangeCallback1, nullptr);
6523         if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6524             LOG("OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback FAILED, res: %{public}d, usage: %{public}d",
6525                 res, usage);
6526             napi_create_int32(env, TEST_FAIL, &result);
6527             return result;
6528         }
6529 
6530         res = OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback(volumeManager,
6531             MyOnStreamVolumeChangeCallback1);
6532         if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6533             LOG("OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback FAILED, res: %{public}d, usage: %{public}d",
6534                 res, usage);
6535             napi_create_int32(env, TEST_FAIL, &result);
6536             return result;
6537         }
6538     }
6539 
6540     napi_create_int32(env, TEST_PASS, &result);
6541     return result;
6542 }
6543 
AudioVolumeManagerRegisterStreamVolumeChangeCallback_002(napi_env env,napi_callback_info info)6544 static napi_value AudioVolumeManagerRegisterStreamVolumeChangeCallback_002(napi_env env, napi_callback_info info)
6545 {
6546     napi_value result;
6547     OH_AudioVolumeManager *volumeManager = nullptr;
6548     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6549     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6550         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6551         napi_create_int32(env, TEST_FAIL, &result);
6552         return result;
6553     }
6554 
6555     res = OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback(volumeManager, AUDIOSTREAM_USAGE_MUSIC,
6556         MyOnStreamVolumeChangeCallback1, nullptr);
6557     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6558         LOG("OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback 1 FAILED, res is %{public}d", res);
6559         napi_create_int32(env, TEST_FAIL, &result);
6560         return result;
6561     }
6562 
6563     res = OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback(volumeManager, AUDIOSTREAM_USAGE_MUSIC,
6564         MyOnStreamVolumeChangeCallback2, nullptr);
6565     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6566         LOG("OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback 2 FAILED, res is %{public}d", res);
6567         napi_create_int32(env, TEST_FAIL, &result);
6568         return result;
6569     }
6570 
6571     res = OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback(volumeManager, MyOnStreamVolumeChangeCallback1);
6572     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6573         LOG("OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback 1 FAILED, res is %{public}d", res);
6574         napi_create_int32(env, TEST_FAIL, &result);
6575         return result;
6576     }
6577 
6578     res = OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback(volumeManager, MyOnStreamVolumeChangeCallback2);
6579     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6580         LOG("OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback 2 FAILED, res is %{public}d", res);
6581         napi_create_int32(env, TEST_FAIL, &result);
6582         return result;
6583     }
6584 
6585     napi_create_int32(env, TEST_PASS, &result);
6586     return result;
6587 }
6588 
AudioVolumeManagerRegisterStreamVolumeChangeCallback_003(napi_env env,napi_callback_info info)6589 static napi_value AudioVolumeManagerRegisterStreamVolumeChangeCallback_003(napi_env env, napi_callback_info info)
6590 {
6591     napi_value result;
6592     OH_AudioVolumeManager *volumeManager = nullptr;
6593     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6594     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6595         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6596         napi_create_int32(env, TEST_FAIL, &result);
6597         return result;
6598     }
6599 
6600     res = OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback(volumeManager, AUDIOSTREAM_USAGE_MUSIC,
6601         MyOnStreamVolumeChangeCallback1, nullptr);
6602     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6603         LOG("OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback 1 FAILED, res is %{public}d", res);
6604         napi_create_int32(env, TEST_FAIL, &result);
6605         return result;
6606     }
6607 
6608     res = OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback(volumeManager, AUDIOSTREAM_USAGE_RINGTONE,
6609         MyOnStreamVolumeChangeCallback2, nullptr);
6610     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6611         LOG("OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback 2 FAILED, res is %{public}d", res);
6612         napi_create_int32(env, TEST_FAIL, &result);
6613         return result;
6614     }
6615 
6616     res = OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback(volumeManager, MyOnStreamVolumeChangeCallback1);
6617     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6618         LOG("OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback 1 FAILED, res is %{public}d", res);
6619         napi_create_int32(env, TEST_FAIL, &result);
6620         return result;
6621     }
6622 
6623     res = OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback(volumeManager, MyOnStreamVolumeChangeCallback2);
6624     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6625         LOG("OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback 2 FAILED, res is %{public}d", res);
6626         napi_create_int32(env, TEST_FAIL, &result);
6627         return result;
6628     }
6629 
6630     napi_create_int32(env, TEST_PASS, &result);
6631     return result;
6632 }
6633 
AudioVolumeManagerRegisterStreamVolumeChangeCallback_004(napi_env env,napi_callback_info info)6634 static napi_value AudioVolumeManagerRegisterStreamVolumeChangeCallback_004(napi_env env, napi_callback_info info)
6635 {
6636     napi_value result;
6637     OH_AudioVolumeManager *volumeManager = nullptr;
6638     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6639     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6640         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6641         napi_create_int32(env, TEST_FAIL, &result);
6642         return result;
6643     }
6644 
6645     res = OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback(volumeManager, AUDIOSTREAM_USAGE_MUSIC,
6646         MyOnStreamVolumeChangeCallback1, nullptr);
6647     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6648         LOG("OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback 1 FAILED, res is %{public}d", res);
6649         napi_create_int32(env, TEST_FAIL, &result);
6650         return result;
6651     }
6652 
6653     res = OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback(volumeManager, AUDIOSTREAM_USAGE_MUSIC,
6654         MyOnStreamVolumeChangeCallback1, nullptr);
6655     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6656         LOG("OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback 2 FAILED, res is %{public}d", res);
6657         napi_create_int32(env, TEST_FAIL, &result);
6658         return result;
6659     }
6660 
6661     res = OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback(volumeManager, MyOnStreamVolumeChangeCallback1);
6662     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6663         LOG("OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback 2 FAILED, res is %{public}d", res);
6664         napi_create_int32(env, TEST_FAIL, &result);
6665         return result;
6666     }
6667 
6668     napi_create_int32(env, TEST_PASS, &result);
6669     return result;
6670 }
6671 
AudioVolumeManagerRegisterStreamVolumeChangeCallback_005(napi_env env,napi_callback_info info)6672 static napi_value AudioVolumeManagerRegisterStreamVolumeChangeCallback_005(napi_env env, napi_callback_info info)
6673 {
6674     napi_value result;
6675     OH_AudioCommon_Result res = OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback(nullptr,
6676         AUDIOSTREAM_USAGE_MUSIC, nullptr, nullptr);
6677     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6678         LOG("OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback FAILED, res is %{public}d", res);
6679         napi_create_int32(env, TEST_FAIL, &result);
6680         return result;
6681     }
6682 
6683     napi_create_int32(env, TEST_PASS, &result);
6684     return result;
6685 }
6686 
AudioVolumeManagerRegisterStreamVolumeChangeCallback_006(napi_env env,napi_callback_info info)6687 static napi_value AudioVolumeManagerRegisterStreamVolumeChangeCallback_006(napi_env env, napi_callback_info info)
6688 {
6689     napi_value result;
6690     OH_AudioVolumeManager *volumeManager = nullptr;
6691     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6692     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6693         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6694         napi_create_int32(env, TEST_FAIL, &result);
6695         return result;
6696     }
6697 
6698     res = OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback(volumeManager, (OH_AudioStream_Usage)INVALID_VALUE,
6699         nullptr, nullptr);
6700     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6701         LOG("OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback FAILED, res is %{public}d", res);
6702         napi_create_int32(env, TEST_FAIL, &result);
6703         return result;
6704     }
6705 
6706     napi_create_int32(env, TEST_PASS, &result);
6707     return result;
6708 }
6709 
AudioVolumeManagerRegisterStreamVolumeChangeCallback_007(napi_env env,napi_callback_info info)6710 static napi_value AudioVolumeManagerRegisterStreamVolumeChangeCallback_007(napi_env env, napi_callback_info info)
6711 {
6712     napi_value result;
6713     OH_AudioVolumeManager *volumeManager = nullptr;
6714     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6715     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6716         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6717         napi_create_int32(env, TEST_FAIL, &result);
6718         return result;
6719     }
6720 
6721     res = OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback(volumeManager, AUDIOSTREAM_USAGE_MUSIC,
6722         nullptr, nullptr);
6723     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6724         LOG("OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback FAILED, res is %{public}d", res);
6725         napi_create_int32(env, TEST_FAIL, &result);
6726         return result;
6727     }
6728 
6729     napi_create_int32(env, TEST_PASS, &result);
6730     return result;
6731 }
6732 
AudioVolumeManagerRegisterStreamVolumeChangeCallback_008(napi_env env,napi_callback_info info)6733 static napi_value AudioVolumeManagerRegisterStreamVolumeChangeCallback_008(napi_env env, napi_callback_info info)
6734 {
6735     napi_value result;
6736     OH_AudioVolumeManager *volumeManager = nullptr;
6737     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6738     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6739         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6740         napi_create_int32(env, TEST_FAIL, &result);
6741         return result;
6742     }
6743 
6744     res = OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback(volumeManager, AUDIOSTREAM_USAGE_MUSIC,
6745         MyOnStreamVolumeChangeCallback1, nullptr);
6746     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6747         LOG("OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback 1 FAILED, res is %{public}d", res);
6748         napi_create_int32(env, TEST_FAIL, &result);
6749         return result;
6750     }
6751 
6752     res = OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback(volumeManager, AUDIOSTREAM_USAGE_RINGTONE,
6753         MyOnStreamVolumeChangeCallback1, nullptr);
6754     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6755         LOG("OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback 2 FAILED, res is %{public}d", res);
6756         napi_create_int32(env, TEST_FAIL, &result);
6757         return result;
6758     }
6759 
6760     res = OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback(volumeManager, MyOnStreamVolumeChangeCallback1);
6761     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6762         LOG("OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback FAILED, res is %{public}d", res);
6763         napi_create_int32(env, TEST_FAIL, &result);
6764         return result;
6765     }
6766 
6767     napi_create_int32(env, TEST_PASS, &result);
6768     return result;
6769 }
6770 
AudioVolumeManagerUnregisterStreamVolumeChangeCallback_001(napi_env env,napi_callback_info info)6771 static napi_value AudioVolumeManagerUnregisterStreamVolumeChangeCallback_001(napi_env env, napi_callback_info info)
6772 {
6773     napi_value result;
6774     OH_AudioCommon_Result res = OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback(nullptr, nullptr);
6775     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6776         LOG("OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback FAILED, res is %{public}d", res);
6777         napi_create_int32(env, TEST_FAIL, &result);
6778         return result;
6779     }
6780 
6781     napi_create_int32(env, TEST_PASS, &result);
6782     return result;
6783 }
6784 
AudioVolumeManagerUnregisterStreamVolumeChangeCallback_002(napi_env env,napi_callback_info info)6785 static napi_value AudioVolumeManagerUnregisterStreamVolumeChangeCallback_002(napi_env env, napi_callback_info info)
6786 {
6787     napi_value result;
6788     OH_AudioVolumeManager *volumeManager = nullptr;
6789     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6790     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6791         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6792         napi_create_int32(env, TEST_FAIL, &result);
6793         return result;
6794     }
6795 
6796     res = OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback(volumeManager, nullptr);
6797     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6798         LOG("OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback FAILED, res is %{public}d", res);
6799         napi_create_int32(env, TEST_FAIL, &result);
6800         return result;
6801     }
6802 
6803     napi_create_int32(env, TEST_PASS, &result);
6804     return result;
6805 }
6806 
AudioVolumeManagerUnregisterStreamVolumeChangeCallback_003(napi_env env,napi_callback_info info)6807 static napi_value AudioVolumeManagerUnregisterStreamVolumeChangeCallback_003(napi_env env, napi_callback_info info)
6808 {
6809     napi_value result;
6810     OH_AudioVolumeManager *volumeManager = nullptr;
6811     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6812     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6813         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6814         napi_create_int32(env, TEST_FAIL, &result);
6815         return result;
6816     }
6817 
6818     res = OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback(volumeManager, MyOnStreamVolumeChangeCallback1);
6819     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6820         LOG("OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback FAILED, res is %{public}d", res);
6821         napi_create_int32(env, TEST_FAIL, &result);
6822         return result;
6823     }
6824 
6825     napi_create_int32(env, TEST_PASS, &result);
6826     return result;
6827 }
6828 
AudioVolumeManagerUnregisterStreamVolumeChangeCallback_004(napi_env env,napi_callback_info info)6829 static napi_value AudioVolumeManagerUnregisterStreamVolumeChangeCallback_004(napi_env env, napi_callback_info info)
6830 {
6831     napi_value result;
6832     OH_AudioVolumeManager *volumeManager = nullptr;
6833     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6834     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6835         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6836         napi_create_int32(env, TEST_FAIL, &result);
6837         return result;
6838     }
6839 
6840     res = OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback(volumeManager, AUDIOSTREAM_USAGE_MUSIC,
6841         MyOnStreamVolumeChangeCallback1, nullptr);
6842     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6843         LOG("OH_AudioVolumeManager_RegisterStreamVolumeChangeCallback 1 FAILED, res is %{public}d", res);
6844         napi_create_int32(env, TEST_FAIL, &result);
6845         return result;
6846     }
6847 
6848     res = OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback(volumeManager, MyOnStreamVolumeChangeCallback1);
6849     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6850         LOG("OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback 1 FAILED, res is %{public}d", res);
6851         napi_create_int32(env, TEST_FAIL, &result);
6852         return result;
6853     }
6854 
6855     res = OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback(volumeManager, MyOnStreamVolumeChangeCallback1);
6856     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6857         LOG("OH_AudioVolumeManager_UnregisterStreamVolumeChangeCallback 2 FAILED, res is %{public}d", res);
6858         napi_create_int32(env, TEST_FAIL, &result);
6859         return result;
6860     }
6861 
6862     napi_create_int32(env, TEST_PASS, &result);
6863     return result;
6864 }
6865 
AudioVolumeManagerGetRingerMode_001(napi_env env,napi_callback_info info)6866 static napi_value AudioVolumeManagerGetRingerMode_001(napi_env env, napi_callback_info info)
6867 {
6868     napi_value result;
6869     OH_AudioVolumeManager *volumeManager = nullptr;
6870     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6871     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6872         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6873         napi_create_int32(env, TEST_FAIL, &result);
6874         return result;
6875     }
6876 
6877     OH_AudioRingerMode ringerMode = AUDIO_RINGER_MODE_NORMAL;
6878     res = OH_AudioVolumeManager_GetRingerMode(volumeManager, &ringerMode);
6879     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6880         LOG("OH_AudioVolumeManager_GetRingerMode FAILED, res is %{public}d", res);
6881         napi_create_int32(env, TEST_FAIL, &result);
6882         return result;
6883     }
6884 
6885     napi_create_int32(env, TEST_PASS, &result);
6886     return result;
6887 }
6888 
AudioVolumeManagerGetRingerMode_002(napi_env env,napi_callback_info info)6889 static napi_value AudioVolumeManagerGetRingerMode_002(napi_env env, napi_callback_info info)
6890 {
6891     napi_value result;
6892     OH_AudioCommon_Result res = OH_AudioVolumeManager_GetRingerMode(nullptr, nullptr);
6893     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6894         napi_create_int32(env, TEST_FAIL, &result);
6895         LOG("OH_AudioVolumeManager_GetRingerMode FAILED, res is %{public}d", res);
6896         return result;
6897     }
6898 
6899     napi_create_int32(env, TEST_PASS, &result);
6900     return result;
6901 }
6902 
AudioVolumeManagerGetRingerMode_003(napi_env env,napi_callback_info info)6903 static napi_value AudioVolumeManagerGetRingerMode_003(napi_env env, napi_callback_info info)
6904 {
6905     napi_value result;
6906     OH_AudioVolumeManager *volumeManager = nullptr;
6907     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6908     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6909         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6910         napi_create_int32(env, TEST_FAIL, &result);
6911         return result;
6912     }
6913 
6914     res = OH_AudioVolumeManager_GetRingerMode(volumeManager, nullptr);
6915     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6916         LOG("OH_AudioVolumeManager_GetRingerMode FAILED, res is %{public}d", res);
6917         napi_create_int32(env, TEST_FAIL, &result);
6918         return result;
6919     }
6920 
6921     napi_create_int32(env, TEST_PASS, &result);
6922     return result;
6923 }
6924 
AudioVolumeManagerRegisterRingerModeChangeCallback_001(napi_env env,napi_callback_info info)6925 static napi_value AudioVolumeManagerRegisterRingerModeChangeCallback_001(napi_env env, napi_callback_info info)
6926 {
6927     napi_value result;
6928     OH_AudioVolumeManager *volumeManager = nullptr;
6929     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6930     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6931         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6932         napi_create_int32(env, TEST_FAIL, &result);
6933         return result;
6934     }
6935 
6936     res = OH_AudioVolumeManager_RegisterRingerModeChangeCallback(volumeManager, MyOnRingerModeChangeCallback, nullptr);
6937     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6938         LOG("OH_AudioVolumeManager_RegisterRingerModeChangeCallback FAILED, res is %{public}d", res);
6939         napi_create_int32(env, TEST_FAIL, &result);
6940         return result;
6941     }
6942 
6943     res = OH_AudioVolumeManager_UnregisterRingerModeChangeCallback(volumeManager, MyOnRingerModeChangeCallback);
6944     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6945         LOG("OH_AudioVolumeManager_UnregisterRingerModeChangeCallback FAILED, res is %{public}d", res);
6946         napi_create_int32(env, TEST_FAIL, &result);
6947         return result;
6948     }
6949 
6950     napi_create_int32(env, TEST_PASS, &result);
6951     return result;
6952 }
6953 
AudioVolumeManagerRegisterRingerModeChangeCallback_002(napi_env env,napi_callback_info info)6954 static napi_value AudioVolumeManagerRegisterRingerModeChangeCallback_002(napi_env env, napi_callback_info info)
6955 {
6956     napi_value result;
6957     OH_AudioCommon_Result res = OH_AudioVolumeManager_RegisterRingerModeChangeCallback(nullptr, nullptr, nullptr);
6958     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6959         LOG("OH_AudioVolumeManager_RegisterRingerModeChangeCallback FAILED, res is %{public}d", res);
6960         napi_create_int32(env, TEST_FAIL, &result);
6961         return result;
6962     }
6963 
6964     napi_create_int32(env, TEST_PASS, &result);
6965     return result;
6966 }
6967 
AudioVolumeManagerRegisterRingerModeChangeCallback_003(napi_env env,napi_callback_info info)6968 static napi_value AudioVolumeManagerRegisterRingerModeChangeCallback_003(napi_env env, napi_callback_info info)
6969 {
6970     napi_value result;
6971     OH_AudioVolumeManager *volumeManager = nullptr;
6972     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
6973     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
6974         LOG("OH_AudioManager_GetAudioVolumeManager FAILED, res is %{public}d", res);
6975         napi_create_int32(env, TEST_FAIL, &result);
6976         return result;
6977     }
6978 
6979     res = OH_AudioVolumeManager_RegisterRingerModeChangeCallback(volumeManager, nullptr, nullptr);
6980     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6981         LOG("OH_AudioVolumeManager_RegisterRingerModeChangeCallback FAILED, res is %{public}d", res);
6982         napi_create_int32(env, TEST_FAIL, &result);
6983         return result;
6984     }
6985 
6986     napi_create_int32(env, TEST_PASS, &result);
6987     return result;
6988 }
6989 
AudioVolumeManagerUnregisterRingerModeChangeCallback_001(napi_env env,napi_callback_info info)6990 static napi_value AudioVolumeManagerUnregisterRingerModeChangeCallback_001(napi_env env, napi_callback_info info)
6991 {
6992     napi_value result;
6993     OH_AudioCommon_Result res = OH_AudioVolumeManager_UnregisterRingerModeChangeCallback(nullptr, nullptr);
6994     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
6995         LOG("OH_AudioVolumeManager_UnregisterRingerModeChangeCallback FAILED, res is %{public}d", res);
6996         napi_create_int32(env, TEST_FAIL, &result);
6997         return result;
6998     }
6999 
7000     napi_create_int32(env, TEST_PASS, &result);
7001     return result;
7002 }
7003 
AudioVolumeManagerUnregisterRingerModeChangeCallback_002(napi_env env,napi_callback_info info)7004 static napi_value AudioVolumeManagerUnregisterRingerModeChangeCallback_002(napi_env env, napi_callback_info info)
7005 {
7006     napi_value result;
7007     OH_AudioVolumeManager *volumeManager = nullptr;
7008     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
7009     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
7010         LOG("OH_AudioManager_GetAudioVolumeManager failed, res: %{public}d", res);
7011         napi_create_int32(env, TEST_FAIL, &result);
7012         return result;
7013     }
7014 
7015     res = OH_AudioVolumeManager_UnregisterRingerModeChangeCallback(volumeManager, nullptr);
7016     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
7017         LOG("OH_AudioVolumeManager_UnregisterRingerModeChangeCallback failed, res: %{public}d", res);
7018         napi_create_int32(env, TEST_FAIL, &result);
7019         return result;
7020     }
7021 
7022     napi_create_int32(env, TEST_PASS, &result);
7023     return result;
7024 }
7025 
AudioVolumeManagerUnregisterRingerModeChangeCallback_003(napi_env env,napi_callback_info info)7026 static napi_value AudioVolumeManagerUnregisterRingerModeChangeCallback_003(napi_env env, napi_callback_info info)
7027 {
7028     napi_value result;
7029     OH_AudioVolumeManager *volumeManager = nullptr;
7030     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
7031     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
7032         LOG("OH_AudioManager_GetAudioVolumeManager failed, res: %{public}d", res);
7033         napi_create_int32(env, TEST_FAIL, &result);
7034         return result;
7035     }
7036 
7037     res = OH_AudioVolumeManager_UnregisterRingerModeChangeCallback(volumeManager, MyOnRingerModeChangeCallback);
7038     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
7039         LOG("OH_AudioVolumeManager_UnregisterRingerModeChangeCallback failed, res: %{public}d", res);
7040         napi_create_int32(env, TEST_FAIL, &result);
7041         return result;
7042     }
7043 
7044     napi_create_int32(env, TEST_PASS, &result);
7045     return result;
7046 }
7047 
AudioVolumeManagerUnregisterRingerModeChangeCallback_004(napi_env env,napi_callback_info info)7048 static napi_value AudioVolumeManagerUnregisterRingerModeChangeCallback_004(napi_env env, napi_callback_info info)
7049 {
7050     napi_value result;
7051     OH_AudioVolumeManager *volumeManager = nullptr;
7052     OH_AudioCommon_Result res = OH_AudioManager_GetAudioVolumeManager(&volumeManager);
7053     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
7054         LOG("OH_AudioManager_GetAudioVolumeManager failed, res: %{public}d", res);
7055         napi_create_int32(env, TEST_FAIL, &result);
7056         return result;
7057     }
7058 
7059     res = OH_AudioVolumeManager_RegisterRingerModeChangeCallback(volumeManager, MyOnRingerModeChangeCallback, nullptr);
7060     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
7061         LOG("OH_AudioVolumeManager_RegisterRingerModeChangeCallback failed, res: %{public}d", res);
7062         napi_create_int32(env, TEST_FAIL, &result);
7063         return result;
7064     }
7065 
7066     res = OH_AudioVolumeManager_UnregisterRingerModeChangeCallback(volumeManager, MyOnRingerModeChangeCallback);
7067     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
7068         LOG("OH_AudioVolumeManager_UnregisterRingerModeChangeCallback 1 failed, res: %{public}d", res);
7069         napi_create_int32(env, TEST_FAIL, &result);
7070         return result;
7071     }
7072 
7073     res = OH_AudioVolumeManager_UnregisterRingerModeChangeCallback(volumeManager, MyOnRingerModeChangeCallback);
7074     if (res != AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
7075         LOG("OH_AudioVolumeManager_UnregisterRingerModeChangeCallback 2 failed, res: %{public}d", res);
7076         napi_create_int32(env, TEST_FAIL, &result);
7077         return result;
7078     }
7079 
7080     napi_create_int32(env, TEST_PASS, &result);
7081     return result;
7082 }
7083 
AudioCapturerSetWillMuteWhenInterrupted(napi_env env,napi_callback_info info)7084 static napi_value AudioCapturerSetWillMuteWhenInterrupted(napi_env env, napi_callback_info info)
7085 {
7086     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
7087 
7088     OH_AudioStream_Result result = OH_AudioStreamBuilder_SetCapturerWillMuteWhenInterrupted(builder, true);
7089     OH_AudioStreamBuilder_Destroy(builder);
7090     napi_value res;
7091     napi_create_int32(env, result, &res);
7092 
7093     return res;
7094 }
7095 
AudioManagerGetAudioStreamManagerTest_001(napi_env env,napi_callback_info info)7096 static napi_value AudioManagerGetAudioStreamManagerTest_001(napi_env env, napi_callback_info info)
7097 {
7098     OH_AudioStreamManager *audioStreamManager = nullptr;
7099 
7100     OH_AudioCommon_Result result = OH_AudioManager_GetAudioStreamManager(&audioStreamManager);
7101 
7102     napi_value res;
7103     if (result == OH_AudioCommon_Result::AUDIOCOMMON_RESULT_SUCCESS) {
7104         napi_create_int32(env, TEST_PASS, &res);
7105     } else {
7106         napi_create_int32(env, TEST_FAIL, &res);
7107     }
7108 
7109     return res;
7110 }
7111 
AudioManagerGetAudioStreamManagerTest_002(napi_env env,napi_callback_info info)7112 static napi_value AudioManagerGetAudioStreamManagerTest_002(napi_env env, napi_callback_info info)
7113 {
7114     OH_AudioStreamManager *audioStreamManager;
7115 
7116     OH_AudioCommon_Result result = OH_AudioManager_GetAudioStreamManager(&audioStreamManager);
7117 
7118     napi_value res;
7119     if (result == OH_AudioCommon_Result::AUDIOCOMMON_RESULT_SUCCESS) {
7120         napi_create_int32(env, TEST_PASS, &res);
7121     } else {
7122         napi_create_int32(env, TEST_FAIL, &res);
7123     }
7124 
7125     return res;
7126 }
7127 
AudioManagerGetDirectPlaybackSupportTest_001(napi_env env,napi_callback_info info)7128 static napi_value AudioManagerGetDirectPlaybackSupportTest_001(napi_env env, napi_callback_info info)
7129 {
7130     constexpr int sampleRateCur = 48000;
7131     OH_AudioStreamManager *audioStreamManager;
7132     OH_AudioStreamInfo streamInfo;
7133     streamInfo.channelLayout = OH_AudioChannelLayout::CH_LAYOUT_STEREO;
7134     streamInfo.encodingType = OH_AudioStream_EncodingType::AUDIOSTREAM_ENCODING_TYPE_RAW;
7135     streamInfo.sampleFormat = OH_AudioStream_SampleFormat::AUDIOSTREAM_SAMPLE_F32LE;
7136     streamInfo.samplingRate = sampleRateCur;
7137     OH_AudioStream_Usage usage = OH_AudioStream_Usage::AUDIOSTREAM_USAGE_MUSIC;
7138     OH_AudioStream_DirectPlaybackMode directPlaybackMode;
7139 
7140     napi_value res;
7141 
7142     OH_AudioCommon_Result getAudioStreamManagerResult = OH_AudioManager_GetAudioStreamManager(&audioStreamManager);
7143     if (getAudioStreamManagerResult != OH_AudioCommon_Result::AUDIOCOMMON_RESULT_SUCCESS) {
7144         napi_create_int32(env, TEST_FAIL, &res);
7145         LOG("OH_AudioManager_GetAudioStreamManager failed, res: %{public}d", res);
7146         return res;
7147     }
7148 
7149     OH_AudioCommon_Result getDirectPlaybackSupportResult = OH_AudioStreamManager_GetDirectPlaybackSupport(
7150         audioStreamManager, &streamInfo, usage, &directPlaybackMode);
7151     if (getDirectPlaybackSupportResult != OH_AudioCommon_Result::AUDIOCOMMON_RESULT_SUCCESS) {
7152         napi_create_int32(env, TEST_FAIL, &res);
7153         LOG("OH_AudioStreamManager_GetDirectPlaybackSupport failed, res: %{public}d", res);
7154         return res;
7155     }
7156     if (directPlaybackMode == OH_AudioStream_DirectPlaybackMode::AUDIOSTREAM_DIRECT_PLAYBACK_NOT_SUPPORTED) {
7157         LOG("OH_AudioStreamManager_GetDirectPlaybackSupport success, directPlaybackMode: %{public}d",
7158             static_cast<int>(directPlaybackMode));
7159         napi_create_int32(env, TEST_PASS, &res);
7160     } else {
7161         LOG("OH_AudioStreamManager_GetDirectPlaybackSupport result failed, directPlaybackMode: %{public}d",
7162             static_cast<int>(directPlaybackMode));
7163         napi_create_int32(env, TEST_FAIL, &res);
7164     }
7165 
7166     return res;
7167 }
7168 
AudioManagerGetDirectPlaybackSupportTest_002(napi_env env,napi_callback_info info)7169 static napi_value AudioManagerGetDirectPlaybackSupportTest_002(napi_env env, napi_callback_info info)
7170 {
7171     constexpr int sampleRateCur = 48000;
7172     OH_AudioStreamManager *audioStreamManager;
7173     OH_AudioStreamInfo *streamInfo = nullptr;
7174     OH_AudioStream_Usage usage = OH_AudioStream_Usage::AUDIOSTREAM_USAGE_MUSIC;
7175     OH_AudioStream_DirectPlaybackMode directPlaybackMode;
7176 
7177     napi_value res;
7178 
7179     OH_AudioCommon_Result getAudioStreamManagerResult = OH_AudioManager_GetAudioStreamManager(&audioStreamManager);
7180     if (getAudioStreamManagerResult != OH_AudioCommon_Result::AUDIOCOMMON_RESULT_SUCCESS) {
7181         napi_create_int32(env, TEST_FAIL, &res);
7182         LOG("OH_AudioManager_GetAudioStreamManager failed, res: %{public}d", res);
7183         return res;
7184     }
7185 
7186     OH_AudioCommon_Result getDirectPlaybackSupportResult = OH_AudioStreamManager_GetDirectPlaybackSupport(
7187         audioStreamManager, streamInfo, usage, &directPlaybackMode);
7188     if (getDirectPlaybackSupportResult == OH_AudioCommon_Result::AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
7189         LOG("OH_AudioStreamManager_GetDirectPlaybackSupport success, OH_AudioStreamInfo nullptr");
7190         napi_create_int32(env, TEST_PASS, &res);
7191     } else {
7192         LOG("OH_AudioStreamManager_GetDirectPlaybackSupport failed, OH_AudioStreamInfo nullptr");
7193         napi_create_int32(env, TEST_FAIL, &res);
7194     }
7195 
7196     return res;
7197 }
7198 
AudioManagerGetDirectPlaybackSupportTest_003(napi_env env,napi_callback_info info)7199 static napi_value AudioManagerGetDirectPlaybackSupportTest_003(napi_env env, napi_callback_info info)
7200 {
7201     constexpr int sampleRateCur = 48000;
7202     OH_AudioStreamManager *audioStreamManager;
7203     OH_AudioStreamInfo streamInfo;
7204     streamInfo.channelLayout = OH_AudioChannelLayout::CH_LAYOUT_STEREO;
7205     streamInfo.encodingType = OH_AudioStream_EncodingType::AUDIOSTREAM_ENCODING_TYPE_RAW;
7206     streamInfo.sampleFormat = OH_AudioStream_SampleFormat::AUDIOSTREAM_SAMPLE_F32LE;
7207     streamInfo.samplingRate = sampleRateCur;
7208     OH_AudioStream_Usage usage = OH_AudioStream_Usage::AUDIOSTREAM_USAGE_MUSIC;
7209     OH_AudioStream_DirectPlaybackMode *directPlaybackMode = nullptr;
7210 
7211     napi_value res;
7212 
7213     OH_AudioCommon_Result getAudioStreamManagerResult = OH_AudioManager_GetAudioStreamManager(&audioStreamManager);
7214     if (getAudioStreamManagerResult != OH_AudioCommon_Result::AUDIOCOMMON_RESULT_SUCCESS) {
7215         napi_create_int32(env, TEST_FAIL, &res);
7216         LOG("OH_AudioManager_GetAudioStreamManager failed, res: %{public}d", res);
7217         return res;
7218     }
7219 
7220     OH_AudioCommon_Result getDirectPlaybackSupportResult = OH_AudioStreamManager_GetDirectPlaybackSupport(
7221         audioStreamManager, &streamInfo, usage, directPlaybackMode);
7222     if (getDirectPlaybackSupportResult == OH_AudioCommon_Result::AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
7223         LOG("OH_AudioStreamManager_GetDirectPlaybackSupport success, OH_AudioStreamManager nullptr");
7224         napi_create_int32(env, TEST_PASS, &res);
7225     } else {
7226         LOG("OH_AudioStreamManager_GetDirectPlaybackSupport failed, OH_AudioStreamManager nullptr");
7227         napi_create_int32(env, TEST_FAIL, &res);
7228     }
7229 
7230     return res;
7231 }
7232 
AudioManagerGetDirectPlaybackSupportTest_004(napi_env env,napi_callback_info info)7233 static napi_value AudioManagerGetDirectPlaybackSupportTest_004(napi_env env, napi_callback_info info)
7234 {
7235     constexpr int sampleRateCur = 48000;
7236     OH_AudioStreamManager *audioStreamManager = nullptr;
7237     OH_AudioStreamInfo streamInfo;
7238     streamInfo.channelLayout = OH_AudioChannelLayout::CH_LAYOUT_STEREO;
7239     streamInfo.encodingType = OH_AudioStream_EncodingType::AUDIOSTREAM_ENCODING_TYPE_RAW;
7240     streamInfo.sampleFormat = OH_AudioStream_SampleFormat::AUDIOSTREAM_SAMPLE_F32LE;
7241     streamInfo.samplingRate = sampleRateCur;
7242     OH_AudioStream_Usage usage = OH_AudioStream_Usage::AUDIOSTREAM_USAGE_MUSIC;
7243     OH_AudioStream_DirectPlaybackMode directPlaybackMode;
7244 
7245     napi_value res;
7246     OH_AudioCommon_Result getDirectPlaybackSupportResult = OH_AudioStreamManager_GetDirectPlaybackSupport(
7247         audioStreamManager, &streamInfo, usage, &directPlaybackMode);
7248     if (getDirectPlaybackSupportResult == OH_AudioCommon_Result::AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
7249         LOG("OH_AudioStreamManager_GetDirectPlaybackSupport success, OH_AudioStreamManager nullptr");
7250         napi_create_int32(env, TEST_PASS, &res);
7251     } else {
7252         LOG("OH_AudioStreamManager_GetDirectPlaybackSupport failed, OH_AudioStreamManager nullptr");
7253         napi_create_int32(env, TEST_FAIL, &res);
7254     }
7255 
7256     return res;
7257 }
7258 
AudioManagerGetDirectPlaybackSupportTest_005(napi_env env,napi_callback_info info)7259 static napi_value AudioManagerGetDirectPlaybackSupportTest_005(napi_env env, napi_callback_info info)
7260 {
7261     constexpr int sampleRateCur = 48000;
7262     OH_AudioStreamManager *audioStreamManager;
7263     OH_AudioStreamInfo streamInfo;
7264     streamInfo.channelLayout = OH_AudioChannelLayout::CH_LAYOUT_STEREO;
7265     streamInfo.encodingType = OH_AudioStream_EncodingType::AUDIOSTREAM_ENCODING_TYPE_RAW;
7266     streamInfo.sampleFormat = OH_AudioStream_SampleFormat::AUDIOSTREAM_SAMPLE_F32LE;
7267     streamInfo.samplingRate = sampleRateCur;
7268     OH_AudioStream_Usage usage = OH_AudioStream_Usage::AUDIOSTREAM_USAGE_UNKNOWN;
7269     OH_AudioStream_DirectPlaybackMode directPlaybackMode;
7270 
7271     napi_value res;
7272 
7273     OH_AudioCommon_Result getAudioStreamManagerResult = OH_AudioManager_GetAudioStreamManager(&audioStreamManager);
7274     if (getAudioStreamManagerResult != OH_AudioCommon_Result::AUDIOCOMMON_RESULT_SUCCESS) {
7275         napi_create_int32(env, TEST_FAIL, &res);
7276         LOG("OH_AudioManager_GetAudioStreamManager failed, res: %{public}d", res);
7277         return res;
7278     }
7279 
7280     OH_AudioCommon_Result getDirectPlaybackSupportResult = OH_AudioStreamManager_GetDirectPlaybackSupport(
7281         audioStreamManager, &streamInfo, usage, &directPlaybackMode);
7282     if (getDirectPlaybackSupportResult == OH_AudioCommon_Result::AUDIOCOMMON_RESULT_ERROR_INVALID_PARAM) {
7283         LOG("OH_AudioStreamManager_GetDirectPlaybackSupport success, OH_AudioStream_Usage invaild");
7284         napi_create_int32(env, TEST_PASS, &res);
7285     } else {
7286         LOG("OH_AudioStreamManager_GetDirectPlaybackSupport failed, OH_AudioStream_Usage invaild");
7287         napi_create_int32(env, TEST_FAIL, &res);
7288     }
7289 
7290     return res;
7291 }
7292 
AudioCaptureGetFastStatus_001(napi_env env,napi_callback_info info)7293 static napi_value AudioCaptureGetFastStatus_001(napi_env env, napi_callback_info info)
7294 {
7295     OH_AudioCapturer *audioCapturer = nullptr;
7296     OH_AudioStream_FastStatus fastStatus;
7297     napi_value result;
7298     OH_AudioStream_Result res = OH_AudioCapturer_GetFastStatus(audioCapturer, &fastStatus);
7299     if (res != AUDIOSTREAM_ERROR_INVALID_PARAM) {
7300         LOG("OH_AudioCapturer_GetFastStatus FAILED, res is %{public}d", res);
7301         OH_AudioCapturer_Release(audioCapturer);
7302         napi_create_int32(env, TEST_FAIL, &result);
7303         return result;
7304     }
7305 
7306     OH_AudioCapturer_Release(audioCapturer);
7307     napi_create_int32(env, TEST_PASS, &result);
7308     return result;
7309 }
7310 
AudioCaptureGetFastStatus_002(napi_env env,napi_callback_info info)7311 static napi_value AudioCaptureGetFastStatus_002(napi_env env, napi_callback_info info)
7312 {
7313     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
7314     napi_value result;
7315     OH_AudioCapturer *audioCapturer;
7316     OH_AudioStream_FastStatus fastStatus;
7317     OH_AudioStream_Result res = OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
7318 
7319     res = OH_AudioCapturer_GetFastStatus(audioCapturer, &fastStatus);
7320     if (res != AUDIOSTREAM_SUCCESS) {
7321         LOG("OH_AudioCapturer_GetFastStatus FAILED, res is %{public}d", res);
7322         OH_AudioCapturer_Release(audioCapturer);
7323         OH_AudioStreamBuilder_Destroy(builder);
7324         napi_create_int32(env, TEST_FAIL, &result);
7325         return result;
7326     }
7327 
7328     OH_AudioCapturer_Release(audioCapturer);
7329     OH_AudioStreamBuilder_Destroy(builder);
7330     napi_create_int32(env, TEST_PASS, &result);
7331     return result;
7332 }
7333 
AudioRendererGetFastStatus_001(napi_env env,napi_callback_info info)7334 static napi_value AudioRendererGetFastStatus_001(napi_env env, napi_callback_info info)
7335 {
7336     OH_AudioRenderer *audioRenderer = nullptr;
7337     OH_AudioStream_FastStatus fastStatus;
7338     napi_value result;
7339     OH_AudioStream_Result res = OH_AudioRenderer_GetFastStatus(audioRenderer, &fastStatus);
7340     if (res != AUDIOSTREAM_ERROR_INVALID_PARAM) {
7341         LOG("OH_AudioRenderer_GetFastStatus FAILED, res is %{public}d", res);
7342         OH_AudioRenderer_Release(audioRenderer);
7343         napi_create_int32(env, TEST_FAIL, &result);
7344         return result;
7345     }
7346 
7347     OH_AudioRenderer_Release(audioRenderer);
7348     napi_create_int32(env, TEST_PASS, &result);
7349     return result;
7350 }
7351 
AudioRendererGetFastStatus_002(napi_env env,napi_callback_info info)7352 static napi_value AudioRendererGetFastStatus_002(napi_env env, napi_callback_info info)
7353 {
7354     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
7355     napi_value result;
7356     OH_AudioRenderer *audioRenderer;
7357     OH_AudioStream_FastStatus fastStatus;
7358     OH_AudioStream_Result res = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
7359 
7360     res = OH_AudioRenderer_GetFastStatus(audioRenderer, &fastStatus);
7361     if (res != AUDIOSTREAM_SUCCESS) {
7362         LOG("OH_AudioRenderer_GetFastStatus FAILED, res is %{public}d", res);
7363         OH_AudioRenderer_Release(audioRenderer);
7364         OH_AudioStreamBuilder_Destroy(builder);
7365         napi_create_int32(env, TEST_FAIL, &result);
7366         return result;
7367     }
7368 
7369     OH_AudioRenderer_Release(audioRenderer);
7370     OH_AudioStreamBuilder_Destroy(builder);
7371     napi_create_int32(env, TEST_PASS, &result);
7372     return result;
7373 }
7374 
AudioStreamManagerIsFastPlaybackSupported_001(napi_env env,napi_callback_info info)7375 static napi_value AudioStreamManagerIsFastPlaybackSupported_001(napi_env env, napi_callback_info info)
7376 {
7377     OH_AudioStreamManager *streamManager;
7378     OH_AudioStreamInfo streamInfo;
7379     napi_value result;
7380     OH_AudioCommon_Result res = OH_AudioManager_GetAudioStreamManager(&streamManager);
7381     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
7382         LOG("OH_AudioManager_GetAudioStreamManager FAILED, res is %{public}d", res);
7383         napi_create_int32(env, TEST_FAIL, &result);
7384         return result;
7385     }
7386 
7387     streamInfo.samplingRate = NORMAL_RATE;
7388     streamInfo.channelLayout = (OH_AudioChannelLayout)CHANNEL_LAYOUT;
7389     streamInfo.encodingType = (OH_AudioStream_EncodingType)ENCODING_TYPE;
7390     streamInfo.sampleFormat = (OH_AudioStream_SampleFormat)g_sampleFormat;
7391 
7392     bool isFastStatus = false;
7393     for (auto usage : VALID_OH_STREAM_USAGES) {
7394         isFastStatus = OH_AudioStreamManager_IsFastPlaybackSupported(streamManager, &streamInfo, usage);
7395     }
7396 
7397     napi_create_int32(env, TEST_PASS, &result);
7398     return result;
7399 }
7400 
AudioStreamManagerIsFastRecordingSupported_001(napi_env env,napi_callback_info info)7401 static napi_value AudioStreamManagerIsFastRecordingSupported_001(napi_env env, napi_callback_info info)
7402 {
7403     OH_AudioStreamManager *streamManager;
7404     OH_AudioStreamInfo streamInfo;
7405     napi_value result;
7406     OH_AudioCommon_Result res = OH_AudioManager_GetAudioStreamManager(&streamManager);
7407     if (res != AUDIOCOMMON_RESULT_SUCCESS) {
7408         LOG("OH_AudioManager_GetAudioStreamManager FAILED, res is %{public}d", res);
7409         napi_create_int32(env, TEST_FAIL, &result);
7410         return result;
7411     }
7412 
7413     streamInfo.samplingRate = NORMAL_RATE;
7414     streamInfo.channelLayout = (OH_AudioChannelLayout)CHANNEL_LAYOUT;
7415     streamInfo.encodingType = (OH_AudioStream_EncodingType)ENCODING_TYPE;
7416     streamInfo.sampleFormat = (OH_AudioStream_SampleFormat)g_sampleFormat;
7417 
7418     bool isFastStatus = false;
7419     for (auto source : VALID_OH_SOURCE_TYPES) {
7420         isFastStatus = OH_AudioStreamManager_IsFastRecordingSupported(streamManager, &streamInfo, source);
7421     }
7422 
7423     napi_create_int32(env, TEST_PASS, &result);
7424     return result;
7425 }
7426 
AudioStreamBuilderSetCapturerFastStatusChangeCallback_001(napi_env env,napi_callback_info info)7427 static napi_value AudioStreamBuilderSetCapturerFastStatusChangeCallback_001(napi_env env, napi_callback_info info)
7428 {
7429     OH_AudioStreamBuilder *builder = nullptr;
7430     void *userData = nullptr;
7431     napi_value result;
7432     OH_AudioStream_Result res = OH_AudioStreamBuilder_SetCapturerFastStatusChangeCallback(builder, nullptr, userData);
7433     if (res != AUDIOSTREAM_ERROR_INVALID_PARAM) {
7434         LOG("OH_AudioStreamBuilder_SetCapturerFastStatusChangeCallback FAILED, res is %{public}d", res);
7435         OH_AudioStreamBuilder_Destroy(builder);
7436         napi_create_int32(env, TEST_FAIL, &result);
7437         return result;
7438     }
7439     OH_AudioStreamBuilder_Destroy(builder);
7440     napi_create_int32(env, TEST_PASS, &result);
7441     return result;
7442 }
7443 
AudioStreamBuilderSetCapturerFastStatusChangeCallback_002(napi_env env,napi_callback_info info)7444 static napi_value AudioStreamBuilderSetCapturerFastStatusChangeCallback_002(napi_env env, napi_callback_info info)
7445 {
7446     OH_AudioStreamBuilder *builder = CreateCapturerBuilder();
7447     void *userData = nullptr;
7448     napi_value result;
7449     OH_AudioStream_Result res = OH_AudioStreamBuilder_SetCapturerFastStatusChangeCallback(builder,
7450         MyAudioCapturerOnFastStatusChangeCallback, userData);
7451     if (res != AUDIOSTREAM_SUCCESS) {
7452         LOG("OH_AudioStreamBuilder_SetCapturerFastStatusChangeCallback FAILED, res is %{public}d", res);
7453         OH_AudioStreamBuilder_Destroy(builder);
7454         napi_create_int32(env, TEST_FAIL, &result);
7455         return result;
7456     }
7457     OH_AudioStreamBuilder_Destroy(builder);
7458     napi_create_int32(env, TEST_PASS, &result);
7459     return result;
7460 }
7461 
AudioStreamBuilderSetRendererFastStatusChangeCallback_001(napi_env env,napi_callback_info info)7462 static napi_value AudioStreamBuilderSetRendererFastStatusChangeCallback_001(napi_env env, napi_callback_info info)
7463 {
7464     OH_AudioStreamBuilder *builder = nullptr;
7465     void *userData = nullptr;
7466     napi_value result;
7467     OH_AudioStream_Result res = OH_AudioStreamBuilder_SetRendererFastStatusChangeCallback(builder, nullptr, userData);
7468     if (res != AUDIOSTREAM_ERROR_INVALID_PARAM) {
7469         LOG("OH_AudioStreamBuilder_SetRendererFastStatusChangeCallback FAILED, res is %{public}d", res);
7470         OH_AudioStreamBuilder_Destroy(builder);
7471         napi_create_int32(env, TEST_FAIL, &result);
7472         return result;
7473     }
7474     OH_AudioStreamBuilder_Destroy(builder);
7475     napi_create_int32(env, TEST_PASS, &result);
7476     return result;
7477 }
7478 
AudioStreamBuilderSetRendererFastStatusChangeCallback_002(napi_env env,napi_callback_info info)7479 static napi_value AudioStreamBuilderSetRendererFastStatusChangeCallback_002(napi_env env, napi_callback_info info)
7480 {
7481     OH_AudioStreamBuilder *builder = CreateRenderBuilder();
7482     void *userData = nullptr;
7483     napi_value result;
7484     OH_AudioStream_Result res = OH_AudioStreamBuilder_SetRendererFastStatusChangeCallback(builder,
7485         MyAudioRendererOnFastStatusChangeCallback, userData);
7486     if (res != AUDIOSTREAM_SUCCESS) {
7487         LOG("OH_AudioStreamBuilder_SetRendererFastStatusChangeCallback FAILED, res is %{public}d", res);
7488         OH_AudioStreamBuilder_Destroy(builder);
7489         napi_create_int32(env, TEST_FAIL, &result);
7490         return result;
7491     }
7492     OH_AudioStreamBuilder_Destroy(builder);
7493     napi_create_int32(env, TEST_PASS, &result);
7494     return result;
7495 }
7496 
AudioRendererOnWriteDataEnhance(OH_AudioRenderer * renderer,void * userData,void * audioData,int32_t audioDataSize)7497 static int32_t AudioRendererOnWriteDataEnhance(
7498     OH_AudioRenderer* renderer,
7499     void* userData,
7500     void* audioData,
7501     int32_t audioDataSize)
7502 {
7503     if (latencySize == 0) {
7504         latencySize = audioDataSize;
7505         dist = std::uniform_int_distribution<>(g_randomLowerBound, latencySize / g_smallUnit);
7506     }
7507     if (randomTestEnable && g_fileOffset != FileRecourceManager::len) {
7508         int random_int = dist(gen);
7509         LOG("random_int SUCCESS, result is: %{public}d", random_int);
7510         audioDataSize = static_cast<int32_t>(random_int * g_smallUnit);
7511     }
7512     // 将待播放的数据,按audioDataSize长度写入audioData。
7513     // 如果开发者不希望播放某段audioData,返回AUDIO_DATA_CALLBACK_RESULT_INVALID即可。
7514     if (g_fileOffset + audioDataSize < FileRecourceManager::len) {
7515         std::copy(FileRecourceManager::dataCopy.get() + g_fileOffset,
7516                   FileRecourceManager::dataCopy.get() + g_fileOffset + audioDataSize,
7517                   static_cast<uint8_t*>(audioData));
7518         g_fileOffset += audioDataSize;
7519         LOG("AudioRendererOnWriteData SUCCESS, result is: %{public}d, res is %{public}d",
7520              audioDataSize, *(FileRecourceManager::dataCopy.get() + g_fileOffset));
7521         return audioDataSize;
7522     }
7523     else {
7524         if (g_fileOffset == FileRecourceManager::len) { return 0; }
7525         std::copy(FileRecourceManager::dataCopy.get() + g_fileOffset,
7526                   FileRecourceManager::dataCopy.get() + g_fileOffset + (FileRecourceManager::len - g_fileOffset),
7527                   static_cast<uint8_t*>(audioData));
7528         g_fileOffset = FileRecourceManager::len;
7529         LOG("AudioRendererOnWriteData SUCCESS, result is: %{public}d, res is %{public}d",
7530              FileRecourceManager::len - g_fileOffset, *(FileRecourceManager::dataCopy.get() + g_fileOffset));
7531         return FileRecourceManager::len - g_fileOffset;
7532     }
7533 }
7534 
7535 // 自定义音频流事件函数。
OnStreamEvent(OH_AudioRenderer * renderer,void * userData,OH_AudioStream_Event event)7536 int32_t OnStreamEvent(
7537     OH_AudioRenderer* renderer,
7538     void* userData,
7539     OH_AudioStream_Event event)
7540 {
7541     // 根据event表示的音频流事件信息,更新播放器状态和界面。
7542     return 0;
7543 }
7544 
7545 // 自定义音频中断事件函数。
OnInterruptEvent(OH_AudioRenderer * renderer,void * userData,OH_AudioInterrupt_ForceType type,OH_AudioInterrupt_Hint hint)7546 int32_t OnInterruptEvent(
7547     OH_AudioRenderer* renderer,
7548     void* userData,
7549     OH_AudioInterrupt_ForceType type,
7550     OH_AudioInterrupt_Hint hint)
7551 {
7552     // 根据type和hint表示的音频中断信息,更新播放器状态和界面。
7553     return 0;
7554 }
7555 
7556 // 自定义异常回调函数。
OnError(OH_AudioRenderer * renderer,void * userData,OH_AudioStream_Result error)7557 int32_t OnError(
7558     OH_AudioRenderer* renderer,
7559     void* userData,
7560     OH_AudioStream_Result error)
7561 {
7562     // 根据error表示的音频异常信息,做出相应的处理。
7563     LOG("OnError FAILED, result is: %{public}d", static_cast<int32_t>(error));
7564     return 0;
7565 }
7566 
StopAndReleaseRenderer(napi_env env,napi_callback_info info)7567 static napi_value StopAndReleaseRenderer(napi_env env, napi_callback_info info)
7568 {
7569     OH_AudioRenderer_Pause(audioRenderer);
7570     OH_AudioRenderer_Stop(audioRenderer);
7571     LOG("OH_AudioRenderer_Pause and OH_AudioRenderer_Stop SUCCESS");
7572     if (audioRenderer) {
7573         OH_AudioRenderer_Release(audioRenderer);
7574         OH_AudioStreamBuilder_Destroy(builder);
7575         audioRenderer = nullptr;
7576         builder = nullptr;
7577         LOG("OH_AudioRenderer_Release and OH_AudioStreamBuilder_Destroy SUCCESS");
7578     }
7579     napi_value result;
7580     napi_create_int32(env, static_cast<int32_t>(TEST_RESULT::TEST_FAIL), &result);
7581     return result;
7582 }
7583 
AudioLowLatencyOut(napi_env env,napi_callback_info info)7584 static napi_value AudioLowLatencyOut(napi_env env, napi_callback_info info)
7585 {
7586     napi_value result;
7587 
7588     constexpr float volume = 0.5f;
7589     constexpr int32_t streamRate = 48000;
7590     OH_AudioStream_Type streamType = OH_AudioStream_Type::AUDIOSTREAM_TYPE_RENDERER;
7591 
7592     OH_AudioStream_Result BuilderCreateResult = OH_AudioStreamBuilder_Create(&builder, streamType);
7593     if (BuilderCreateResult != OH_AudioStream_Result::AUDIOSTREAM_SUCCESS) {
7594         napi_create_int32(env, static_cast<int32_t>(TEST_RESULT::TEST_FAIL), &result);
7595         LOG("OH_AudioStreamBuilder_Create FAILED, result is: %{public}d", result);
7596         return result;
7597     }
7598     LOG("OH_AudioStreamBuilder_Create SUCCESS");
7599 
7600     // 设置音频采样率。
7601     OH_AudioStreamBuilder_SetSamplingRate(builder, streamRate);
7602     // 设置音频声道。
7603     OH_AudioStreamBuilder_SetChannelLayout(builder, CH_LAYOUT_STEREO);
7604     // 设置音频采样格式。
7605     OH_AudioStreamBuilder_SetSampleFormat(builder, OH_AudioStream_SampleFormat::AUDIOSTREAM_SAMPLE_S16LE);
7606     // 设置音频流的编码类型。
7607     OH_AudioStreamBuilder_SetEncodingType(builder, AUDIOSTREAM_ENCODING_TYPE_RAW);
7608     // 设置输出音频流的工作场景。
7609     OH_AudioStreamBuilder_SetRendererInfo(builder, AUDIOSTREAM_USAGE_GAME);
7610     // 设置低时延模式
7611     OH_AudioStreamBuilder_SetLatencyMode(builder, AUDIOSTREAM_LATENCY_MODE_FAST);
7612 
7613     OH_AudioRenderer_Callbacks rendererCallBacks;
7614 
7615     // 使用前,初始化并清零结构体。
7616     memset(&rendererCallBacks, 0, sizeof(OH_AudioRenderer_Callbacks));
7617 
7618     rendererCallBacks.OH_AudioRenderer_OnStreamEvent = OnStreamEvent;
7619     rendererCallBacks.OH_AudioRenderer_OnInterruptEvent = OnInterruptEvent;
7620     rendererCallBacks.OH_AudioRenderer_OnError = OnError;
7621     rendererCallBacks.OH_AudioRenderer_OnWriteData = nullptr;
7622 
7623     OH_AudioStreamBuilder_SetRendererCallback(builder, rendererCallBacks, nullptr);
7624 
7625     OH_AudioRenderer_OnWriteDataCallbackAdvanced writeDataCb = AudioRendererOnWriteDataEnhance;
7626     OH_AudioStreamBuilder_SetRendererWriteDataCallbackAdvanced(builder, writeDataCb, nullptr);
7627 
7628     OH_AudioStream_Result GenerateRendererResult = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
7629     if (GenerateRendererResult != OH_AudioStream_Result::AUDIOSTREAM_SUCCESS) {
7630         napi_create_int32(env, static_cast<int32_t>(TEST_RESULT::TEST_FAIL), &result);
7631         LOG("OH_AudioStreamBuilder_GenerateRenderer FAILED, result is: %{public}d", result);
7632         return result;
7633     }
7634     LOG("OH_AudioStreamBuilder_GenerateRenderer SUCCESS");
7635 
7636     // 设置音频流音量
7637     OH_AudioStream_Result SetVolumeResult = OH_AudioRenderer_SetVolume(audioRenderer, volume);
7638     if (SetVolumeResult != OH_AudioStream_Result::AUDIOSTREAM_SUCCESS) {
7639         napi_create_int32(env, static_cast<int32_t>(TEST_RESULT::TEST_FAIL), &result);
7640         LOG("OH_AudioRenderer_SetVolume FAILED, result is: %{public}d", result);
7641         return result;
7642     }
7643     LOG("OH_AudioRenderer_SetVolume SUCCESS");
7644 
7645     g_fileOffset = 0;
7646 
7647     LOG("FileRecourceManager::len SUCCESS: %{public}d", FileRecourceManager::len);
7648     LOG("FileRecourceManager::data SUCCESS: %{public}p", FileRecourceManager::dataCopy.get());
7649 
7650     napi_create_int32(env, static_cast<int32_t>(TEST_RESULT::TEST_PASS), &result);
7651     return result;
7652 }
7653 
AudioWorkGroupSet(napi_env env,napi_callback_info info)7654 static napi_value AudioWorkGroupSet(napi_env env, napi_callback_info info)
7655 {
7656     napi_value result;
7657 
7658     constexpr float volume = 0.5f;
7659     constexpr int32_t streamRate = 48000;
7660     OH_AudioStream_Type streamType = OH_AudioStream_Type::AUDIOSTREAM_TYPE_RENDERER;
7661 
7662     OH_AudioStream_Result BuilderCreateResult = OH_AudioStreamBuilder_Create(&builder, streamType);
7663     if (BuilderCreateResult != OH_AudioStream_Result::AUDIOSTREAM_SUCCESS) {
7664         napi_create_int32(env, static_cast<int32_t>(TEST_RESULT::TEST_FAIL), &result);
7665         LOG("OH_AudioStreamBuilder_Create FAILED, result is: %{public}d", result);
7666         return result;
7667     }
7668     LOG("OH_AudioStreamBuilder_Create SUCCESS");
7669 
7670     // 设置音频采样率。
7671     OH_AudioStreamBuilder_SetSamplingRate(builder, streamRate);
7672     // 设置音频声道。
7673     OH_AudioStreamBuilder_SetChannelLayout(builder, CH_LAYOUT_STEREO);
7674     // 设置音频采样格式。
7675     OH_AudioStreamBuilder_SetSampleFormat(builder, OH_AudioStream_SampleFormat::AUDIOSTREAM_SAMPLE_S16LE);
7676     // 设置音频流的编码类型。
7677     OH_AudioStreamBuilder_SetEncodingType(builder, AUDIOSTREAM_ENCODING_TYPE_RAW);
7678     // 设置输出音频流的工作场景。
7679     OH_AudioStreamBuilder_SetRendererInfo(builder, AUDIOSTREAM_USAGE_MUSIC);
7680     // 设置低时延模式
7681     OH_AudioStreamBuilder_SetLatencyMode(builder, AUDIOSTREAM_LATENCY_MODE_FAST);
7682 
7683     OH_AudioRenderer_Callbacks rendererCallBacks;
7684 
7685     // 使用前,初始化并清零结构体。
7686     memset(&rendererCallBacks, 0, sizeof(OH_AudioRenderer_Callbacks));
7687 
7688     rendererCallBacks.OH_AudioRenderer_OnStreamEvent = OnStreamEvent;
7689     rendererCallBacks.OH_AudioRenderer_OnInterruptEvent = OnInterruptEvent;
7690     rendererCallBacks.OH_AudioRenderer_OnError = OnError;
7691     rendererCallBacks.OH_AudioRenderer_OnWriteData = nullptr;
7692 
7693     OH_AudioStreamBuilder_SetRendererCallback(builder, rendererCallBacks, nullptr);
7694 
7695     OH_AudioStream_Result GenerateRendererResult = OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer);
7696     if (GenerateRendererResult != OH_AudioStream_Result::AUDIOSTREAM_SUCCESS) {
7697         napi_create_int32(env, static_cast<int32_t>(TEST_RESULT::TEST_FAIL), &result);
7698         LOG("OH_AudioStreamBuilder_GenerateRenderer FAILED, result is: %{public}d", result);
7699         return result;
7700     }
7701     LOG("OH_AudioStreamBuilder_GenerateRenderer SUCCESS");
7702 
7703     // 设置音频流音量
7704     OH_AudioStream_Result SetVolumeResult = OH_AudioRenderer_SetVolume(audioRenderer, volume);
7705     if (SetVolumeResult != OH_AudioStream_Result::AUDIOSTREAM_SUCCESS) {
7706         napi_create_int32(env, static_cast<int32_t>(TEST_RESULT::TEST_FAIL), &result);
7707         LOG("OH_AudioRenderer_SetVolume FAILED, result is: %{public}d", result);
7708         return result;
7709     }
7710     LOG("OH_AudioRenderer_SetVolume SUCCESS");
7711 
7712 
7713     int32_t tid;
7714     OH_AudioResourceManager *mgr;
7715     OH_AudioWorkgroup *grp;
7716     OH_AudioCommon_Result mgrresult = OH_AudioManager_GetAudioResourceManager(&mgr);
7717     LOG("OH_AudioManager_GetAudioResourceManager result is: %{public}d", mgrresult);
7718 
7719     OH_AudioCommon_Result cwgresult = OH_AudioResourceManager_CreateWorkgroup(mgr, "new", &grp);
7720     LOG("OH_AudioResourceManager_CreateWorkgroup result is: %{public}d", cwgresult);
7721 
7722     OH_AudioCommon_Result addtrdresult = OH_AudioWorkgroup_AddCurrentThread(grp, &tid);
7723     LOG("OH_AudioWorkgroup_AddCurrentThread result is: %{public}d", addtrdresult);
7724 
7725     OH_AudioCommon_Result startresult = OH_AudioWorkgroup_Start(grp, STATE_TIME, END_TIME);
7726     LOG("OH_AudioWorkgroup_Start result is: %{public}d", startresult);
7727 
7728     OH_AudioCommon_Result stopresult = OH_AudioWorkgroup_Stop(grp);
7729     LOG("OH_AudioWorkgroup_Stop result is: %{public}d", stopresult);
7730 
7731     OH_AudioCommon_Result rmresult = OH_AudioWorkgroup_RemoveThread(grp, tid);
7732     LOG("OH_AudioWorkgroup_RemoveThread result is: %{public}d", rmresult);
7733 
7734     OH_AudioCommon_Result rsresult=OH_AudioResourceManager_ReleaseWorkgroup(mgr, grp);
7735     LOG("OH_AudioResourceManager_ReleaseWorkgroup result is: %{public}d", rsresult);
7736 
7737     g_fileOffset = 0;
7738 
7739     LOG("FileRecourceManager::len SUCCESS: %{public}d", FileRecourceManager::len);
7740     LOG("FileRecourceManager::data SUCCESS: %{public}p", FileRecourceManager::dataCopy.get());
7741 
7742     napi_create_int32(env, static_cast<int32_t>(TEST_RESULT::TEST_PASS), &result);
7743     return result;
7744 }
7745 
7746 
StartAudioRenderer(napi_env env,napi_callback_info info)7747 static napi_value StartAudioRenderer(napi_env env, napi_callback_info info)
7748 {
7749     OH_AudioRenderer_Start(audioRenderer);
7750     LOG("OH_AudioRenderer_Start SUCCESS");
7751     napi_value result;
7752     napi_create_int32(env, static_cast<int32_t>(TEST_RESULT::TEST_PASS), &result);
7753     return result;
7754 }
7755 
7756 EXTERN_C_START
7757 napi_property_descriptor desc1[] = {
7758     {"audioManagerGetAudioStreamManagerTest_001", nullptr, AudioManagerGetAudioStreamManagerTest_001,
7759     nullptr, nullptr, nullptr, napi_default, nullptr},
7760     {"audioManagerGetAudioStreamManagerTest_002", nullptr, AudioManagerGetAudioStreamManagerTest_002,
7761     nullptr, nullptr, nullptr, napi_default, nullptr},
7762     {"audioManagerGetDirectPlaybackSupportTest_001", nullptr, AudioManagerGetDirectPlaybackSupportTest_001,
7763     nullptr, nullptr, nullptr, napi_default, nullptr},
7764     {"audioManagerGetDirectPlaybackSupportTest_002", nullptr, AudioManagerGetDirectPlaybackSupportTest_001,
7765     nullptr, nullptr, nullptr, napi_default, nullptr},
7766     {"audioManagerGetDirectPlaybackSupportTest_003", nullptr, AudioManagerGetDirectPlaybackSupportTest_001,
7767     nullptr, nullptr, nullptr, napi_default, nullptr},
7768     {"audioManagerGetDirectPlaybackSupportTest_004", nullptr, AudioManagerGetDirectPlaybackSupportTest_001,
7769     nullptr, nullptr, nullptr, napi_default, nullptr},
7770     {"audioManagerGetDirectPlaybackSupportTest_005", nullptr, AudioManagerGetDirectPlaybackSupportTest_001,
7771     nullptr, nullptr, nullptr, napi_default, nullptr},
7772     {"audioStreamBuilderSetVolumeModeTest_001", nullptr, OH_AudioStreamBuilder_SetVolumeMode_Test_001,
7773         nullptr, nullptr, nullptr, napi_default, nullptr},
7774     {"audioStreamBuilderSetVolumeModeTest_002", nullptr, OH_AudioStreamBuilder_SetVolumeMode_Test_002,
7775         nullptr, nullptr, nullptr, napi_default, nullptr},
7776     {"audioStreamBuilderSetVolumeModeTest_003", nullptr, OH_AudioStreamBuilder_SetVolumeMode_Test_003,
7777         nullptr, nullptr, nullptr, napi_default, nullptr},
7778     {"audioStreamBuilderSetVolumeModeTest_004", nullptr, OH_AudioStreamBuilder_SetVolumeMode_Test_004,
7779         nullptr, nullptr, nullptr, napi_default, nullptr},
7780     {"createAudioStreamBuilder", nullptr, CreateAudioStreamBuilder, nullptr, nullptr, nullptr, napi_default, nullptr},
7781     {"audioCaptureGenerate", nullptr, AudioCaptureGenerate, nullptr, nullptr, nullptr, napi_default, nullptr},
7782     {"audioWorkGroup", nullptr, AudioWorkGroup, nullptr, nullptr, nullptr, napi_default, nullptr},
7783     {"audioCaptureGenerateErr", nullptr, AudioCaptureGenerateErr,
7784         nullptr, nullptr, nullptr, napi_default, nullptr},
7785     {"audioCaptureStart", nullptr, AudioCaptureStart, nullptr, nullptr, nullptr, napi_default, nullptr},
7786     {"audioCaptureStartErr", nullptr, AudioCaptureStartErr, nullptr, nullptr, nullptr, napi_default, nullptr},
7787     {"audioCapturePause", nullptr, AudioCapturePause, nullptr, nullptr, nullptr, napi_default, nullptr},
7788     {"audioCapturePauseErr", nullptr, AudioCapturePauseErr, nullptr, nullptr, nullptr, napi_default, nullptr},
7789     {"audioCaptureStop", nullptr, AudioCaptureStop, nullptr, nullptr, nullptr, napi_default, nullptr},
7790     {"audioCaptureStopErr", nullptr, AudioCaptureStopErr, nullptr, nullptr, nullptr, napi_default, nullptr},
7791     {"audioCaptureFlush", nullptr, AudioCaptureFlush, nullptr, nullptr, nullptr, napi_default, nullptr},
7792     {"audioCaptureFlushErr", nullptr, AudioCaptureFlushErr, nullptr, nullptr, nullptr, napi_default, nullptr},
7793     {"audioCaptureRelease", nullptr, AudioCaptureRelease, nullptr, nullptr, nullptr, napi_default, nullptr},
7794     {"audioCaptureReleaseErr", nullptr, AudioCaptureReleaseErr, nullptr, nullptr, nullptr, napi_default, nullptr},
7795     {"audioCaptureGetParameter", nullptr, AudioCaptureGetParameter,
7796         nullptr, nullptr, nullptr, napi_default, nullptr},
7797     {"audioCaptureGetCurrentState", nullptr, AudioCaptureGetCurrentState,
7798         nullptr, nullptr, nullptr, napi_default, nullptr},
7799     {"audioCaptureGetStreamId", nullptr, AudioCaptureGetStreamId,
7800         nullptr, nullptr, nullptr, napi_default, nullptr},
7801     {"audioCaptureGetSamplingRate", nullptr, AudioCaptureGetSamplingRate,
7802         nullptr, nullptr, nullptr, napi_default, nullptr},
7803     {"audioCaptureGetSampleFormat", nullptr, AudioCaptureGetSampleFormat,
7804         nullptr, nullptr, nullptr, napi_default, nullptr},
7805     {"audioCaptureGetEncodingType", nullptr, AudioCaptureGetEncodingType,
7806         nullptr, nullptr, nullptr, napi_default, nullptr},
7807     {"audioCaptureGetCapturerInfo", nullptr, AudioCaptureGetCapturerInfo,
7808         nullptr, nullptr, nullptr, napi_default, nullptr},
7809     {"audioCaptureGetTimestamp", nullptr, AudioCaptureGetTimestamp,
7810         nullptr, nullptr, nullptr, napi_default, nullptr},
7811     {"audioCaptureGetFramesRead", nullptr, AudioCaptureGetFramesRead,
7812         nullptr, nullptr, nullptr, napi_default, nullptr},
7813     {"audioCaptureGetFrameSizeInCallback", nullptr, AudioCaptureGetFrameSizeInCallback,
7814         nullptr, nullptr, nullptr, napi_default, nullptr},
7815     {"audioRendererSetSpeed", nullptr, AudioRendererSetSpeed,
7816         nullptr, nullptr, nullptr, napi_default, nullptr},
7817     {"audioRendererGetSpeed", nullptr, AudioRendererGetSpeed,
7818         nullptr, nullptr, nullptr, napi_default, nullptr},
7819     {"audioRendererSetGetSpeed", nullptr, AudioRendererSetGetSpeed,
7820         nullptr, nullptr, nullptr, napi_default, nullptr},
7821     {"audioSetRendererOutputDeviceChangeCallback", nullptr, AudioSetRendererOutputDeviceChangeCallback,
7822         nullptr, nullptr, nullptr, napi_default, nullptr},
7823     {"audioRenderGetFramesWritten", nullptr, AudioRenderGetFramesWritten,
7824         nullptr, nullptr, nullptr, napi_default, nullptr},
7825     {"audioRenderGetTimestamp", nullptr, AudioRenderGetTimestamp,
7826         nullptr, nullptr, nullptr, napi_default, nullptr},
7827     {"audioRenderGetAudioTimestampInfo", nullptr, AudioRenderGetAudioTimestampInfo,
7828         nullptr, nullptr, nullptr, napi_default, nullptr},
7829     {"audioRenderGetAudioTimestampInfoInterval", nullptr, AudioRenderGetAudioTimestampInfoInterval,
7830         nullptr, nullptr, nullptr, napi_default, nullptr},
7831     {"audioRenderGetFrameSizeInCallback", nullptr, AudioRenderGetFrameSizeInCallback,
7832         nullptr, nullptr, nullptr, napi_default, nullptr},
7833     {"audioRenderGenerate", nullptr, AudioRenderGenerate, nullptr, nullptr, nullptr, napi_default, nullptr},
7834     {"audioRenderGenerateErr", nullptr, AudioRenderGenerateErr, nullptr, nullptr, nullptr, napi_default, nullptr},
7835     {"audioRenderStart", nullptr, AudioRenderStart, nullptr, nullptr, nullptr, napi_default, nullptr},
7836     {"audioRenderStartErr", nullptr, AudioRenderStartErr, nullptr, nullptr, nullptr, napi_default, nullptr},
7837     {"audioRenderPause", nullptr, AudioRenderPause, nullptr, nullptr, nullptr, napi_default, nullptr},
7838     {"audioRenderPauseErr", nullptr, AudioRenderPauseErr, nullptr, nullptr, nullptr, napi_default, nullptr},
7839     {"audioRenderStop", nullptr, AudioRenderStop, nullptr, nullptr, nullptr, napi_default, nullptr},
7840     {"audioRenderStopErr", nullptr, AudioRenderStopErr, nullptr, nullptr, nullptr, napi_default, nullptr},
7841     {"audioRenderFlush", nullptr, AudioRenderFlush, nullptr, nullptr, nullptr, napi_default, nullptr},
7842     {"audioRenderFlushErr", nullptr, AudioRenderFlushErr, nullptr, nullptr, nullptr, napi_default, nullptr},
7843     {"audioRenderRelease", nullptr, AudioRenderRelease, nullptr, nullptr, nullptr, napi_default, nullptr},
7844     {"audioRenderReleaseErr", nullptr, AudioRenderReleaseErr, nullptr, nullptr, nullptr, napi_default, nullptr},
7845     {"audioRenderGetCurrentState", nullptr, AudioRenderGetCurrentState,
7846         nullptr, nullptr, nullptr, napi_default, nullptr},
7847     {"audioRenderGetParameter", nullptr, AudioRenderGetParameter,
7848         nullptr, nullptr, nullptr, napi_default, nullptr},
7849     {"audioRenderGetStreamId", nullptr, AudioRenderGetStreamId, nullptr, nullptr, nullptr, napi_default, nullptr},
7850     {"audioRenderGetSamplingRate", nullptr, AudioRenderGetSamplingRate,
7851         nullptr, nullptr, nullptr, napi_default, nullptr},
7852     {"audioRenderGetSampleFormat", nullptr, AudioRenderGetSampleFormat,
7853         nullptr, nullptr, nullptr, napi_default, nullptr},
7854     {"audioRenderGetEncodingType", nullptr, AudioRenderGetEncodingType,
7855         nullptr, nullptr, nullptr, napi_default, nullptr},
7856     {"audioRenderGetRendererInfo", nullptr, AudioRenderGetRendererInfo,
7857         nullptr, nullptr, nullptr, napi_default, nullptr},
7858     {"audioStreamBuilderSetSamplingRate", nullptr, AudioStreamBuilderSetSamplingRate,
7859         nullptr, nullptr, nullptr, napi_default, nullptr},
7860     {"audioStreamBuilderSetChannelCount", nullptr, AudioStreamBuilderSetChannelCount,
7861         nullptr, nullptr, nullptr, napi_default, nullptr},
7862     {"audioStreamBuilderSetSampleFormat", nullptr, AudioStreamBuilderSetSampleFormat,
7863         nullptr, nullptr, nullptr, napi_default, nullptr},
7864     {"audioStreamBuilderSetEncodingType", nullptr, AudioStreamBuilderSetEncodingType,
7865         nullptr, nullptr, nullptr, napi_default, nullptr},
7866     {"audioStreamBuilderSetLatencyMode", nullptr, AudioStreamBuilderSetLatencyMode,
7867         nullptr, nullptr, nullptr, napi_default, nullptr},
7868     {"audioStreamBuilderSetRendererInfo", nullptr, AudioStreamBuilderSetRendererInfo,
7869         nullptr, nullptr, nullptr, napi_default, nullptr},
7870     {"audioStreamBuilderSetCapturerInfo", nullptr, AudioStreamBuilderSetCapturerInfo,
7871         nullptr, nullptr, nullptr, napi_default, nullptr},
7872     {"audioStreamBuilderSetCapturerReadDataCallback_001", nullptr, AudioStreamBuilderSetCapturerReadDataCallback_001,
7873         nullptr, nullptr, nullptr, napi_default, nullptr},
7874     {"audioStreamBuilderSetCapturerReadDataCallback_002", nullptr, AudioStreamBuilderSetCapturerReadDataCallback_002,
7875         nullptr, nullptr, nullptr, napi_default, nullptr},
7876     {"audioStreamBuilderSetCapturerDeviceChangeCallback_001", nullptr,
7877         AudioStreamBuilderSetCapturerDeviceChangeCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
7878     {"audioStreamBuilderSetCapturerDeviceChangeCallback_002", nullptr,
7879         AudioStreamBuilderSetCapturerDeviceChangeCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
7880     {"audioStreamBuilderSetCapturerInterruptCallback_001", nullptr, AudioStreamBuilderSetCapturerInterruptCallback_001,
7881         nullptr, nullptr, nullptr, napi_default, nullptr},
7882     {"audioStreamBuilderSetCapturerInterruptCallback_002", nullptr, AudioStreamBuilderSetCapturerInterruptCallback_002,
7883         nullptr, nullptr, nullptr, napi_default, nullptr},
7884     {"audioStreamBuilderSetCapturerErrorCallback_001", nullptr, AudioStreamBuilderSetCapturerErrorCallback_001,
7885         nullptr, nullptr, nullptr, napi_default, nullptr},
7886     {"audioStreamBuilderSetCapturerErrorCallback_002", nullptr, AudioStreamBuilderSetCapturerErrorCallback_002,
7887         nullptr, nullptr, nullptr, napi_default, nullptr},
7888     {"audioStreamBuilderSetRendererCallback", nullptr, AudioStreamBuilderSetRendererCallback,
7889         nullptr, nullptr, nullptr, napi_default, nullptr},
7890     {"audioStreamBuilderSetCapturerCallback", nullptr, AudioStreamBuilderSetCapturerCallback,
7891         nullptr, nullptr, nullptr, napi_default, nullptr},
7892     {"audioCaptureGetChannelCount", nullptr, AudioCaptureGetChannelCount,
7893         nullptr, nullptr, nullptr, napi_default, nullptr},
7894     {"audioRenderGetChannelCount", nullptr, AudioRenderGetChannelCount,
7895         nullptr, nullptr, nullptr, napi_default, nullptr},
7896     {"audioStreamBuilderSetFrameSizeInCallback", nullptr, AudioStreamBuilderSetFrameSizeInCallback,
7897         nullptr, nullptr, nullptr, napi_default, nullptr},
7898     {"audioRendererGetVolume_01", nullptr, AudioRendererGetVolume_01,
7899         nullptr, nullptr, nullptr, napi_default, nullptr},
7900     {"audioRendererSetVolume_01", nullptr, AudioRendererSetVolume_01,
7901         nullptr, nullptr, nullptr, napi_default, nullptr},
7902     {"audioRendererSetVolume_02", nullptr, AudioRendererSetVolume_02,
7903         nullptr, nullptr, nullptr, napi_default, nullptr},
7904     {"audioRendererSetVolume_03", nullptr, AudioRendererSetVolume_03,
7905         nullptr, nullptr, nullptr, napi_default, nullptr},
7906     {"audioRendererSetVolume_04", nullptr, AudioRendererSetVolume_04,
7907         nullptr, nullptr, nullptr, napi_default, nullptr},
7908     {"audioRendererSetVolume_05", nullptr, AudioRendererSetVolume_05,
7909         nullptr, nullptr, nullptr, napi_default, nullptr},
7910     {"audioRendererSetVolume_06", nullptr, AudioRendererSetVolume_06,
7911         nullptr, nullptr, nullptr, napi_default, nullptr},
7912     {"audioRendererSetVolumeWithRamp_01", nullptr, AudioRendererSetVolumeWithRamp_01,
7913         nullptr, nullptr, nullptr, napi_default, nullptr},
7914     {"audioRendererSetVolumeWithRamp_02", nullptr, AudioRendererSetVolumeWithRamp_02,
7915         nullptr, nullptr, nullptr, napi_default, nullptr},
7916     {"audioRendererSetVolumeWithRamp_03", nullptr, AudioRendererSetVolumeWithRamp_03,
7917         nullptr, nullptr, nullptr, napi_default, nullptr},
7918     {"audioRendererSetVolumeWithRamp_04", nullptr, AudioRendererSetVolumeWithRamp_04,
7919         nullptr, nullptr, nullptr, napi_default, nullptr},
7920     {"audioRendererSetVolumeWithRamp_05", nullptr, AudioRendererSetVolumeWithRamp_05,
7921         nullptr, nullptr, nullptr, napi_default, nullptr},
7922     {"audioRendererSetVolumeWithRamp_06", nullptr, AudioRendererSetVolumeWithRamp_06,
7923         nullptr, nullptr, nullptr, napi_default, nullptr},
7924     {"audioRendererSetVolumeWithRamp_07", nullptr, AudioRendererSetVolumeWithRamp_07,
7925         nullptr, nullptr, nullptr, napi_default, nullptr},
7926     {"audioRendererSetVolumeWithRamp_08", nullptr, AudioRendererSetVolumeWithRamp_08,
7927         nullptr, nullptr, nullptr, napi_default, nullptr},
7928     {"audioRendererSetVolumeWithRamp_09", nullptr, AudioRendererSetVolumeWithRamp_09,
7929         nullptr, nullptr, nullptr, napi_default, nullptr},
7930     {"audioRendererSetOnMarkReached_01", nullptr, AudioRendererSetOnMarkReached_01,
7931         nullptr, nullptr, nullptr, napi_default, nullptr},
7932     {"audioRendererSetOnMarkReached_02", nullptr, AudioRendererSetOnMarkReached_02,
7933         nullptr, nullptr, nullptr, napi_default, nullptr},
7934     {"audioRendererSetOnMarkReached_03", nullptr, AudioRendererSetOnMarkReached_03,
7935         nullptr, nullptr, nullptr, napi_default, nullptr},
7936     {"audioRendererSetOnMarkReached_04", nullptr, AudioRendererSetOnMarkReached_04,
7937         nullptr, nullptr, nullptr, napi_default, nullptr},
7938     {"audioRendererSetOnMarkReached_05", nullptr, AudioRendererSetOnMarkReached_05,
7939         nullptr, nullptr, nullptr, napi_default, nullptr},
7940     {"audioRendererSetOnMarkReached_06", nullptr, AudioRendererSetOnMarkReached_06,
7941         nullptr, nullptr, nullptr, napi_default, nullptr},
7942     {"audioRendererSetOnMarkReached_07", nullptr, AudioRendererSetOnMarkReached_07,
7943         nullptr, nullptr, nullptr, napi_default, nullptr},
7944     {"audioRendererSetOnMarkReached_08", nullptr, AudioRendererSetOnMarkReached_08,
7945         nullptr, nullptr, nullptr, napi_default, nullptr},
7946     {"audioRendererCancelMark_01", nullptr, AudioRendererCancelMark_01,
7947         nullptr, nullptr, nullptr, napi_default, nullptr},
7948     {"audioRendererCancelMark_02", nullptr, AudioRendererCancelMark_02,
7949         nullptr, nullptr, nullptr, napi_default, nullptr},
7950     {"audioRendererCancelMark_03", nullptr, AudioRendererCancelMark_03,
7951         nullptr, nullptr, nullptr, napi_default, nullptr},
7952     {"audioRendererSetInterruptMode_01", nullptr, AudioRendererSetInterruptMode_01,
7953         nullptr, nullptr, nullptr, napi_default, nullptr},
7954     {"audioRendererSetInterruptMode_02", nullptr, AudioRendererSetInterruptMode_02,
7955         nullptr, nullptr, nullptr, napi_default, nullptr},
7956     {"audioRendererSetInterruptMode_03", nullptr, AudioRendererSetInterruptMode_03,
7957         nullptr, nullptr, nullptr, napi_default, nullptr},
7958     {"audioRendererSetInterruptMode_04", nullptr, AudioRendererSetInterruptMode_04,
7959         nullptr, nullptr, nullptr, napi_default, nullptr},
7960     {"audioManagerGetAudioRoutingManager_01", nullptr, AudioManagerGetAudioRoutingManager_01,
7961         nullptr, nullptr, nullptr, napi_default, nullptr},
7962     {"audioRoutingManagerGetDevices_01", nullptr, AudioRoutingManagerGetDevices_01,
7963         nullptr, nullptr, nullptr, napi_default, nullptr},
7964     {"audioRoutingManagerGetDevices_02", nullptr, AudioRoutingManagerGetDevices_02,
7965         nullptr, nullptr, nullptr, napi_default, nullptr},
7966     {"audioRoutingManagerGetDevices_03", nullptr, AudioRoutingManagerGetDevices_03,
7967         nullptr, nullptr, nullptr, napi_default, nullptr},
7968     {"audioRoutingManagerGetDevices_04", nullptr, AudioRoutingManagerGetDevices_04,
7969         nullptr, nullptr, nullptr, napi_default, nullptr},
7970     {"audioRoutingManagerGetDevices_05", nullptr, AudioRoutingManagerGetDevices_05,
7971         nullptr, nullptr, nullptr, napi_default, nullptr},
7972     {"audioRoutingManagerGetDevices_06", nullptr, AudioRoutingManagerGetDevices_06,
7973         nullptr, nullptr, nullptr, napi_default, nullptr},
7974     {"audioRoutingManagerGetDevices_07", nullptr, AudioRoutingManagerGetDevices_07,
7975         nullptr, nullptr, nullptr, napi_default, nullptr},
7976     {"audioManagerGetManager_01", nullptr, AudioManagerGetManager_01, nullptr, nullptr, nullptr, napi_default,
7977         nullptr},
7978     {"audioManagerGetManager_02", nullptr, AudioManagerGetManager_02, nullptr, nullptr, nullptr, napi_default,
7979         nullptr},
7980     {"audioManagerGetAudioScene_01", nullptr, AudioManagerGetAudioScene_01, nullptr, nullptr, nullptr, napi_default,
7981         nullptr},
7982     {"AudioLowLatencyOut", nullptr, AudioLowLatencyOut, nullptr, nullptr, nullptr, napi_default, nullptr},
7983     {"AudioWorkGroupSet", nullptr, AudioWorkGroupSet, nullptr, nullptr, nullptr, napi_default, nullptr},
7984     {"StopAndReleaseRenderer", nullptr, StopAndReleaseRenderer, nullptr, nullptr, nullptr, napi_default, nullptr},
7985     {"GetRawFileContent", nullptr, &FileRecourceManager::GetRawFileContent, nullptr, nullptr, nullptr, napi_default,
7986         nullptr},
7987     {"StartAudioRenderer", nullptr, StartAudioRenderer, nullptr, nullptr, nullptr, napi_default, nullptr},
7988     {"getFileList", nullptr, &FileRecourceManager::GetFileList, nullptr, nullptr, nullptr, napi_default, nullptr },
7989 };
7990 napi_property_descriptor desc2[] = {
7991     {"audioManagerGetAudioScene_02", nullptr, AudioManagerGetAudioScene_02, nullptr, nullptr, nullptr, napi_default,
7992         nullptr},
7993     {"audioManagerRegisterAudioSceneChangeCallback_01", nullptr, AudioManagerRegisterAudioSceneChangeCallback_01,
7994         nullptr, nullptr, nullptr, napi_default, nullptr},
7995     {"audioManagerRegisterAudioSceneChangeCallback_02", nullptr, AudioManagerRegisterAudioSceneChangeCallback_02,
7996         nullptr, nullptr, nullptr, napi_default, nullptr},
7997     {"audioManagerRegisterAudioSceneChangeCallback_03", nullptr, AudioManagerRegisterAudioSceneChangeCallback_03,
7998         nullptr, nullptr, nullptr, napi_default, nullptr},
7999     {"audioManagerUnregisterAudioSceneChangeCallback_01", nullptr, AudioManagerUnregisterAudioSceneChangeCallback_01,
8000         nullptr, nullptr, nullptr, napi_default, nullptr},
8001     {"audioManagerUnregisterAudioSceneChangeCallback_02", nullptr, AudioManagerUnregisterAudioSceneChangeCallback_02,
8002         nullptr, nullptr, nullptr, napi_default, nullptr},
8003     {"audioManagerUnregisterAudioSceneChangeCallback_03", nullptr, AudioManagerUnregisterAudioSceneChangeCallback_03,
8004         nullptr, nullptr, nullptr, napi_default, nullptr},
8005     {"audioManagerUnregisterAudioSceneChangeCallback_04", nullptr, AudioManagerUnregisterAudioSceneChangeCallback_04,
8006         nullptr, nullptr, nullptr, napi_default, nullptr},
8007     {"audioRoutingManagerGetAvailableDevices001", nullptr, AudioRoutingManagerGetAvailableDevices001, nullptr,
8008         nullptr, nullptr, napi_default, nullptr},
8009     {"audioRoutingManagerGetPreferredOutputDevice001", nullptr, AudioRoutingManagerGetPreferredOutputDevice001,
8010         nullptr, nullptr, nullptr, napi_default, nullptr},
8011     {"audioRoutingManagerGetPreferredInputDevice001", nullptr, AudioRoutingManagerGetPreferredInputDevice001,
8012         nullptr, nullptr, nullptr, napi_default, nullptr},
8013     {"audioRoutingManagerSetMicBlockStatusCallback_001", nullptr,
8014         AudioRoutingManagerSetMicBlockStatusCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8015     {"audioRoutingManagerSetMicBlockStatusCallback_002", nullptr,
8016         AudioRoutingManagerSetMicBlockStatusCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8017     {"audioRoutingManagerRegisterDeviceChangeCallback_001", nullptr,
8018         AudioRoutingManagerRegisterDeviceChangeCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8019     {"audioRoutingManagerRegisterDeviceChangeCallback_002", nullptr,
8020         AudioRoutingManagerRegisterDeviceChangeCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8021     {"audioRoutingManagerRegisterDeviceChangeCallback_003", nullptr,
8022         AudioRoutingManagerRegisterDeviceChangeCallback_003, nullptr, nullptr, nullptr, napi_default, nullptr},
8023     {"audioRoutingManagerRegisterDeviceChangeCallback_004", nullptr,
8024         AudioRoutingManagerRegisterDeviceChangeCallback_004, nullptr, nullptr, nullptr, napi_default, nullptr},
8025     {"audioRoutingManagerRegisterDeviceChangeCallback_005", nullptr,
8026         AudioRoutingManagerRegisterDeviceChangeCallback_005, nullptr, nullptr, nullptr, napi_default, nullptr},
8027     {"audioRoutingManagerRegisterDeviceChangeCallback_006", nullptr,
8028         AudioRoutingManagerRegisterDeviceChangeCallback_006, nullptr, nullptr, nullptr, napi_default, nullptr},
8029     {"audioRoutingManagerRegisterDeviceChangeCallback_007", nullptr,
8030         AudioRoutingManagerRegisterDeviceChangeCallback_007, nullptr, nullptr, nullptr, napi_default, nullptr},
8031     {"audioRoutingManagerRegisterDeviceChangeCallback_008", nullptr,
8032         AudioRoutingManagerRegisterDeviceChangeCallback_008, nullptr, nullptr, nullptr, napi_default, nullptr},
8033     {"audioRoutingManagerUnregisterDeviceChangeCallback_001", nullptr,
8034         AudioRoutingManagerUnregisterDeviceChangeCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8035     {"audioRoutingManagerUnregisterDeviceChangeCallback_002", nullptr,
8036         AudioRoutingManagerUnregisterDeviceChangeCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8037     {"audioRoutingManagerUnregisterDeviceChangeCallback_003", nullptr,
8038         AudioRoutingManagerUnregisterDeviceChangeCallback_003, nullptr, nullptr, nullptr, napi_default, nullptr},
8039     {"audioRoutingManagerReleaseDevices_001", nullptr, AudioRoutingManagerReleaseDevices_001,
8040         nullptr, nullptr, nullptr, napi_default, nullptr},
8041     {"audioRoutingManagerReleaseDevices_002", nullptr, AudioRoutingManagerReleaseDevices_002,
8042         nullptr, nullptr, nullptr, napi_default, nullptr},
8043     {"audioAudioDeviceDescriptorGetDeviceType_001", nullptr, AudioAudioDeviceDescriptorGetDeviceType_001,
8044         nullptr, nullptr, nullptr, napi_default, nullptr},
8045     {"audioAudioDeviceDescriptorGetDeviceType_002", nullptr, AudioAudioDeviceDescriptorGetDeviceType_002,
8046         nullptr, nullptr, nullptr, napi_default, nullptr},
8047     {"audioAudioDeviceDescriptorGetDeviceType_003", nullptr, AudioAudioDeviceDescriptorGetDeviceType_003,
8048         nullptr, nullptr, nullptr, napi_default, nullptr},
8049     {"audioAudioDeviceDescriptorGetDeviceRole_001", nullptr, AudioAudioDeviceDescriptorGetDeviceRole_001,
8050         nullptr, nullptr, nullptr, napi_default, nullptr},
8051     {"audioAudioDeviceDescriptorGetDeviceRole_002", nullptr, AudioAudioDeviceDescriptorGetDeviceRole_002,
8052         nullptr, nullptr, nullptr, napi_default, nullptr},
8053     {"audioAudioDeviceDescriptorGetDeviceRole_003", nullptr, AudioAudioDeviceDescriptorGetDeviceRole_003,
8054         nullptr, nullptr, nullptr, napi_default, nullptr},
8055     {"audioAudioDeviceDescriptorGetDeviceId_001", nullptr, AudioAudioDeviceDescriptorGetDeviceId_001,
8056         nullptr, nullptr, nullptr, napi_default, nullptr},
8057     {"audioAudioDeviceDescriptorGetDeviceId_002", nullptr, AudioAudioDeviceDescriptorGetDeviceId_002,
8058         nullptr, nullptr, nullptr, napi_default, nullptr},
8059     {"audioAudioDeviceDescriptorGetDeviceId_003", nullptr, AudioAudioDeviceDescriptorGetDeviceId_003,
8060         nullptr, nullptr, nullptr, napi_default, nullptr},
8061     {"audioAudioDeviceDescriptorGetDeviceName_001", nullptr, AudioAudioDeviceDescriptorGetDeviceName_001,
8062         nullptr, nullptr, nullptr, napi_default, nullptr},
8063     {"audioAudioDeviceDescriptorGetDeviceName_002", nullptr, AudioAudioDeviceDescriptorGetDeviceName_002,
8064         nullptr, nullptr, nullptr, napi_default, nullptr},
8065     {"audioAudioDeviceDescriptorGetDeviceName_003", nullptr, AudioAudioDeviceDescriptorGetDeviceName_003,
8066         nullptr, nullptr, nullptr, napi_default, nullptr},
8067     {"audioAudioDeviceDescriptorGetDeviceAddress_001", nullptr, AudioAudioDeviceDescriptorGetDeviceAddress_001,
8068         nullptr, nullptr, nullptr, napi_default, nullptr},
8069     {"audioAudioDeviceDescriptorGetDeviceAddress_002", nullptr, AudioAudioDeviceDescriptorGetDeviceAddress_002,
8070         nullptr, nullptr, nullptr, napi_default, nullptr},
8071     {"audioAudioDeviceDescriptorGetDeviceAddress_003", nullptr, AudioAudioDeviceDescriptorGetDeviceAddress_003,
8072         nullptr, nullptr, nullptr, napi_default, nullptr},
8073     {"audioAudioDeviceDescriptorGetDeviceSampleRates_001", nullptr,
8074         AudioAudioDeviceDescriptorGetDeviceSampleRates_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8075     {"audioAudioDeviceDescriptorGetDeviceSampleRates_002", nullptr,
8076         AudioAudioDeviceDescriptorGetDeviceSampleRates_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8077     {"audioAudioDeviceDescriptorGetDeviceSampleRates_003", nullptr,
8078         AudioAudioDeviceDescriptorGetDeviceSampleRates_003, nullptr, nullptr, nullptr, napi_default, nullptr},
8079     {"audioAudioDeviceDescriptorGetDeviceSampleRates_004", nullptr,
8080         AudioAudioDeviceDescriptorGetDeviceSampleRates_004, nullptr, nullptr, nullptr, napi_default, nullptr},
8081     {"audioAudioDeviceDescriptorGetDeviceChannelCounts_001", nullptr,
8082         AudioAudioDeviceDescriptorGetDeviceChannelCounts_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8083     {"audioAudioDeviceDescriptorGetDeviceChannelCounts_002", nullptr,
8084         AudioAudioDeviceDescriptorGetDeviceChannelCounts_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8085     {"audioAudioDeviceDescriptorGetDeviceChannelCounts_003", nullptr,
8086         AudioAudioDeviceDescriptorGetDeviceChannelCounts_003, nullptr, nullptr, nullptr, napi_default, nullptr},
8087     {"audioAudioDeviceDescriptorGetDeviceChannelCounts_004", nullptr,
8088         AudioAudioDeviceDescriptorGetDeviceChannelCounts_004, nullptr, nullptr, nullptr, napi_default, nullptr},
8089     {"audioAudioDeviceDescriptorGetDeviceDisplayName_001", nullptr,
8090         AudioAudioDeviceDescriptorGetDeviceDisplayName_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8091     {"audioAudioDeviceDescriptorGetDeviceDisplayName_002", nullptr,
8092         AudioAudioDeviceDescriptorGetDeviceDisplayName_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8093     {"audioAudioDeviceDescriptorGetDeviceDisplayName_003", nullptr,
8094         AudioAudioDeviceDescriptorGetDeviceDisplayName_003, nullptr, nullptr, nullptr, napi_default, nullptr},
8095     {"audioAudioDeviceDescriptorGetDeviceEncodingTypes_001", nullptr,
8096         AudioAudioDeviceDescriptorGetDeviceEncodingTypes_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8097     {"audioAudioDeviceDescriptorGetDeviceEncodingTypes_002", nullptr,
8098         AudioAudioDeviceDescriptorGetDeviceEncodingTypes_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8099     {"audioAudioDeviceDescriptorGetDeviceEncodingTypes_003", nullptr,
8100         AudioAudioDeviceDescriptorGetDeviceEncodingTypes_003, nullptr, nullptr, nullptr, napi_default, nullptr},
8101     {"audioAudioDeviceDescriptorGetDeviceEncodingTypes_004", nullptr,
8102         AudioAudioDeviceDescriptorGetDeviceEncodingTypes_004, nullptr, nullptr, nullptr, napi_default, nullptr},
8103     {"audioAudioInternalRecordingSuccess01", nullptr,
8104         AudioAudioInternalRecordingSuccess01, nullptr, nullptr, nullptr, napi_default, nullptr},
8105     {"audioAudioInternalRecordingSuccess02", nullptr,
8106         AudioAudioInternalRecordingSuccess02, nullptr, nullptr, nullptr, napi_default, nullptr},
8107     {"audioAudioInternalRecordingFalse", nullptr,
8108         AudioAudioInternalRecordingFalse, nullptr, nullptr, nullptr, napi_default, nullptr},
8109     {"audioStreamBuilderSetRendererWriteDataCallback_001", nullptr,
8110         AudioStreamBuilderSetRendererWriteDataCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8111     {"audioStreamBuilderSetRendererWriteDataCallback_002", nullptr,
8112         AudioStreamBuilderSetRendererWriteDataCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8113     {"audioStreamBuilderSetRendererInterruptCallback_001", nullptr,
8114         AudioStreamBuilderSetRendererInterruptCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8115     {"audioStreamBuilderSetRendererInterruptCallback_002", nullptr,
8116         AudioStreamBuilderSetRendererInterruptCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8117     {"audioStreamBuilderSetRendererErrorCallback_001", nullptr,
8118         AudioStreamBuilderSetRendererErrorCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8119     {"audioStreamBuilderSetRendererErrorCallback_002", nullptr,
8120         AudioStreamBuilderSetRendererErrorCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8121     {"audioCapturerGetOverflowCount_001", nullptr,
8122         audioCapturerGetOverflowCount_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8123     {"AudioSessionManagerStrategy_001", nullptr,
8124         AudioSessionManagerStrategy_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8125     {"AudioSessionManagerStrategy_002", nullptr,
8126         AudioSessionManagerStrategy_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8127     {"AudioSessionManagerStrategy_003", nullptr,
8128         AudioSessionManagerStrategy_003, nullptr, nullptr, nullptr, napi_default, nullptr},
8129     {"AudioSessionManagerStrategy_004", nullptr,
8130         AudioSessionManagerStrategy_004, nullptr, nullptr, nullptr, napi_default, nullptr},
8131     {"AudioSessionManagerStrategyError_001", nullptr,
8132         AudioSessionManagerStrategyError_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8133     {"AudioSessionManagerActivatedError_001", nullptr,
8134         AudioSessionManagerActivatedError_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8135     {"AudioSessionManagerStopError_001", nullptr,
8136         AudioSessionManagerStopError_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8137     {"AudioSessionManagerStopError_002", nullptr,
8138         AudioSessionManagerStopError_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8139     {"AudioSessionManagerRegisterError_001", nullptr,
8140         AudioSessionManagerRegisterError_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8141     {"AudioSessionManagerRegisterError_002", nullptr,
8142         AudioSessionManagerRegisterError_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8143     {"AudioSessionManagerUnregisterError_001", nullptr,
8144         AudioSessionManagerUnregisterError_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8145     {"AudioSessionManagerUnregisterError_002", nullptr,
8146         AudioSessionManagerUnregisterError_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8147     {"AudioSessionManagerReason_001", nullptr,
8148         AudioSessionManagerReason_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8149     {"AudioSessionManagerReason_002", nullptr,
8150         AudioSessionManagerReason_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8151     {"AudioSessionManagerSetScene_001", nullptr,
8152         AudioSessionManagerSetScene_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8153     {"AudioSessionManagerRegisterStateChangeCallback_001", nullptr,
8154         AudioSessionManagerRegisterStateChangeCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8155     {"AudioSessionManagerRegisterStateChangeCallback_002", nullptr,
8156         AudioSessionManagerRegisterStateChangeCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8157     {"AudioSessionManagerRegisterStateChangeCallback_003", nullptr,
8158         AudioSessionManagerRegisterStateChangeCallback_003, nullptr, nullptr, nullptr, napi_default, nullptr},
8159     {"AudioSessionManagerSetDefaultOutputDevice_001", nullptr,
8160         AudioSessionManagerSetDefaultOutputDevice_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8161     {"AudioSessionManagerSetDefaultOutputDevice_002", nullptr,
8162         AudioSessionManagerSetDefaultOutputDevice_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8163     {"AudioSessionManagerGetDefaultOutputDevice_001", nullptr,
8164         AudioSessionManagerGetDefaultOutputDevice_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8165     {"AudioSessionManagerRegisterDeviceCallback_001", nullptr,
8166         AudioSessionManagerRegisterDeviceCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8167     {"AudioSessionManagerRegisterDeviceCallback_002", nullptr,
8168         AudioSessionManagerRegisterDeviceCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8169     {"AudioSessionManagerRegisterDeviceCallback_003", nullptr,
8170         AudioSessionManagerRegisterDeviceCallback_003, nullptr, nullptr, nullptr, napi_default, nullptr},
8171     {"AudioSessionManagerReleaseDevices_001", nullptr,
8172         AudioSessionManagerReleaseDevices_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8173     {"AudioSessionManagerReleaseDevices_002", nullptr,
8174         AudioSessionManagerReleaseDevices_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8175     {"audioRendererSetDefaultOutputDevice_01", nullptr,
8176         AudioRendererSetDefaultOutputDevice_01, nullptr, nullptr, nullptr, napi_default, nullptr},
8177     {"audioRendererSetDefaultOutputDevice_02", nullptr,
8178         AudioRendererSetDefaultOutputDevice_02, nullptr, nullptr, nullptr, napi_default, nullptr},
8179     {"audioRendererSetDefaultOutputDevice_03", nullptr,
8180         AudioRendererSetDefaultOutputDevice_03, nullptr, nullptr, nullptr, napi_default, nullptr},
8181     {"audioCapturerInit", nullptr, AudioCapturerInit, nullptr, nullptr, nullptr, napi_default, nullptr},
8182     {"audioCapturerStart", nullptr, AudioCapturerStart, nullptr, nullptr, nullptr, napi_default, nullptr},
8183     {"audioCapturerStop", nullptr, AudioCapturerStop, nullptr, nullptr, nullptr, napi_default, nullptr},
8184     {"audioCapturerRelease", nullptr, AudioCapturerRelease, nullptr, nullptr, nullptr, napi_default, nullptr},
8185     {"audioRendererInit", nullptr, AudioRendererInit, nullptr, nullptr, nullptr, napi_default, nullptr},
8186     {"audioRendererStart", nullptr, AudioRendererStart, nullptr, nullptr, nullptr, napi_default, nullptr},
8187     {"audioRendererStop", nullptr, AudioRendererStop, nullptr, nullptr, nullptr, napi_default, nullptr},
8188     {"audioRendererRelease", nullptr, AudioRendererRelease, nullptr, nullptr, nullptr, napi_default, nullptr},
8189     {"AudioCapturerSetWillMuteWhenInterrupted", nullptr,
8190         AudioCapturerSetWillMuteWhenInterrupted, nullptr, nullptr, nullptr, napi_default, nullptr}
8191 };
8192 napi_property_descriptor desc3[] = {
8193     {"audioManagerGetAudioVolumeManager_001", nullptr, AudioManagerGetAudioVolumeManager_001,
8194         nullptr, nullptr, nullptr, napi_default, nullptr},
8195     {"audioManagerGetAudioVolumeManager_002", nullptr, AudioManagerGetAudioVolumeManager_002,
8196         nullptr, nullptr, nullptr, napi_default, nullptr},
8197     {"audioVolumeManagerGetMaxVolumeByUsage_001", nullptr, AudioVolumeManagerGetMaxVolumeByUsage_001,
8198         nullptr, nullptr, nullptr, napi_default, nullptr},
8199     {"audioVolumeManagerGetMaxVolumeByUsage_002", nullptr, AudioVolumeManagerGetMaxVolumeByUsage_002,
8200         nullptr, nullptr, nullptr, napi_default, nullptr},
8201     {"audioVolumeManagerGetMaxVolumeByUsage_003", nullptr, AudioVolumeManagerGetMaxVolumeByUsage_003,
8202         nullptr, nullptr, nullptr, napi_default, nullptr},
8203     {"audioVolumeManagerGetMaxVolumeByUsage_004", nullptr, AudioVolumeManagerGetMaxVolumeByUsage_004,
8204         nullptr, nullptr, nullptr, napi_default, nullptr},
8205     {"audioVolumeManagerGetMinVolumeByUsage_001", nullptr, AudioVolumeManagerGetMinVolumeByUsage_001,
8206         nullptr, nullptr, nullptr, napi_default, nullptr},
8207     {"audioVolumeManagerGetMinVolumeByUsage_002", nullptr, AudioVolumeManagerGetMinVolumeByUsage_002,
8208         nullptr, nullptr, nullptr, napi_default, nullptr},
8209     {"audioVolumeManagerGetMinVolumeByUsage_003", nullptr, AudioVolumeManagerGetMinVolumeByUsage_003,
8210         nullptr, nullptr, nullptr, napi_default, nullptr},
8211     {"audioVolumeManagerGetMinVolumeByUsage_004", nullptr, AudioVolumeManagerGetMinVolumeByUsage_004,
8212         nullptr, nullptr, nullptr, napi_default, nullptr},
8213     {"audioVolumeManagerGetVolumeByUsage_001", nullptr, AudioVolumeManagerGetVolumeByUsage_001,
8214         nullptr, nullptr, nullptr, napi_default, nullptr},
8215     {"audioVolumeManagerGetVolumeByUsage_002", nullptr, AudioVolumeManagerGetVolumeByUsage_002,
8216         nullptr, nullptr, nullptr, napi_default, nullptr},
8217     {"audioVolumeManagerGetVolumeByUsage_003", nullptr, AudioVolumeManagerGetVolumeByUsage_003,
8218         nullptr, nullptr, nullptr, napi_default, nullptr},
8219     {"audioVolumeManagerGetVolumeByUsage_004", nullptr, AudioVolumeManagerGetVolumeByUsage_004,
8220         nullptr, nullptr, nullptr, napi_default, nullptr},
8221     {"audioVolumeManagerIsMuteByUsage_001", nullptr, AudioVolumeManagerIsMuteByUsage_001,
8222         nullptr, nullptr, nullptr, napi_default, nullptr},
8223     {"audioVolumeManagerIsMuteByUsage_002", nullptr, AudioVolumeManagerIsMuteByUsage_002,
8224         nullptr, nullptr, nullptr, napi_default, nullptr},
8225     {"audioVolumeManagerIsMuteByUsage_003", nullptr, AudioVolumeManagerIsMuteByUsage_003,
8226         nullptr, nullptr, nullptr, napi_default, nullptr},
8227     {"audioVolumeManagerIsMuteByUsage_004", nullptr, AudioVolumeManagerIsMuteByUsage_004,
8228         nullptr, nullptr, nullptr, napi_default, nullptr},
8229     {"audioVolumeManagerRegisterStreamVolumeChangeCallback_001", nullptr,
8230         AudioVolumeManagerRegisterStreamVolumeChangeCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8231     {"audioVolumeManagerRegisterStreamVolumeChangeCallback_002", nullptr,
8232         AudioVolumeManagerRegisterStreamVolumeChangeCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8233     {"audioVolumeManagerRegisterStreamVolumeChangeCallback_003", nullptr,
8234         AudioVolumeManagerRegisterStreamVolumeChangeCallback_003, nullptr, nullptr, nullptr, napi_default, nullptr},
8235     {"audioVolumeManagerRegisterStreamVolumeChangeCallback_004", nullptr,
8236         AudioVolumeManagerRegisterStreamVolumeChangeCallback_004, nullptr, nullptr, nullptr, napi_default, nullptr},
8237     {"audioVolumeManagerRegisterStreamVolumeChangeCallback_005", nullptr,
8238         AudioVolumeManagerRegisterStreamVolumeChangeCallback_005, nullptr, nullptr, nullptr, napi_default, nullptr},
8239     {"audioVolumeManagerRegisterStreamVolumeChangeCallback_006", nullptr,
8240         AudioVolumeManagerRegisterStreamVolumeChangeCallback_006, nullptr, nullptr, nullptr, napi_default, nullptr},
8241     {"audioVolumeManagerRegisterStreamVolumeChangeCallback_007", nullptr,
8242         AudioVolumeManagerRegisterStreamVolumeChangeCallback_007, nullptr, nullptr, nullptr, napi_default, nullptr},
8243     {"audioVolumeManagerRegisterStreamVolumeChangeCallback_008", nullptr,
8244         AudioVolumeManagerRegisterStreamVolumeChangeCallback_008, nullptr, nullptr, nullptr, napi_default, nullptr},
8245     {"audioVolumeManagerUnregisterStreamVolumeChangeCallback_001", nullptr,
8246         AudioVolumeManagerUnregisterStreamVolumeChangeCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8247     {"audioVolumeManagerUnregisterStreamVolumeChangeCallback_002", nullptr,
8248         AudioVolumeManagerUnregisterStreamVolumeChangeCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8249     {"audioVolumeManagerUnregisterStreamVolumeChangeCallback_003", nullptr,
8250         AudioVolumeManagerUnregisterStreamVolumeChangeCallback_003, nullptr, nullptr, nullptr, napi_default, nullptr},
8251     {"audioVolumeManagerUnregisterStreamVolumeChangeCallback_004", nullptr,
8252         AudioVolumeManagerUnregisterStreamVolumeChangeCallback_004, nullptr, nullptr, nullptr, napi_default, nullptr},
8253     {"audioVolumeManagerGetRingerMode_001", nullptr, AudioVolumeManagerGetRingerMode_001,
8254         nullptr, nullptr, nullptr, napi_default, nullptr},
8255     {"audioVolumeManagerGetRingerMode_002", nullptr, AudioVolumeManagerGetRingerMode_002,
8256         nullptr, nullptr, nullptr, napi_default, nullptr},
8257     {"audioVolumeManagerGetRingerMode_003", nullptr, AudioVolumeManagerGetRingerMode_003,
8258         nullptr, nullptr, nullptr, napi_default, nullptr},
8259     {"audioVolumeManagerRegisterRingerModeChangeCallback_001", nullptr,
8260         AudioVolumeManagerRegisterRingerModeChangeCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8261     {"audioVolumeManagerRegisterRingerModeChangeCallback_002", nullptr,
8262         AudioVolumeManagerRegisterRingerModeChangeCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8263     {"audioVolumeManagerRegisterRingerModeChangeCallback_003", nullptr,
8264         AudioVolumeManagerRegisterRingerModeChangeCallback_003, nullptr, nullptr, nullptr, napi_default, nullptr},
8265     {"audioVolumeManagerUnregisterRingerModeChangeCallback_001", nullptr,
8266         AudioVolumeManagerUnregisterRingerModeChangeCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8267     {"audioVolumeManagerUnregisterRingerModeChangeCallback_002", nullptr,
8268         AudioVolumeManagerUnregisterRingerModeChangeCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8269     {"audioVolumeManagerUnregisterRingerModeChangeCallback_003", nullptr,
8270         AudioVolumeManagerUnregisterRingerModeChangeCallback_003, nullptr, nullptr, nullptr, napi_default, nullptr},
8271     {"audioVolumeManagerUnregisterRingerModeChangeCallback_004", nullptr,
8272         AudioVolumeManagerUnregisterRingerModeChangeCallback_004, nullptr, nullptr, nullptr, napi_default, nullptr},
8273     {"audioCaptureGetFastStatus_001", nullptr, AudioCaptureGetFastStatus_001,
8274         nullptr, nullptr, nullptr, napi_default, nullptr},
8275     {"audioCaptureGetFastStatus_002", nullptr, AudioCaptureGetFastStatus_002,
8276         nullptr, nullptr, nullptr, napi_default, nullptr},
8277     {"audioRendererGetFastStatus_001", nullptr, AudioRendererGetFastStatus_001,
8278         nullptr, nullptr, nullptr, napi_default, nullptr},
8279     {"audioRendererGetFastStatus_002", nullptr, AudioRendererGetFastStatus_002,
8280         nullptr, nullptr, nullptr, napi_default, nullptr},
8281     {"audioStreamManagerIsFastPlaybackSupported_001", nullptr, AudioStreamManagerIsFastPlaybackSupported_001,
8282         nullptr, nullptr, nullptr, napi_default, nullptr},
8283     {"audioStreamManagerIsFastRecordingSupported_001", nullptr, AudioStreamManagerIsFastRecordingSupported_001,
8284         nullptr, nullptr, nullptr, napi_default, nullptr},
8285     {"audioStreamBuilderSetCapturerFastStatusChangeCallback_001", nullptr,
8286         AudioStreamBuilderSetCapturerFastStatusChangeCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8287     {"audioStreamBuilderSetCapturerFastStatusChangeCallback_002", nullptr,
8288         AudioStreamBuilderSetCapturerFastStatusChangeCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8289     {"audioStreamBuilderSetRendererFastStatusChangeCallback_001", nullptr,
8290         AudioStreamBuilderSetRendererFastStatusChangeCallback_001, nullptr, nullptr, nullptr, napi_default, nullptr},
8291     {"audioStreamBuilderSetRendererFastStatusChangeCallback_002", nullptr,
8292         AudioStreamBuilderSetRendererFastStatusChangeCallback_002, nullptr, nullptr, nullptr, napi_default, nullptr},
8293 };
Init(napi_env env,napi_value exports)8294 static napi_value Init(napi_env env, napi_value exports)
8295 {
8296     size_t mergedLength = sizeof(desc1) / sizeof(desc1[0]) +
8297     sizeof(desc2) / sizeof(desc2[0]) + sizeof(desc3) / sizeof(desc3[0]);
8298     napi_property_descriptor mergedArray[mergedLength];
8299     for (size_t i = 0; i < sizeof(desc1) / sizeof(desc1[0]); ++i) {
8300         mergedArray[i] = desc1[i];
8301     }
8302     for (size_t i = 0; i < sizeof(desc2) / sizeof(desc2[0]); ++i) {
8303         mergedArray[sizeof(desc1) / sizeof(desc1[0]) + i] = desc2[i];
8304     }
8305     for (size_t i = 0; i < sizeof(desc3) / sizeof(desc3[0]); ++i) {
8306         mergedArray[sizeof(desc1) / sizeof(desc1[0]) + sizeof(desc2) / sizeof(desc2[0]) + i] = desc3[i];
8307     }
8308     napi_define_properties(env, exports, mergedLength, mergedArray);
8309     return exports;
8310 }
8311 EXTERN_C_END
8312 
8313 /*
8314 
8315  * module define
8316  */
8317 static napi_module g_module = {
8318     .nm_version = 1,
8319     .nm_flags = 0,
8320     .nm_filename = nullptr,
8321     .nm_register_func = Init,
8322     .nm_modname = "entry",
8323     .nm_priv = ((void *)0),
8324     .reserved = {0}};
8325 
8326 /*
8327  * module register
8328  */
RegisterEntryModule(void)8329 extern "C" __attribute__((constructor)) void RegisterEntryModule(void)
8330 {
8331     napi_module_register(&g_module);
8332 }