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 <queue>
17 #include <mutex>
18 #include <gtest/gtest.h>
19 #include <iostream>
20 #include <unistd.h>
21 #include <atomic>
22 #include <fstream>
23 #include <string>
24 #include <thread>
25 #include "avcodec_codec_name.h"
26 #include "avcodec_common.h"
27 #include "avcodec_errors.h"
28 #include "avcodec_mime_type.h"
29 #include "media_description.h"
30 #include "native_avcodec_base.h"
31 #include "native_avformat.h"
32 #include "avcodec_common.h"
33 #include "avcodec_errors.h"
34 #include "securec.h"
35 #include "avcodec_audio_common.h"
36 #include "native_avbuffer.h"
37 #include "common/native_mfmagic.h"
38 #include "native_avcodec_audiocodec.h"
39 #include "native_audio_channel_layout.h"
40 #include "media_key_system_mock.h"
41 #include "native_avcapability.h"
42
43 using namespace std;
44 using namespace testing::ext;
45 using namespace OHOS::MediaAVCodec;
46
47 namespace {
48 constexpr uint32_t DEFAULT_CHANNEL_COUNT = 2;
49 constexpr uint32_t DEFAULT_SAMPLE_RATE = 44100;
50 constexpr uint32_t ABNORMAL_SAMPLE_RATE = 999999;
51 constexpr uint32_t FLAC_192K_SAMPLE_RATE = 192000;
52 constexpr uint32_t DEFAULT_AAC_TYPE = 1;
53 constexpr uint32_t ABNORMAL_AAC_TYPE = 999999;
54 constexpr int32_t DEFAULT_SAMPLE_FORMAT = AudioSampleFormat::SAMPLE_S16LE;
55 constexpr int32_t ABNORMAL_SAMPLE_FORMAT = AudioSampleFormat::INVALID_WIDTH;
56 constexpr int32_t FLAC_S24_SAMPLE_FORMAT = AudioSampleFormat::SAMPLE_S24LE;
57 constexpr int64_t BITS_RATE[7] = {199000, 261000, 60000, 320000};
58 constexpr uint32_t AMRWB_SAMPLE_RATE = 16000;
59 constexpr uint32_t SAMPLE_RATE_8K = 8000;
60 constexpr uint32_t ONE_CHANNEL_COUNT = 1;
61 constexpr uint32_t ABNORMAL_MAX_CHANNEL_COUNT = 999999;
62 constexpr uint32_t ABNORMAL_MIN_CHANNEL_COUNT = 0;
63 constexpr uint32_t ABNORMAL_MAX_INPUT_SIZE = 99999999;
64 constexpr uint64_t CHANNEL_LAYOUT = OH_AudioChannelLayout::CH_LAYOUT_STEREO;
65 constexpr uint64_t ABNORMAL_CHANNEL_LAYOUT = OH_AudioChannelLayout::CH_LAYOUT_5POINT1POINT2;
66 constexpr string_view INPUT_AAC_FILE_PATH = "/data/test/media/aac_2c_44100hz_199k.dat";
67 constexpr string_view OUTPUT_AAC_PCM_FILE_PATH = "/data/test/media/aac_2c_44100hz_199k.pcm";
68 constexpr string_view INPUT_FLAC_FILE_PATH = "/data/test/media/flac_2c_44100hz_261k.dat";
69 constexpr string_view OUTPUT_FLAC_PCM_FILE_PATH = "/data/test/media/flac_2c_44100hz_261k.pcm";
70 constexpr string_view INPUT_FLAC_192K_FILE_PATH = "/data/test/media/FLAC_192k_2c_xxkb.dat";
71 constexpr string_view OUTPUT_FLAC_192K_PCM_FILE_PATH = "/data/test/media/FLAC_192k_2c_xxkb.pcm";
72 constexpr string_view INPUT_MP3_FILE_PATH = "/data/test/media/mp3_2c_44100hz_60k.dat";
73 constexpr string_view OUTPUT_MP3_PCM_FILE_PATH = "/data/test/media/mp3_2c_44100hz_60k.pcm";
74 constexpr string_view INPUT_VORBIS_FILE_PATH = "/data/test/media/vorbis_2c_44100hz_320k.dat";
75 constexpr string_view OUTPUT_VORBIS_PCM_FILE_PATH = "/data/test/media/vorbis_2c_44100hz_320k.pcm";
76 constexpr string_view INPUT_AMRNB_FILE_PATH = "/data/test/media/voice_amrnb_12200.dat";
77 constexpr string_view OUTPUT_AMRNB_PCM_FILE_PATH = "/data/test/media/voice_amrnb_12200.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_G711MU_FILE_PATH = "/data/test/media/g711mu_8kHz.dat";
81 constexpr string_view OUTPUT_G711MU_PCM_FILE_PATH = "/data/test/media/g711mu_8kHz_decode.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/opus_decode.pcm";
84 constexpr string_view INPUT_APE_FILE_PATH = "/data/test/media/voice_ape.dat";
85 constexpr string_view OUTPUT_APE_PCM_FILE_PATH = "/data/test/media/ape_decode.pcm";
86 constexpr string_view INPUT_COOK_FILE_PATH = "/data/test/media/voice_cook.dat";
87 constexpr string_view OUTPUT_COOK_PCM_FILE_PATH = "/data/test/media/cook_decode.pcm";
88 constexpr string_view INPUT_AC3_FILE_PATH = "/data/test/media/voice_ac3.dat";
89 constexpr string_view OUTPUT_AC3_PCM_FILE_PATH = "/data/test/media/ac3_decode.pcm";
90 constexpr string_view INPUT_AAC_LC_ADTS_FILE_PATH = "/data/test/media/aac_2c_44100hz_199k_lc.dat";
91 constexpr string_view OUTPUT_AAC_LC_ADTS_FILE_PATH = "/data/test/media/aac_2c_44100hz_199k_lc.pcm";
92 constexpr string_view INPUT_AAC_HE_ADTS_FILE_PATH = "/data/test/media/aac_2c_44100hz_199k_he.dat";
93 constexpr string_view OUTPUT_AAC_HE_ADTS_FILE_PATH = "/data/test/media/aac_2c_44100hz_199k_he.pcm";
94 constexpr string_view INPUT_AAC_HEV2_ADTS_FILE_PATH = "/data/test/media/aac_2c_44100hz_199k_hev2.dat";
95 constexpr string_view OUTPUT_AAC_HEV2_ADTS_FILE_PATH = "/data/test/media/aac_2c_44100hz_199k_hev2.pcm";
96 const string OPUS_SO_FILE_PATH = std::string(AV_CODEC_PATH) + "/libav_codec_ext_base.z.so";
97 } // namespace
98
99 namespace OHOS {
100 namespace MediaAVCodec {
101 enum class AudioBufferFormatType : int32_t {
102 TYPE_AAC = 0,
103 TYPE_FLAC = 1,
104 TYPE_MP3 = 2,
105 TYPE_VORBIS = 3,
106 TYPE_AMRNB = 4,
107 TYPE_AMRWB = 5,
108 TYPE_G711MU = 6,
109 TYPE_OPUS = 7,
110 TYPE_APE = 8,
111 TYPE_COOK = 9,
112 TYPE_AC3 = 10,
113 TYPE_MAX = 20,
114 };
115
116 class AudioCodecBufferSignal {
117 public:
118 std::mutex inMutex_;
119 std::mutex outMutex_;
120 std::mutex startMutex_;
121 std::condition_variable inCond_;
122 std::condition_variable outCond_;
123 std::condition_variable startCond_;
124 std::queue<uint32_t> inQueue_;
125 std::queue<uint32_t> outQueue_;
126 std::queue<OH_AVBuffer *> inBufferQueue_;
127 std::queue<OH_AVBuffer *> outBufferQueue_;
128 };
129
130 static uint32_t g_outputFormatChangedTimes = 0;
131 static int32_t g_outputSampleRate = 0;
132 static int32_t g_outputChannels = 0;
133
OnError(OH_AVCodec * codec,int32_t errorCode,void * userData)134 static void OnError(OH_AVCodec *codec, int32_t errorCode, void *userData)
135 {
136 (void)codec;
137 (void)errorCode;
138 (void)userData;
139 cout << "Error received, errorCode:" << errorCode << endl;
140 }
141
OnOutputFormatChanged(OH_AVCodec * codec,OH_AVFormat * format,void * userData)142 static void OnOutputFormatChanged(OH_AVCodec *codec, OH_AVFormat *format, void *userData)
143 {
144 (void)codec;
145 (void)userData;
146 g_outputFormatChangedTimes++;
147 OH_AVFormat_GetIntValue(format, OH_MD_KEY_AUD_CHANNEL_COUNT, &g_outputChannels);
148 OH_AVFormat_GetIntValue(format, OH_MD_KEY_AUD_SAMPLE_RATE, &g_outputSampleRate);
149 cout << "OnOutputFormatChanged received, rate:" << g_outputSampleRate << ",channel:" << g_outputChannels << endl;
150 }
151
OnInputBufferAvailable(OH_AVCodec * codec,uint32_t index,OH_AVBuffer * data,void * userData)152 static void OnInputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVBuffer *data, void *userData)
153 {
154 (void)codec;
155 AudioCodecBufferSignal *signal = static_cast<AudioCodecBufferSignal *>(userData);
156 unique_lock<mutex> lock(signal->inMutex_);
157 signal->inQueue_.push(index);
158 signal->inBufferQueue_.push(data);
159 signal->inCond_.notify_all();
160 }
161
OnOutputBufferAvailable(OH_AVCodec * codec,uint32_t index,OH_AVBuffer * data,void * userData)162 static void OnOutputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVBuffer *data, void *userData)
163 {
164 (void)codec;
165 AudioCodecBufferSignal *signal = static_cast<AudioCodecBufferSignal *>(userData);
166 unique_lock<mutex> lock(signal->outMutex_);
167 signal->outQueue_.push(index);
168 signal->outBufferQueue_.push(data);
169 signal->outCond_.notify_all();
170 }
171
172 class AudioDecoderBufferCapiUnitTest : public testing::Test {
173 public:
174 static void SetUpTestCase(void);
175 static void TearDownTestCase(void);
176 void SetUp();
177 void TearDown();
178 bool ReadBuffer(OH_AVBuffer *buffer, uint32_t index);
179 int32_t InitFile(AudioBufferFormatType audioType);
180 int32_t InitFile(string_view input, string_view output);
181 void InputFunc();
182 void OutputFunc();
183 int32_t CreateCodecFunc(AudioBufferFormatType audioType);
184 int32_t CheckSoFunc();
185 void HandleInputEOS(const uint32_t index);
186 int32_t Configure(AudioBufferFormatType audioType);
187 void SetTestingFormat(AudioBufferFormatType audioType);
188 int32_t Start();
189 int32_t Stop();
190 void Release();
191
192 protected:
193 std::atomic<bool> isRunning_ = false;
194 std::unique_ptr<std::thread> inputLoop_;
195 std::unique_ptr<std::thread> outputLoop_;
196 struct OH_AVCodecCallback cb_;
197 AudioCodecBufferSignal *signal_ = nullptr;
198 OH_AVCodec *audioDec_ = nullptr;
199 OH_AVFormat *format_ = nullptr;
200 bool isTestingFormat_ = false;
201 bool isFirstFrame_ = true;
202 uint32_t frameCount_ = 0;
203 std::ifstream inputFile_;
204 std::unique_ptr<std::ifstream> soFile_;
205 std::ofstream pcmOutputFile_;
206 };
207
SetUpTestCase(void)208 void AudioDecoderBufferCapiUnitTest::SetUpTestCase(void)
209 {
210 cout << "[SetUpTestCase]: " << endl;
211 }
212
TearDownTestCase(void)213 void AudioDecoderBufferCapiUnitTest::TearDownTestCase(void)
214 {
215 cout << "[TearDownTestCase]: " << endl;
216 }
217
SetUp(void)218 void AudioDecoderBufferCapiUnitTest::SetUp(void)
219 {
220 g_outputFormatChangedTimes = 0;
221 g_outputSampleRate = 0;
222 g_outputChannels = 0;
223 cout << "[SetUp]: SetUp!!!" << endl;
224 }
225
TearDown(void)226 void AudioDecoderBufferCapiUnitTest::TearDown(void)
227 {
228 if (isTestingFormat_) {
229 EXPECT_EQ(g_outputFormatChangedTimes, 1);
230 } else {
231 EXPECT_EQ(g_outputFormatChangedTimes, 0);
232 }
233 cout << "[TearDown]: over!!!" << endl;
234
235 if (signal_) {
236 delete signal_;
237 signal_ = nullptr;
238 }
239 if (inputFile_.is_open()) {
240 inputFile_.close();
241 }
242 if (pcmOutputFile_.is_open()) {
243 pcmOutputFile_.close();
244 }
245
246 if (format_ != nullptr) {
247 OH_AVFormat_Destroy(format_);
248 format_ = nullptr;
249 }
250 }
251
Release()252 void AudioDecoderBufferCapiUnitTest::Release()
253 {
254 Stop();
255 OH_AudioCodec_Destroy(audioDec_);
256 }
257
HandleInputEOS(const uint32_t index)258 void AudioDecoderBufferCapiUnitTest::HandleInputEOS(const uint32_t index)
259 {
260 std::cout << "end buffer\n";
261 OH_AudioCodec_PushInputBuffer(audioDec_, index);
262 signal_->inBufferQueue_.pop();
263 signal_->inQueue_.pop();
264 }
265
ReadBuffer(OH_AVBuffer * buffer,uint32_t index)266 bool AudioDecoderBufferCapiUnitTest::ReadBuffer(OH_AVBuffer *buffer, uint32_t index)
267 {
268 int64_t size;
269 int64_t pts;
270 inputFile_.read(reinterpret_cast<char *>(&size), sizeof(size));
271 if (inputFile_.eof() || inputFile_.gcount() == 0 || size == 0) {
272 buffer->buffer_->memory_->SetSize(1);
273 buffer->buffer_->flag_ = AVCODEC_BUFFER_FLAGS_EOS;
274 HandleInputEOS(index);
275 cout << "Set EOS" << endl;
276 return false;
277 }
278
279 if (inputFile_.gcount() != sizeof(size)) {
280 cout << "Fatal: read size fail" << endl;
281 return false;
282 }
283
284 inputFile_.read(reinterpret_cast<char *>(&buffer->buffer_->pts_), sizeof(buffer->buffer_->pts_));
285 if (inputFile_.gcount() != sizeof(pts)) {
286 cout << "Fatal: read size fail" << endl;
287 return false;
288 }
289
290 inputFile_.read((char *)OH_AVBuffer_GetAddr(buffer), size);
291 buffer->buffer_->memory_->SetSize(size);
292 if (inputFile_.gcount() != size) {
293 cout << "Fatal: read buffer fail" << endl;
294 return false;
295 }
296
297 return true;
298 }
299
InputFunc()300 void AudioDecoderBufferCapiUnitTest::InputFunc()
301 {
302 while (isRunning_.load()) {
303 unique_lock<mutex> lock(signal_->inMutex_);
304 signal_->inCond_.wait(lock, [this]() { return (signal_->inQueue_.size() > 0 || !isRunning_.load()); });
305
306 if (!isRunning_.load()) {
307 break;
308 }
309
310 uint32_t index = signal_->inQueue_.front();
311 auto buffer = signal_->inBufferQueue_.front();
312 if (buffer == nullptr) {
313 cout << "Fatal: GetInputBuffer fail" << endl;
314 break;
315 }
316 if (ReadBuffer(buffer, index) == false) {
317 break;
318 }
319
320 int32_t ret;
321 if (isFirstFrame_) {
322 buffer->buffer_->flag_ = AVCODEC_BUFFER_FLAGS_CODEC_DATA;
323 ret = OH_AudioCodec_PushInputBuffer(audioDec_, index);
324 isFirstFrame_ = false;
325 } else {
326 buffer->buffer_->flag_ = AVCODEC_BUFFER_FLAGS_NONE;
327 ret = OH_AudioCodec_PushInputBuffer(audioDec_, index);
328 }
329 signal_->inQueue_.pop();
330 signal_->inBufferQueue_.pop();
331 frameCount_++;
332 if (ret != AVCS_ERR_OK) {
333 cout << "Fatal error, exit" << endl;
334 break;
335 }
336 }
337 cout << "stop, exit" << endl;
338 inputFile_.close();
339 }
340
OutputFunc()341 void AudioDecoderBufferCapiUnitTest::OutputFunc()
342 {
343 if (!pcmOutputFile_.is_open()) {
344 std::cout << "open " << OUTPUT_MP3_PCM_FILE_PATH << " failed!" << std::endl;
345 }
346 while (isRunning_.load()) {
347 unique_lock<mutex> lock(signal_->outMutex_);
348 signal_->outCond_.wait(lock, [this]() { return (signal_->outQueue_.size() > 0 || !isRunning_.load()); });
349
350 if (!isRunning_.load()) {
351 cout << "wait to stop, exit" << endl;
352 break;
353 }
354
355 uint32_t index = signal_->outQueue_.front();
356 OH_AVBuffer *data = signal_->outBufferQueue_.front();
357
358 if (data == nullptr) {
359 cout << "OutputFunc OH_AVBuffer is nullptr" << endl;
360 continue;
361 }
362 pcmOutputFile_.write(reinterpret_cast<char *>(OH_AVBuffer_GetAddr(data)), data->buffer_->memory_->GetSize());
363
364 if (data != nullptr &&
365 (data->buffer_->flag_ == AVCODEC_BUFFER_FLAGS_EOS || data->buffer_->memory_->GetSize() == 0)) {
366 cout << "decode eos" << endl;
367 isRunning_.store(false);
368 signal_->startCond_.notify_all();
369 }
370 signal_->outBufferQueue_.pop();
371 signal_->outQueue_.pop();
372 if (OH_AudioCodec_FreeOutputBuffer(audioDec_, index) != AV_ERR_OK) {
373 cout << "Fatal: FreeOutputData fail" << endl;
374 break;
375 }
376
377 if (data->buffer_->flag_ == AVCODEC_BUFFER_FLAGS_EOS) {
378 cout << "decode eos" << endl;
379 isRunning_.store(false);
380 signal_->startCond_.notify_all();
381 }
382 }
383 cout << "stop, exit" << endl;
384 pcmOutputFile_.close();
385 }
386
Start()387 int32_t AudioDecoderBufferCapiUnitTest::Start()
388 {
389 isRunning_.store(true);
390 inputLoop_ = make_unique<thread>(&AudioDecoderBufferCapiUnitTest::InputFunc, this);
391 if (inputLoop_ == nullptr) {
392 cout << "Fatal: No memory" << endl;
393 return OH_AVErrCode::AV_ERR_UNKNOWN;
394 }
395
396 outputLoop_ = make_unique<thread>(&AudioDecoderBufferCapiUnitTest::OutputFunc, this);
397 if (outputLoop_ == nullptr) {
398 cout << "Fatal: No memory" << endl;
399 return OH_AVErrCode::AV_ERR_UNKNOWN;
400 }
401
402 return OH_AudioCodec_Start(audioDec_);
403 }
404
Stop()405 int32_t AudioDecoderBufferCapiUnitTest::Stop()
406 {
407 isRunning_.store(false);
408 if (inputLoop_ != nullptr && inputLoop_->joinable()) {
409 {
410 unique_lock<mutex> lock(signal_->inMutex_);
411 signal_->inCond_.notify_all();
412 }
413 inputLoop_->join();
414 inputLoop_ = nullptr;
415 while (!signal_->inQueue_.empty()) {
416 signal_->inQueue_.pop();
417 }
418 while (!signal_->inBufferQueue_.empty()) {
419 signal_->inBufferQueue_.pop();
420 }
421 }
422
423 if (outputLoop_ != nullptr && outputLoop_->joinable()) {
424 {
425 unique_lock<mutex> lock(signal_->outMutex_);
426 signal_->outCond_.notify_all();
427 }
428 outputLoop_->join();
429 outputLoop_ = nullptr;
430 while (!signal_->outQueue_.empty()) {
431 signal_->outQueue_.pop();
432 }
433 while (!signal_->outBufferQueue_.empty()) {
434 signal_->outBufferQueue_.pop();
435 }
436 }
437 std::cout << "start stop!\n";
438 return OH_AudioCodec_Stop(audioDec_);
439 }
440
InitFile(AudioBufferFormatType audioType)441 int32_t AudioDecoderBufferCapiUnitTest::InitFile(AudioBufferFormatType audioType)
442 {
443 if (audioType == AudioBufferFormatType::TYPE_AAC) {
444 inputFile_.open(INPUT_AAC_FILE_PATH, std::ios::binary);
445 pcmOutputFile_.open(OUTPUT_AAC_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
446 } else if (audioType == AudioBufferFormatType::TYPE_FLAC) {
447 inputFile_.open(INPUT_FLAC_FILE_PATH, std::ios::binary);
448 pcmOutputFile_.open(OUTPUT_FLAC_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
449 } else if (audioType == AudioBufferFormatType::TYPE_MP3) {
450 inputFile_.open(INPUT_MP3_FILE_PATH, std::ios::binary);
451 pcmOutputFile_.open(OUTPUT_MP3_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
452 } else if (audioType == AudioBufferFormatType::TYPE_VORBIS) {
453 inputFile_.open(INPUT_VORBIS_FILE_PATH, std::ios::binary);
454 pcmOutputFile_.open(OUTPUT_VORBIS_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
455 } else if (audioType == AudioBufferFormatType::TYPE_AMRNB) {
456 inputFile_.open(INPUT_AMRNB_FILE_PATH, std::ios::binary);
457 pcmOutputFile_.open(OUTPUT_AMRNB_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
458 } else if (audioType == AudioBufferFormatType::TYPE_AMRWB) {
459 inputFile_.open(INPUT_AMRWB_FILE_PATH, std::ios::binary);
460 pcmOutputFile_.open(OUTPUT_AMRWB_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
461 } else if (audioType == AudioBufferFormatType::TYPE_G711MU) {
462 inputFile_.open(INPUT_G711MU_FILE_PATH, std::ios::binary);
463 pcmOutputFile_.open(OUTPUT_G711MU_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
464 } else if (audioType == AudioBufferFormatType::TYPE_OPUS) {
465 inputFile_.open(INPUT_OPUS_FILE_PATH, std::ios::binary);
466 pcmOutputFile_.open(OUTPUT_OPUS_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
467 } else if (audioType == AudioBufferFormatType::TYPE_APE) {
468 inputFile_.open(INPUT_APE_FILE_PATH, std::ios::binary);
469 pcmOutputFile_.open(OUTPUT_APE_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
470 } else if (audioType == AudioBufferFormatType::TYPE_COOK) {
471 inputFile_.open(INPUT_COOK_FILE_PATH, std::ios::binary);
472 pcmOutputFile_.open(OUTPUT_COOK_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
473 } else if (audioType == AudioBufferFormatType::TYPE_AC3) {
474 inputFile_.open(INPUT_AC3_FILE_PATH, std::ios::binary);
475 pcmOutputFile_.open(OUTPUT_AC3_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
476 } else {
477 cout << "Fatal: audio format type not support" << endl;
478 return OH_AVErrCode::AV_ERR_UNKNOWN;
479 }
480
481 if (!inputFile_.is_open()) {
482 cout << "Fatal: open input file failed" << endl;
483 return OH_AVErrCode::AV_ERR_UNKNOWN;
484 }
485 if (!pcmOutputFile_.is_open()) {
486 cout << "Fatal: open output file failed" << endl;
487 return OH_AVErrCode::AV_ERR_UNKNOWN;
488 }
489 return OH_AVErrCode::AV_ERR_OK;
490 }
491
InitFile(string_view inputFilename,string_view outputFilename)492 int32_t AudioDecoderBufferCapiUnitTest::InitFile(string_view inputFilename, string_view outputFilename)
493 {
494 inputFile_.open(inputFilename, std::ios::binary);
495 if (!inputFile_.is_open()) {
496 cout << "Fatal: open input file failed:" << inputFilename << endl;
497 return OH_AVErrCode::AV_ERR_UNKNOWN;
498 }
499 pcmOutputFile_.open(outputFilename, std::ios::out | std::ios::binary);
500 if (!pcmOutputFile_.is_open()) {
501 cout << "Fatal: open output file failed" << outputFilename << endl;
502 inputFile_.close();
503 return OH_AVErrCode::AV_ERR_UNKNOWN;
504 }
505 return OH_AVErrCode::AV_ERR_OK;
506 }
507
CreateCodecFunc(AudioBufferFormatType audioType)508 int32_t AudioDecoderBufferCapiUnitTest::CreateCodecFunc(AudioBufferFormatType audioType)
509 {
510 if (audioType == AudioBufferFormatType::TYPE_MP3) {
511 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_MP3_NAME).data());
512 } else if (audioType == AudioBufferFormatType::TYPE_FLAC) {
513 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_FLAC_NAME).data());
514 } else if (audioType == AudioBufferFormatType::TYPE_AAC) {
515 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_AAC_NAME).data());
516 } else if (audioType == AudioBufferFormatType::TYPE_VORBIS) {
517 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_VORBIS_NAME).data());
518 } else if (audioType == AudioBufferFormatType::TYPE_AMRWB) {
519 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_AMRWB_NAME).data());
520 } else if (audioType == AudioBufferFormatType::TYPE_AMRNB) {
521 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_AMRNB_NAME).data());
522 } else if (audioType == AudioBufferFormatType::TYPE_G711MU) {
523 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_G711MU_NAME).data());
524 } else if (audioType == AudioBufferFormatType::TYPE_OPUS) {
525 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_OPUS_NAME).data());
526 } else if (audioType == AudioBufferFormatType::TYPE_APE) {
527 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_APE_NAME).data());
528 } else if (audioType == AudioBufferFormatType::TYPE_COOK) {
529 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_COOK_NAME).data());
530 } else if (audioType == AudioBufferFormatType::TYPE_AC3) {
531 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_AC3_NAME).data());
532 } else {
533 cout << "audio name not support" << endl;
534 return OH_AVErrCode::AV_ERR_UNKNOWN;
535 }
536
537 if (audioDec_ == nullptr) {
538 cout << "Fatal: CreateByName fail" << endl;
539 return OH_AVErrCode::AV_ERR_UNKNOWN;
540 }
541
542 signal_ = new AudioCodecBufferSignal();
543 if (signal_ == nullptr) {
544 cout << "Fatal: create signal fail" << endl;
545 return OH_AVErrCode::AV_ERR_UNKNOWN;
546 }
547 cb_ = {&OnError, &OnOutputFormatChanged, &OnInputBufferAvailable, &OnOutputBufferAvailable};
548 int32_t ret = OH_AudioCodec_RegisterCallback(audioDec_, cb_, signal_);
549 if (ret != OH_AVErrCode::AV_ERR_OK) {
550 cout << "Fatal: SetCallback fail" << endl;
551 return OH_AVErrCode::AV_ERR_UNKNOWN;
552 }
553
554 return OH_AVErrCode::AV_ERR_OK;
555 }
556
SetTestingFormat(AudioBufferFormatType audioType)557 void AudioDecoderBufferCapiUnitTest::SetTestingFormat(AudioBufferFormatType audioType)
558 {
559 if (!isTestingFormat_) {
560 OH_AVFormat_SetIntValue(format_, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, DEFAULT_SAMPLE_FORMAT);
561 return;
562 }
563 int32_t notMatchRate = 48000; // 48000 is valid for most codec but not match default
564 if (audioType == AudioBufferFormatType::TYPE_OPUS) {
565 OH_AVFormat_SetIntValue(format_, OH_MD_KEY_AUD_CHANNEL_COUNT, 1);
566 } else {
567 OH_AVFormat_SetIntValue(format_, OH_MD_KEY_AUD_SAMPLE_RATE, notMatchRate);
568 }
569 }
570
Configure(AudioBufferFormatType audioType)571 int32_t AudioDecoderBufferCapiUnitTest::Configure(AudioBufferFormatType audioType)
572 {
573 format_ = OH_AVFormat_Create();
574 if (format_ == nullptr) {
575 cout << "Fatal: create format failed" << endl;
576 return OH_AVErrCode::AV_ERR_UNKNOWN;
577 }
578 int32_t channelCount = DEFAULT_CHANNEL_COUNT;
579 int32_t sampleRate = DEFAULT_SAMPLE_RATE;
580 if (audioType == AudioBufferFormatType::TYPE_AAC) {
581 OH_AVFormat_SetIntValue(format_, OH_MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_TYPE);
582 } else if (audioType == AudioBufferFormatType::TYPE_AMRNB || audioType == AudioBufferFormatType::TYPE_G711MU ||
583 audioType == AudioBufferFormatType::TYPE_APE) {
584 channelCount = 1;
585 sampleRate = SAMPLE_RATE_8K;
586 } else if (audioType == AudioBufferFormatType::TYPE_AMRWB) {
587 channelCount = 1;
588 sampleRate = AMRWB_SAMPLE_RATE;
589 } else if (audioType == AudioBufferFormatType::TYPE_OPUS) {
590 channelCount = DEFAULT_CHANNEL_COUNT;
591 sampleRate = SAMPLE_RATE_8K;
592 }
593 OH_AVFormat_SetIntValue(format_, OH_MD_KEY_AUD_CHANNEL_COUNT, channelCount);
594 OH_AVFormat_SetIntValue(format_, OH_MD_KEY_AUD_SAMPLE_RATE, sampleRate);
595 OH_AVFormat_SetLongValue(format_, OH_MD_KEY_BITRATE, BITS_RATE[(uint32_t)audioType]);
596 if (audioType == AudioBufferFormatType::TYPE_VORBIS || audioType == AudioBufferFormatType::TYPE_COOK) {
597 int64_t extradataSize;
598 if (!inputFile_.is_open()) {
599 cout << "Fatal: file is not open" << endl;
600 return OH_AVErrCode::AV_ERR_UNKNOWN;
601 }
602 inputFile_.read(reinterpret_cast<char *>(&extradataSize), sizeof(int64_t));
603 if (inputFile_.gcount() != sizeof(int64_t) || extradataSize < 0) {
604 cout << "Fatal: read extradataSize bytes error" << endl;
605 return OH_AVErrCode::AV_ERR_UNKNOWN;
606 }
607 char buffer[extradataSize];
608 inputFile_.read(buffer, extradataSize);
609 if (inputFile_.gcount() != extradataSize) {
610 cout << "Fatal: read extradata bytes error" << endl;
611 return OH_AVErrCode::AV_ERR_UNKNOWN;
612 }
613 OH_AVFormat_SetBuffer(format_, OH_MD_KEY_CODEC_CONFIG, (uint8_t *)buffer, extradataSize);
614 }
615 SetTestingFormat(audioType);
616 return OH_AudioCodec_Configure(audioDec_, format_);
617 }
618
CheckSoFunc()619 int32_t AudioDecoderBufferCapiUnitTest::CheckSoFunc()
620 {
621 soFile_ = std::make_unique<std::ifstream>(OPUS_SO_FILE_PATH, std::ios::binary);
622 if (!soFile_->is_open()) {
623 cout << "Fatal: Open so file failed" << endl;
624 return false;
625 }
626 soFile_->close();
627 return true;
628 }
629
630 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_CreateByMime_01, TestSize.Level1)
631 {
632 audioDec_ = OH_AudioCodec_CreateByMime(AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_MPEG.data(), false);
633 EXPECT_NE(nullptr, audioDec_);
634 Release();
635 }
636
637 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_CreateByName_01, TestSize.Level1)
638 {
639 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_MP3_NAME).data());
640 EXPECT_NE(nullptr, audioDec_);
641 Release();
642 }
643
644 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_Configure_01, TestSize.Level1)
645 {
646 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
647 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_MP3));
648 Release();
649 }
650
651 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_Configure_02, TestSize.Level1)
652 {
653 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
654 format_ = OH_AVFormat_Create();
655 EXPECT_NE(nullptr, format_);
656
657 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
658 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
659 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
660 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_MP3]);
661 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // missing channel count
662
663 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
664 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MIN_CHANNEL_COUNT);
665 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal min channel count
666
667 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
668 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MAX_CHANNEL_COUNT);
669 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal max channel count
670
671 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
672 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
673 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal channel count
674
675 Release();
676 }
677
678 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_Configure_03, TestSize.Level1)
679 {
680 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
681 format_ = OH_AVFormat_Create();
682 EXPECT_NE(nullptr, format_);
683
684 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
685 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
686 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
687 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_MP3]);
688 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // missing sample rate
689
690 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
691 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), ABNORMAL_SAMPLE_RATE);
692 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal sample rate
693
694 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
695 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
696 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal sample rate
697
698 Release();
699 }
700
701 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_Configure_04, TestSize.Level1)
702 {
703 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
704 format_ = OH_AVFormat_Create();
705 EXPECT_NE(nullptr, format_);
706
707 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
708 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
709 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
710 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_MP3]);
711 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
712 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT.data(), CHANNEL_LAYOUT);
713 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal channel layout
714
715 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
716 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT.data(), ABNORMAL_CHANNEL_LAYOUT);
717 ASSERT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal channel layout
718 Release();
719 }
720
721 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_SetParameter_01, TestSize.Level1)
722 {
723 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_MP3));
724 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
725 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_MP3));
726 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
727 {
728 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae0402() 729 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
730 }
731 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Flush(audioDec_));
732 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
733 Release();
734 }
735
736 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_SetParameter_02, TestSize.Level1)
737 {
738 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
739 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_MP3));
740 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
741 Release();
742 }
743
744 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_Start_01, TestSize.Level1)
745 {
746 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_MP3));
747 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
748 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_MP3));
749 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
750 {
751 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae0502() 752 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
753 }
754 Release();
755 }
756
757 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_Start_02, TestSize.Level1)
758 {
759 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_MP3));
760 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
761 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_MP3));
762 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
763 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
764 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Start(audioDec_));
765 {
766 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae0602() 767 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
768 }
769 Release();
770 }
771
772 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_Stop_01, TestSize.Level1)
773 {
774 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_MP3));
775 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
776 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_MP3));
777 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
778 sleep(1);
779
780 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
781 Release();
782 }
783
784 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_Flush_01, TestSize.Level1)
785 {
786 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_MP3));
787 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
788 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_MP3));
789 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
790 {
791 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae0702() 792 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
793 }
794 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Flush(audioDec_));
795 Release();
796 }
797
798 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_Reset_01, TestSize.Level1)
799 {
800 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
801 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_MP3));
802 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
803 Release();
804 }
805
806 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_Reset_02, TestSize.Level1)
807 {
808 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_MP3));
809 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
810 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_MP3));
811 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
812 {
813 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae0802() 814 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
815 }
816 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
817 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
818 Release();
819 }
820
821 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_Reset_03, TestSize.Level1)
822 {
823 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_MP3));
824 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
825 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_MP3));
826 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
827 {
828 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae0902() 829 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
830 }
831 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
832 Release();
833 }
834
835 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_Destroy_01, TestSize.Level1)
836 {
837 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_MP3));
838 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
839 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_MP3));
840 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
841 {
842 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae0a02() 843 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
844 }
845 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
846 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Destroy(audioDec_));
847 }
848
849 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_Destroy_02, TestSize.Level1)
850 {
851 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_MP3));
852 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
853 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_MP3));
854
855 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Destroy(audioDec_));
856 }
857
858 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_GetOutputFormat_01, TestSize.Level1)
859 {
860 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_MP3));
861 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
862 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_MP3));
863
864 EXPECT_NE(nullptr, OH_AudioCodec_GetOutputDescription(audioDec_));
865 Release();
866 }
867
868 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_State_01, TestSize.Level1)
869 {
870 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
871 bool isValid = false;
872 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_IsValid(audioDec_, &isValid));
873 Release();
874 }
875
876 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_IsValid_01, TestSize.Level1)
877 {
878 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
879 bool isValid = false;
880 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_IsValid(audioDec_, &isValid));
881 Release();
882 }
883
884 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_Prepare_01, TestSize.Level1)
885 {
886 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
887 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_MP3));
888 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Prepare(audioDec_));
889 Release();
890 }
891
892 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_PushInputData_01, TestSize.Level1)
893 {
894 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_MP3));
895 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
896 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_MP3));
897 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
898
899 // case0 传参异常
900 const uint32_t index = 1024;
901 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_PushInputBuffer(audioDec_, index));
902 Release();
903 }
904
905 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3_ReleaseOutputBuffer_01, TestSize.Level1)
906 {
907 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_MP3));
908 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
909 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_MP3));
910 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
911
912 // case0 传参异常
913 const uint32_t index = 1024;
914 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_FreeOutputBuffer(audioDec_, index));
915 Release();
916 }
917
918 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_CreateByMime_01, TestSize.Level1)
919 {
920 audioDec_ = OH_AudioCodec_CreateByMime(AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_FLAC.data(), false);
921 EXPECT_NE(nullptr, audioDec_);
922 Release();
923 }
924
925 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_CreateByName_01, TestSize.Level1)
926 {
927 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_FLAC_NAME).data());
928 EXPECT_NE(nullptr, audioDec_);
929 Release();
930 }
931
932 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Configure_01, TestSize.Level1)
933 {
934 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
935 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_FLAC));
936 Release();
937 }
938
939 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Configure_02, TestSize.Level1)
940 {
941 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
942 format_ = OH_AVFormat_Create();
943 EXPECT_NE(nullptr, format_);
944 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MIN_CHANNEL_COUNT);
945 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
946 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
947 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_FLAC]);
948 ASSERT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
949 Release();
950 }
951
952 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Configure_03, TestSize.Level1)
953 {
954 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
955 format_ = OH_AVFormat_Create();
956 EXPECT_NE(nullptr, format_);
957 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MAX_CHANNEL_COUNT);
958 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
959 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
960 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_FLAC]);
961 ASSERT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
962 Release();
963 }
964
965 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Configure_04, TestSize.Level1)
966 {
967 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
968 format_ = OH_AVFormat_Create();
969 EXPECT_NE(nullptr, format_);
970 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
971 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), ABNORMAL_SAMPLE_RATE);
972 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
973 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_FLAC]);
974 ASSERT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
975 Release();
976 }
977
978 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Configure_05, TestSize.Level1)
979 {
980 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
981 format_ = OH_AVFormat_Create();
982 EXPECT_NE(nullptr, format_);
983 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
984 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), FLAC_192K_SAMPLE_RATE);
985 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
986 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_FLAC]);
987 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
988 Release();
989 }
990
991 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Configure_06, TestSize.Level1)
992 {
993 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
994 format_ = OH_AVFormat_Create();
995 EXPECT_NE(nullptr, format_);
996 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
997 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
998 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
999 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_FLAC]);
1000 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
1001 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
1002 Release();
1003 }
1004
1005 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Configure_07, TestSize.Level1)
1006 {
1007 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1008 format_ = OH_AVFormat_Create();
1009 EXPECT_NE(nullptr, format_);
1010 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
1011 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1012 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
1013 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_FLAC]);
1014 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), FLAC_S24_SAMPLE_FORMAT);
1015 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
1016 Release();
1017 }
1018
1019 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Configure_08, TestSize.Level1)
1020 {
1021 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1022 format_ = OH_AVFormat_Create();
1023 EXPECT_NE(nullptr, format_);
1024 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
1025 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1026 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
1027 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_FLAC]);
1028 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
1029 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT.data(), CHANNEL_LAYOUT);
1030 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal channel layout
1031
1032 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1033 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT.data(), ABNORMAL_CHANNEL_LAYOUT);
1034 ASSERT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal channel layout
1035 Release();
1036 }
1037
1038 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Configure_09, TestSize.Level1)
1039 {
1040 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1041 format_ = OH_AVFormat_Create();
1042 EXPECT_NE(nullptr, format_);
1043 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
1044 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), 8001); // nonstandard sampleRate
1045 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
1046 Release();
1047
1048 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1049 format_ = OH_AVFormat_Create();
1050 EXPECT_NE(nullptr, format_);
1051 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
1052 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), 300000); // nonstandard sampleRate
1053 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
1054 Release();
1055
1056 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1057 format_ = OH_AVFormat_Create();
1058 EXPECT_NE(nullptr, format_);
1059 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
1060 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), 7350); // less than min value
1061 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
1062 Release();
1063
1064 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1065 format_ = OH_AVFormat_Create();
1066 EXPECT_NE(nullptr, format_);
1067 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
1068 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), 400000); // more than max value
1069 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
1070 Release();
1071 }
1072
1073 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_SetParameter_01, TestSize.Level1)
1074 {
1075 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_FLAC));
1076 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1077 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_FLAC));
1078 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1079 {
1080 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae0b02() 1081 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1082 }
1083 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Flush(audioDec_));
1084 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
1085 Release();
1086 }
1087
1088 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_SetParameter_02, TestSize.Level1)
1089 {
1090 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1091 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_FLAC));
1092 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
1093 Release();
1094 }
1095
1096 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Start_01, TestSize.Level1)
1097 {
1098 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_FLAC));
1099 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1100 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_FLAC));
1101 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1102 {
1103 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae0c02() 1104 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1105 }
1106 Release();
1107 }
1108
1109 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Start_02, TestSize.Level1)
1110 {
1111 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_FLAC));
1112 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1113 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_FLAC));
1114 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1115 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1116 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Start(audioDec_));
1117 {
1118 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae0d02() 1119 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1120 }
1121 Release();
1122 }
1123
1124 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Stop_01, TestSize.Level1)
1125 {
1126 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_FLAC));
1127 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1128 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_FLAC));
1129 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1130 sleep(1);
1131
1132 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1133 Release();
1134 }
1135
1136 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Flush_01, TestSize.Level1)
1137 {
1138 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_FLAC));
1139 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1140 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_FLAC));
1141 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1142 {
1143 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae0e02() 1144 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1145 }
1146 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Flush(audioDec_));
1147 Release();
1148 }
1149
1150 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Reset_01, TestSize.Level1)
1151 {
1152 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1153 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_FLAC));
1154 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1155 Release();
1156 }
1157
1158 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Reset_02, TestSize.Level1)
1159 {
1160 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_FLAC));
1161 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1162 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_FLAC));
1163 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1164 {
1165 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae0f02() 1166 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1167 }
1168 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1169 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1170 Release();
1171 }
1172
1173 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Reset_03, TestSize.Level1)
1174 {
1175 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_FLAC));
1176 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1177 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_FLAC));
1178 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1179 {
1180 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae1002() 1181 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1182 }
1183 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1184 Release();
1185 }
1186
1187 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Destroy_01, TestSize.Level1)
1188 {
1189 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_FLAC));
1190 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1191 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_FLAC));
1192 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1193 {
1194 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae1102() 1195 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1196 }
1197 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1198 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Destroy(audioDec_));
1199 }
1200
1201 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Destroy_02, TestSize.Level1)
1202 {
1203 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_FLAC));
1204 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1205 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_FLAC));
1206
1207 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Destroy(audioDec_));
1208 }
1209
1210 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_GetOutputFormat_01, TestSize.Level1)
1211 {
1212 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_FLAC));
1213 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1214 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_FLAC));
1215
1216 EXPECT_NE(nullptr, OH_AudioCodec_GetOutputDescription(audioDec_));
1217 Release();
1218 }
1219
1220 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_IsValid_01, TestSize.Level1)
1221 {
1222 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1223 bool isValid = false;
1224 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_IsValid(audioDec_, &isValid));
1225 Release();
1226 }
1227
1228 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_Prepare_01, TestSize.Level1)
1229 {
1230 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1231 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_FLAC));
1232 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Prepare(audioDec_));
1233 Release();
1234 }
1235
1236 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_PushInputData_01, TestSize.Level1)
1237 {
1238 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_FLAC));
1239 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1240 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_FLAC));
1241 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1242
1243 // case0 传参异常
1244 const uint32_t index = 1024;
1245 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_PushInputBuffer(audioDec_, index));
1246 Release();
1247 }
1248
1249 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_ReleaseOutputBuffer_01, TestSize.Level1)
1250 {
1251 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_FLAC));
1252 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1253 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_FLAC));
1254 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1255
1256 // case0 传参异常
1257 const uint32_t index = 1024;
1258 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_FreeOutputBuffer(audioDec_, index));
1259 Release();
1260 }
1261
1262 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Flac_192k_01, TestSize.Level1)
1263 {
1264 inputFile_.open(INPUT_FLAC_192K_FILE_PATH, std::ios::binary);
1265 ASSERT_EQ(true, inputFile_.is_open());
1266 pcmOutputFile_.open(OUTPUT_FLAC_192K_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
1267 ASSERT_EQ(true, pcmOutputFile_.is_open());
1268 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
1269 format_ = OH_AVFormat_Create();
1270 EXPECT_NE(nullptr, format_);
1271 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
1272 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), FLAC_192K_SAMPLE_RATE);
1273 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
1274 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
1275 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_FLAC]);
1276 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
1277 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1278 {
1279 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae1202() 1280 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1281 }
1282 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1283 Release();
1284 }
1285
1286 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_CreateByMime_01, TestSize.Level1)
1287 {
1288 audioDec_ = OH_AudioCodec_CreateByMime(AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AAC.data(), false);
1289 EXPECT_NE(nullptr, audioDec_);
1290 Release();
1291 }
1292
1293 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_CreateByName_01, TestSize.Level1)
1294 {
1295 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_AAC_NAME).data());
1296 EXPECT_NE(nullptr, audioDec_);
1297 Release();
1298 }
1299
1300 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_Configure_01, TestSize.Level1)
1301 {
1302 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1303 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
1304 Release();
1305 }
1306
1307 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_Configure_02, TestSize.Level1)
1308 {
1309 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1310 format_ = OH_AVFormat_Create();
1311 EXPECT_NE(nullptr, format_);
1312
1313 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
1314 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
1315 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1316 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
1317 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_AAC]);
1318 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AAC_IS_ADTS.data(), ABNORMAL_AAC_TYPE);
1319 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal aac type
1320
1321 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1322 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AAC_IS_ADTS.data(), DEFAULT_AAC_TYPE);
1323 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal aac type
1324
1325 Release();
1326 }
1327
1328 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_Configure_03, TestSize.Level1)
1329 {
1330 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1331 format_ = OH_AVFormat_Create();
1332 EXPECT_NE(nullptr, format_);
1333
1334 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
1335 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AAC_IS_ADTS.data(), DEFAULT_AAC_TYPE);
1336 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1337 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
1338 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_AAC]);
1339 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // missing channel count
1340
1341 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1342 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MIN_CHANNEL_COUNT);
1343 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal min channel count
1344
1345 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1346 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MAX_CHANNEL_COUNT);
1347 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal max channel count
1348
1349 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1350 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
1351 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal channel count
1352
1353 Release();
1354 }
1355
1356 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_Configure_04, TestSize.Level1)
1357 {
1358 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1359 format_ = OH_AVFormat_Create();
1360 EXPECT_NE(nullptr, format_);
1361
1362 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
1363 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AAC_IS_ADTS.data(), DEFAULT_AAC_TYPE);
1364 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
1365 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
1366 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_AAC]);
1367 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // missing sample rate
1368
1369 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1370 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), ABNORMAL_SAMPLE_RATE);
1371 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal sample rate
1372
1373 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1374 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1375 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal sample rate
1376
1377 Release();
1378 }
1379
1380 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_Configure_05, TestSize.Level1)
1381 {
1382 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1383 format_ = OH_AVFormat_Create();
1384 EXPECT_NE(nullptr, format_);
1385
1386 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AAC_IS_ADTS.data(), DEFAULT_AAC_TYPE);
1387 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
1388 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1389 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
1390 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_AAC]);
1391 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), ABNORMAL_SAMPLE_FORMAT);
1392 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // default change to s16le
1393
1394 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1395 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
1396 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal sample format
1397
1398 Release();
1399 }
1400
1401 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_SetParameter_01, TestSize.Level1)
1402 {
1403 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AAC));
1404 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1405 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
1406 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1407 {
1408 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae1302() 1409 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1410 }
1411 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Flush(audioDec_));
1412 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
1413 Release();
1414 }
1415
1416 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_SetParameter_02, TestSize.Level1)
1417 {
1418 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1419 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
1420 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
1421 Release();
1422 }
1423
1424 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_Start_01, TestSize.Level1)
1425 {
1426 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AAC));
1427 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1428 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
1429 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1430 {
1431 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae1402() 1432 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1433 }
1434 Release();
1435 }
1436
1437 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_Start_02, TestSize.Level1)
1438 {
1439 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AAC));
1440 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1441 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
1442 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1443 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1444 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Start(audioDec_));
1445 {
1446 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae1502() 1447 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1448 }
1449 Release();
1450 }
1451
1452 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_Stop_01, TestSize.Level1)
1453 {
1454 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AAC));
1455 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1456 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
1457 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1458 sleep(1);
1459
1460 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1461 Release();
1462 }
1463
1464 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_Flush_01, TestSize.Level1)
1465 {
1466 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AAC));
1467 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1468 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
1469 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1470 {
1471 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae1602() 1472 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1473 }
1474 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Flush(audioDec_));
1475 Release();
1476 }
1477
1478 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_Reset_01, TestSize.Level1)
1479 {
1480 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1481 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
1482 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1483 Release();
1484 }
1485
1486 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_Reset_02, TestSize.Level1)
1487 {
1488 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AAC));
1489 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1490 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
1491 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1492 {
1493 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae1702() 1494 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1495 }
1496 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1497 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1498 Release();
1499 }
1500
1501 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_Reset_03, TestSize.Level1)
1502 {
1503 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AAC));
1504 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1505 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
1506 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1507 {
1508 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae1802() 1509 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1510 }
1511 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1512 Release();
1513 }
1514
1515 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_Destroy_01, TestSize.Level1)
1516 {
1517 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AAC));
1518 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1519 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
1520 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1521 {
1522 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae1902() 1523 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1524 }
1525 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1526 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Destroy(audioDec_));
1527 }
1528
1529 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_Destroy_02, TestSize.Level1)
1530 {
1531 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AAC));
1532 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1533 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
1534
1535 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Destroy(audioDec_));
1536 }
1537
1538 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_GetOutputFormat_01, TestSize.Level1)
1539 {
1540 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AAC));
1541 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1542 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
1543
1544 EXPECT_NE(nullptr, OH_AudioCodec_GetOutputDescription(audioDec_));
1545 Release();
1546 }
1547
1548 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_IsValid_01, TestSize.Level1)
1549 {
1550 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1551 bool isValid = false;
1552 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_IsValid(audioDec_, &isValid));
1553 Release();
1554 }
1555
1556 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_Prepare_01, TestSize.Level1)
1557 {
1558 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1559 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
1560 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Prepare(audioDec_));
1561 Release();
1562 }
1563
1564 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_PushInputData_01, TestSize.Level1)
1565 {
1566 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AAC));
1567 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1568 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
1569 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1570
1571 // case0 传参异常
1572 const uint32_t index = 1024;
1573 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_PushInputBuffer(audioDec_, index));
1574 Release();
1575 }
1576
1577 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_ReleaseOutputBuffer_01, TestSize.Level1)
1578 {
1579 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AAC));
1580 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
1581 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
1582 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1583
1584 // case0 传参异常
1585 const uint32_t index = 1024;
1586 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_FreeOutputBuffer(audioDec_, index));
1587 Release();
1588 }
1589
1590 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_CreateByMime_01, TestSize.Level1)
1591 {
1592 audioDec_ = OH_AudioCodec_CreateByMime(AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_VORBIS.data(), false);
1593 EXPECT_NE(nullptr, audioDec_);
1594 Release();
1595 }
1596
1597 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_CreateByName_01, TestSize.Level1)
1598 {
1599 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_VORBIS_NAME).data());
1600 EXPECT_NE(nullptr, audioDec_);
1601 Release();
1602 }
1603
1604 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_Configure_01, TestSize.Level1)
1605 {
1606 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1607 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1608 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_VORBIS));
1609 Release();
1610 }
1611
1612 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_Configure_02, TestSize.Level1)
1613 {
1614 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1615 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1616 format_ = OH_AVFormat_Create();
1617 EXPECT_NE(nullptr, format_);
1618
1619 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
1620 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1621 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
1622 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_VORBIS]);
1623 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // missing channel count
1624
1625 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1626 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MIN_CHANNEL_COUNT);
1627 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal min channel count
1628
1629 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1630 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MAX_CHANNEL_COUNT);
1631 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal max channel count
1632
1633 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1634 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
1635 int64_t extradataSize;
1636 EXPECT_EQ(true, inputFile_.is_open());
1637 inputFile_.read(reinterpret_cast<char *>(&extradataSize), sizeof(int64_t));
1638 EXPECT_EQ(false, inputFile_.gcount() != sizeof(int64_t) || extradataSize < 0);
1639 char buffer[extradataSize];
1640 inputFile_.read(buffer, extradataSize);
1641 EXPECT_EQ(false, inputFile_.gcount() != extradataSize);
1642 OH_AVFormat_SetBuffer(format_, MediaDescriptionKey::MD_KEY_CODEC_CONFIG.data(), (uint8_t *)buffer,
1643 extradataSize);
1644 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal channel count
1645
1646 Release();
1647 }
1648
1649 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_Configure_03, TestSize.Level1)
1650 {
1651 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1652 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1653 format_ = OH_AVFormat_Create();
1654 EXPECT_NE(nullptr, format_);
1655
1656 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
1657 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
1658 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
1659 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_VORBIS]);
1660 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // missing sample rate
1661
1662 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1663 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), ABNORMAL_SAMPLE_RATE);
1664 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal sample rate
1665
1666 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1667 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1668 int64_t extradataSize;
1669 EXPECT_EQ(true, inputFile_.is_open());
1670 inputFile_.read(reinterpret_cast<char *>(&extradataSize), sizeof(int64_t));
1671 EXPECT_EQ(false, inputFile_.gcount() != sizeof(int64_t) || extradataSize < 0);
1672 char buffer[extradataSize];
1673 inputFile_.read(buffer, extradataSize);
1674 EXPECT_EQ(false, inputFile_.gcount() != extradataSize);
1675 OH_AVFormat_SetBuffer(format_, MediaDescriptionKey::MD_KEY_CODEC_CONFIG.data(), (uint8_t *)buffer,
1676 extradataSize);
1677 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal sample rate
1678
1679 Release();
1680 }
1681
1682 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_Configure_04, TestSize.Level1)
1683 {
1684 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1685 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1686 format_ = OH_AVFormat_Create();
1687 EXPECT_NE(nullptr, format_);
1688
1689 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
1690 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1691 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
1692 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_VORBIS]);
1693 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), ABNORMAL_SAMPLE_FORMAT);
1694 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal sample format
1695
1696 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1697 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
1698 int64_t extradataSize;
1699 EXPECT_EQ(true, inputFile_.is_open());
1700 inputFile_.read(reinterpret_cast<char *>(&extradataSize), sizeof(int64_t));
1701 EXPECT_EQ(false, inputFile_.gcount() != sizeof(int64_t) || extradataSize < 0);
1702 char buffer[extradataSize];
1703 inputFile_.read(buffer, extradataSize);
1704 EXPECT_EQ(false, inputFile_.gcount() != extradataSize);
1705 OH_AVFormat_SetBuffer(format_, MediaDescriptionKey::MD_KEY_CODEC_CONFIG.data(), (uint8_t *)buffer,
1706 extradataSize);
1707 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal sample format
1708
1709 Release();
1710 }
1711
1712 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_SetParameter_01, TestSize.Level1)
1713 {
1714 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1715 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1716 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_VORBIS));
1717 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1718 {
1719 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae1a02() 1720 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1721 }
1722 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Flush(audioDec_));
1723 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
1724 Release();
1725 }
1726
1727 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_SetParameter_02, TestSize.Level1)
1728 {
1729 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1730 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1731 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_VORBIS));
1732 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
1733 Release();
1734 }
1735
1736 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_Start_01, TestSize.Level1)
1737 {
1738 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1739 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1740 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_VORBIS));
1741 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1742 {
1743 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae1b02() 1744 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1745 }
1746 Release();
1747 }
1748
1749 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_Start_02, TestSize.Level1)
1750 {
1751 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1752 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1753 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_VORBIS));
1754 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1755 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1756 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Start(audioDec_));
1757 {
1758 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae1c02() 1759 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1760 }
1761 Release();
1762 }
1763
1764 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_Stop_01, TestSize.Level1)
1765 {
1766 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1767 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1768 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_VORBIS));
1769 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1770 sleep(1);
1771
1772 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1773 Release();
1774 }
1775
1776 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_Flush_01, TestSize.Level1)
1777 {
1778 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1779 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1780 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_VORBIS));
1781 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1782 {
1783 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae1d02() 1784 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1785 }
1786 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Flush(audioDec_));
1787 Release();
1788 }
1789
1790 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_Reset_01, TestSize.Level1)
1791 {
1792 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1793 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1794 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_VORBIS));
1795 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1796 Release();
1797 }
1798
1799 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_Reset_02, TestSize.Level1)
1800 {
1801 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1802 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1803 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_VORBIS));
1804 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1805 {
1806 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae1e02() 1807 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1808 }
1809 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1810 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1811 Release();
1812 }
1813
1814 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_Reset_03, TestSize.Level1)
1815 {
1816 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1817 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1818 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_VORBIS));
1819 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1820 {
1821 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae1f02() 1822 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1823 }
1824 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1825 Release();
1826 }
1827
1828 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_Destroy_01, TestSize.Level1)
1829 {
1830 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1831 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1832 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_VORBIS));
1833 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1834 {
1835 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae2002() 1836 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
1837 }
1838 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
1839 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Destroy(audioDec_));
1840 }
1841
1842 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_Destroy_02, TestSize.Level1)
1843 {
1844 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1845 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1846 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_VORBIS));
1847
1848 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Destroy(audioDec_));
1849 }
1850
1851 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_GetOutputFormat_01, TestSize.Level1)
1852 {
1853 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1854 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1855 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_VORBIS));
1856
1857 EXPECT_NE(nullptr, OH_AudioCodec_GetOutputDescription(audioDec_));
1858 Release();
1859 }
1860
1861 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_IsValid_01, TestSize.Level1)
1862 {
1863 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1864 bool isValid = false;
1865 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_IsValid(audioDec_, &isValid));
1866 Release();
1867 }
1868
1869 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_Prepare_01, TestSize.Level1)
1870 {
1871 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1872 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1873 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_VORBIS));
1874 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Prepare(audioDec_));
1875 Release();
1876 }
1877
1878 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_PushInputData_01, TestSize.Level1)
1879 {
1880 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1881 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1882 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_VORBIS));
1883 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1884
1885 // case0 传参异常
1886 const uint32_t index = 1024;
1887 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_PushInputBuffer(audioDec_, index));
1888 Release();
1889 }
1890
1891 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Vorbis_ReleaseOutputBuffer_01, TestSize.Level1)
1892 {
1893 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_VORBIS));
1894 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1895 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_VORBIS));
1896 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
1897
1898 // case0 传参异常
1899 const uint32_t index = 1024;
1900 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_FreeOutputBuffer(audioDec_, index));
1901 Release();
1902 }
1903
1904 HWTEST_F(AudioDecoderBufferCapiUnitTest, vorbisMissingHeader, TestSize.Level1)
1905 {
1906 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1907 format_ = OH_AVFormat_Create();
1908 EXPECT_NE(nullptr, format_);
1909 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
1910 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1911 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_MAX_INPUT_SIZE.data(), ABNORMAL_MAX_INPUT_SIZE);
1912 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
1913 Release();
1914 }
1915
1916 HWTEST_F(AudioDecoderBufferCapiUnitTest, vorbisMissingIdHeader, TestSize.Level1)
1917 {
1918 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1919 format_ = OH_AVFormat_Create();
1920 EXPECT_NE(nullptr, format_);
1921 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
1922 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1923 uint8_t buffer[1];
1924 OH_AVFormat_SetBuffer(format_, MediaDescriptionKey::MD_KEY_IDENTIFICATION_HEADER.data(), buffer, 1);
1925 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
1926 Release();
1927 }
1928
1929 HWTEST_F(AudioDecoderBufferCapiUnitTest, vorbisInvalidHeader, TestSize.Level1)
1930 {
1931 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
1932 format_ = OH_AVFormat_Create();
1933 EXPECT_NE(nullptr, format_);
1934 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
1935 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
1936 uint8_t buffer[1];
1937 OH_AVFormat_SetBuffer(format_, MediaDescriptionKey::MD_KEY_IDENTIFICATION_HEADER.data(), buffer, 1);
1938 OH_AVFormat_SetBuffer(format_, MediaDescriptionKey::MD_KEY_SETUP_HEADER.data(), buffer, 1);
1939 EXPECT_EQ(OH_AVErrCode::AV_ERR_UNKNOWN, OH_AudioCodec_Configure(audioDec_, format_));
1940 Release();
1941 }
1942
1943 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_CreateByMime_01, TestSize.Level1)
1944 {
1945 audioDec_ = OH_AudioCodec_CreateByMime(AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AMRWB.data(), false);
1946 EXPECT_NE(nullptr, audioDec_);
1947 Release();
1948 }
1949
1950 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_CreateByName_01, TestSize.Level1)
1951 {
1952 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_AMRWB_NAME).data());
1953 EXPECT_NE(nullptr, audioDec_);
1954 Release();
1955 }
1956
1957 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_Configure_01, TestSize.Level1)
1958 {
1959 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
1960 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRWB));
1961 Release();
1962 }
1963
1964 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_Configure_02, TestSize.Level1)
1965 {
1966 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
1967 format_ = OH_AVFormat_Create();
1968 EXPECT_NE(nullptr, format_);
1969
1970 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
1971 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), AMRWB_SAMPLE_RATE);
1972 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // missing channel count
1973
1974 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1975 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MIN_CHANNEL_COUNT);
1976 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal min channel count
1977
1978 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1979 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ONE_CHANNEL_COUNT);
1980 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal channel count
1981
1982 Release();
1983 }
1984
1985 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_Configure_03, TestSize.Level1)
1986 {
1987 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
1988 format_ = OH_AVFormat_Create();
1989 EXPECT_NE(nullptr, format_);
1990
1991 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
1992 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ONE_CHANNEL_COUNT);
1993 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // missing sample rate
1994
1995 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
1996 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), ABNORMAL_SAMPLE_RATE);
1997 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal sample rate
1998
1999 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2000 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), AMRWB_SAMPLE_RATE);
2001 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal sample rate
2002
2003 Release();
2004 }
2005
2006 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_Configure_04, TestSize.Level1)
2007 {
2008 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
2009 format_ = OH_AVFormat_Create();
2010 EXPECT_NE(nullptr, format_);
2011
2012 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ONE_CHANNEL_COUNT);
2013 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), AMRWB_SAMPLE_RATE);
2014 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), ABNORMAL_SAMPLE_FORMAT);
2015 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal sample format
2016
2017 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2018 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
2019 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal sample format
2020
2021 Release();
2022 }
2023
2024 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_SetParameter_01, TestSize.Level1)
2025 {
2026 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRWB));
2027 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
2028 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRWB));
2029 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2030 {
2031 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae2102() 2032 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2033 }
2034 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Flush(audioDec_));
2035 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
2036 Release();
2037 }
2038
2039 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_SetParameter_02, TestSize.Level1)
2040 {
2041 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
2042 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRWB));
2043 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
2044 Release();
2045 }
2046
2047 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_Start_01, TestSize.Level1)
2048 {
2049 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRWB));
2050 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
2051 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRWB));
2052 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2053 {
2054 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae2202() 2055 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2056 }
2057 Release();
2058 }
2059
2060 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_Start_02, TestSize.Level1)
2061 {
2062 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRWB));
2063 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
2064 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRWB));
2065 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2066 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2067 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Start(audioDec_));
2068 {
2069 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae2302() 2070 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2071 }
2072 Release();
2073 }
2074
2075 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_Stop_01, TestSize.Level1)
2076 {
2077 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRWB));
2078 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
2079 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRWB));
2080 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2081 sleep(1);
2082
2083 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2084 Release();
2085 }
2086
2087 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_Flush_01, TestSize.Level1)
2088 {
2089 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRWB));
2090 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
2091 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRWB));
2092 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2093 {
2094 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae2402() 2095 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2096 }
2097 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Flush(audioDec_));
2098 Release();
2099 }
2100
2101 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_Reset_01, TestSize.Level1)
2102 {
2103 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
2104 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRWB));
2105 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2106 Release();
2107 }
2108
2109 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_Reset_02, TestSize.Level1)
2110 {
2111 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRWB));
2112 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
2113 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRWB));
2114 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2115 {
2116 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae2502() 2117 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2118 }
2119 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2120 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2121 Release();
2122 }
2123
2124 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_Reset_03, TestSize.Level1)
2125 {
2126 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRWB));
2127 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
2128 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRWB));
2129 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2130 {
2131 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae2602() 2132 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2133 }
2134 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2135 Release();
2136 }
2137
2138 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_Destroy_01, TestSize.Level1)
2139 {
2140 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRWB));
2141 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
2142 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRWB));
2143 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2144 {
2145 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae2702() 2146 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2147 }
2148 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2149 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Destroy(audioDec_));
2150 }
2151
2152 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_Destroy_02, TestSize.Level1)
2153 {
2154 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRWB));
2155 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
2156 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRWB));
2157
2158 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Destroy(audioDec_));
2159 }
2160
2161 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_GetOutputFormat_01, TestSize.Level1)
2162 {
2163 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRWB));
2164 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
2165 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRWB));
2166
2167 EXPECT_NE(nullptr, OH_AudioCodec_GetOutputDescription(audioDec_));
2168 Release();
2169 }
2170
2171 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_IsValid_01, TestSize.Level1)
2172 {
2173 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
2174 bool isValid = false;
2175 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_IsValid(audioDec_, &isValid));
2176 Release();
2177 }
2178
2179 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_Prepare_01, TestSize.Level1)
2180 {
2181 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
2182 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRWB));
2183 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Prepare(audioDec_));
2184 Release();
2185 }
2186
2187 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_PushInputData_01, TestSize.Level1)
2188 {
2189 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRWB));
2190 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
2191 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRWB));
2192 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2193
2194 // case0 传参异常
2195 const uint32_t index = 1024;
2196 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_PushInputBuffer(audioDec_, index));
2197 Release();
2198 }
2199
2200 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrwb_ReleaseOutputBuffer_01, TestSize.Level1)
2201 {
2202 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRWB));
2203 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRWB));
2204 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRWB));
2205 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2206
2207 // case0 传参异常
2208 const uint32_t index = 1024;
2209 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_FreeOutputBuffer(audioDec_, index));
2210 Release();
2211 }
2212
2213 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_CreateByMime_01, TestSize.Level1)
2214 {
2215 audioDec_ = OH_AudioCodec_CreateByMime(AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AMRNB.data(), false);
2216 EXPECT_NE(nullptr, audioDec_);
2217 Release();
2218 }
2219
2220 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_CreateByName_01, TestSize.Level1)
2221 {
2222 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_AMRNB_NAME).data());
2223 EXPECT_NE(nullptr, audioDec_);
2224 Release();
2225 }
2226
2227 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_Configure_01, TestSize.Level1)
2228 {
2229 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2230 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRNB));
2231 Release();
2232 }
2233
2234 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_Configure_02, TestSize.Level1)
2235 {
2236 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2237 format_ = OH_AVFormat_Create();
2238 EXPECT_NE(nullptr, format_);
2239
2240 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
2241 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), SAMPLE_RATE_8K);
2242 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // missing channel count
2243
2244 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2245 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MIN_CHANNEL_COUNT);
2246 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal min channel count
2247
2248 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2249 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ONE_CHANNEL_COUNT);
2250 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal channel count
2251
2252 Release();
2253 }
2254
2255 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_Configure_03, TestSize.Level1)
2256 {
2257 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2258 format_ = OH_AVFormat_Create();
2259 EXPECT_NE(nullptr, format_);
2260
2261 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
2262 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ONE_CHANNEL_COUNT);
2263 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // missing sample rate
2264
2265 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2266 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), ABNORMAL_SAMPLE_RATE);
2267 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal sample rate
2268
2269 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2270 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), SAMPLE_RATE_8K);
2271 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal sample rate
2272
2273 Release();
2274 }
2275
2276 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_SetParameter_01, TestSize.Level1)
2277 {
2278 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRNB));
2279 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2280 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRNB));
2281 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2282 {
2283 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae2802() 2284 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2285 }
2286 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Flush(audioDec_));
2287 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
2288 Release();
2289 }
2290
2291 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_SetParameter_02, TestSize.Level1)
2292 {
2293 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2294 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRNB));
2295 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
2296 Release();
2297 }
2298
2299 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_Start_01, TestSize.Level1)
2300 {
2301 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRNB));
2302 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2303 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRNB));
2304 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2305 {
2306 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae2902() 2307 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2308 }
2309 Release();
2310 }
2311
2312 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_Start_02, TestSize.Level1)
2313 {
2314 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRNB));
2315 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2316 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRNB));
2317 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2318 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2319 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Start(audioDec_));
2320 {
2321 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae2a02() 2322 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2323 }
2324 Release();
2325 }
2326
2327 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_Stop_01, TestSize.Level1)
2328 {
2329 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRNB));
2330 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2331 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRNB));
2332 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2333 sleep(1);
2334
2335 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2336 Release();
2337 }
2338
2339 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_Flush_01, TestSize.Level1)
2340 {
2341 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRNB));
2342 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2343 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRNB));
2344 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2345 {
2346 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae2b02() 2347 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2348 }
2349 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Flush(audioDec_));
2350 Release();
2351 }
2352
2353 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_Reset_01, TestSize.Level1)
2354 {
2355 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2356 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRNB));
2357 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2358 Release();
2359 }
2360
2361 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_Reset_02, TestSize.Level1)
2362 {
2363 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRNB));
2364 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2365 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRNB));
2366 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2367 {
2368 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae2c02() 2369 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2370 }
2371 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2372 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2373 Release();
2374 }
2375
2376 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_Reset_03, TestSize.Level1)
2377 {
2378 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRNB));
2379 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2380 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRNB));
2381 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2382 {
2383 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae2d02() 2384 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2385 }
2386 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2387 Release();
2388 }
2389
2390 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_Destroy_01, TestSize.Level1)
2391 {
2392 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRNB));
2393 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2394 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRNB));
2395 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2396 {
2397 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae2e02() 2398 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2399 }
2400 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2401 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Destroy(audioDec_));
2402 }
2403
2404 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_Destroy_02, TestSize.Level1)
2405 {
2406 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRNB));
2407 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2408 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRNB));
2409
2410 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Destroy(audioDec_));
2411 }
2412
2413 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_GetOutputFormat_01, TestSize.Level1)
2414 {
2415 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRNB));
2416 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2417 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRNB));
2418
2419 EXPECT_NE(nullptr, OH_AudioCodec_GetOutputDescription(audioDec_));
2420 Release();
2421 }
2422
2423 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_IsValid_01, TestSize.Level1)
2424 {
2425 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2426 bool isValid = false;
2427 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_IsValid(audioDec_, &isValid));
2428 Release();
2429 }
2430
2431 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_Prepare_01, TestSize.Level1)
2432 {
2433 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2434 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRNB));
2435 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Prepare(audioDec_));
2436 Release();
2437 }
2438
2439 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_PushInputData_01, TestSize.Level1)
2440 {
2441 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRNB));
2442 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2443 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRNB));
2444 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2445
2446 // case0 传参异常
2447 const uint32_t index = 1024;
2448 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_PushInputBuffer(audioDec_, index));
2449 Release();
2450 }
2451
2452 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Amrnb_ReleaseOutputBuffer_01, TestSize.Level1)
2453 {
2454 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_AMRNB));
2455 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AMRNB));
2456 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AMRNB));
2457 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2458
2459 // case0 传参异常
2460 const uint32_t index = 1024;
2461 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_FreeOutputBuffer(audioDec_, index));
2462 Release();
2463 }
2464
2465 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_CreateByMime_01, TestSize.Level1)
2466 {
2467 audioDec_ = OH_AudioCodec_CreateByMime(AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_G711MU.data(), false);
2468 EXPECT_NE(nullptr, audioDec_);
2469 Release();
2470 }
2471
2472 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_CreateByName_01, TestSize.Level1)
2473 {
2474 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_G711MU_NAME).data());
2475 EXPECT_NE(nullptr, audioDec_);
2476 Release();
2477 }
2478
2479 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_Configure_01, TestSize.Level1)
2480 {
2481 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU));
2482 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_G711MU));
2483 Release();
2484 }
2485
2486 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_SetParameter_01, TestSize.Level1)
2487 {
2488 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_G711MU));
2489 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU));
2490 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_G711MU));
2491 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2492 {
2493 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae2f02() 2494 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2495 }
2496 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Flush(audioDec_));
2497 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
2498 Release();
2499 }
2500
2501 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_SetParameter_02, TestSize.Level1)
2502 {
2503 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU));
2504 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_G711MU));
2505 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
2506 Release();
2507 }
2508
2509 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_Start_01, TestSize.Level1)
2510 {
2511 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_G711MU));
2512 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU));
2513 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_G711MU));
2514 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2515 {
2516 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae3002() 2517 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2518 }
2519 Release();
2520 }
2521
2522 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_Start_02, TestSize.Level1)
2523 {
2524 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_G711MU));
2525 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU));
2526 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_G711MU));
2527 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2528 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2529 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Start(audioDec_));
2530 {
2531 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae3102() 2532 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2533 }
2534 Release();
2535 }
2536
2537 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_Stop_01, TestSize.Level1)
2538 {
2539 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_G711MU));
2540 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU));
2541 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_G711MU));
2542 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2543 sleep(1);
2544
2545 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2546 Release();
2547 }
2548
2549 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_Flush_01, TestSize.Level1)
2550 {
2551 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_G711MU));
2552 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU));
2553 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_G711MU));
2554 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2555 {
2556 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae3202() 2557 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2558 }
2559 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Flush(audioDec_));
2560 Release();
2561 }
2562
2563 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_Reset_01, TestSize.Level1)
2564 {
2565 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU));
2566 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_G711MU));
2567 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2568 Release();
2569 }
2570
2571 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_Reset_02, TestSize.Level1)
2572 {
2573 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_G711MU));
2574 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU));
2575 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_G711MU));
2576 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2577 {
2578 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae3302() 2579 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2580 }
2581 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2582 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2583 Release();
2584 }
2585
2586 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_Reset_03, TestSize.Level1)
2587 {
2588 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_G711MU));
2589 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU));
2590 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_G711MU));
2591 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2592 {
2593 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae3402() 2594 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2595 }
2596 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2597 Release();
2598 }
2599
2600 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_Destroy_01, TestSize.Level1)
2601 {
2602 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_G711MU));
2603 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU));
2604 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_G711MU));
2605 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2606 {
2607 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae3502() 2608 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2609 }
2610 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2611 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Destroy(audioDec_));
2612 }
2613
2614 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_Destroy_02, TestSize.Level1)
2615 {
2616 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_G711MU));
2617 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU));
2618 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_G711MU));
2619
2620 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Destroy(audioDec_));
2621 }
2622
2623 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_GetOutputFormat_01, TestSize.Level1)
2624 {
2625 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_G711MU));
2626 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU));
2627 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_G711MU));
2628
2629 EXPECT_NE(nullptr, OH_AudioCodec_GetOutputDescription(audioDec_));
2630 Release();
2631 }
2632
2633 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_IsValid_01, TestSize.Level1)
2634 {
2635 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU));
2636 bool isValid = false;
2637 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_IsValid(audioDec_, &isValid));
2638 Release();
2639 }
2640
2641 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_Prepare_01, TestSize.Level1)
2642 {
2643 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU));
2644 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_G711MU));
2645 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Prepare(audioDec_));
2646 Release();
2647 }
2648
2649 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_PushInputData_01, TestSize.Level1)
2650 {
2651 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_G711MU));
2652 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU));
2653 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_G711MU));
2654 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2655
2656 // case0 传参异常
2657 const uint32_t index = 1024;
2658 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_PushInputBuffer(audioDec_, index));
2659 Release();
2660 }
2661
2662 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_G711mu_ReleaseOutputBuffer_01, TestSize.Level1)
2663 {
2664 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_G711MU));
2665 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU));
2666 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_G711MU));
2667 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2668
2669 // case0 传参异常
2670 const uint32_t index = 1024;
2671 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_FreeOutputBuffer(audioDec_, index));
2672 Release();
2673 }
2674
2675 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_g711muCheckChannelCount, TestSize.Level1)
2676 {
2677 CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU);
2678 format_ = OH_AVFormat_Create();
2679 EXPECT_NE(nullptr, format_);
2680 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), SAMPLE_RATE_8K);
2681 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // missing channel count
2682
2683 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2684 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MAX_CHANNEL_COUNT);
2685 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // illegal channel count
2686
2687 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2688 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ONE_CHANNEL_COUNT);
2689 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal channel count
2690
2691 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Destroy(audioDec_));
2692 }
2693
2694 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_g711muCheckSampleRate, TestSize.Level1)
2695 {
2696 CreateCodecFunc(AudioBufferFormatType::TYPE_G711MU);
2697 format_ = OH_AVFormat_Create();
2698 EXPECT_NE(nullptr, format_);
2699 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ONE_CHANNEL_COUNT);
2700 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // missing sample rate
2701
2702 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2703 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
2704 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // illegal sample rate
2705
2706 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2707 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), SAMPLE_RATE_8K);
2708 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal sample rate
2709
2710 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Destroy(audioDec_));
2711 }
2712
2713 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Opus_CreateByMime_01, TestSize.Level1)
2714 {
2715 if (!CheckSoFunc()) {
2716 return;
2717 }
2718 audioDec_ = OH_AudioCodec_CreateByMime(AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_OPUS.data(), false);
2719 EXPECT_NE(nullptr, audioDec_);
2720 Release();
2721 }
2722
2723 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Opus_CreateByName_01, TestSize.Level1)
2724 {
2725 if (!CheckSoFunc()) {
2726 return;
2727 }
2728 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_OPUS_NAME).data());
2729 EXPECT_NE(nullptr, audioDec_);
2730 Release();
2731 }
2732
2733 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Opus_Configure_01, TestSize.Level1)
2734 {
2735 if (!CheckSoFunc()) {
2736 return;
2737 }
2738 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_OPUS));
2739 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_OPUS));
2740 Release();
2741 }
2742
2743 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Opus_SetParameter_01, TestSize.Level1)
2744 {
2745 if (!CheckSoFunc()) {
2746 return;
2747 }
2748 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_OPUS));
2749 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_OPUS));
2750 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
2751 Release();
2752 }
2753
2754 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Opus_Stop_01, TestSize.Level1)
2755 {
2756 if (!CheckSoFunc()) {
2757 return;
2758 }
2759 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_OPUS));
2760 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_OPUS));
2761 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_OPUS));
2762 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2763 sleep(1);
2764
2765 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2766 Release();
2767 }
2768
2769 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Opus_Flush_01, TestSize.Level1)
2770 {
2771 if (!CheckSoFunc()) {
2772 return;
2773 }
2774 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_OPUS));
2775 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_OPUS));
2776 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_OPUS));
2777 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2778 {
2779 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae3602() 2780 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2781 }
2782 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Flush(audioDec_));
2783 Release();
2784 }
2785
2786 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Opus_Reset_01, TestSize.Level1)
2787 {
2788 if (!CheckSoFunc()) {
2789 return;
2790 }
2791 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_OPUS));
2792 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_OPUS));
2793 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2794 Release();
2795 }
2796
2797 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Opus_GetOutputFormat_01, TestSize.Level1)
2798 {
2799 if (!CheckSoFunc()) {
2800 return;
2801 }
2802 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_OPUS));
2803 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_OPUS));
2804 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_OPUS));
2805
2806 EXPECT_NE(nullptr, OH_AudioCodec_GetOutputDescription(audioDec_));
2807 Release();
2808 }
2809
2810 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Opus_IsValid_01, TestSize.Level1)
2811 {
2812 if (!CheckSoFunc()) {
2813 return;
2814 }
2815 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_OPUS));
2816 bool isValid = false;
2817 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_IsValid(audioDec_, &isValid));
2818 Release();
2819 }
2820
2821 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Opus_Prepare_01, TestSize.Level1)
2822 {
2823 if (!CheckSoFunc()) {
2824 return;
2825 }
2826 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_OPUS));
2827 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_OPUS));
2828 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Prepare(audioDec_));
2829 Release();
2830 }
2831
2832 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Ape_CreateByMime_01, TestSize.Level1)
2833 {
2834 audioDec_ = OH_AudioCodec_CreateByMime(AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_APE.data(), false);
2835 EXPECT_NE(nullptr, audioDec_);
2836 Release();
2837 }
2838
2839 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Ape_CreateByName_01, TestSize.Level1)
2840 {
2841 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_APE_NAME).data());
2842 EXPECT_NE(nullptr, audioDec_);
2843 Release();
2844 }
2845
2846 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_APE_Configure_01, TestSize.Level1)
2847 {
2848 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_APE));
2849 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_APE));
2850 Release();
2851 }
2852
2853 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_APE_Configure_02, TestSize.Level1)
2854 {
2855 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_APE));
2856 format_ = OH_AVFormat_Create();
2857 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ONE_CHANNEL_COUNT);
2858 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), -1); // use -1 as error input
2859 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
2860 Release();
2861 }
2862
2863 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_APE_Configure_03, TestSize.Level1)
2864 {
2865 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_APE));
2866 format_ = OH_AVFormat_Create();
2867 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), -1); // use -1 as error input
2868 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), AMRWB_SAMPLE_RATE);
2869 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
2870 Release();
2871 }
2872
2873 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_APE_Configure_04, TestSize.Level1)
2874 {
2875 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_APE));
2876 format_ = OH_AVFormat_Create();
2877 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ONE_CHANNEL_COUNT);
2878 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), AMRWB_SAMPLE_RATE);
2879 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(),
2880 AudioSampleFormat::SAMPLE_U8P);
2881 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
2882 Release();
2883 }
2884
2885
2886 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_APE_Configure_05, TestSize.Level1)
2887 {
2888 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_APE));
2889 format_ = OH_AVFormat_Create();
2890 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ONE_CHANNEL_COUNT);
2891 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), 16000);
2892 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(),
2893 AudioSampleFormat::SAMPLE_S32LE);
2894 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
2895 Release();
2896 }
2897
2898 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_APE_Configure_06, TestSize.Level1)
2899 {
2900 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_APE));
2901 format_ = OH_AVFormat_Create();
2902 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ONE_CHANNEL_COUNT);
2903 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), 0);
2904 OH_AudioCodec_Configure(audioDec_, format_);
2905 Release();
2906 }
2907
2908 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Ape_SetParameter_01, TestSize.Level1)
2909 {
2910 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_APE));
2911 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_APE));
2912 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
2913 Release();
2914 }
2915
2916 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Ape_SetParameter_02, TestSize.Level1)
2917 {
2918 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_APE));
2919 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), 1);
2920 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), 0);
2921 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(),
2922 AudioSampleFormat::SAMPLE_S16LE);
2923 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
2924 Release();
2925 }
2926
2927 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Ape_SetParameter_03, TestSize.Level1)
2928 {
2929 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_APE));
2930 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), 1);
2931 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), AMRWB_SAMPLE_RATE);
2932 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(),
2933 AudioSampleFormat::SAMPLE_U8);
2934 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
2935 Release();
2936 }
2937
2938 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Ape_SetParameter_04, TestSize.Level1)
2939 {
2940 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_APE));
2941 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), 1);
2942 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), AMRWB_SAMPLE_RATE);
2943 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(),
2944 AudioSampleFormat::SAMPLE_S32LE);
2945 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
2946 Release();
2947 }
2948
2949 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Ape_Stop_01, TestSize.Level1)
2950 {
2951 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_APE));
2952 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_APE));
2953 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_APE));
2954 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2955 sleep(1);
2956
2957 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
2958 Release();
2959 }
2960
2961 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Ape_Flush_01, TestSize.Level1)
2962 {
2963 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_APE));
2964 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_APE));
2965 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_APE));
2966 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
2967 {
2968 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae3702() 2969 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
2970 }
2971 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Flush(audioDec_));
2972 Release();
2973 }
2974
2975 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Ape_Reset_01, TestSize.Level1)
2976 {
2977 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_APE));
2978 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_APE));
2979 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
2980 Release();
2981 }
2982
2983 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Ape_GetOutputFormat_01, TestSize.Level1)
2984 {
2985 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_APE));
2986 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_APE));
2987 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_APE));
2988
2989 EXPECT_NE(nullptr, OH_AudioCodec_GetOutputDescription(audioDec_));
2990 Release();
2991 }
2992
2993 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Ape_IsValid_01, TestSize.Level1)
2994 {
2995 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_APE));
2996 bool isValid = false;
2997 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_IsValid(audioDec_, &isValid));
2998 Release();
2999 }
3000
3001 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Ape_Prepare_01, TestSize.Level1)
3002 {
3003 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_APE));
3004 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_APE));
3005 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Prepare(audioDec_));
3006 Release();
3007 }
3008
3009 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Aac_SetDecryptionConfig_01, TestSize.Level1)
3010 {
3011 #ifdef SUPPORT_DRM
3012 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
3013 std::shared_ptr<MediaKeySystemCapiMock> mediaKeySystemMock = std::make_shared<MediaKeySystemCapiMock>();
3014 mediaKeySystemMock->CreateMediaKeySystem();
3015 mediaKeySystemMock->CreateMediaKeySession();
3016
3017 bool isSecure = false;
3018 int32_t ret = OH_AudioCodec_SetDecryptionConfig(audioDec_, mediaKeySystemMock->GetMediaKeySession(), isSecure);
3019 if (ret != OH_AVErrCode::AV_ERR_OK && mediaKeySystemMock->GetMediaKeySession() == nullptr) {
3020 Release();
3021 return;
3022 }
3023 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, ret);
3024 Release();
3025 #endif
3026 }
3027
3028 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_AacLcFormatChanged, TestSize.Level1)
3029 {
3030 isTestingFormat_ = true;
3031 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(INPUT_AAC_LC_ADTS_FILE_PATH, OUTPUT_AAC_LC_ADTS_FILE_PATH));
3032 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
3033 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
3034 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3035 {
3036 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae3802() 3037 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
3038 }
3039 EXPECT_EQ(g_outputSampleRate, DEFAULT_SAMPLE_RATE);
3040 EXPECT_EQ(g_outputChannels, DEFAULT_CHANNEL_COUNT);
3041 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
3042 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
3043 Release();
3044 }
3045
3046 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_AacHeFormatChanged, TestSize.Level1)
3047 {
3048 isTestingFormat_ = true;
3049 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(INPUT_AAC_HE_ADTS_FILE_PATH, OUTPUT_AAC_HE_ADTS_FILE_PATH));
3050 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
3051 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
3052 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3053 {
3054 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae3902() 3055 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
3056 }
3057 EXPECT_EQ(g_outputSampleRate, DEFAULT_SAMPLE_RATE);
3058 EXPECT_EQ(g_outputChannels, DEFAULT_CHANNEL_COUNT);
3059 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
3060 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
3061 Release();
3062 }
3063
3064 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_AacHev2FormatChanged, TestSize.Level1)
3065 {
3066 isTestingFormat_ = true;
3067 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(INPUT_AAC_HEV2_ADTS_FILE_PATH, OUTPUT_AAC_HEV2_ADTS_FILE_PATH));
3068 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_AAC));
3069 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_AAC));
3070 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3071 {
3072 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae3a02() 3073 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
3074 }
3075 EXPECT_EQ(g_outputSampleRate, DEFAULT_SAMPLE_RATE);
3076 EXPECT_EQ(g_outputChannels, DEFAULT_CHANNEL_COUNT);
3077 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
3078 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
3079 Release();
3080 }
3081
3082 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_FlacFormatChanged, TestSize.Level1)
3083 {
3084 isTestingFormat_ = true;
3085 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(INPUT_FLAC_FILE_PATH, OUTPUT_FLAC_PCM_FILE_PATH));
3086 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
3087 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_FLAC));
3088 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3089 {
3090 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae3b02() 3091 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
3092 }
3093 EXPECT_EQ(g_outputSampleRate, DEFAULT_SAMPLE_RATE);
3094 EXPECT_EQ(g_outputChannels, DEFAULT_CHANNEL_COUNT);
3095 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
3096 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
3097 Release();
3098 }
3099
3100 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_FlacSampleFormatChanged, TestSize.Level1)
3101 {
3102 isTestingFormat_ = true;
3103 inputFile_.open(INPUT_FLAC_192K_FILE_PATH, std::ios::binary);
3104 ASSERT_EQ(true, inputFile_.is_open());
3105 pcmOutputFile_.open(OUTPUT_FLAC_192K_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
3106 ASSERT_EQ(true, pcmOutputFile_.is_open());
3107 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
3108 format_ = OH_AVFormat_Create();
3109 EXPECT_NE(nullptr, format_);
3110 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
3111 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), FLAC_192K_SAMPLE_RATE);
3112 // set abnormal trigger on changed callback
3113 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), ABNORMAL_SAMPLE_FORMAT);
3114 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
3115 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_FLAC]);
3116 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
3117 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3118 {
3119 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae3c02() 3120 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
3121 }
3122 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
3123 Release();
3124 }
3125
3126 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_FlacSampleFormatChanged_02, TestSize.Level1)
3127 {
3128 isTestingFormat_ = true;
3129 inputFile_.open(INPUT_FLAC_192K_FILE_PATH, std::ios::binary);
3130 ASSERT_EQ(true, inputFile_.is_open());
3131 pcmOutputFile_.open(OUTPUT_FLAC_192K_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
3132 ASSERT_EQ(true, pcmOutputFile_.is_open());
3133 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
3134 format_ = OH_AVFormat_Create();
3135 EXPECT_NE(nullptr, format_);
3136 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
3137 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), FLAC_192K_SAMPLE_RATE);
3138 // set invalid sample format trigger on changed callback
3139 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(),
3140 AudioSampleFormat::SAMPLE_S16P);
3141 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
3142 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_FLAC]);
3143 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
3144 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3145 {
3146 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae3d02() 3147 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
3148 }
3149 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
3150 Release();
3151 }
3152
3153 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_FlacSampleFormatChanged_03, TestSize.Level1)
3154 {
3155 isTestingFormat_ = true;
3156 inputFile_.open(INPUT_FLAC_192K_FILE_PATH, std::ios::binary);
3157 ASSERT_EQ(true, inputFile_.is_open());
3158 pcmOutputFile_.open(OUTPUT_FLAC_192K_PCM_FILE_PATH.data(), std::ios::out | std::ios::binary);
3159 ASSERT_EQ(true, pcmOutputFile_.is_open());
3160 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_FLAC));
3161 format_ = OH_AVFormat_Create();
3162 EXPECT_NE(nullptr, format_);
3163 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
3164 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), FLAC_192K_SAMPLE_RATE);
3165 // not set sample format trigger on changed callback
3166 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(),
3167 BITS_RATE[(uint32_t)AudioBufferFormatType::TYPE_FLAC]);
3168 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_));
3169 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3170 {
3171 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae3e02() 3172 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
3173 }
3174 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
3175 Release();
3176 }
3177
3178 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Mp3FormatChanged, TestSize.Level1)
3179 {
3180 isTestingFormat_ = true;
3181 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(INPUT_MP3_FILE_PATH, OUTPUT_MP3_PCM_FILE_PATH));
3182 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_MP3));
3183 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_MP3));
3184 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3185 {
3186 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae3f02() 3187 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
3188 }
3189 EXPECT_EQ(g_outputSampleRate, DEFAULT_SAMPLE_RATE);
3190 EXPECT_EQ(g_outputChannels, DEFAULT_CHANNEL_COUNT);
3191 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
3192 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
3193 Release();
3194 }
3195
3196 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_VorbisFormatChanged, TestSize.Level1)
3197 {
3198 isTestingFormat_ = true;
3199 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(INPUT_VORBIS_FILE_PATH, OUTPUT_VORBIS_PCM_FILE_PATH));
3200 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_VORBIS));
3201 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_VORBIS));
3202 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3203 {
3204 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae4002() 3205 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
3206 }
3207 EXPECT_EQ(g_outputSampleRate, DEFAULT_SAMPLE_RATE);
3208 EXPECT_EQ(g_outputChannels, DEFAULT_CHANNEL_COUNT);
3209 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
3210 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
3211 Release();
3212 }
3213
3214 #ifdef SUPPORT_CODEC_COOK
3215 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_CreateByMime_01, TestSize.Level1)
3216 {
3217 audioDec_ = OH_AudioCodec_CreateByMime(AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_COOK.data(), false);
3218 EXPECT_NE(nullptr, audioDec_);
3219 Release();
3220 }
3221
3222 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_CreateByName_01, TestSize.Level1)
3223 {
3224 audioDec_ = OH_AudioCodec_CreateByName((AVCodecCodecName::AUDIO_DECODER_COOK_NAME).data());
3225 EXPECT_NE(nullptr, audioDec_);
3226 Release();
3227 }
3228
3229 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_Configure_01, TestSize.Level1)
3230 {
3231 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_COOK));
3232 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3233 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_COOK));
3234 Release();
3235 }
3236
3237 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_Configure_02, TestSize.Level1)
3238 {
3239 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_COOK));
3240 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3241 format_ = OH_AVFormat_Create();
3242 EXPECT_NE(nullptr, format_);
3243
3244 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
3245 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
3246 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(), 44100);
3247 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // missing channel count
3248
3249 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
3250 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MIN_CHANNEL_COUNT);
3251 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal min channel count
3252
3253 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
3254 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), ABNORMAL_MAX_CHANNEL_COUNT);
3255 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal max channel count
3256
3257 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
3258 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
3259 int64_t extradataSize;
3260 EXPECT_EQ(true, inputFile_.is_open());
3261 inputFile_.read(reinterpret_cast<char *>(&extradataSize), sizeof(int64_t));
3262 EXPECT_EQ(false, inputFile_.gcount() != sizeof(int64_t) || extradataSize < 0);
3263 char buffer[extradataSize];
3264 inputFile_.read(buffer, extradataSize);
3265 EXPECT_EQ(false, inputFile_.gcount() != extradataSize);
3266 OH_AVFormat_SetBuffer(format_, MediaDescriptionKey::MD_KEY_CODEC_CONFIG.data(), (uint8_t *)buffer,
3267 extradataSize);
3268 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal channel count
3269
3270 Release();
3271 }
3272
3273 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_Configure_03, TestSize.Level1)
3274 {
3275 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_COOK));
3276 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3277 format_ = OH_AVFormat_Create();
3278 EXPECT_NE(nullptr, format_);
3279
3280 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT.data(), DEFAULT_SAMPLE_FORMAT);
3281 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_CHANNEL_COUNT.data(), DEFAULT_CHANNEL_COUNT);
3282 OH_AVFormat_SetLongValue(format_, MediaDescriptionKey::MD_KEY_BITRATE.data(), 44100);
3283 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // missing sample rate
3284
3285 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
3286 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), ABNORMAL_SAMPLE_RATE);
3287 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // abnormal sample rate
3288
3289 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
3290 OH_AVFormat_SetIntValue(format_, MediaDescriptionKey::MD_KEY_SAMPLE_RATE.data(), DEFAULT_SAMPLE_RATE);
3291 int64_t extradataSize;
3292 EXPECT_EQ(true, inputFile_.is_open());
3293 inputFile_.read(reinterpret_cast<char *>(&extradataSize), sizeof(int64_t));
3294 EXPECT_EQ(false, inputFile_.gcount() != sizeof(int64_t) || extradataSize < 0);
3295 char buffer[extradataSize];
3296 inputFile_.read(buffer, extradataSize);
3297 EXPECT_EQ(false, inputFile_.gcount() != extradataSize);
3298 OH_AVFormat_SetBuffer(format_, MediaDescriptionKey::MD_KEY_CODEC_CONFIG.data(), (uint8_t *)buffer,
3299 extradataSize);
3300 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Configure(audioDec_, format_)); // normal sample rate
3301
3302 Release();
3303 }
3304
3305 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_SetParameter_01, TestSize.Level1)
3306 {
3307 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_COOK));
3308 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3309 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_COOK));
3310 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3311 {
3312 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae4102() 3313 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
3314 }
3315 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Flush(audioDec_));
3316 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
3317 Release();
3318 }
3319
3320 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_SetParameter_02, TestSize.Level1)
3321 {
3322 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_COOK));
3323 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3324 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_COOK));
3325 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_SetParameter(audioDec_, format_));
3326 Release();
3327 }
3328
3329 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_Start_01, TestSize.Level1)
3330 {
3331 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_COOK));
3332 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3333 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_COOK));
3334 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3335 {
3336 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae4202() 3337 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
3338 }
3339 Release();
3340 }
3341
3342 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_Start_02, TestSize.Level1)
3343 {
3344 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_COOK));
3345 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3346 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_COOK));
3347 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3348 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
3349 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Start(audioDec_));
3350 {
3351 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae4302() 3352 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
3353 }
3354 Release();
3355 }
3356
3357 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_Stop_01, TestSize.Level1)
3358 {
3359 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_COOK));
3360 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3361 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_COOK));
3362 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3363 sleep(1);
3364
3365 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
3366 Release();
3367 }
3368
3369 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_Flush_01, TestSize.Level1)
3370 {
3371 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_COOK));
3372 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3373 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_COOK));
3374 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3375 {
3376 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae4402() 3377 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
3378 }
3379 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Flush(audioDec_));
3380 Release();
3381 }
3382
3383 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_Reset_01, TestSize.Level1)
3384 {
3385 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_COOK));
3386 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3387 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_COOK));
3388 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
3389 Release();
3390 }
3391
3392 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_Reset_02, TestSize.Level1)
3393 {
3394 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_COOK));
3395 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3396 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_COOK));
3397 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3398 {
3399 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae4502() 3400 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
3401 }
3402 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
3403 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
3404 Release();
3405 }
3406
3407 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_Reset_03, TestSize.Level1)
3408 {
3409 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_COOK));
3410 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3411 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_COOK));
3412 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3413 {
3414 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae4602() 3415 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
3416 }
3417 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Reset(audioDec_));
3418 Release();
3419 }
3420
3421 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_Destroy_01, TestSize.Level1)
3422 {
3423 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_COOK));
3424 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3425 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_COOK));
3426 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3427 {
3428 unique_lock<mutex> lock(signal_->startMutex_);
__anon8ca1ecae4702() 3429 signal_->startCond_.wait(lock, [this]() { return (!(isRunning_.load())); });
3430 }
3431 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Stop());
3432 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Destroy(audioDec_));
3433 }
3434
3435 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_Destroy_02, TestSize.Level1)
3436 {
3437 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_COOK));
3438 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3439 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_COOK));
3440
3441 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Destroy(audioDec_));
3442 }
3443
3444 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_GetOutputFormat_01, TestSize.Level1)
3445 {
3446 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_COOK));
3447 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3448 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_COOK));
3449
3450 EXPECT_NE(nullptr, OH_AudioCodec_GetOutputDescription(audioDec_));
3451 Release();
3452 }
3453
3454 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_IsValid_01, TestSize.Level1)
3455 {
3456 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3457 bool isValid = false;
3458 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_IsValid(audioDec_, &isValid));
3459 Release();
3460 }
3461
3462 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_Prepare_01, TestSize.Level1)
3463 {
3464 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_COOK));
3465 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3466 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_COOK));
3467 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_Prepare(audioDec_));
3468 Release();
3469 }
3470
3471 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_PushInputData_01, TestSize.Level1)
3472 {
3473 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_COOK));
3474 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3475 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_COOK));
3476 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3477
3478 // case0 传参异常
3479 const uint32_t index = 1024;
3480 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_PushInputBuffer(audioDec_, index));
3481 Release();
3482 }
3483
3484 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_Cook_ReleaseOutputBuffer_01, TestSize.Level1)
3485 {
3486 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, InitFile(AudioBufferFormatType::TYPE_COOK));
3487 ASSERT_EQ(OH_AVErrCode::AV_ERR_OK, CreateCodecFunc(AudioBufferFormatType::TYPE_COOK));
3488 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Configure(AudioBufferFormatType::TYPE_COOK));
3489 EXPECT_EQ(OH_AVErrCode::AV_ERR_OK, Start());
3490
3491 // case0 传参异常
3492 const uint32_t index = 1024;
3493 EXPECT_NE(OH_AVErrCode::AV_ERR_OK, OH_AudioCodec_FreeOutputBuffer(audioDec_, index));
3494 Release();
3495 }
3496 #endif
3497
3498 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_OuterSupportMimeTest_01, TestSize.Level1)
3499 {
3500 const vector<std::string_view> allMimeTable = {
3501 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AAC,
3502 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_FLAC,
3503 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_VORBIS,
3504 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AMRNB,
3505 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_OPUS,
3506 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_MPEG,
3507 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AMRWB,
3508 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_VIVID,
3509 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_G711MU,
3510 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_G711A,
3511 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_L2HC,
3512 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_LBVC,
3513 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_APE,
3514 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_COOK,
3515 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AC3,
3516 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_RAW
3517 };
3518
3519 const bool isEncoder = false;
3520 for (const auto &mime : allMimeTable) {
3521 auto capability = OH_AVCodec_GetCapability(mime.data(), isEncoder);
3522 const char *name = OH_AVCapability_GetName(capability);
3523 if (name == nullptr) {
3524 cout << "without capaility:" << mime << endl;
3525 continue;
3526 }
3527 auto audioDec = OH_AudioCodec_CreateByMime(mime.data(), isEncoder);
3528 if (AVCodecMimeType::CheckAudioCodecMimeSupportOuter(mime.data(), isEncoder)) {
3529 EXPECT_NE(nullptr, audioDec);
3530 if (audioDec == nullptr) {
3531 cout << "create " << mime << " failed" << endl;
3532 }
3533 } else {
3534 EXPECT_EQ(nullptr, audioDec);
3535 if (audioDec != nullptr) {
3536 cout << "limit " << mime << " failed" << endl;
3537 }
3538 }
3539
3540 if (audioDec != nullptr) {
3541 OH_AudioCodec_Destroy(audioDec);
3542 }
3543 }
3544 }
3545
3546 HWTEST_F(AudioDecoderBufferCapiUnitTest, audioDecoder_OuterSupportCodecNameTest_01, TestSize.Level1)
3547 {
3548 const vector<std::string_view> allMimeTable = {
3549 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AAC,
3550 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_FLAC,
3551 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_OPUS,
3552 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_G711MU,
3553 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_G711A,
3554 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_RAW,
3555 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_VORBIS,
3556 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_MPEG,
3557 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_VIVID,
3558 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AMRNB,
3559 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AMRWB,
3560 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_APE,
3561 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_L2HC,
3562 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_LBVC,
3563 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_COOK,
3564 AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AC3,
3565 };
3566
3567 const bool isEncoder = false;
3568 for (const auto &mime : allMimeTable) {
3569 auto capability = OH_AVCodec_GetCapability(mime.data(), isEncoder);
3570 const char *name = OH_AVCapability_GetName(capability);
3571 auto audioDec = OH_AudioCodec_CreateByName(name);
3572 if (AVCodecCodecName::CheckAudioCodecNameSupportOuter(name)) {
3573 EXPECT_NE(nullptr, audioDec);
3574 if (audioDec == nullptr) {
3575 cout << "create " << name << " failed" << endl;
3576 }
3577 } else {
3578 EXPECT_EQ(nullptr, audioDec);
3579 if (audioDec != nullptr) {
3580 cout << "limit " << name << " failed" << endl;
3581 }
3582 }
3583
3584 if (audioDec != nullptr) {
3585 OH_AudioCodec_Destroy(audioDec);
3586 }
3587 }
3588 }
3589 }
3590 }