1 /*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "napi/native_api.h"
17 #include <condition_variable>
18 #include <js_native_api_types.h>
19 #include <multimedia/player_framework/native_avcapability.h>
20 #include <multimedia/player_framework/native_avcodec_audiodecoder.h>
21 #include <multimedia/player_framework/native_avcodec_base.h>
22 #include <multimedia/player_framework/native_averrors.h>
23 #include <multimedia/player_framework/native_avformat.h>
24 #include <pthread.h>
25 #include <queue>
26 #include <fstream>
27 #include <iostream>
28
29 #define FAIL (-1)
30 #define SUCCESS 0
31
32 constexpr uint32_t DEFAULT_SAMPLERATE = 44100;
33 constexpr uint32_t DEFAULT_BITRATE = 32000;
34 constexpr uint32_t DEFAULT_CHANNEL_COUNT = 2;
35 constexpr uint32_t DEFAULT_MAX_INPUT_SIZE = 1152;
36 constexpr uint32_t DEFAULT_AAC_TYPE = 1;
37 constexpr uint8_t DEFAULT_VORBIS_TYPE = 10;
38 constexpr uint8_t DEFAULT_VORBISTWO_TYPE = 20;
39 using namespace std;
40
TestInitPtr(napi_env env,OH_AVCodec * param)41 static napi_value TestInitPtr(napi_env env, OH_AVCodec *param)
42 {
43 int backParam = FAIL;
44 napi_value result = nullptr;
45 OH_AVCodec *checkParam = param;
46 if (checkParam != nullptr) {
47 backParam = SUCCESS;
48 }
49 napi_create_int32(env, backParam, &result);
50 return result;
51 }
52
TestInitAVErrCode(napi_env env,OH_AVErrCode param)53 static napi_value TestInitAVErrCode(napi_env env, OH_AVErrCode param)
54 {
55 int backParam = FAIL;
56 napi_value result = nullptr;
57 OH_AVErrCode checkParam = param;
58 if (checkParam == AV_ERR_OK) {
59 backParam = SUCCESS;
60 }
61 napi_create_int32(env, backParam, &result);
62 return result;
63 }
64
AudioDecoderCreateByMimeAudioAac(napi_env env,napi_callback_info info)65 static napi_value AudioDecoderCreateByMimeAudioAac(napi_env env, napi_callback_info info)
66 {
67 return TestInitPtr(env, OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_AAC));
68 }
69
AudioDecoderCreateByName(napi_env env,napi_callback_info info)70 static napi_value AudioDecoderCreateByName(napi_env env, napi_callback_info info)
71 {
72 OH_AVCapability *capability = OH_AVCodec_GetCapability(OH_AVCODEC_MIMETYPE_AUDIO_VORBIS, false);
73 const char *name = OH_AVCapability_GetName(capability);
74 return TestInitPtr(env, OH_AudioDecoder_CreateByName(name));
75 }
76
AudioDecoderDestroy(napi_env env,napi_callback_info info)77 static napi_value AudioDecoderDestroy(napi_env env, napi_callback_info info)
78 {
79 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_FLAC);
80 return TestInitAVErrCode(env, OH_AudioDecoder_Destroy(audioDec));
81 }
82
83 class ADecSignal {
84 public:
85 pthread_mutex_t inMutex_;
86 pthread_mutex_t outMutex_;
87 pthread_mutex_t startMutex_;
88 std::condition_variable inCond_;
89 std::condition_variable outCond_;
90 std::condition_variable startCond_;
91 std::queue<uint32_t> inQueue_;
92 std::queue<uint32_t> outQueue_;
93 std::queue<OH_AVMemory *> inBufferQueue_;
94 std::queue<OH_AVMemory *> outBufferQueue_;
95 std::queue<OH_AVCodecBufferAttr> attrQueue_;
96 };
97 ADecSignal *signal_;
OnError(OH_AVCodec * codec,int32_t errorCode,void * userData)98 static void OnError(OH_AVCodec *codec, int32_t errorCode, void *userData)
99 {
100 (void)codec;
101 (void)errorCode;
102 (void)userData;
103 }
OnStreamChanged(OH_AVCodec * codec,OH_AVFormat * format,void * userData)104 static void OnStreamChanged(OH_AVCodec *codec, OH_AVFormat *format, void *userData)
105 {
106 (void)codec;
107 (void)format;
108 (void)userData;
109 }
onNeedInputData(OH_AVCodec * codec,uint32_t index,OH_AVMemory * data,void * userData)110 static void onNeedInputData(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, void *userData)
111 {
112 (void)codec;
113 ADecSignal *signal = static_cast<ADecSignal *>(userData);
114 pthread_mutex_lock(&signal->inMutex_);
115 signal->inQueue_.push(index);
116 signal->inBufferQueue_.push(data);
117 signal->inCond_.notify_all();
118 }
onNeedOutputData(OH_AVCodec * codec,uint32_t index,OH_AVMemory * data,OH_AVCodecBufferAttr * attr,void * userData)119 static void onNeedOutputData(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, OH_AVCodecBufferAttr *attr,
120 void *userData)
121 {
122 (void)codec;
123 ADecSignal *signal = static_cast<ADecSignal *>(userData);
124 pthread_mutex_unlock(&signal->outMutex_);
125 signal->outQueue_.push(index);
126 signal->outBufferQueue_.push(data);
127 if (attr) {
128 signal->attrQueue_.push(*attr);
129 }
130 signal->outCond_.notify_all();
131 }
132
AudioDecoderSetCallback(napi_env env,napi_callback_info info)133 static napi_value AudioDecoderSetCallback(napi_env env, napi_callback_info info)
134 {
135 napi_value result;
136 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_AAC);
137 signal_ = new ADecSignal();
138 OH_AVCodecAsyncCallback callback = { &OnError, &OnStreamChanged, &onNeedInputData, &onNeedOutputData };
139 result = TestInitAVErrCode(env, OH_AudioDecoder_SetCallback(audioDec, callback, signal_));
140 OH_AudioDecoder_Destroy(audioDec);
141 return result;
142 }
143
AudioDecoderConfigure(napi_env env,napi_callback_info info)144 static napi_value AudioDecoderConfigure(napi_env env, napi_callback_info info)
145 {
146 OH_AVFormat *format = nullptr;
147 format = OH_AVFormat_Create();
148 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
149 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
150 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
151 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
152 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
153 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_MPEG);
154 return TestInitAVErrCode(env, OH_AudioDecoder_Configure(audioDec, format));
155 }
156
AudioDecoderPrepare(napi_env env,napi_callback_info info)157 static napi_value AudioDecoderPrepare(napi_env env, napi_callback_info info)
158 {
159 OH_AVFormat *format = nullptr;
160 format = OH_AVFormat_Create();
161 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
162 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
163 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
164 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
165 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
166 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_MPEG);
167 OH_AudioDecoder_Configure(audioDec, format);
168 return TestInitAVErrCode(env, OH_AudioDecoder_Prepare(audioDec));
169 }
170
AudioDecoderStart(napi_env env,napi_callback_info info)171 static napi_value AudioDecoderStart(napi_env env, napi_callback_info info)
172 {
173 int backParam = FAIL;
174 napi_value result = nullptr;
175 OH_AVErrCode checkParam;
176 OH_AVFormat *format = nullptr;
177 format = OH_AVFormat_Create();
178 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
179 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
180 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
181 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
182 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
183 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_MPEG);
184 checkParam = OH_AudioDecoder_Configure(audioDec, format);
185 checkParam = OH_AudioDecoder_Prepare(audioDec);
186 checkParam = OH_AudioDecoder_Start(audioDec);
187 if (checkParam == AV_ERR_OK) {
188 backParam = SUCCESS;
189 }
190 napi_create_int32(env, backParam, &result);
191 return result;
192 }
193
AudioDecoderStop(napi_env env,napi_callback_info info)194 static napi_value AudioDecoderStop(napi_env env, napi_callback_info info)
195 {
196 int backParam = FAIL;
197 napi_value result = nullptr;
198 OH_AVErrCode checkParam;
199 OH_AVFormat *format = nullptr;
200 format = OH_AVFormat_Create();
201 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
202 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
203 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
204 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
205 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
206 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_MPEG);
207 checkParam = OH_AudioDecoder_Configure(audioDec, format);
208 checkParam = OH_AudioDecoder_Prepare(audioDec);
209 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
210 checkParam = OH_AudioDecoder_Stop(audioDec);
211 if (checkParam == AV_ERR_OK) {
212 backParam = SUCCESS;
213 }
214 }
215 napi_create_int32(env, backParam, &result);
216 return result;
217 }
218
AudioDecoderFlush(napi_env env,napi_callback_info info)219 static napi_value AudioDecoderFlush(napi_env env, napi_callback_info info)
220 {
221 int backParam = FAIL;
222 napi_value result = nullptr;
223 OH_AVErrCode checkParam;
224 OH_AVFormat *format = nullptr;
225 format = OH_AVFormat_Create();
226 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
227 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
228 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
229 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
230 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
231 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_MPEG);
232 OH_AudioDecoder_Configure(audioDec, format);
233 OH_AudioDecoder_Prepare(audioDec);
234 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
235 checkParam = OH_AudioDecoder_Flush(audioDec);
236 if (checkParam == AV_ERR_OK) {
237 backParam = SUCCESS;
238 OH_AudioDecoder_Stop(audioDec);
239 }
240 }
241 napi_create_int32(env, backParam, &result);
242 return result;
243 }
244
AudioDecoderReset(napi_env env,napi_callback_info info)245 static napi_value AudioDecoderReset(napi_env env, napi_callback_info info)
246 {
247 int backParam = FAIL;
248 napi_value result = nullptr;
249 OH_AVErrCode checkParam;
250 OH_AVFormat *format = nullptr;
251 format = OH_AVFormat_Create();
252 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
253 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
254 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
255 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
256 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
257 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_MPEG);
258 OH_AudioDecoder_Configure(audioDec, format);
259 OH_AudioDecoder_Prepare(audioDec);
260 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
261 checkParam = OH_AudioDecoder_Reset(audioDec);
262 if (checkParam == AV_ERR_OK) {
263 backParam = SUCCESS;
264 OH_AudioDecoder_Stop(audioDec);
265 }
266 }
267 napi_create_int32(env, backParam, &result);
268 return result;
269 }
270
AudioDecoderGetOutputDescription(napi_env env,napi_callback_info info)271 static napi_value AudioDecoderGetOutputDescription(napi_env env, napi_callback_info info)
272 {
273 int backParam = FAIL;
274 napi_value result = nullptr;
275 OH_AVFormat *checkParam = nullptr;
276 OH_AVFormat *format = nullptr;
277 format = OH_AVFormat_Create();
278 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
279 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
280 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
281 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
282 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
283 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_MPEG);
284 OH_AudioDecoder_Configure(audioDec, format);
285 OH_AudioDecoder_Prepare(audioDec);
286 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
287 checkParam = OH_AudioDecoder_GetOutputDescription(audioDec);
288 if (checkParam != nullptr) {
289 backParam = SUCCESS;
290 OH_AudioDecoder_Stop(audioDec);
291 free(checkParam);
292 }
293 }
294 napi_create_int32(env, backParam, &result);
295 return result;
296 }
297
AudioDecoderSetParameter(napi_env env,napi_callback_info info)298 static napi_value AudioDecoderSetParameter(napi_env env, napi_callback_info info)
299 {
300 int backParam = FAIL;
301 napi_value result = nullptr;
302 OH_AVErrCode checkParam;
303 OH_AVFormat *format = nullptr;
304 format = OH_AVFormat_Create();
305 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
306 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
307 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
308 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
309 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
310 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_MPEG);
311 checkParam = OH_AudioDecoder_Configure(audioDec, format);
312 checkParam = OH_AudioDecoder_Prepare(audioDec);
313 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
314 format = OH_AudioDecoder_GetOutputDescription(audioDec);
315 if (format != nullptr) {
316 checkParam = OH_AudioDecoder_SetParameter(audioDec, format);
317 if (checkParam == AV_ERR_OK) {
318 backParam = SUCCESS;
319 free(format);
320 }
321 }
322 }
323 napi_create_int32(env, backParam, &result);
324 return result;
325 }
326
AudioDecoderIsValid(napi_env env,napi_callback_info info)327 static napi_value AudioDecoderIsValid(napi_env env, napi_callback_info info)
328 {
329 int backParam = FAIL;
330 napi_value result = nullptr;
331 OH_AVErrCode checkParam;
332 bool status = true;
333 OH_AVFormat *format = nullptr;
334 format = OH_AVFormat_Create();
335 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
336 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
337 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
338 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
339 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
340 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_MPEG);
341 checkParam = OH_AudioDecoder_Configure(audioDec, format);
342 checkParam = OH_AudioDecoder_Prepare(audioDec);
343 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
344 checkParam = OH_AudioDecoder_Flush(audioDec);
345 if (checkParam == AV_ERR_OK) {
346 checkParam = OH_AudioDecoder_IsValid(audioDec, &status);
347 if (checkParam == AV_ERR_OK) {
348 backParam = SUCCESS;
349 OH_AudioDecoder_Stop(audioDec);
350 }
351 }
352 }
353 napi_create_int32(env, backParam, &result);
354 return result;
355 }
356
OHAudioDecoderCreateByNameAnormal(napi_env env,napi_callback_info info)357 static napi_value OHAudioDecoderCreateByNameAnormal(napi_env env, napi_callback_info info)
358 {
359 OH_AVCapability *capability = OH_AVCodec_GetCapability(OH_AVCODEC_MIMETYPE_AUDIO_AAC, false);
360 const char *name = OH_AVCapability_GetName(capability);
361 return TestInitPtr(env, OH_AudioDecoder_CreateByName(name));
362 }
363
OHAudioDecoderCreateByNameBnormal(napi_env env,napi_callback_info info)364 static napi_value OHAudioDecoderCreateByNameBnormal(napi_env env, napi_callback_info info)
365 {
366 OH_AVCapability *capability = OH_AVCodec_GetCapability(OH_AVCODEC_MIMETYPE_AUDIO_MPEG, false);
367 const char *name = OH_AVCapability_GetName(capability);
368 return TestInitPtr(env, OH_AudioDecoder_CreateByName(name));
369 }
370
OHAudioDecoderCreateByNameCnormal(napi_env env,napi_callback_info info)371 static napi_value OHAudioDecoderCreateByNameCnormal(napi_env env, napi_callback_info info)
372 {
373 OH_AVCapability *capability = OH_AVCodec_GetCapability(OH_AVCODEC_MIMETYPE_AUDIO_FLAC, false);
374 const char *name = OH_AVCapability_GetName(capability);
375 return TestInitPtr(env, OH_AudioDecoder_CreateByName(name));
376 }
377
OHAudioDecoderDestroyAnormal(napi_env env,napi_callback_info info)378 static napi_value OHAudioDecoderDestroyAnormal(napi_env env, napi_callback_info info)
379 {
380 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_AAC);
381 return TestInitAVErrCode(env, OH_AudioDecoder_Destroy(audioDec));
382 }
383
OHAudioDecoderDestroyBnormal(napi_env env,napi_callback_info info)384 static napi_value OHAudioDecoderDestroyBnormal(napi_env env, napi_callback_info info)
385 {
386 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_MPEG);
387 return TestInitAVErrCode(env, OH_AudioDecoder_Destroy(audioDec));
388 }
389
OHAudioDecoderDestroyCnormal(napi_env env,napi_callback_info info)390 static napi_value OHAudioDecoderDestroyCnormal(napi_env env, napi_callback_info info)
391 {
392 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_VORBIS);
393 return TestInitAVErrCode(env, OH_AudioDecoder_Destroy(audioDec));
394 }
395
OHAudioDecoderStartAnormal(napi_env env,napi_callback_info info)396 static napi_value OHAudioDecoderStartAnormal(napi_env env, napi_callback_info info)
397 {
398 int backParam = FAIL;
399 napi_value result = nullptr;
400 OH_AVErrCode checkParam;
401 OH_AVFormat *format = nullptr;
402 format = OH_AVFormat_Create();
403 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
404 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
405 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
406 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
407 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
408 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_AAC);
409 OH_AudioDecoder_Configure(audioDec, format);
410 OH_AudioDecoder_Prepare(audioDec);
411 checkParam = OH_AudioDecoder_Start(audioDec);
412 if (checkParam == AV_ERR_OK) {
413 backParam = SUCCESS;
414 }
415 napi_create_int32(env, backParam, &result);
416 return result;
417 }
418
OHAudioDecoderStartBnormal(napi_env env,napi_callback_info info)419 static napi_value OHAudioDecoderStartBnormal(napi_env env, napi_callback_info info)
420 {
421 int backParam = FAIL;
422 napi_value result = nullptr;
423 OH_AVErrCode checkParam;
424 OH_AVFormat *format = nullptr;
425 format = OH_AVFormat_Create();
426 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
427 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
428 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
429 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
430 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
431 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_FLAC);
432 OH_AudioDecoder_Configure(audioDec, format);
433 OH_AudioDecoder_Prepare(audioDec);
434 checkParam = OH_AudioDecoder_Start(audioDec);
435 if (checkParam == AV_ERR_OK) {
436 backParam = SUCCESS;
437 }
438 napi_create_int32(env, backParam, &result);
439 return result;
440 }
441
OHAudioDecoderStartCnormal(napi_env env,napi_callback_info info)442 static napi_value OHAudioDecoderStartCnormal(napi_env env, napi_callback_info info)
443 {
444 int backParam = FAIL;
445 napi_value result = nullptr;
446 OH_AVErrCode checkParam;
447 OH_AVFormat *format = nullptr;
448 format = OH_AVFormat_Create();
449 OH_AVFormat_SetIntValue(format, OH_MD_KEY_IDENTIFICATION_HEADER, DEFAULT_VORBISTWO_TYPE);
450 OH_AVFormat_SetIntValue(format, OH_MD_KEY_SETUP_HEADER, DEFAULT_VORBIS_TYPE);
451 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_VORBIS);
452 OH_AudioDecoder_Configure(audioDec, format);
453 OH_AudioDecoder_Prepare(audioDec);
454 checkParam = OH_AudioDecoder_Start(audioDec);
455 if (checkParam == AV_ERR_OK) {
456 backParam = SUCCESS;
457 }
458 napi_create_int32(env, backParam, &result);
459 return result;
460 }
461
OHAudioDecoderStopAnormal(napi_env env,napi_callback_info info)462 static napi_value OHAudioDecoderStopAnormal(napi_env env, napi_callback_info info)
463 {
464 int backParam = FAIL;
465 napi_value result = nullptr;
466 OH_AVErrCode checkParam;
467 OH_AVFormat *format = nullptr;
468 format = OH_AVFormat_Create();
469 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
470 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
471 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
472 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
473 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
474 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_AAC);
475 OH_AudioDecoder_Configure(audioDec, format);
476 OH_AudioDecoder_Prepare(audioDec);
477 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
478 checkParam = OH_AudioDecoder_Stop(audioDec);
479 if (checkParam == AV_ERR_OK) {
480 backParam = SUCCESS;
481 }
482 }
483 napi_create_int32(env, backParam, &result);
484 return result;
485 }
486
OHAudioDecoderStopBnormal(napi_env env,napi_callback_info info)487 static napi_value OHAudioDecoderStopBnormal(napi_env env, napi_callback_info info)
488 {
489 int backParam = FAIL;
490 napi_value result = nullptr;
491 OH_AVErrCode checkParam;
492 OH_AVFormat *format = nullptr;
493 format = OH_AVFormat_Create();
494 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
495 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
496 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
497 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
498 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
499 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_FLAC);
500 OH_AudioDecoder_Configure(audioDec, format);
501 OH_AudioDecoder_Prepare(audioDec);
502 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
503 checkParam = OH_AudioDecoder_Stop(audioDec);
504 if (checkParam == AV_ERR_OK) {
505 backParam = SUCCESS;
506 }
507 }
508 napi_create_int32(env, backParam, &result);
509 return result;
510 }
511
OHAudioDecoderStopCnormal(napi_env env,napi_callback_info info)512 static napi_value OHAudioDecoderStopCnormal(napi_env env, napi_callback_info info)
513 {
514 int backParam = FAIL;
515 napi_value result = nullptr;
516 OH_AVErrCode checkParam;
517 OH_AVFormat *format = nullptr;
518 format = OH_AVFormat_Create();
519 OH_AVFormat_SetIntValue(format, OH_MD_KEY_IDENTIFICATION_HEADER, DEFAULT_VORBISTWO_TYPE);
520 OH_AVFormat_SetIntValue(format, OH_MD_KEY_SETUP_HEADER, DEFAULT_VORBIS_TYPE);
521 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_VORBIS);
522 OH_AudioDecoder_Configure(audioDec, format);
523 OH_AudioDecoder_Prepare(audioDec);
524 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
525 checkParam = OH_AudioDecoder_Stop(audioDec);
526 if (checkParam == AV_ERR_OK) {
527 backParam = SUCCESS;
528 }
529 }
530 napi_create_int32(env, backParam, &result);
531 return result;
532 }
533
OHAudioDecoderFlushAnormal(napi_env env,napi_callback_info info)534 static napi_value OHAudioDecoderFlushAnormal(napi_env env, napi_callback_info info)
535 {
536 int backParam = FAIL;
537 napi_value result = nullptr;
538 OH_AVErrCode checkParam;
539 OH_AVFormat *format = nullptr;
540 format = OH_AVFormat_Create();
541 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
542 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
543 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
544 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
545 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
546 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_AAC);
547 OH_AudioDecoder_Configure(audioDec, format);
548 OH_AudioDecoder_Prepare(audioDec);
549 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
550 checkParam = OH_AudioDecoder_Flush(audioDec);
551 if (checkParam == AV_ERR_OK) {
552 backParam = SUCCESS;
553 OH_AudioDecoder_Stop(audioDec);
554 }
555 }
556 napi_create_int32(env, backParam, &result);
557 return result;
558 }
559
OHAudioDecoderFlushBnormal(napi_env env,napi_callback_info info)560 static napi_value OHAudioDecoderFlushBnormal(napi_env env, napi_callback_info info)
561 {
562 int backParam = FAIL;
563 napi_value result = nullptr;
564 OH_AVErrCode checkParam;
565 OH_AVFormat *format = nullptr;
566 format = OH_AVFormat_Create();
567 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
568 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
569 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
570 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
571 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
572 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_FLAC);
573 OH_AudioDecoder_Configure(audioDec, format);
574 OH_AudioDecoder_Prepare(audioDec);
575 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
576 checkParam = OH_AudioDecoder_Flush(audioDec);
577 if (checkParam == AV_ERR_OK) {
578 backParam = SUCCESS;
579 OH_AudioDecoder_Stop(audioDec);
580 }
581 }
582 napi_create_int32(env, backParam, &result);
583 return result;
584 }
585
OHAudioDecoderFlushCnormal(napi_env env,napi_callback_info info)586 static napi_value OHAudioDecoderFlushCnormal(napi_env env, napi_callback_info info)
587 {
588 int backParam = FAIL;
589 napi_value result = nullptr;
590 OH_AVErrCode checkParam;
591 OH_AVFormat *format = nullptr;
592 format = OH_AVFormat_Create();
593 OH_AVFormat_SetIntValue(format, OH_MD_KEY_IDENTIFICATION_HEADER, DEFAULT_VORBISTWO_TYPE);
594 OH_AVFormat_SetIntValue(format, OH_MD_KEY_SETUP_HEADER, DEFAULT_VORBIS_TYPE);
595 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_VORBIS);
596 OH_AudioDecoder_Configure(audioDec, format);
597 OH_AudioDecoder_Prepare(audioDec);
598 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
599 checkParam = OH_AudioDecoder_Flush(audioDec);
600 if (checkParam == AV_ERR_OK) {
601 backParam = SUCCESS;
602 OH_AudioDecoder_Stop(audioDec);
603 }
604 }
605 napi_create_int32(env, backParam, &result);
606 return result;
607 }
608
OHAudioDecoderResetAnormal(napi_env env,napi_callback_info info)609 static napi_value OHAudioDecoderResetAnormal(napi_env env, napi_callback_info info)
610 {
611 int backParam = FAIL;
612 napi_value result = nullptr;
613 OH_AVErrCode checkParam;
614 OH_AVFormat *format = nullptr;
615 format = OH_AVFormat_Create();
616 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
617 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
618 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
619 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
620 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
621 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_MPEG);
622 OH_AudioDecoder_Configure(audioDec, format);
623 OH_AudioDecoder_Prepare(audioDec);
624 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
625 checkParam = OH_AudioDecoder_Reset(audioDec);
626 if (checkParam == AV_ERR_OK) {
627 backParam = SUCCESS;
628 OH_AudioDecoder_Stop(audioDec);
629 }
630 }
631 napi_create_int32(env, backParam, &result);
632 return result;
633 }
634
OHAudioDecoderResetBnormal(napi_env env,napi_callback_info info)635 static napi_value OHAudioDecoderResetBnormal(napi_env env, napi_callback_info info)
636 {
637 int backParam = FAIL;
638 napi_value result = nullptr;
639 OH_AVErrCode checkParam;
640 OH_AVFormat *format = nullptr;
641 format = OH_AVFormat_Create();
642 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
643 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
644 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
645 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
646 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
647 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_FLAC);
648 OH_AudioDecoder_Configure(audioDec, format);
649 OH_AudioDecoder_Prepare(audioDec);
650 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
651 checkParam = OH_AudioDecoder_Reset(audioDec);
652 if (checkParam == AV_ERR_OK) {
653 backParam = SUCCESS;
654 OH_AudioDecoder_Stop(audioDec);
655 }
656 }
657 napi_create_int32(env, backParam, &result);
658 return result;
659 }
660
OHAudioDecoderResetCnormal(napi_env env,napi_callback_info info)661 static napi_value OHAudioDecoderResetCnormal(napi_env env, napi_callback_info info)
662 {
663 int backParam = FAIL;
664 napi_value result = nullptr;
665 OH_AVErrCode checkParam;
666 OH_AVFormat *format = nullptr;
667 format = OH_AVFormat_Create();
668 OH_AVFormat_SetIntValue(format, OH_MD_KEY_IDENTIFICATION_HEADER, DEFAULT_VORBISTWO_TYPE);
669 OH_AVFormat_SetIntValue(format, OH_MD_KEY_SETUP_HEADER, DEFAULT_VORBIS_TYPE);
670 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_VORBIS);
671 OH_AudioDecoder_Configure(audioDec, format);
672 OH_AudioDecoder_Prepare(audioDec);
673 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
674 checkParam = OH_AudioDecoder_Reset(audioDec);
675 if (checkParam == AV_ERR_OK) {
676 backParam = SUCCESS;
677 OH_AudioDecoder_Stop(audioDec);
678 }
679 }
680 napi_create_int32(env, backParam, &result);
681 return result;
682 }
683
OHAudioDecoderGetOutputDescriptionAnormal(napi_env env,napi_callback_info info)684 static napi_value OHAudioDecoderGetOutputDescriptionAnormal(napi_env env, napi_callback_info info)
685 {
686 int backParam = FAIL;
687 napi_value result = nullptr;
688 OH_AVFormat *checkParam = nullptr;
689 OH_AVFormat *format = nullptr;
690 format = OH_AVFormat_Create();
691 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
692 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
693 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
694 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
695 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
696 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_AAC);
697 OH_AudioDecoder_Configure(audioDec, format);
698 OH_AudioDecoder_Prepare(audioDec);
699 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
700 checkParam = OH_AudioDecoder_GetOutputDescription(audioDec);
701 if (checkParam != nullptr) {
702 backParam = SUCCESS;
703 OH_AudioDecoder_Stop(audioDec);
704 free(checkParam);
705 }
706 }
707 napi_create_int32(env, backParam, &result);
708 return result;
709 }
710
OHAudioDecoderGetOutputDescriptionBnormal(napi_env env,napi_callback_info info)711 static napi_value OHAudioDecoderGetOutputDescriptionBnormal(napi_env env, napi_callback_info info)
712 {
713 int backParam = FAIL;
714 napi_value result = nullptr;
715 OH_AVFormat *checkParam = nullptr;
716 OH_AVFormat *format = nullptr;
717 format = OH_AVFormat_Create();
718 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
719 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
720 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
721 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
722 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
723 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_FLAC);
724 OH_AudioDecoder_Configure(audioDec, format);
725 OH_AudioDecoder_Prepare(audioDec);
726 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
727 checkParam = OH_AudioDecoder_GetOutputDescription(audioDec);
728 if (checkParam != nullptr) {
729 backParam = SUCCESS;
730 OH_AudioDecoder_Stop(audioDec);
731 free(checkParam);
732 }
733 }
734 napi_create_int32(env, backParam, &result);
735 return result;
736 }
737
OHAudioDecoderGetOutputDescriptionCnormal(napi_env env,napi_callback_info info)738 static napi_value OHAudioDecoderGetOutputDescriptionCnormal(napi_env env, napi_callback_info info)
739 {
740 int backParam = FAIL;
741 napi_value result = nullptr;
742 OH_AVFormat *checkParam = nullptr;
743 OH_AVFormat *format = nullptr;
744 format = OH_AVFormat_Create();
745 OH_AVFormat_SetIntValue(format, OH_MD_KEY_IDENTIFICATION_HEADER, DEFAULT_VORBISTWO_TYPE);
746 OH_AVFormat_SetIntValue(format, OH_MD_KEY_SETUP_HEADER, DEFAULT_VORBIS_TYPE);
747 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_VORBIS);
748 OH_AudioDecoder_Configure(audioDec, format);
749 OH_AudioDecoder_Prepare(audioDec);
750 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
751 checkParam = OH_AudioDecoder_GetOutputDescription(audioDec);
752 if (checkParam != nullptr) {
753 backParam = SUCCESS;
754 OH_AudioDecoder_Stop(audioDec);
755 free(checkParam);
756 }
757 }
758 napi_create_int32(env, backParam, &result);
759 return result;
760 }
761
OHAudioDecoderSetParameterAnormal(napi_env env,napi_callback_info info)762 static napi_value OHAudioDecoderSetParameterAnormal(napi_env env, napi_callback_info info)
763 {
764 int backParam = FAIL;
765 napi_value result = nullptr;
766 OH_AVErrCode checkParam;
767 OH_AVFormat *format = nullptr;
768 format = OH_AVFormat_Create();
769 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
770 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
771 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
772 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
773 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
774 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_AAC);
775 OH_AudioDecoder_Configure(audioDec, format);
776 OH_AudioDecoder_Prepare(audioDec);
777 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
778 format = OH_AudioDecoder_GetOutputDescription(audioDec);
779 if (format != nullptr) {
780 checkParam = OH_AudioDecoder_SetParameter(audioDec, format);
781 if (checkParam == AV_ERR_OK) {
782 backParam = SUCCESS;
783 free(format);
784 }
785 }
786 }
787 napi_create_int32(env, backParam, &result);
788 return result;
789 }
790
OHAudioDecoderSetParameterBnormal(napi_env env,napi_callback_info info)791 static napi_value OHAudioDecoderSetParameterBnormal(napi_env env, napi_callback_info info)
792 {
793 int backParam = FAIL;
794 napi_value result = nullptr;
795 OH_AVErrCode checkParam;
796 OH_AVFormat *format = nullptr;
797 format = OH_AVFormat_Create();
798 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
799 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
800 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
801 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
802 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
803 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_FLAC);
804 OH_AudioDecoder_Configure(audioDec, format);
805 OH_AudioDecoder_Prepare(audioDec);
806 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
807 format = OH_AudioDecoder_GetOutputDescription(audioDec);
808 if (format != nullptr) {
809 checkParam = OH_AudioDecoder_SetParameter(audioDec, format);
810 if (checkParam == AV_ERR_OK) {
811 backParam = SUCCESS;
812 free(format);
813 }
814 }
815 }
816 napi_create_int32(env, backParam, &result);
817 return result;
818 }
819
OHAudioDecoderSetParameterCnormal(napi_env env,napi_callback_info info)820 static napi_value OHAudioDecoderSetParameterCnormal(napi_env env, napi_callback_info info)
821 {
822 int backParam = FAIL;
823 napi_value result = nullptr;
824 OH_AVErrCode checkParam;
825 OH_AVFormat *format = nullptr;
826 format = OH_AVFormat_Create();
827 OH_AVFormat_SetIntValue(format, OH_MD_KEY_IDENTIFICATION_HEADER, DEFAULT_VORBISTWO_TYPE);
828 OH_AVFormat_SetIntValue(format, OH_MD_KEY_SETUP_HEADER, DEFAULT_VORBIS_TYPE);
829 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_VORBIS);
830 OH_AudioDecoder_Configure(audioDec, format);
831 OH_AudioDecoder_Prepare(audioDec);
832 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
833 format = OH_AudioDecoder_GetOutputDescription(audioDec);
834 if (format != nullptr) {
835 checkParam = OH_AudioDecoder_SetParameter(audioDec, format);
836 if (checkParam == AV_ERR_OK) {
837 backParam = SUCCESS;
838 free(format);
839 }
840 }
841 }
842 napi_create_int32(env, backParam, &result);
843 return result;
844 }
845
OHAudioDecoderIsValidAnormal(napi_env env,napi_callback_info info)846 static napi_value OHAudioDecoderIsValidAnormal(napi_env env, napi_callback_info info)
847 {
848 int backParam = FAIL;
849 napi_value result = nullptr;
850 OH_AVErrCode checkParam;
851 bool status = true;
852 OH_AVFormat *format = nullptr;
853 format = OH_AVFormat_Create();
854 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
855 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
856 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
857 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
858 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
859 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_AAC);
860 OH_AudioDecoder_Configure(audioDec, format);
861 OH_AudioDecoder_Prepare(audioDec);
862 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
863 checkParam = OH_AudioDecoder_Flush(audioDec);
864 if (checkParam == AV_ERR_OK) {
865 checkParam = OH_AudioDecoder_IsValid(audioDec, &status);
866 if (checkParam == AV_ERR_OK) {
867 backParam = SUCCESS;
868 OH_AudioDecoder_Stop(audioDec);
869 }
870 }
871 }
872 napi_create_int32(env, backParam, &result);
873 return result;
874 }
875
OHAudioDecoderIsValidBnormal(napi_env env,napi_callback_info info)876 static napi_value OHAudioDecoderIsValidBnormal(napi_env env, napi_callback_info info)
877 {
878 int backParam = FAIL;
879 napi_value result = nullptr;
880 OH_AVErrCode checkParam;
881 bool status = true;
882 OH_AVFormat *format = nullptr;
883 format = OH_AVFormat_Create();
884 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLERATE);
885 OH_AVFormat_SetIntValue(format, OH_MD_KEY_BITRATE, DEFAULT_BITRATE);
886 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNEL_COUNT);
887 OH_AVFormat_SetIntValue(format, OH_MD_KEY_MAX_INPUT_SIZE, DEFAULT_MAX_INPUT_SIZE);
888 OH_AVFormat_SetIntValue(format, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
889 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_FLAC);
890 OH_AudioDecoder_Configure(audioDec, format);
891 OH_AudioDecoder_Prepare(audioDec);
892 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
893 checkParam = OH_AudioDecoder_Flush(audioDec);
894 if (checkParam == AV_ERR_OK) {
895 checkParam = OH_AudioDecoder_IsValid(audioDec, &status);
896 if (checkParam == AV_ERR_OK) {
897 backParam = SUCCESS;
898 OH_AudioDecoder_Stop(audioDec);
899 }
900 }
901 }
902 napi_create_int32(env, backParam, &result);
903 return result;
904 }
905
OHAudioDecoderIsValidCnormal(napi_env env,napi_callback_info info)906 static napi_value OHAudioDecoderIsValidCnormal(napi_env env, napi_callback_info info)
907 {
908 int backParam = FAIL;
909 napi_value result = nullptr;
910 OH_AVErrCode checkParam;
911 bool status = true;
912 OH_AVFormat *format = nullptr;
913 format = OH_AVFormat_Create();
914 OH_AVFormat_SetIntValue(format, OH_MD_KEY_IDENTIFICATION_HEADER, DEFAULT_VORBISTWO_TYPE);
915 OH_AVFormat_SetIntValue(format, OH_MD_KEY_SETUP_HEADER, DEFAULT_VORBIS_TYPE);
916 OH_AVCodec *audioDec = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_VORBIS);
917 OH_AudioDecoder_Configure(audioDec, format);
918 OH_AudioDecoder_Prepare(audioDec);
919 if (OH_AudioDecoder_Start(audioDec) == AV_ERR_OK) {
920 checkParam = OH_AudioDecoder_Flush(audioDec);
921 if (checkParam == AV_ERR_OK) {
922 checkParam = OH_AudioDecoder_IsValid(audioDec, &status);
923 if (checkParam == AV_ERR_OK) {
924 backParam = SUCCESS;
925 OH_AudioDecoder_Stop(audioDec);
926 }
927 }
928 }
929 napi_create_int32(env, backParam, &result);
930 return result;
931 }
932
933 EXTERN_C_START
Init(napi_env env,napi_value exports)934 static napi_value Init(napi_env env, napi_value exports)
935 {
936 napi_property_descriptor desc[] = {
937 {"OH_AudioDecoder_CreateByMime", nullptr, AudioDecoderCreateByMimeAudioAac, nullptr, nullptr, nullptr,
938 napi_default, nullptr},
939 {"OH_AudioDecoder_CreateByName", nullptr, AudioDecoderCreateByName, nullptr, nullptr, nullptr, napi_default,
940 nullptr},
941 {"OH_AudioDecoder_Destroy", nullptr, AudioDecoderDestroy, nullptr, nullptr, nullptr, napi_default, nullptr},
942 {"OH_AudioDecoder_SetCallback", nullptr, AudioDecoderSetCallback, nullptr, nullptr, nullptr, napi_default,
943 nullptr},
944 {"OH_AudioDecoder_Configure", nullptr, AudioDecoderConfigure, nullptr, nullptr, nullptr, napi_default, nullptr},
945 {"OH_AudioDecoder_Prepare", nullptr, AudioDecoderPrepare, nullptr, nullptr, nullptr, napi_default, nullptr},
946 {"OH_AudioDecoder_Start", nullptr, AudioDecoderStart, nullptr, nullptr, nullptr, napi_default, nullptr},
947 {"OH_AudioDecoder_Stop", nullptr, AudioDecoderStop, nullptr, nullptr, nullptr, napi_default, nullptr},
948 {"OH_AudioDecoder_Flush", nullptr, AudioDecoderFlush, nullptr, nullptr, nullptr, napi_default, nullptr},
949 {"OH_AudioDecoder_Reset", nullptr, AudioDecoderReset, nullptr, nullptr, nullptr, napi_default, nullptr},
950 {"OH_AudioDecoder_GetOutputDescription", nullptr, AudioDecoderGetOutputDescription, nullptr, nullptr, nullptr,
951 napi_default, nullptr},
952 {"OH_AudioDecoder_SetParameter", nullptr, AudioDecoderSetParameter, nullptr, nullptr, nullptr, napi_default,
953 nullptr},
954 {"OH_AudioDecoder_IsValid", nullptr, AudioDecoderIsValid, nullptr, nullptr, nullptr, napi_default, nullptr},
955 {"OHAudioDecoderCreateByNameAnormal", nullptr, OHAudioDecoderCreateByNameAnormal, nullptr, nullptr, nullptr,
956 napi_default, nullptr},
957 {"OHAudioDecoderCreateByNameBnormal", nullptr, OHAudioDecoderCreateByNameBnormal, nullptr, nullptr, nullptr,
958 napi_default, nullptr},
959 {"OHAudioDecoderCreateByNameCnormal", nullptr, OHAudioDecoderCreateByNameCnormal, nullptr, nullptr, nullptr,
960 napi_default, nullptr},
961 {"OHAudioDecoderDestroyAnormal", nullptr, OHAudioDecoderDestroyAnormal, nullptr, nullptr, nullptr, napi_default,
962 nullptr},
963 {"OHAudioDecoderDestroyBnormal", nullptr, OHAudioDecoderDestroyBnormal, nullptr, nullptr, nullptr, napi_default,
964 nullptr},
965 {"OHAudioDecoderDestroyCnormal", nullptr, OHAudioDecoderDestroyCnormal, nullptr, nullptr, nullptr, napi_default,
966 nullptr},
967 {"OHAudioDecoderStartAnormal", nullptr, OHAudioDecoderStartAnormal, nullptr, nullptr, nullptr, napi_default,
968 nullptr},
969 {"OHAudioDecoderStartBnormal", nullptr, OHAudioDecoderStartBnormal, nullptr, nullptr, nullptr, napi_default,
970 nullptr},
971 {"OHAudioDecoderStartCnormal", nullptr, OHAudioDecoderStartCnormal, nullptr, nullptr, nullptr, napi_default,
972 nullptr},
973 {"OHAudioDecoderStopAnormal", nullptr, OHAudioDecoderStopAnormal, nullptr, nullptr, nullptr, napi_default,
974 nullptr},
975 {"OHAudioDecoderStopBnormal", nullptr, OHAudioDecoderStopBnormal, nullptr, nullptr, nullptr, napi_default,
976 nullptr},
977 {"OHAudioDecoderStopCnormal", nullptr, OHAudioDecoderStopCnormal, nullptr, nullptr, nullptr, napi_default,
978 nullptr},
979 {"OHAudioDecoderFlushAnormal", nullptr, OHAudioDecoderFlushAnormal, nullptr, nullptr, nullptr, napi_default,
980 nullptr},
981 {"OHAudioDecoderFlushBnormal", nullptr, OHAudioDecoderFlushBnormal, nullptr, nullptr, nullptr, napi_default,
982 nullptr},
983 {"OHAudioDecoderFlushCnormal", nullptr, OHAudioDecoderFlushCnormal, nullptr, nullptr, nullptr, napi_default,
984 nullptr},
985 {"OHAudioDecoderResetAnormal", nullptr, OHAudioDecoderResetAnormal, nullptr, nullptr, nullptr, napi_default,
986 nullptr},
987 {"OHAudioDecoderResetBnormal", nullptr, OHAudioDecoderResetBnormal, nullptr, nullptr, nullptr, napi_default,
988 nullptr},
989 {"OHAudioDecoderResetCnormal", nullptr, OHAudioDecoderResetCnormal, nullptr, nullptr, nullptr, napi_default,
990 nullptr},
991 {"OHAudioDecoderGetOutputDescriptionAnormal", nullptr, OHAudioDecoderGetOutputDescriptionAnormal, nullptr,
992 nullptr, nullptr, napi_default, nullptr},
993 {"OHAudioDecoderGetOutputDescriptionBnormal", nullptr, OHAudioDecoderGetOutputDescriptionBnormal, nullptr,
994 nullptr, nullptr, napi_default, nullptr},
995 {"OHAudioDecoderGetOutputDescriptionCnormal", nullptr, OHAudioDecoderGetOutputDescriptionCnormal, nullptr,
996 nullptr, nullptr, napi_default, nullptr},
997 {"OHAudioDecoderSetParameterAnormal", nullptr, OHAudioDecoderSetParameterAnormal, nullptr, nullptr, nullptr,
998 napi_default, nullptr},
999 {"OHAudioDecoderSetParameterBnormal", nullptr, OHAudioDecoderSetParameterBnormal, nullptr, nullptr, nullptr,
1000 napi_default, nullptr},
1001 {"OHAudioDecoderSetParameterCnormal", nullptr, OHAudioDecoderSetParameterCnormal, nullptr, nullptr, nullptr,
1002 napi_default, nullptr},
1003 {"OHAudioDecoderIsValidAnormal", nullptr, OHAudioDecoderIsValidAnormal, nullptr, nullptr, nullptr, napi_default,
1004 nullptr},
1005 {"OHAudioDecoderIsValidBnormal", nullptr, OHAudioDecoderIsValidBnormal, nullptr, nullptr, nullptr, napi_default,
1006 nullptr},
1007 {"OHAudioDecoderIsValidCnormal", nullptr, OHAudioDecoderIsValidCnormal, nullptr, nullptr, nullptr, napi_default,
1008 nullptr},
1009 };
1010 napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
1011 return exports;
1012 }
1013 EXTERN_C_END
1014
1015 static napi_module demoModule = {
1016 .nm_version = 1,
1017 .nm_flags = 0,
1018 .nm_filename = nullptr,
1019 .nm_register_func = Init,
1020 .nm_modname = "libaudiodecoderxdlndk",
1021 .nm_priv = ((void *)0),
1022 .reserved = { 0 },
1023 };
1024
RegisterModule(void)1025 extern "C" __attribute__((constructor)) void RegisterModule(void)
1026 {
1027 napi_module_register(&demoModule);
1028 }
1029