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 <vector>
17 #include <queue>
18 #include <mutex>
19 #include <gtest/gtest.h>
20 #include <iostream>
21 #include <unistd.h>
22 #include <atomic>
23 #include <fstream>
24 #include <queue>
25 #include <string>
26 #include <thread>
27 #include "avcodec_codec_name.h"
28 #include "avcodec_common.h"
29 #include "avcodec_errors.h"
30 #include "avcodec_mime_type.h"
31 #include "media_description.h"
32 #include "native_avcodec_base.h"
33 #include "native_avformat.h"
34 #include "avcodec_common.h"
35 #include "avcodec_errors.h"
36 #include "native_avcodec_audiodecoder.h"
37 #include "securec.h"
38
39 using namespace std;
40 using namespace testing::ext;
41 using namespace OHOS::MediaAVCodec;
42
43 namespace {
44 const string CODEC_MP3_NAME = std::string(AVCodecCodecName::AUDIO_DECODER_MP3_NAME);
45 const string CODEC_FLAC_NAME = std::string(AVCodecCodecName::AUDIO_DECODER_FLAC_NAME);
46 const string CODEC_AAC_NAME = std::string(AVCodecCodecName::AUDIO_DECODER_AAC_NAME);
47 const string CODEC_VORBIS_NAME = std::string(AVCodecCodecName::AUDIO_DECODER_VORBIS_NAME);
48 const string CODEC_AMRWB_NAME = std::string(AVCodecCodecName::AUDIO_DECODER_AMRWB_NAME);
49 const string CODEC_AMRNB_NAME = std::string(AVCodecCodecName::AUDIO_DECODER_AMRNB_NAME);
50 const string CODEC_OPUS_NAME = std::string(AVCodecCodecName::AUDIO_DECODER_OPUS_NAME);
51 const string CODEC_G711MU_NAME = std::string(AVCodecCodecName::AUDIO_DECODER_G711MU_NAME);
52 constexpr uint32_t MAX_CHANNEL_COUNT = 2;
53 constexpr uint32_t AMRWB_CHANNEL_COUNT = 1;
54 constexpr uint32_t AMRNB_CHANNEL_COUNT = 1;
55 constexpr uint32_t ABNORMAL_MAX_CHANNEL_COUNT = 999999;
56 constexpr uint32_t ABNORMAL_MIN_CHANNEL_COUNT = 0;
57 constexpr uint32_t DEFAULT_SAMPLE_RATE = 44100;
58 constexpr uint32_t FLAC_192K_SAMPLE_RATE = 192000;
59 constexpr uint32_t AMRWB_SAMPLE_RATE = 16000;
60 constexpr uint32_t AMRNB_SAMPLE_RATE = 8000;
61 constexpr uint32_t DEFAULT_MP3_BITRATE = 60000;
62 constexpr uint32_t DEFAULT_FLAC_BITRATE = 261000;
63 constexpr uint32_t DEFAULT_AAC_BITRATE = 199000;
64 constexpr uint32_t DEFAULT_VORBIS_BITRATE = 320000;
65 constexpr uint32_t DEFAULT_AMRWB_BITRATE = 23850;
66 constexpr uint32_t DEFAULT_AMRNB_BITRATE = 12200;
67 constexpr uint32_t DEFAULT_G711MU_BITRATE = 64000;
68 constexpr uint32_t ABNORMAL_MAX_INPUT_SIZE = 99999999;
69 constexpr uint32_t DEFAULT_AAC_TYPE = 1;
70 constexpr string_view INPUT_AAC_FILE_PATH = "/data/test/media/aac_2c_44100hz_199k.dat";
71 constexpr string_view OUTPUT_AAC_PCM_FILE_PATH = "/data/test/media/aac_2c_44100hz_199k.pcm";
72 constexpr string_view INPUT_FLAC_FILE_PATH = "/data/test/media/flac_2c_44100hz_261k.dat";
73 constexpr string_view OUTPUT_FLAC_PCM_FILE_PATH = "/data/test/media/flac_2c_44100hz_261k.pcm";
74 constexpr string_view INPUT_MP3_FILE_PATH = "/data/test/media/mp3_2c_44100hz_60k.dat";
75 constexpr string_view OUTPUT_MP3_PCM_FILE_PATH = "/data/test/media/mp3_2c_44100hz_60k.pcm";
76 constexpr string_view INPUT_VORBIS_FILE_PATH = "/data/test/media/vorbis_2c_44100hz_320k.dat";
77 constexpr string_view OUTPUT_VORBIS_PCM_FILE_PATH = "/data/test/media/vorbis_2c_44100hz_320k.pcm";
78 constexpr string_view INPUT_AMRWB_FILE_PATH = "/data/test/media/voice_amrwb_23850.dat";
79 constexpr string_view OUTPUT_AMRWB_PCM_FILE_PATH = "/data/test/media/voice_amrwb_23850.pcm";
80 constexpr string_view INPUT_AMRNB_FILE_PATH = "/data/test/media/voice_amrnb_12200.dat";
81 constexpr string_view OUTPUT_AMRNB_PCM_FILE_PATH = "/data/test/media/voice_amrnb_12200.pcm";
82 constexpr string_view INPUT_OPUS_FILE_PATH = "/data/test/media/voice_opus.dat";
83 constexpr string_view OUTPUT_OPUS_PCM_FILE_PATH = "/data/test/media/voice_opus.pcm";
84 constexpr string_view INPUT_G711MU_FILE_PATH = "/data/test/media/g711mu_8kHz.dat";
85 constexpr string_view OUTPUT_G711MU_PCM_FILE_PATH = "/data/test/media/g711mu_8kHz_decode.pcm";
86 const string OPUS_SO_FILE_PATH = std::string(AV_CODEC_PATH) + "/libav_codec_ext_base.z.so";
87 } // namespace
88
89 namespace OHOS {
90 namespace MediaAVCodec {
91 class ADecSignal {
92 public:
93 std::mutex inMutex_;
94 std::mutex outMutex_;
95 std::mutex startMutex_;
96 std::condition_variable inCond_;
97 std::condition_variable outCond_;
98 std::condition_variable startCond_;
99 std::queue<uint32_t> inQueue_;
100 std::queue<uint32_t> outQueue_;
101 std::queue<OH_AVMemory *> inBufferQueue_;
102 std::queue<OH_AVMemory *> outBufferQueue_;
103 std::queue<OH_AVCodecBufferAttr> attrQueue_;
104 };
105
OnError(OH_AVCodec * codec,int32_t errorCode,void * userData)106 static void OnError(OH_AVCodec *codec, int32_t errorCode, void *userData)
107 {
108 (void)codec;
109 (void)errorCode;
110 (void)userData;
111 cout << "Error received, errorCode:" << errorCode << endl;
112 }
113
OnOutputFormatChanged(OH_AVCodec * codec,OH_AVFormat * format,void * userData)114 static void OnOutputFormatChanged(OH_AVCodec *codec, OH_AVFormat *format, void *userData)
115 {
116 (void)codec;
117 (void)format;
118 (void)userData;
119 cout << "OnOutputFormatChanged received" << endl;
120 }
121
OnInputBufferAvailable(OH_AVCodec * codec,uint32_t index,OH_AVMemory * data,void * userData)122 static void OnInputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, void *userData)
123 {
124 (void)codec;
125 ADecSignal *signal = static_cast<ADecSignal *>(userData);
126 unique_lock<mutex> lock(signal->inMutex_);
127 signal->inQueue_.push(index);
128 signal->inBufferQueue_.push(data);
129 signal->inCond_.notify_all();
130 }
131
OnOutputBufferAvailable(OH_AVCodec * codec,uint32_t index,OH_AVMemory * data,OH_AVCodecBufferAttr * attr,void * userData)132 static void OnOutputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, OH_AVCodecBufferAttr *attr,
133 void *userData)
134 {
135 (void)codec;
136 ADecSignal *signal = static_cast<ADecSignal *>(userData);
137 unique_lock<mutex> lock(signal->outMutex_);
138 signal->outQueue_.push(index);
139 signal->outBufferQueue_.push(data);
140 if (attr) {
141 signal->attrQueue_.push(*attr);
142 } else {
143 cout << "OnOutputBufferAvailable error, attr is nullptr!" << endl;
144 }
145 signal->outCond_.notify_all();
146 }
147
148 class AudioCodeCapiDecoderUnitTest : public testing::Test {
149 public:
150 static void SetUpTestCase(void);
151 static void TearDownTestCase(void);
152 void SetUp();
153 void TearDown();
154 int32_t InitFile(const string &codecName);
155 void InputFunc();
156 void OutputFunc();
157 int32_t CreateCodecFunc(const string &codecName);
158 void HandleInputEOS(const uint32_t index);
159 int32_t HandleNormalInput(const uint32_t &index, const int64_t pts, const size_t size);
160 int32_t Configure(const string &codecName);
161 int32_t Start();
162 int32_t Stop();
163 void Release();
164 int32_t CheckSoFunc();
165
166 protected:
167 std::unique_ptr<std::ifstream> soFile_;
168 std::atomic<bool> isRunning_ = false;
169 std::unique_ptr<std::thread> inputLoop_;
170 std::unique_ptr<std::thread> outputLoop_;
171 struct OH_AVCodecAsyncCallback cb_;
172 ADecSignal *signal_ = nullptr;
173 OH_AVCodec *audioDec_ = nullptr;
174 ;
175 OH_AVFormat *format_ = nullptr;
176 ;
177 bool isFirstFrame_ = true;
178 std::ifstream inputFile_;
179 std::ofstream pcmOutputFile_;
180 };
181
SetUpTestCase(void)182 void AudioCodeCapiDecoderUnitTest::SetUpTestCase(void)
183 {
184 cout << "[SetUpTestCase]: " << endl;
185 }
186
TearDownTestCase(void)187 void AudioCodeCapiDecoderUnitTest::TearDownTestCase(void)
188 {
189 cout << "[TearDownTestCase]: " << endl;
190 }
191
SetUp(void)192 void AudioCodeCapiDecoderUnitTest::SetUp(void)
193 {
194 cout << "[SetUp]: SetUp!!!" << endl;
195 }
196
TearDown(void)197 void AudioCodeCapiDecoderUnitTest::TearDown(void)
198 {
199 cout << "[TearDown]: over!!!" << endl;
200
201 if (signal_) {
202 delete signal_;
203 signal_ = nullptr;
204 }
205 if (inputFile_.is_open()) {
206 inputFile_.close();
207 }
208 if (pcmOutputFile_.is_open()) {
209 pcmOutputFile_.close();
210 }
211 }
212
Release()213 void AudioCodeCapiDecoderUnitTest::Release()
214 {
215 Stop();
216 OH_AudioDecoder_Destroy(audioDec_);
217 }
218
CheckSoFunc()219 int32_t AudioCodeCapiDecoderUnitTest::CheckSoFunc()
220 {
221 soFile_ = std::make_unique<std::ifstream>(OPUS_SO_FILE_PATH, std::ios::binary);
222 if (!soFile_->is_open()) {
223 cout << "Fatal: Open so file failed" << endl;
224 return false;
225 }
226 soFile_->close();
227 return true;
228 }
229
HandleInputEOS(const uint32_t index)230 void AudioCodeCapiDecoderUnitTest::HandleInputEOS(const uint32_t index)
231 {
232 OH_AVCodecBufferAttr info;
233 info.size = 0;
234 info.offset = 0;
235 info.pts = 0;
236 info.flags = AVCODEC_BUFFER_FLAGS_EOS;
237 OH_AudioDecoder_PushInputData(audioDec_, index, info);
238 signal_->inBufferQueue_.pop();
239 signal_->inQueue_.pop();
240 }
241
HandleNormalInput(const uint32_t & index,const int64_t pts,const size_t size)242 int32_t AudioCodeCapiDecoderUnitTest::HandleNormalInput(const uint32_t &index, const int64_t pts, const size_t size)
243 {
244 OH_AVCodecBufferAttr info;
245 info.size = size;
246 info.offset = 0;
247 info.pts = pts;
248
249 int32_t ret = OH_AVErrCode::AV_ERR_OK;
250 if (isFirstFrame_) {
251 info.flags = AVCODEC_BUFFER_FLAGS_CODEC_DATA;
252 ret = OH_AudioDecoder_PushInputData(audioDec_, index, info);
253 EXPECT_EQ(AV_ERR_OK, ret);
254 isFirstFrame_ = false;
255 } else {
256 info.flags = AVCODEC_BUFFER_FLAGS_NONE;
257 ret = OH_AudioDecoder_PushInputData(audioDec_, index, info);
258 EXPECT_EQ(AV_ERR_OK, ret);
259 }
260 signal_->inQueue_.pop();
261 signal_->inBufferQueue_.pop();
262 return ret;
263 }
264
InputFunc()265 void AudioCodeCapiDecoderUnitTest::InputFunc()
266 {
267 int64_t size;
268 int64_t pts;
269
270 while (isRunning_.load()) {
271 unique_lock<mutex> lock(signal_->inMutex_);
272 signal_->inCond_.wait(lock, [this]() { return (signal_->inQueue_.size() > 0 || !isRunning_.load()); });
273
274 if (!isRunning_.load()) {
275 break;
276 }
277
278 uint32_t index = signal_->inQueue_.front();
279 auto buffer = signal_->inBufferQueue_.front();
280 if (buffer == nullptr) {
281 cout << "Fatal: GetInputBuffer fail" << endl;
282 break;
283 }
284 inputFile_.read(reinterpret_cast<char *>(&size), sizeof(size));
285 if (inputFile_.eof() || inputFile_.gcount() == 0) {
286 HandleInputEOS(index);
287 cout << "end buffer\n";
288 break;
289 }
290 if (inputFile_.gcount() != sizeof(size)) {
291 cout << "Fatal: read size fail" << endl;
292 break;
293 }
294 inputFile_.read(reinterpret_cast<char *>(&pts), sizeof(pts));
295 if (inputFile_.gcount() != sizeof(pts)) {
296 cout << "Fatal: read size fail" << endl;
297 break;
298 }
299 inputFile_.read((char *)OH_AVMemory_GetAddr(buffer), size);
300 if (inputFile_.gcount() != size) {
301 cout << "Fatal: read buffer fail" << endl;
302 break;
303 }
304
305 int32_t ret = HandleNormalInput(index, pts, size);
306 if (ret != AV_ERR_OK) {
307 cout << "Fatal error, exit" << endl;
308 break;
309 }
310 }
311 inputFile_.close();
312 }
313
OutputFunc()314 void AudioCodeCapiDecoderUnitTest::OutputFunc()
315 {
316 if (!pcmOutputFile_.is_open()) {
317 std::cout << "open " << OUTPUT_MP3_PCM_FILE_PATH << " failed!" << std::endl;
318 }
319 while (isRunning_.load()) {
320 unique_lock<mutex> lock(signal_->outMutex_);
321 signal_->outCond_.wait(lock, [this]() { return (signal_->outQueue_.size() > 0 || !isRunning_.load()); });
322
323 if (!isRunning_.load()) {
324 cout << "wait to stop, exit" << endl;
325 break;
326 }
327
328 uint32_t index = signal_->outQueue_.front();
329 OH_AVCodecBufferAttr attr = signal_->attrQueue_.front();
330 OH_AVMemory *data = signal_->outBufferQueue_.front();
331 if (data != nullptr) {
332 pcmOutputFile_.write(reinterpret_cast<char *>(OH_AVMemory_GetAddr(data)), attr.size);
333 }
334
335 if (attr.flags == AVCODEC_BUFFER_FLAGS_EOS) {
336 cout << "decode eos" << endl;
337 isRunning_.store(false);
338 }
339 signal_->outBufferQueue_.pop();
340 signal_->attrQueue_.pop();
341 signal_->outQueue_.pop();
342 EXPECT_EQ(AV_ERR_OK, OH_AudioDecoder_FreeOutputData(audioDec_, index));
343 }
344
345 pcmOutputFile_.close();
346 signal_->startCond_.notify_all();
347 }
348
Start()349 int32_t AudioCodeCapiDecoderUnitTest::Start()
350 {
351 isRunning_.store(true);
352 inputLoop_ = make_unique<thread>(&AudioCodeCapiDecoderUnitTest::InputFunc, this);
353 if (inputLoop_ == nullptr) {
354 cout << "Fatal: No memory" << endl;
355 return OH_AVErrCode::AV_ERR_UNKNOWN;
356 }
357
358 outputLoop_ = make_unique<thread>(&AudioCodeCapiDecoderUnitTest::OutputFunc, this);
359 if (outputLoop_ == nullptr) {
360 cout << "Fatal: No memory" << endl;
361 return OH_AVErrCode::AV_ERR_UNKNOWN;
362 }
363
364 return OH_AudioDecoder_Start(audioDec_);
365 }
366
Stop()367 int32_t AudioCodeCapiDecoderUnitTest::Stop()
368 {
369 isRunning_.store(false);
370 if (!signal_) {
371 return OH_AVErrCode::AV_ERR_UNKNOWN;
372 }
373 signal_->startCond_.notify_all();
374 if (inputLoop_ != nullptr && inputLoop_->joinable()) {
375 {
376 unique_lock<mutex> lock(signal_->inMutex_);
377 signal_->inCond_.notify_all();
378 }
379 inputLoop_->join();
380 }
381
382 if (outputLoop_ != nullptr && outputLoop_->joinable()) {
383 {
384 unique_lock<mutex> lock(signal_->outMutex_);
385 signal_->outCond_.notify_all();
386 }
387 outputLoop_->join();
388 }
389 return OH_AudioDecoder_Stop(audioDec_);
390 }
391
InitFile(const string & codecName)392 int32_t AudioCodeCapiDecoderUnitTest::InitFile(const string &codecName)
393 {
394 if (codecName.compare(CODEC_MP3_NAME) == 0) {
395 inputFile_.open(INPUT_MP3_FILE_PATH.data(), std::ios::binary);
396 pcmOutputFile_.open(OUTPUT_MP3_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
397 } else if (codecName.compare(CODEC_FLAC_NAME) == 0) {
398 inputFile_.open(INPUT_FLAC_FILE_PATH.data(), std::ios::binary);
399 pcmOutputFile_.open(OUTPUT_FLAC_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
400 } else if (codecName.compare(CODEC_AAC_NAME) == 0) {
401 inputFile_.open(INPUT_AAC_FILE_PATH.data(), std::ios::binary);
402 pcmOutputFile_.open(OUTPUT_AAC_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
403 } else if (codecName.compare(CODEC_VORBIS_NAME) == 0) {
404 inputFile_.open(INPUT_VORBIS_FILE_PATH.data(), std::ios::binary);
405 pcmOutputFile_.open(OUTPUT_VORBIS_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
406 } else if (codecName.compare(CODEC_AMRWB_NAME) == 0) {
407 inputFile_.open(INPUT_AMRWB_FILE_PATH.data(), std::ios::binary);
408 pcmOutputFile_.open(OUTPUT_AMRWB_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
409 } else if (codecName.compare(CODEC_AMRNB_NAME) == 0) {
410 inputFile_.open(INPUT_AMRNB_FILE_PATH.data(), std::ios::binary);
411 pcmOutputFile_.open(OUTPUT_AMRNB_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
412 } else if (codecName.compare(CODEC_OPUS_NAME) == 0) {
413 inputFile_.open(INPUT_OPUS_FILE_PATH.data(), std::ios::binary);
414 pcmOutputFile_.open(OUTPUT_OPUS_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
415 } else if (codecName.compare(CODEC_G711MU_NAME) == 0) {
416 inputFile_.open(INPUT_G711MU_FILE_PATH.data(), std::ios::binary);
417 pcmOutputFile_.open(OUTPUT_G711MU_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
418 } else {
419 cout << "Fatal: audio format type not support" << endl;
420 return OH_AVErrCode::AV_ERR_UNKNOWN;
421 }
422
423 if (!inputFile_.is_open()) {
424 cout << "Fatal: open input file failed" << endl;
425 return OH_AVErrCode::AV_ERR_UNKNOWN;
426 }
427 if (!pcmOutputFile_.is_open()) {
428 cout << "Fatal: open output file failed" << endl;
429 return OH_AVErrCode::AV_ERR_UNKNOWN;
430 }
431 return OH_AVErrCode::AV_ERR_OK;
432 }
433
CreateCodecFunc(const string & codecName)434 int32_t AudioCodeCapiDecoderUnitTest::CreateCodecFunc(const string &codecName)
435 {
436 if (codecName.compare(CODEC_MP3_NAME) == 0) {
437 audioDec_ = OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_DECODER_MP3_NAME).data());
438 } else if (codecName.compare(CODEC_FLAC_NAME) == 0) {
439 audioDec_ = OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_DECODER_FLAC_NAME).data());
440 } else if (codecName.compare(CODEC_AAC_NAME) == 0) {
441 audioDec_ = OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_DECODER_AAC_NAME).data());
442 } else if (codecName.compare(CODEC_VORBIS_NAME) == 0) {
443 audioDec_ = OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_DECODER_VORBIS_NAME).data());
444 } else if (codecName.compare(CODEC_AMRWB_NAME) == 0) {
445 audioDec_ = OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_DECODER_AMRWB_NAME).data());
446 } else if (codecName.compare(CODEC_AMRNB_NAME) == 0) {
447 audioDec_ = OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_DECODER_AMRNB_NAME).data());
448 } else if (codecName.compare(CODEC_OPUS_NAME) == 0) {
449 audioDec_ = OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_DECODER_OPUS_NAME).data());
450 } else if (codecName.compare(CODEC_G711MU_NAME) == 0) {
451 audioDec_ = OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_DECODER_G711MU_NAME).data());
452 } else {
453 cout << "audio name not support" << endl;
454 return OH_AVErrCode::AV_ERR_UNKNOWN;
455 }
456
457 if (audioDec_ == nullptr) {
458 cout << "Fatal: CreateByName fail" << endl;
459 return OH_AVErrCode::AV_ERR_UNKNOWN;
460 }
461
462 signal_ = new ADecSignal();
463 if (signal_ == nullptr) {
464 cout << "Fatal: create signal fail" << endl;
465 return OH_AVErrCode::AV_ERR_UNKNOWN;
466 }
467 cb_ = {&OnError, &OnOutputFormatChanged, &OnInputBufferAvailable, &OnOutputBufferAvailable};
468 int32_t ret = OH_AudioDecoder_SetCallback(audioDec_, cb_, signal_);
469 if (ret != OH_AVErrCode::AV_ERR_OK) {
470 cout << "Fatal: SetCallback fail" << endl;
471 return OH_AVErrCode::AV_ERR_UNKNOWN;
472 }
473
474 return OH_AVErrCode::AV_ERR_OK;
475 }
476
Configure(const string & codecName)477 int32_t AudioCodeCapiDecoderUnitTest::Configure(const string &codecName)
478 {
479 format_ = OH_AVFormat_Create();
480 if (format_ == nullptr) {
481 cout << "Fatal: create format failed" << endl;
482 return OH_AVErrCode::AV_ERR_UNKNOWN;
483 }
484 uint32_t bitRate = DEFAULT_MP3_BITRATE;
485 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), MAX_CHANNEL_COUNT);
486 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
487 if (codecName.compare(CODEC_FLAC_NAME) == 0) {
488 bitRate = DEFAULT_FLAC_BITRATE;
489 } else if (codecName.compare(CODEC_AAC_NAME) == 0) {
490 bitRate = DEFAULT_AAC_BITRATE;
491 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AAC_IS_ADTS.data(), DEFAULT_AAC_TYPE);
492 } else if (codecName.compare(CODEC_VORBIS_NAME) == 0) {
493 bitRate = DEFAULT_VORBIS_BITRATE;
494 if (!inputFile_.is_open()) {
495 cout << "Fatal: open input file failed" << endl;
496 return OH_AVErrCode::AV_ERR_UNKNOWN;
497 }
498 int64_t dataSize = 0;
499 inputFile_.read(reinterpret_cast<char *>(&dataSize), sizeof(int64_t));
500 if (inputFile_.gcount() != sizeof(int64_t) || dataSize < 0) {
501 cout << "Fatal: read extradataSize bytes error" << endl;
502 return OH_AVErrCode::AV_ERR_UNKNOWN;
503 }
504 char buffer[dataSize];
505 inputFile_.read(buffer, dataSize);
506 if (inputFile_.gcount() != dataSize) {
507 cout << "Fatal: read extradata bytes error" << endl;
508 return OH_AVErrCode::AV_ERR_UNKNOWN;
509 }
510 OH_AVFormat_SetBuffer(format_, MediaDescriptionKey::MD_KEY_CODEC_CONFIG.data(), (uint8_t *)buffer, dataSize);
511 }
512 if (codecName.compare(CODEC_AMRWB_NAME) == 0) {
513 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), AMRWB_CHANNEL_COUNT);
514 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), AMRWB_SAMPLE_RATE);
515 bitRate = DEFAULT_AMRWB_BITRATE;
516 } else if (codecName.compare(CODEC_AMRNB_NAME) == 0 || codecName.compare(CODEC_OPUS_NAME) == 0 ||
517 codecName.compare(CODEC_G711MU_NAME) == 0) {
518 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), AMRNB_CHANNEL_COUNT);
519 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), AMRNB_SAMPLE_RATE);
520 bitRate = DEFAULT_AMRNB_BITRATE;
521 }
522 bitRate = (codecName.compare(CODEC_G711MU_NAME) == 0) ? DEFAULT_G711MU_BITRATE : bitRate;
523 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(), bitRate);
524 return OH_AudioDecoder_Configure(audioDec_, format_);
525 }
526
527 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_CreateByMime_01, TestSize.Level1)
528 {
529 audioDec_ = OH_AudioDecoder_CreateByMime(AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_MPEG.data());
530 EXPECT_NE(nullptr, audioDec_);
531 Release();
532 }
533
534 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_CreateByName_01, TestSize.Level1)
535 {
536 audioDec_ = OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_DECODER_MP3_NAME).data());
537 EXPECT_NE(nullptr, audioDec_);
538 Release();
539 }
540
541 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_Configure_01, TestSize.Level1)
542 {
543 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_MP3_NAME));
544 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_MP3_NAME));
545 Release();
546 }
547
548 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_SetParameter_01, TestSize.Level1)
549 {
550 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_MP3_NAME));
551 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_MP3_NAME));
552 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_MP3_NAME));
553 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
554 {
555 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002340402() 556 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
557 }
558 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Flush(audioDec_));
559 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_SetParameter(audioDec_, format_));
560 Release();
561 }
562
563 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_SetParameter_02, TestSize.Level1)
564 {
565 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_MP3_NAME));
566 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_MP3_NAME));
567 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_SetParameter(audioDec_, format_));
568 Release();
569 }
570
571 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_Start_01, TestSize.Level1)
572 {
573 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_MP3_NAME));
574 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_MP3_NAME));
575 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_MP3_NAME));
576 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
577 {
578 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002340502() 579 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
580 }
581 Release();
582 }
583
584 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_Start_02, TestSize.Level1)
585 {
586 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_MP3_NAME));
587 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_MP3_NAME));
588 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_MP3_NAME));
589 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
590 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
591 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Start(audioDec_));
592 {
593 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002340602() 594 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
595 }
596 Release();
597 }
598
599 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_Stop_01, TestSize.Level1)
600 {
601 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_MP3_NAME));
602 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_MP3_NAME));
603 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_MP3_NAME));
604 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
605 sleep(1);
606
607 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
608 Release();
609 }
610
611 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_Flush_01, TestSize.Level1)
612 {
613 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_MP3_NAME));
614 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_MP3_NAME));
615 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_MP3_NAME));
616 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
617 {
618 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002340702() 619 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
620 }
621 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Flush(audioDec_));
622 Release();
623 }
624
625 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_Reset_01, TestSize.Level1)
626 {
627 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_MP3_NAME));
628 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_MP3_NAME));
629 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
630 Release();
631 }
632
633 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_Reset_02, TestSize.Level1)
634 {
635 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_MP3_NAME));
636 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_MP3_NAME));
637 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_MP3_NAME));
638 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
639 {
640 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002340802() 641 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
642 }
643 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
644 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
645 Release();
646 }
647
648 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_Reset_03, TestSize.Level1)
649 {
650 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_MP3_NAME));
651 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_MP3_NAME));
652 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_MP3_NAME));
653 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
654 {
655 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002340902() 656 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
657 }
658 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
659 Release();
660 }
661
662 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_Destroy_01, TestSize.Level1)
663 {
664 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_MP3_NAME));
665 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_MP3_NAME));
666 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_MP3_NAME));
667 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
668 {
669 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002340a02() 670 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
671 }
672 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
673 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Destroy(audioDec_));
674 }
675
676 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_Destroy_02, TestSize.Level1)
677 {
678 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_MP3_NAME));
679 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_MP3_NAME));
680 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_MP3_NAME));
681
682 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Destroy(audioDec_));
683 }
684
685 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_GetOutputFormat_01, TestSize.Level1)
686 {
687 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_MP3_NAME));
688 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_MP3_NAME));
689 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_MP3_NAME));
690
691 EXPECT_NE(nullptr, OH_AudioDecoder_GetOutputDescription(audioDec_));
692 Release();
693 }
694
695 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_IsValid_01, TestSize.Level1)
696 {
697 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_MP3_NAME));
698 bool isValid = false;
699 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_IsValid(audioDec_, &isValid));
700 Release();
701 }
702
703 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_Prepare_01, TestSize.Level1)
704 {
705 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_MP3_NAME));
706 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Prepare(audioDec_));
707 Release();
708 }
709
710 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_PushInputData_01, TestSize.Level1)
711 {
712 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_MP3_NAME));
713 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_MP3_NAME));
714 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_MP3_NAME));
715 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
716
717 // case0 传参异常
718 uint32_t index = 0;
719 OH_AVCodecBufferAttr attr;
720 attr.pts = 0;
721 attr.size = -1;
722 attr.offset = 0;
723 attr.flags = AVCODEC_BUFFER_FLAG_EOS;
724 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_PushInputData(audioDec_, index, attr));
725 Release();
726 }
727
728 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Mp3_ReleaseOutputBuffer_01, TestSize.Level1)
729 {
730 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_MP3_NAME));
731 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_MP3_NAME));
732 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_MP3_NAME));
733 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
734
735 // case0 传参异常
736 uint32_t index = 1024;
737 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_FreeOutputData(audioDec_, index));
738 Release();
739 }
740
741 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_CreateByMime_01, TestSize.Level1)
742 {
743 audioDec_ = OH_AudioDecoder_CreateByMime(AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_FLAC.data());
744 EXPECT_NE(nullptr, audioDec_);
745 Release();
746 }
747
748 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_CreateByName_01, TestSize.Level1)
749 {
750 audioDec_ = OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_DECODER_FLAC_NAME).data());
751 EXPECT_NE(nullptr, audioDec_);
752 Release();
753 }
754
755 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_Configure_01, TestSize.Level1)
756 {
757 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
758 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_FLAC_NAME));
759 Release();
760 }
761
762 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_Configure_02, TestSize.Level1)
763 {
764 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
765 format_ = OH_AVFormat_Create();
766 EXPECT_NE(nullptr, format_);
767 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MIN_CHANNEL_COUNT);
768 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
769 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(), DEFAULT_FLAC_BITRATE);
770 ASSERT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Configure(audioDec_, format_));
771 Release();
772 }
773
774 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_Configure_03, TestSize.Level1)
775 {
776 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
777 format_ = OH_AVFormat_Create();
778 EXPECT_NE(nullptr, format_);
779 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MAX_CHANNEL_COUNT);
780 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
781 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(), DEFAULT_FLAC_BITRATE);
782 ASSERT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Configure(audioDec_, format_));
783 Release();
784 }
785
786 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_Configure_04, TestSize.Level1)
787 {
788 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
789 format_ = OH_AVFormat_Create();
790 EXPECT_NE(nullptr, format_);
791 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), MAX_CHANNEL_COUNT);
792 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), FLAC_192K_SAMPLE_RATE);
793 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(), DEFAULT_FLAC_BITRATE);
794 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Configure(audioDec_, format_));
795 Release();
796 }
797
798 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_SetParameter_01, TestSize.Level1)
799 {
800 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_FLAC_NAME));
801 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
802 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_FLAC_NAME));
803 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
804 {
805 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002340b02() 806 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
807 }
808 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Flush(audioDec_));
809 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_SetParameter(audioDec_, format_));
810 Release();
811 }
812
813 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_SetParameter_02, TestSize.Level1)
814 {
815 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
816 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_FLAC_NAME));
817 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_SetParameter(audioDec_, format_));
818 Release();
819 }
820
821 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_Start_01, TestSize.Level1)
822 {
823 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_FLAC_NAME));
824 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
825 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_FLAC_NAME));
826 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
827 {
828 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002340c02() 829 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
830 }
831 Release();
832 }
833
834 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_Start_02, TestSize.Level1)
835 {
836 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_FLAC_NAME));
837 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
838 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_FLAC_NAME));
839 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
840 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
841 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Start(audioDec_));
842 {
843 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002340d02() 844 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
845 }
846 Release();
847 }
848
849 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_Start_03, TestSize.Level1)
850 {
851 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_FLAC_NAME));
852 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
853 format_ = OH_AVFormat_Create();
854 EXPECT_NE(nullptr, format_);
855 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), MAX_CHANNEL_COUNT);
856 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
857 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(), DEFAULT_FLAC_BITRATE);
858 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_MAX_INPUT_SIZE.data(), ABNORMAL_MAX_INPUT_SIZE);
859 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Configure(audioDec_, format_));
860
861 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
862 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
863 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Start(audioDec_));
864 {
865 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002340e02() 866 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
867 }
868 Release();
869 }
870
871 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_Stop_01, TestSize.Level1)
872 {
873 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_FLAC_NAME));
874 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
875 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_FLAC_NAME));
876 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
877 sleep(1);
878
879 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
880 Release();
881 }
882
883 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_Flush_01, TestSize.Level1)
884 {
885 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_FLAC_NAME));
886 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
887 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_FLAC_NAME));
888 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
889 {
890 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002340f02() 891 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
892 }
893 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Flush(audioDec_));
894 Release();
895 }
896
897 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_Reset_01, TestSize.Level1)
898 {
899 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
900 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_FLAC_NAME));
901 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
902 Release();
903 }
904
905 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_Reset_02, TestSize.Level1)
906 {
907 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_FLAC_NAME));
908 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
909 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_FLAC_NAME));
910 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
911 {
912 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002341002() 913 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
914 }
915 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
916 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
917 Release();
918 }
919
920 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_Reset_03, TestSize.Level1)
921 {
922 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_FLAC_NAME));
923 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
924 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_FLAC_NAME));
925 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
926 {
927 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002341102() 928 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
929 }
930 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
931 Release();
932 }
933
934 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_Destroy_01, TestSize.Level1)
935 {
936 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_FLAC_NAME));
937 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
938 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_FLAC_NAME));
939 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
940 {
941 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002341202() 942 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
943 }
944 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
945 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Destroy(audioDec_));
946 }
947
948 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_Destroy_02, TestSize.Level1)
949 {
950 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_FLAC_NAME));
951 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
952 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_FLAC_NAME));
953
954 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Destroy(audioDec_));
955 }
956
957 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_GetOutputFormat_01, TestSize.Level1)
958 {
959 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_FLAC_NAME));
960 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
961 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_FLAC_NAME));
962
963 EXPECT_NE(nullptr, OH_AudioDecoder_GetOutputDescription(audioDec_));
964 Release();
965 }
966
967 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_IsValid_01, TestSize.Level1)
968 {
969 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
970 bool isValid = false;
971 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_IsValid(audioDec_, &isValid));
972 Release();
973 }
974
975 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_Prepare_01, TestSize.Level1)
976 {
977 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
978 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Prepare(audioDec_));
979 Release();
980 }
981
982 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_PushInputData_01, TestSize.Level1)
983 {
984 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_FLAC_NAME));
985 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
986 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_FLAC_NAME));
987 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
988
989 // case0 传参异常
990 uint32_t index = 0;
991 OH_AVCodecBufferAttr attr;
992 attr.pts = 0;
993 attr.size = -1;
994 attr.offset = 0;
995 attr.flags = AVCODEC_BUFFER_FLAG_EOS;
996 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_PushInputData(audioDec_, index, attr));
997 Release();
998 }
999
1000 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_ReleaseOutputBuffer_01, TestSize.Level1)
1001 {
1002 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_FLAC_NAME));
1003 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
1004 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_FLAC_NAME));
1005 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1006
1007 // case0 传参异常
1008 uint32_t index = 1024;
1009 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_FreeOutputData(audioDec_, index));
1010 Release();
1011 }
1012
1013 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Flac_192k_01, TestSize.Level1)
1014 {
1015 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_FLAC_NAME));
1016 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_FLAC_NAME));
1017 format_ = OH_AVFormat_Create();
1018 EXPECT_NE(nullptr, format_);
1019 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), MAX_CHANNEL_COUNT);
1020 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), FLAC_192K_SAMPLE_RATE);
1021 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(), DEFAULT_FLAC_BITRATE);
1022 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Configure(audioDec_, format_));
1023 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1024 {
1025 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002341302() 1026 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1027 }
1028 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1029 Release();
1030 }
1031
1032 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_CreateByMime_01, TestSize.Level1)
1033 {
1034 if (!CheckSoFunc()) {
1035 return;
1036 }
1037 audioDec_ = OH_AudioDecoder_CreateByMime(AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_OPUS.data());
1038 EXPECT_NE(nullptr, audioDec_);
1039 Release();
1040 }
1041
1042 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_CreateByName_01, TestSize.Level1)
1043 {
1044 if (!CheckSoFunc()) {
1045 return;
1046 }
1047 audioDec_ = OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_DECODER_OPUS_NAME).data());
1048 EXPECT_NE(nullptr, audioDec_);
1049 Release();
1050 }
1051
1052 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_Configure_01, TestSize.Level1)
1053 {
1054 if (!CheckSoFunc()) {
1055 return;
1056 }
1057 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1058 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_OPUS_NAME));
1059 Release();
1060 }
1061
1062 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_Configure_02, TestSize.Level1)
1063 {
1064 if (!CheckSoFunc()) {
1065 return;
1066 }
1067 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1068 format_ = OH_AVFormat_Create();
1069 EXPECT_NE(nullptr, format_);
1070 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MIN_CHANNEL_COUNT);
1071 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1072 ASSERT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Configure(audioDec_, format_));
1073 Release();
1074 }
1075
1076 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_Configure_03, TestSize.Level1)
1077 {
1078 if (!CheckSoFunc()) {
1079 return;
1080 }
1081 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1082 format_ = OH_AVFormat_Create();
1083 EXPECT_NE(nullptr, format_);
1084 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MAX_CHANNEL_COUNT);
1085 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1086 ASSERT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Configure(audioDec_, format_));
1087 Release();
1088 }
1089
1090 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_SetParameter_01, TestSize.Level1)
1091 {
1092 if (!CheckSoFunc()) {
1093 return;
1094 }
1095 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_OPUS_NAME));
1096 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1097 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_OPUS_NAME));
1098 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1099 {
1100 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002341402() 1101 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1102 }
1103 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Flush(audioDec_));
1104 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_SetParameter(audioDec_, format_));
1105 Release();
1106 }
1107
1108 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_SetParameter_02, TestSize.Level1)
1109 {
1110 if (!CheckSoFunc()) {
1111 return;
1112 }
1113 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1114 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_OPUS_NAME));
1115 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_SetParameter(audioDec_, format_));
1116 Release();
1117 }
1118
1119 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_Start_01, TestSize.Level1)
1120 {
1121 if (!CheckSoFunc()) {
1122 return;
1123 }
1124 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_OPUS_NAME));
1125 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1126 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_OPUS_NAME));
1127 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1128 {
1129 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002341502() 1130 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1131 }
1132 Release();
1133 }
1134
1135 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_Start_02, TestSize.Level1)
1136 {
1137 if (!CheckSoFunc()) {
1138 return;
1139 }
1140 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_OPUS_NAME));
1141 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1142 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_OPUS_NAME));
1143 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1144 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1145 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Start(audioDec_));
1146 {
1147 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002341602() 1148 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1149 }
1150 Release();
1151 }
1152
1153 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_Start_03, TestSize.Level1)
1154 {
1155 if (!CheckSoFunc()) {
1156 return;
1157 }
1158 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_OPUS_NAME));
1159 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1160 format_ = OH_AVFormat_Create();
1161 EXPECT_NE(nullptr, format_);
1162 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), MAX_CHANNEL_COUNT);
1163 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), AMRNB_SAMPLE_RATE);
1164 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_MAX_INPUT_SIZE.data(), ABNORMAL_MAX_INPUT_SIZE);
1165 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Configure(audioDec_, format_));
1166
1167 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1168 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1169 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Start(audioDec_));
1170 {
1171 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002341702() 1172 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1173 }
1174 Release();
1175 }
1176
1177 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_Stop_01, TestSize.Level1)
1178 {
1179 if (!CheckSoFunc()) {
1180 return;
1181 }
1182 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_OPUS_NAME));
1183 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1184 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_OPUS_NAME));
1185 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1186 sleep(1);
1187
1188 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1189 Release();
1190 }
1191
1192 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_Flush_01, TestSize.Level1)
1193 {
1194 if (!CheckSoFunc()) {
1195 return;
1196 }
1197 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_OPUS_NAME));
1198 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1199 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_OPUS_NAME));
1200 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1201 {
1202 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002341802() 1203 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1204 }
1205 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Flush(audioDec_));
1206 Release();
1207 }
1208
1209 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_Reset_01, TestSize.Level1)
1210 {
1211 if (!CheckSoFunc()) {
1212 return;
1213 }
1214 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1215 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_OPUS_NAME));
1216 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
1217 Release();
1218 }
1219
1220 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_Reset_02, TestSize.Level1)
1221 {
1222 if (!CheckSoFunc()) {
1223 return;
1224 }
1225 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_OPUS_NAME));
1226 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1227 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_OPUS_NAME));
1228 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1229 {
1230 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002341902() 1231 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1232 }
1233 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1234 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
1235 Release();
1236 }
1237
1238 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_Reset_03, TestSize.Level1)
1239 {
1240 if (!CheckSoFunc()) {
1241 return;
1242 }
1243 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_OPUS_NAME));
1244 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1245 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_OPUS_NAME));
1246 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1247 {
1248 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002341a02() 1249 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1250 }
1251 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
1252 Release();
1253 }
1254
1255 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_Destroy_01, TestSize.Level1)
1256 {
1257 if (!CheckSoFunc()) {
1258 return;
1259 }
1260 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_OPUS_NAME));
1261 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1262 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_OPUS_NAME));
1263 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1264 {
1265 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002341b02() 1266 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1267 }
1268 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1269 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Destroy(audioDec_));
1270 }
1271
1272 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_Destroy_02, TestSize.Level1)
1273 {
1274 if (!CheckSoFunc()) {
1275 return;
1276 }
1277 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_OPUS_NAME));
1278 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1279 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_OPUS_NAME));
1280
1281 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Destroy(audioDec_));
1282 }
1283
1284 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_GetOutputFormat_01, TestSize.Level1)
1285 {
1286 if (!CheckSoFunc()) {
1287 return;
1288 }
1289 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_OPUS_NAME));
1290 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1291 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_OPUS_NAME));
1292
1293 EXPECT_NE(nullptr, OH_AudioDecoder_GetOutputDescription(audioDec_));
1294 Release();
1295 }
1296
1297 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_IsValid_01, TestSize.Level1)
1298 {
1299 if (!CheckSoFunc()) {
1300 return;
1301 }
1302 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1303 bool isValid = false;
1304 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_IsValid(audioDec_, &isValid));
1305 Release();
1306 }
1307
1308 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_Prepare_01, TestSize.Level1)
1309 {
1310 if (!CheckSoFunc()) {
1311 return;
1312 }
1313 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1314 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Prepare(audioDec_));
1315 Release();
1316 }
1317
1318 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_PushInputData_01, TestSize.Level1)
1319 {
1320 if (!CheckSoFunc()) {
1321 return;
1322 }
1323 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_OPUS_NAME));
1324 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1325 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_OPUS_NAME));
1326 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1327
1328 // case0 传参异常
1329 uint32_t index = 0;
1330 OH_AVCodecBufferAttr attr;
1331 attr.pts = 0;
1332 attr.size = -1;
1333 attr.offset = 0;
1334 attr.flags = AVCODEC_BUFFER_FLAG_EOS;
1335 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_PushInputData(audioDec_, index, attr));
1336 Release();
1337 }
1338
1339 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Opus_ReleaseOutputBuffer_01, TestSize.Level1)
1340 {
1341 if (!CheckSoFunc()) {
1342 return;
1343 }
1344 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_OPUS_NAME));
1345 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_OPUS_NAME));
1346 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_OPUS_NAME));
1347 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1348
1349 // case0 传参异常
1350 uint32_t index = 1024;
1351 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_FreeOutputData(audioDec_, index));
1352 Release();
1353 }
1354
1355 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_CreateByMime_01, TestSize.Level1)
1356 {
1357 audioDec_ = OH_AudioDecoder_CreateByMime(AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AAC.data());
1358 EXPECT_NE(nullptr, audioDec_);
1359 Release();
1360 }
1361
1362 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_CreateByName_01, TestSize.Level1)
1363 {
1364 audioDec_ = OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_DECODER_AAC_NAME).data());
1365 EXPECT_NE(nullptr, audioDec_);
1366 Release();
1367 }
1368
1369 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_Configure_01, TestSize.Level1)
1370 {
1371 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1372 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AAC_NAME));
1373 Release();
1374 }
1375
1376 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_Configure_02, TestSize.Level1)
1377 {
1378 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1379 format_ = OH_AVFormat_Create();
1380 EXPECT_NE(nullptr, format_);
1381 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MIN_CHANNEL_COUNT);
1382 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1383 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(), DEFAULT_AAC_BITRATE);
1384 ASSERT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Configure(audioDec_, format_));
1385 Release();
1386 }
1387
1388 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_Configure_03, TestSize.Level1)
1389 {
1390 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1391 format_ = OH_AVFormat_Create();
1392 EXPECT_NE(nullptr, format_);
1393 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MAX_CHANNEL_COUNT);
1394 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1395 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(), DEFAULT_AAC_BITRATE);
1396 ASSERT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Configure(audioDec_, format_));
1397 Release();
1398 }
1399
1400 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_SetParameter_01, TestSize.Level1)
1401 {
1402 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AAC_NAME));
1403 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1404 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AAC_NAME));
1405 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1406 {
1407 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002341c02() 1408 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1409 }
1410 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Flush(audioDec_));
1411 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_SetParameter(audioDec_, format_));
1412 Release();
1413 }
1414
1415 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_SetParameter_02, TestSize.Level1)
1416 {
1417 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1418 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AAC_NAME));
1419 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_SetParameter(audioDec_, format_));
1420 Release();
1421 }
1422
1423 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_Start_01, TestSize.Level1)
1424 {
1425 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AAC_NAME));
1426 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1427 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AAC_NAME));
1428 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1429 {
1430 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002341d02() 1431 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1432 }
1433 Release();
1434 }
1435
1436 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_Start_02, TestSize.Level1)
1437 {
1438 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AAC_NAME));
1439 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1440 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AAC_NAME));
1441 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1442 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1443 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Start(audioDec_));
1444 {
1445 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002341e02() 1446 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1447 }
1448 Release();
1449 }
1450
1451 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_Start_03, TestSize.Level1)
1452 {
1453 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AAC_NAME));
1454 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1455 format_ = OH_AVFormat_Create();
1456 EXPECT_NE(nullptr, format_);
1457 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), MAX_CHANNEL_COUNT);
1458 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1459 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(), DEFAULT_AAC_BITRATE);
1460 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_MAX_INPUT_SIZE.data(), ABNORMAL_MAX_INPUT_SIZE);
1461 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Configure(audioDec_, format_));
1462
1463 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1464 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1465 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Start(audioDec_));
1466 {
1467 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002341f02() 1468 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1469 }
1470 Release();
1471 }
1472
1473 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_Stop_01, TestSize.Level1)
1474 {
1475 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AAC_NAME));
1476 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1477 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AAC_NAME));
1478 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1479 sleep(1);
1480
1481 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1482 Release();
1483 }
1484
1485 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_Flush_01, TestSize.Level1)
1486 {
1487 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AAC_NAME));
1488 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1489 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AAC_NAME));
1490 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1491 {
1492 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002342002() 1493 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1494 }
1495 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Flush(audioDec_));
1496 Release();
1497 }
1498
1499 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_Reset_01, TestSize.Level1)
1500 {
1501 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1502 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AAC_NAME));
1503 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
1504 Release();
1505 }
1506
1507 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_Reset_02, TestSize.Level1)
1508 {
1509 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AAC_NAME));
1510 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1511 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AAC_NAME));
1512 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1513 {
1514 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002342102() 1515 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1516 }
1517 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1518 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
1519 Release();
1520 }
1521
1522 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_Reset_03, TestSize.Level1)
1523 {
1524 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AAC_NAME));
1525 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1526 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AAC_NAME));
1527 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1528 {
1529 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002342202() 1530 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1531 }
1532 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
1533 Release();
1534 }
1535
1536 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_Destroy_01, TestSize.Level1)
1537 {
1538 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AAC_NAME));
1539 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1540 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AAC_NAME));
1541 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1542 {
1543 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002342302() 1544 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1545 }
1546 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1547 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Destroy(audioDec_));
1548 }
1549
1550 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_Destroy_02, TestSize.Level1)
1551 {
1552 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AAC_NAME));
1553 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1554 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AAC_NAME));
1555
1556 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Destroy(audioDec_));
1557 }
1558
1559 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_GetOutputFormat_01, TestSize.Level1)
1560 {
1561 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AAC_NAME));
1562 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1563 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AAC_NAME));
1564
1565 EXPECT_NE(nullptr, OH_AudioDecoder_GetOutputDescription(audioDec_));
1566 Release();
1567 }
1568
1569 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_IsValid_01, TestSize.Level1)
1570 {
1571 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1572 bool isValid = false;
1573 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_IsValid(audioDec_, &isValid));
1574 Release();
1575 }
1576
1577 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_Prepare_01, TestSize.Level1)
1578 {
1579 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1580 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Prepare(audioDec_));
1581 Release();
1582 }
1583
1584 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_PushInputData_01, TestSize.Level1)
1585 {
1586 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AAC_NAME));
1587 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1588 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AAC_NAME));
1589 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1590
1591 // case0 传参异常
1592 uint32_t index = 0;
1593 OH_AVCodecBufferAttr attr;
1594 attr.pts = 0;
1595 attr.size = -1;
1596 attr.offset = 0;
1597 attr.flags = AVCODEC_BUFFER_FLAG_EOS;
1598 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_PushInputData(audioDec_, index, attr));
1599 Release();
1600 }
1601
1602 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Aac_ReleaseOutputBuffer_01, TestSize.Level1)
1603 {
1604 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AAC_NAME));
1605 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AAC_NAME));
1606 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AAC_NAME));
1607 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1608
1609 // case0 传参异常
1610 uint32_t index = 1024;
1611 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_FreeOutputData(audioDec_, index));
1612 Release();
1613 }
1614
1615 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_CreateByMime_01, TestSize.Level1)
1616 {
1617 audioDec_ = OH_AudioDecoder_CreateByMime(AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_VORBIS.data());
1618 EXPECT_NE(nullptr, audioDec_);
1619 Release();
1620 }
1621
1622 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_CreateByName_01, TestSize.Level1)
1623 {
1624 audioDec_ = OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_DECODER_VORBIS_NAME).data());
1625 EXPECT_NE(nullptr, audioDec_);
1626 Release();
1627 }
1628
1629 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_Configure_01, TestSize.Level1)
1630 {
1631 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_VORBIS_NAME));
1632 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1633 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_VORBIS_NAME));
1634 Release();
1635 }
1636
1637 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_SetParameter_01, TestSize.Level1)
1638 {
1639 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_VORBIS_NAME));
1640 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1641 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_VORBIS_NAME));
1642 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1643 {
1644 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002342402() 1645 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1646 }
1647 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Flush(audioDec_));
1648 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_SetParameter(audioDec_, format_));
1649 Release();
1650 }
1651
1652 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_SetParameter_02, TestSize.Level1)
1653 {
1654 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_VORBIS_NAME));
1655 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1656 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_VORBIS_NAME));
1657 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_SetParameter(audioDec_, format_));
1658 Release();
1659 }
1660
1661 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_Start_01, TestSize.Level1)
1662 {
1663 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_VORBIS_NAME));
1664 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1665 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_VORBIS_NAME));
1666 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1667 {
1668 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002342502() 1669 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1670 }
1671 Release();
1672 }
1673
1674 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_Start_02, TestSize.Level1)
1675 {
1676 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_VORBIS_NAME));
1677 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1678 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_VORBIS_NAME));
1679 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1680 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1681 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Start(audioDec_));
1682 {
1683 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002342602() 1684 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1685 }
1686 Release();
1687 }
1688
1689 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_Stop_01, TestSize.Level1)
1690 {
1691 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_VORBIS_NAME));
1692 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1693 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_VORBIS_NAME));
1694 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1695 sleep(1);
1696
1697 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1698 Release();
1699 }
1700
1701 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_Flush_01, TestSize.Level1)
1702 {
1703 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_VORBIS_NAME));
1704 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1705 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_VORBIS_NAME));
1706 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1707 {
1708 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002342702() 1709 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1710 }
1711 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Flush(audioDec_));
1712 Release();
1713 }
1714
1715 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_Reset_01, TestSize.Level1)
1716 {
1717 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_VORBIS_NAME));
1718 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1719 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_VORBIS_NAME));
1720 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
1721 Release();
1722 }
1723
1724 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_Reset_02, TestSize.Level1)
1725 {
1726 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_VORBIS_NAME));
1727 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1728 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_VORBIS_NAME));
1729 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1730 {
1731 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002342802() 1732 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1733 }
1734 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1735 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
1736 Release();
1737 }
1738
1739 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_Reset_03, TestSize.Level1)
1740 {
1741 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_VORBIS_NAME));
1742 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1743 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_VORBIS_NAME));
1744 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1745 {
1746 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002342902() 1747 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1748 }
1749 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
1750 Release();
1751 }
1752
1753 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_Destroy_01, TestSize.Level1)
1754 {
1755 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_VORBIS_NAME));
1756 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1757 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_VORBIS_NAME));
1758 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1759 {
1760 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002342a02() 1761 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1762 }
1763 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1764 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Destroy(audioDec_));
1765 }
1766
1767 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_Destroy_02, TestSize.Level1)
1768 {
1769 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_VORBIS_NAME));
1770 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1771 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_VORBIS_NAME));
1772
1773 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Destroy(audioDec_));
1774 }
1775
1776 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_GetOutputFormat_01, TestSize.Level1)
1777 {
1778 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_VORBIS_NAME));
1779 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1780 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_VORBIS_NAME));
1781
1782 EXPECT_NE(nullptr, OH_AudioDecoder_GetOutputDescription(audioDec_));
1783 Release();
1784 }
1785
1786 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_IsValid_01, TestSize.Level1)
1787 {
1788 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1789 bool isValid = false;
1790 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_IsValid(audioDec_, &isValid));
1791 Release();
1792 }
1793
1794 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_Prepare_01, TestSize.Level1)
1795 {
1796 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1797 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Prepare(audioDec_));
1798 Release();
1799 }
1800
1801 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_PushInputData_01, TestSize.Level1)
1802 {
1803 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_VORBIS_NAME));
1804 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1805 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_VORBIS_NAME));
1806 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1807
1808 // case0 传参异常
1809 uint32_t index = 0;
1810 OH_AVCodecBufferAttr attr;
1811 attr.pts = 0;
1812 attr.size = -1;
1813 attr.offset = 0;
1814 attr.flags = AVCODEC_BUFFER_FLAG_EOS;
1815 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_PushInputData(audioDec_, index, attr));
1816 Release();
1817 }
1818
1819 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Vorbis_ReleaseOutputBuffer_01, TestSize.Level1)
1820 {
1821 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_VORBIS_NAME));
1822 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1823 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_VORBIS_NAME));
1824 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1825
1826 // case0 传参异常
1827 uint32_t index = 1024;
1828 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_FreeOutputData(audioDec_, index));
1829 Release();
1830 }
1831
1832 HWTEST_F(AudioCodeCapiDecoderUnitTest, vorbisMissingHeader, TestSize.Level1)
1833 {
1834 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1835 format_ = OH_AVFormat_Create();
1836 EXPECT_NE(nullptr, format_);
1837 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), MAX_CHANNEL_COUNT);
1838 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1839 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_MAX_INPUT_SIZE.data(), ABNORMAL_MAX_INPUT_SIZE);
1840 EXPECT_EQ(OH_AVErrCode::AV_ERR_INVALID_VAL, OH_AudioDecoder_Configure(audioDec_, format_));
1841 Release();
1842 }
1843
1844 HWTEST_F(AudioCodeCapiDecoderUnitTest, vorbisMissingIdHeader, TestSize.Level1)
1845 {
1846 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1847 format_ = OH_AVFormat_Create();
1848 EXPECT_NE(nullptr, format_);
1849 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), MAX_CHANNEL_COUNT);
1850 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1851 uint8_t buffer[1];
1852 OH_AVFormat_SetBuffer(format_, MediaDescriptionKey::MD_KEY_IDENTIFICATION_HEADER.data(), buffer, 1);
1853 EXPECT_EQ(OH_AVErrCode::AV_ERR_INVALID_VAL, OH_AudioDecoder_Configure(audioDec_, format_));
1854 Release();
1855 }
1856
1857 HWTEST_F(AudioCodeCapiDecoderUnitTest, vorbisInvalidHeader, TestSize.Level1)
1858 {
1859 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_VORBIS_NAME));
1860 format_ = OH_AVFormat_Create();
1861 EXPECT_NE(nullptr, format_);
1862 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), MAX_CHANNEL_COUNT);
1863 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1864 uint8_t buffer[1];
1865 OH_AVFormat_SetBuffer(format_, MediaDescriptionKey::MD_KEY_IDENTIFICATION_HEADER.data(), buffer, 1);
1866 OH_AVFormat_SetBuffer(format_, MediaDescriptionKey::MD_KEY_SETUP_HEADER.data(), buffer, 1);
1867 EXPECT_EQ(OH_AVErrCode::AV_ERR_UNKNOWN, OH_AudioDecoder_Configure(audioDec_, format_));
1868 Release();
1869 }
1870
1871 HWTEST_F(AudioCodeCapiDecoderUnitTest, invalidDecoderNames, TestSize.Level1)
1872 {
1873 EXPECT_EQ(OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_ENCODER_FLAC_NAME).data()), nullptr);
1874 EXPECT_EQ(OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_ENCODER_AAC_NAME).data()), nullptr);
1875 EXPECT_EQ(OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_ENCODER_API9_AAC_NAME).data()), nullptr);
1876 }
1877
1878 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_CreateByMime_01, TestSize.Level1)
1879 {
1880 audioDec_ = OH_AudioDecoder_CreateByMime(AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AMRWB.data());
1881 EXPECT_NE(nullptr, audioDec_);
1882 Release();
1883 }
1884
1885 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_CreateByName_01, TestSize.Level1)
1886 {
1887 audioDec_ = OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_DECODER_AMRWB_NAME).data());
1888 EXPECT_NE(nullptr, audioDec_);
1889 Release();
1890 }
1891
1892 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_Configure_01, TestSize.Level1)
1893 {
1894 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
1895 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRWB_NAME));
1896 Release();
1897 }
1898
1899 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_Configure_02, TestSize.Level1)
1900 {
1901 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
1902 format_ = OH_AVFormat_Create();
1903 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), AMRWB_CHANNEL_COUNT);
1904 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), AMRWB_SAMPLE_RATE);
1905 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(), DEFAULT_AMRWB_BITRATE);
1906 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Configure(audioDec_, format_));
1907 Release();
1908 }
1909
1910 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_Configure_03, TestSize.Level1)
1911 {
1912 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
1913 format_ = OH_AVFormat_Create();
1914 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), -1); // set -1 for error test
1915 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), AMRWB_SAMPLE_RATE);
1916 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(), DEFAULT_AMRWB_BITRATE);
1917 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Configure(audioDec_, format_));
1918 Release();
1919 }
1920
1921 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_Configure_04, TestSize.Level1)
1922 {
1923 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
1924 format_ = OH_AVFormat_Create();
1925 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), AMRWB_CHANNEL_COUNT);
1926 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), -1); // set -1 for error test
1927 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(), DEFAULT_AMRWB_BITRATE);
1928 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Configure(audioDec_, format_));
1929 Release();
1930 }
1931
1932 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_SetParameter_01, TestSize.Level1)
1933 {
1934 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRWB_NAME));
1935 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
1936 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRWB_NAME));
1937 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1938 {
1939 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002342b02() 1940 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1941 }
1942 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Flush(audioDec_));
1943 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_SetParameter(audioDec_, format_));
1944 Release();
1945 }
1946
1947 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_SetParameter_02, TestSize.Level1)
1948 {
1949 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
1950 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRWB_NAME));
1951 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_SetParameter(audioDec_, format_));
1952 Release();
1953 }
1954
1955 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_Start_01, TestSize.Level1)
1956 {
1957 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRWB_NAME));
1958 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
1959 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRWB_NAME));
1960 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1961 {
1962 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002342c02() 1963 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1964 }
1965 Release();
1966 }
1967
1968 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_Start_02, TestSize.Level1)
1969 {
1970 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRWB_NAME));
1971 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
1972 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRWB_NAME));
1973 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1974 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1975 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Start(audioDec_));
1976 {
1977 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002342d02() 1978 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1979 }
1980 Release();
1981 }
1982
1983 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_Stop_01, TestSize.Level1)
1984 {
1985 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRWB_NAME));
1986 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
1987 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRWB_NAME));
1988 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1989 sleep(1);
1990
1991 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1992 Release();
1993 }
1994
1995 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_Flush_01, TestSize.Level1)
1996 {
1997 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRWB_NAME));
1998 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
1999 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRWB_NAME));
2000 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2001 {
2002 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002342e02() 2003 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2004 }
2005 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Flush(audioDec_));
2006 Release();
2007 }
2008
2009 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_Reset_01, TestSize.Level1)
2010 {
2011 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
2012 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRWB_NAME));
2013 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
2014 Release();
2015 }
2016
2017 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_Reset_02, TestSize.Level1)
2018 {
2019 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRWB_NAME));
2020 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
2021 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRWB_NAME));
2022 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2023 {
2024 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002342f02() 2025 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2026 }
2027 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2028 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
2029 Release();
2030 }
2031
2032 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_Reset_03, TestSize.Level1)
2033 {
2034 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRWB_NAME));
2035 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
2036 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRWB_NAME));
2037 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2038 {
2039 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002343002() 2040 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2041 }
2042 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
2043 Release();
2044 }
2045
2046 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_Destroy_01, TestSize.Level1)
2047 {
2048 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRWB_NAME));
2049 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
2050 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRWB_NAME));
2051 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2052 {
2053 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002343102() 2054 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2055 }
2056 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2057 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Destroy(audioDec_));
2058 }
2059
2060 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_Destroy_02, TestSize.Level1)
2061 {
2062 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRWB_NAME));
2063 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
2064 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRWB_NAME));
2065
2066 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Destroy(audioDec_));
2067 }
2068
2069 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_GetOutputFormat_01, TestSize.Level1)
2070 {
2071 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRWB_NAME));
2072 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
2073 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRWB_NAME));
2074
2075 EXPECT_NE(nullptr, OH_AudioDecoder_GetOutputDescription(audioDec_));
2076 Release();
2077 }
2078
2079 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_IsValid_01, TestSize.Level1)
2080 {
2081 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
2082 bool isValid = false;
2083 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_IsValid(audioDec_, &isValid));
2084 Release();
2085 }
2086
2087 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_Prepare_01, TestSize.Level1)
2088 {
2089 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
2090 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Prepare(audioDec_));
2091 Release();
2092 }
2093
2094 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_PushInputData_01, TestSize.Level1)
2095 {
2096 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRWB_NAME));
2097 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
2098 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRWB_NAME));
2099 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2100
2101 // case0 传参异常
2102 uint32_t index = 0;
2103 OH_AVCodecBufferAttr attr;
2104 attr.pts = 0;
2105 attr.size = -1;
2106 attr.offset = 0;
2107 attr.flags = AVCODEC_BUFFER_FLAG_EOS;
2108 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_PushInputData(audioDec_, index, attr));
2109 Release();
2110 }
2111
2112 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrwb_ReleaseOutputBuffer_01, TestSize.Level1)
2113 {
2114 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRWB_NAME));
2115 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRWB_NAME));
2116 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRWB_NAME));
2117 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2118
2119 // case0 传参异常
2120 uint32_t index = 1024;
2121 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_FreeOutputData(audioDec_, index));
2122 Release();
2123 }
2124
2125 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_CreateByMime_01, TestSize.Level1)
2126 {
2127 audioDec_ = OH_AudioDecoder_CreateByMime(AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AMRNB.data());
2128 EXPECT_NE(nullptr, audioDec_);
2129 Release();
2130 }
2131
2132 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_CreateByName_01, TestSize.Level1)
2133 {
2134 audioDec_ = OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_DECODER_AMRNB_NAME).data());
2135 EXPECT_NE(nullptr, audioDec_);
2136 Release();
2137 }
2138
2139 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_Configure_01, TestSize.Level1)
2140 {
2141 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2142 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRNB_NAME));
2143 Release();
2144 }
2145
2146 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_Configure_02, TestSize.Level1)
2147 {
2148 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2149 format_ = OH_AVFormat_Create();
2150 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), AMRNB_CHANNEL_COUNT);
2151 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), AMRNB_SAMPLE_RATE);
2152 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(), DEFAULT_AMRNB_BITRATE);
2153 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Configure(audioDec_, format_));
2154 Release();
2155 }
2156
2157 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_Configure_03, TestSize.Level1)
2158 {
2159 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2160 format_ = OH_AVFormat_Create();
2161 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), -1); // set -1 for error test
2162 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), AMRNB_SAMPLE_RATE);
2163 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(), DEFAULT_AMRNB_BITRATE);
2164 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Configure(audioDec_, format_));
2165 Release();
2166 }
2167
2168 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_Configure_04, TestSize.Level1)
2169 {
2170 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2171 format_ = OH_AVFormat_Create();
2172 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), AMRNB_CHANNEL_COUNT);
2173 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), -1); // set -1 for error test
2174 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(), DEFAULT_AMRNB_BITRATE);
2175 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Configure(audioDec_, format_));
2176 Release();
2177 }
2178
2179 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_SetParameter_01, TestSize.Level1)
2180 {
2181 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRNB_NAME));
2182 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2183 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRNB_NAME));
2184 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2185 {
2186 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002343202() 2187 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2188 }
2189 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Flush(audioDec_));
2190 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_SetParameter(audioDec_, format_));
2191 Release();
2192 }
2193
2194 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_SetParameter_02, TestSize.Level1)
2195 {
2196 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2197 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRNB_NAME));
2198 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_SetParameter(audioDec_, format_));
2199 Release();
2200 }
2201
2202 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_Start_01, TestSize.Level1)
2203 {
2204 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRNB_NAME));
2205 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2206 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRNB_NAME));
2207 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2208 {
2209 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002343302() 2210 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2211 }
2212 Release();
2213 }
2214
2215 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_Start_02, TestSize.Level1)
2216 {
2217 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRNB_NAME));
2218 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2219 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRNB_NAME));
2220 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2221 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2222 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Start(audioDec_));
2223 {
2224 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002343402() 2225 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2226 }
2227 Release();
2228 }
2229
2230 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_Stop_01, TestSize.Level1)
2231 {
2232 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRNB_NAME));
2233 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2234 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRNB_NAME));
2235 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2236 sleep(1);
2237
2238 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2239 Release();
2240 }
2241
2242 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_Flush_01, TestSize.Level1)
2243 {
2244 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRNB_NAME));
2245 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2246 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRNB_NAME));
2247 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2248 {
2249 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002343502() 2250 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2251 }
2252 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Flush(audioDec_));
2253 Release();
2254 }
2255
2256 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_Reset_01, TestSize.Level1)
2257 {
2258 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2259 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRNB_NAME));
2260 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
2261 Release();
2262 }
2263
2264 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_Reset_02, TestSize.Level1)
2265 {
2266 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRNB_NAME));
2267 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2268 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRNB_NAME));
2269 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2270 {
2271 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002343602() 2272 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2273 }
2274 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2275 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
2276 Release();
2277 }
2278
2279 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_Reset_03, TestSize.Level1)
2280 {
2281 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRNB_NAME));
2282 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2283 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRNB_NAME));
2284 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2285 {
2286 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002343702() 2287 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2288 }
2289 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
2290 Release();
2291 }
2292
2293 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_Destroy_01, TestSize.Level1)
2294 {
2295 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRNB_NAME));
2296 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2297 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRNB_NAME));
2298 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2299 {
2300 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002343802() 2301 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2302 }
2303 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2304 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Destroy(audioDec_));
2305 }
2306
2307 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_Destroy_02, TestSize.Level1)
2308 {
2309 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRNB_NAME));
2310 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2311 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRNB_NAME));
2312
2313 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Destroy(audioDec_));
2314 }
2315
2316 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_GetOutputFormat_01, TestSize.Level1)
2317 {
2318 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRNB_NAME));
2319 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2320 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRNB_NAME));
2321
2322 EXPECT_NE(nullptr, OH_AudioDecoder_GetOutputDescription(audioDec_));
2323 Release();
2324 }
2325
2326 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_IsValid_01, TestSize.Level1)
2327 {
2328 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2329 bool isValid = false;
2330 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_IsValid(audioDec_, &isValid));
2331 Release();
2332 }
2333
2334 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_Prepare_01, TestSize.Level1)
2335 {
2336 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2337 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Prepare(audioDec_));
2338 Release();
2339 }
2340
2341 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_PushInputData_01, TestSize.Level1)
2342 {
2343 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRNB_NAME));
2344 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2345 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRNB_NAME));
2346 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2347
2348 // case0 传参异常
2349 uint32_t index = 0;
2350 OH_AVCodecBufferAttr attr;
2351 attr.pts = 0;
2352 attr.size = -1;
2353 attr.offset = 0;
2354 attr.flags = AVCODEC_BUFFER_FLAG_EOS;
2355 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_PushInputData(audioDec_, index, attr));
2356 Release();
2357 }
2358
2359 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_Amrnb_ReleaseOutputBuffer_01, TestSize.Level1)
2360 {
2361 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_AMRNB_NAME));
2362 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_AMRNB_NAME));
2363 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_AMRNB_NAME));
2364 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2365
2366 // case0 传参异常
2367 uint32_t index = 1024;
2368 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_FreeOutputData(audioDec_, index));
2369 Release();
2370 }
2371
2372 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_CreateByMime_01, TestSize.Level1)
2373 {
2374 audioDec_ = OH_AudioDecoder_CreateByMime(AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_G711MU.data());
2375 EXPECT_NE(nullptr, audioDec_);
2376 Release();
2377 }
2378
2379 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_CreateByName_01, TestSize.Level1)
2380 {
2381 audioDec_ = OH_AudioDecoder_CreateByName((AVCodecCodecName::AUDIO_DECODER_G711MU_NAME).data());
2382 EXPECT_NE(nullptr, audioDec_);
2383 Release();
2384 }
2385
2386 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_Configure_01, TestSize.Level1)
2387 {
2388 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_G711MU_NAME));
2389 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_G711MU_NAME));
2390 Release();
2391 }
2392
2393 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_SetParameter_01, TestSize.Level1)
2394 {
2395 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_G711MU_NAME));
2396 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_G711MU_NAME));
2397 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_G711MU_NAME));
2398 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2399 {
2400 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002343902() 2401 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2402 }
2403 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Flush(audioDec_));
2404 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_SetParameter(audioDec_, format_));
2405 Release();
2406 }
2407
2408 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_SetParameter_02, TestSize.Level1)
2409 {
2410 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_G711MU_NAME));
2411 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_G711MU_NAME));
2412 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_SetParameter(audioDec_, format_));
2413 Release();
2414 }
2415
2416 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_Start_01, TestSize.Level1)
2417 {
2418 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_G711MU_NAME));
2419 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_G711MU_NAME));
2420 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_G711MU_NAME));
2421 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2422 {
2423 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002343a02() 2424 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2425 }
2426 Release();
2427 }
2428
2429 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_Start_02, TestSize.Level1)
2430 {
2431 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_G711MU_NAME));
2432 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_G711MU_NAME));
2433 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_G711MU_NAME));
2434 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2435 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2436 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Start(audioDec_));
2437 {
2438 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002343b02() 2439 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2440 }
2441 Release();
2442 }
2443
2444 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_Stop_01, TestSize.Level1)
2445 {
2446 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_G711MU_NAME));
2447 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_G711MU_NAME));
2448 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_G711MU_NAME));
2449 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2450 sleep(1);
2451
2452 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2453 Release();
2454 }
2455
2456 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_Flush_01, TestSize.Level1)
2457 {
2458 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_G711MU_NAME));
2459 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_G711MU_NAME));
2460 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_G711MU_NAME));
2461 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2462 {
2463 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002343c02() 2464 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2465 }
2466 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Flush(audioDec_));
2467 Release();
2468 }
2469
2470 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_Reset_01, TestSize.Level1)
2471 {
2472 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_G711MU_NAME));
2473 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_G711MU_NAME));
2474 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
2475 Release();
2476 }
2477
2478 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_Reset_02, TestSize.Level1)
2479 {
2480 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_G711MU_NAME));
2481 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_G711MU_NAME));
2482 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_G711MU_NAME));
2483 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2484 {
2485 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002343d02() 2486 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2487 }
2488 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2489 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
2490 Release();
2491 }
2492
2493 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_Reset_03, TestSize.Level1)
2494 {
2495 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_G711MU_NAME));
2496 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_G711MU_NAME));
2497 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_G711MU_NAME));
2498 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2499 {
2500 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002343e02() 2501 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2502 }
2503 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Reset(audioDec_));
2504 Release();
2505 }
2506
2507 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_Destroy_01, TestSize.Level1)
2508 {
2509 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_G711MU_NAME));
2510 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_G711MU_NAME));
2511 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_G711MU_NAME));
2512 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2513 {
2514 unique_lock<mutex> lock(signal_->startMutex_);
__anon34f002343f02() 2515 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2516 }
2517 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2518 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Destroy(audioDec_));
2519 }
2520
2521 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_Destroy_02, TestSize.Level1)
2522 {
2523 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_G711MU_NAME));
2524 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_G711MU_NAME));
2525 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_G711MU_NAME));
2526
2527 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Destroy(audioDec_));
2528 }
2529
2530 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_GetOutputFormat_01, TestSize.Level1)
2531 {
2532 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_G711MU_NAME));
2533 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_G711MU_NAME));
2534 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_G711MU_NAME));
2535
2536 EXPECT_NE(nullptr, OH_AudioDecoder_GetOutputDescription(audioDec_));
2537 Release();
2538 }
2539
2540 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_IsValid_01, TestSize.Level1)
2541 {
2542 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_G711MU_NAME));
2543 bool isValid = false;
2544 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_IsValid(audioDec_, &isValid));
2545 Release();
2546 }
2547
2548 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_Prepare_01, TestSize.Level1)
2549 {
2550 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_G711MU_NAME));
2551 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_Prepare(audioDec_));
2552 Release();
2553 }
2554
2555 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_PushInputData_01, TestSize.Level1)
2556 {
2557 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_G711MU_NAME));
2558 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_G711MU_NAME));
2559 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_G711MU_NAME));
2560 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2561
2562 // case0 传参异常
2563 uint32_t index = 0;
2564 OH_AVCodecBufferAttr attr;
2565 attr.pts = 0;
2566 attr.size = -1;
2567 attr.offset = 0;
2568 attr.flags = AVCODEC_BUFFER_FLAG_EOS;
2569 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_PushInputData(audioDec_, index, attr));
2570 Release();
2571 }
2572
2573 HWTEST_F(AudioCodeCapiDecoderUnitTest, audioDecoder_G711mu_ReleaseOutputBuffer_01, TestSize.Level1)
2574 {
2575 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(CODEC_G711MU_NAME));
2576 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(CODEC_G711MU_NAME));
2577 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(CODEC_G711MU_NAME));
2578 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2579
2580 // case0 传参异常
2581 uint32_t index = 1024;
2582 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioDecoder_FreeOutputData(audioDec_, index));
2583 Release();
2584 }
2585 } // namespace MediaAVCodec
2586 } // namespace OHOS