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