1da853ecaSopenharmony_ci/* 2da853ecaSopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd. 3da853ecaSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4da853ecaSopenharmony_ci * you may not use this file except in compliance with the License. 5da853ecaSopenharmony_ci * You may obtain a copy of the License at 6da853ecaSopenharmony_ci * 7da853ecaSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8da853ecaSopenharmony_ci * 9da853ecaSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10da853ecaSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11da853ecaSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12da853ecaSopenharmony_ci * See the License for the specific language governing permissions and 13da853ecaSopenharmony_ci * limitations under the License. 14da853ecaSopenharmony_ci */ 15da853ecaSopenharmony_ci 16da853ecaSopenharmony_ci#include <string> 17da853ecaSopenharmony_ci#include <iostream> 18da853ecaSopenharmony_ci#include <thread> 19da853ecaSopenharmony_ci#include <vector> 20da853ecaSopenharmony_ci#include <ctime> 21da853ecaSopenharmony_ci#include "gtest/gtest.h" 22da853ecaSopenharmony_ci#include "AudioDecoderDemoCommon.h" 23da853ecaSopenharmony_ci#include "fcntl.h" 24da853ecaSopenharmony_ci#include "media_description.h" 25da853ecaSopenharmony_ci#include "avcodec_info.h" 26da853ecaSopenharmony_ci#include "avcodec_errors.h" 27da853ecaSopenharmony_ci#include "av_common.h" 28da853ecaSopenharmony_ci#include "meta/format.h" 29da853ecaSopenharmony_ci 30da853ecaSopenharmony_ciusing namespace std; 31da853ecaSopenharmony_ciusing namespace testing::ext; 32da853ecaSopenharmony_ciusing namespace OHOS; 33da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec; 34da853ecaSopenharmony_ci 35da853ecaSopenharmony_ci 36da853ecaSopenharmony_cinamespace { 37da853ecaSopenharmony_ci class InnerStablityTest : public testing::Test { 38da853ecaSopenharmony_ci public: 39da853ecaSopenharmony_ci static void SetUpTestCase(); 40da853ecaSopenharmony_ci static void TearDownTestCase(); 41da853ecaSopenharmony_ci void SetUp() override; 42da853ecaSopenharmony_ci void TearDown() override; 43da853ecaSopenharmony_ci }; 44da853ecaSopenharmony_ci 45da853ecaSopenharmony_ci void InnerStablityTest::SetUpTestCase() {} 46da853ecaSopenharmony_ci void InnerStablityTest::TearDownTestCase() {} 47da853ecaSopenharmony_ci void InnerStablityTest::SetUp() {} 48da853ecaSopenharmony_ci void InnerStablityTest::TearDown() {} 49da853ecaSopenharmony_ci 50da853ecaSopenharmony_ci constexpr int RUN_TIMES = 100000; 51da853ecaSopenharmony_ci constexpr int RUN_TIME = 12 * 3600; 52da853ecaSopenharmony_ci} 53da853ecaSopenharmony_ci 54da853ecaSopenharmony_ci/** 55da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_001 56da853ecaSopenharmony_ci * @tc.name : InnerCreateByMime(1000 times) 57da853ecaSopenharmony_ci * @tc.desc : Stability test 58da853ecaSopenharmony_ci */ 59da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_001, TestSize.Level2) 60da853ecaSopenharmony_ci{ 61da853ecaSopenharmony_ci srand(time(nullptr) * 10); 62da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 63da853ecaSopenharmony_ci 64da853ecaSopenharmony_ci string mimeType[] = { "audio/mp4a-latm", "audio/mpeg", "audio/vorbis", "audio/flac", "audio/amr-wb", 65da853ecaSopenharmony_ci "audio/3gpp", "audio/g711mu" }; 66da853ecaSopenharmony_ci 67da853ecaSopenharmony_ci for (int i = 0; i < RUN_TIMES; i++) 68da853ecaSopenharmony_ci { 69da853ecaSopenharmony_ci int typeIndex = rand() % 4; 70da853ecaSopenharmony_ci decoderDemo->InnerCreateByMime(mimeType[typeIndex].c_str()); 71da853ecaSopenharmony_ci cout << "run time is: " << i << endl; 72da853ecaSopenharmony_ci int32_t ret = decoderDemo->InnerDestroy(); 73da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 74da853ecaSopenharmony_ci } 75da853ecaSopenharmony_ci 76da853ecaSopenharmony_ci delete decoderDemo; 77da853ecaSopenharmony_ci} 78da853ecaSopenharmony_ci 79da853ecaSopenharmony_ci 80da853ecaSopenharmony_ci/** 81da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_002 82da853ecaSopenharmony_ci * @tc.name : InnerCreateByName(1000 times) 83da853ecaSopenharmony_ci * @tc.desc : Stability test 84da853ecaSopenharmony_ci */ 85da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_002, TestSize.Level2) 86da853ecaSopenharmony_ci{ 87da853ecaSopenharmony_ci srand(time(nullptr) * 10); 88da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 89da853ecaSopenharmony_ci 90da853ecaSopenharmony_ci for (int i = 0; i < RUN_TIMES; i++) 91da853ecaSopenharmony_ci { 92da853ecaSopenharmony_ci decoderDemo->InnerCreateByName("OH.Media.Codec.Decoder.Audio.Mpeg"); 93da853ecaSopenharmony_ci cout << "run time is: " << i << endl; 94da853ecaSopenharmony_ci int32_t ret = decoderDemo->InnerDestroy(); 95da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 96da853ecaSopenharmony_ci } 97da853ecaSopenharmony_ci delete decoderDemo; 98da853ecaSopenharmony_ci} 99da853ecaSopenharmony_ci 100da853ecaSopenharmony_ci 101da853ecaSopenharmony_ci/** 102da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_003 103da853ecaSopenharmony_ci * @tc.name : InnerPrepare(1000 times) 104da853ecaSopenharmony_ci * @tc.desc : Stability test 105da853ecaSopenharmony_ci */ 106da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_003, TestSize.Level2) 107da853ecaSopenharmony_ci{ 108da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 109da853ecaSopenharmony_ci int32_t ret = decoderDemo->InnerCreateByName("OH.Media.Codec.Decoder.Audio.Mpeg"); 110da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 111da853ecaSopenharmony_ci std::shared_ptr<ADecSignal> signal_ = decoderDemo->getSignal(); 112da853ecaSopenharmony_ci std::shared_ptr<InnerADecDemoCallback> cb_ = make_unique<InnerADecDemoCallback>(signal_); 113da853ecaSopenharmony_ci decoderDemo->InnerSetCallback(cb_); 114da853ecaSopenharmony_ci 115da853ecaSopenharmony_ci Format format; 116da853ecaSopenharmony_ci 117da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 320000); 118da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 119da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 48000); 120da853ecaSopenharmony_ci 121da853ecaSopenharmony_ci decoderDemo->InnerConfigure(format); 122da853ecaSopenharmony_ci 123da853ecaSopenharmony_ci for (int i = 0; i < RUN_TIMES; i++) 124da853ecaSopenharmony_ci { 125da853ecaSopenharmony_ci ret = decoderDemo->InnerPrepare(); 126da853ecaSopenharmony_ci cout << "run time is: " << i << ", ret is:" << ret << endl; 127da853ecaSopenharmony_ci } 128da853ecaSopenharmony_ci 129da853ecaSopenharmony_ci decoderDemo->InnerDestroy(); 130da853ecaSopenharmony_ci 131da853ecaSopenharmony_ci delete decoderDemo; 132da853ecaSopenharmony_ci} 133da853ecaSopenharmony_ci 134da853ecaSopenharmony_ci 135da853ecaSopenharmony_ci/** 136da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_004 137da853ecaSopenharmony_ci * @tc.name : InnerStart(1000 times) 138da853ecaSopenharmony_ci * @tc.desc : Stability test 139da853ecaSopenharmony_ci */ 140da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_004, TestSize.Level2) 141da853ecaSopenharmony_ci{ 142da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 143da853ecaSopenharmony_ci int32_t ret = decoderDemo->InnerCreateByName("OH.Media.Codec.Decoder.Audio.Mpeg"); 144da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 145da853ecaSopenharmony_ci std::shared_ptr<ADecSignal> signal_ = decoderDemo->getSignal(); 146da853ecaSopenharmony_ci std::shared_ptr<InnerADecDemoCallback> cb_ = make_unique<InnerADecDemoCallback>(signal_); 147da853ecaSopenharmony_ci decoderDemo->InnerSetCallback(cb_); 148da853ecaSopenharmony_ci Format format; 149da853ecaSopenharmony_ci 150da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 320000); 151da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 152da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 48000); 153da853ecaSopenharmony_ci 154da853ecaSopenharmony_ci decoderDemo->InnerConfigure(format); 155da853ecaSopenharmony_ci decoderDemo->InnerPrepare(); 156da853ecaSopenharmony_ci 157da853ecaSopenharmony_ci for (int i = 0; i < RUN_TIMES; i++) 158da853ecaSopenharmony_ci { 159da853ecaSopenharmony_ci ret = decoderDemo->InnerStart(); 160da853ecaSopenharmony_ci cout << "run time is: " << i << ", ret is:" << ret << endl; 161da853ecaSopenharmony_ci } 162da853ecaSopenharmony_ci 163da853ecaSopenharmony_ci decoderDemo->InnerDestroy(); 164da853ecaSopenharmony_ci 165da853ecaSopenharmony_ci delete decoderDemo; 166da853ecaSopenharmony_ci} 167da853ecaSopenharmony_ci 168da853ecaSopenharmony_ci 169da853ecaSopenharmony_ci/** 170da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_005 171da853ecaSopenharmony_ci * @tc.name : InnerStop(1000 times) 172da853ecaSopenharmony_ci * @tc.desc : Stability test 173da853ecaSopenharmony_ci */ 174da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_005, TestSize.Level2) 175da853ecaSopenharmony_ci{ 176da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 177da853ecaSopenharmony_ci int32_t ret = decoderDemo->InnerCreateByName("OH.Media.Codec.Decoder.Audio.Mpeg"); 178da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 179da853ecaSopenharmony_ci std::shared_ptr<ADecSignal> signal_ = decoderDemo->getSignal(); 180da853ecaSopenharmony_ci std::shared_ptr<InnerADecDemoCallback> cb_ = make_unique<InnerADecDemoCallback>(signal_); 181da853ecaSopenharmony_ci decoderDemo->InnerSetCallback(cb_); 182da853ecaSopenharmony_ci Format format; 183da853ecaSopenharmony_ci 184da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 320000); 185da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 186da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 48000); 187da853ecaSopenharmony_ci 188da853ecaSopenharmony_ci decoderDemo->InnerConfigure(format); 189da853ecaSopenharmony_ci decoderDemo->InnerPrepare(); 190da853ecaSopenharmony_ci decoderDemo->InnerStart(); 191da853ecaSopenharmony_ci 192da853ecaSopenharmony_ci for (int i = 0; i < RUN_TIMES; i++) 193da853ecaSopenharmony_ci { 194da853ecaSopenharmony_ci ret = decoderDemo->InnerStop(); 195da853ecaSopenharmony_ci cout << "run time is: " << i << ", ret is:" << ret << endl; 196da853ecaSopenharmony_ci } 197da853ecaSopenharmony_ci 198da853ecaSopenharmony_ci decoderDemo->InnerDestroy(); 199da853ecaSopenharmony_ci 200da853ecaSopenharmony_ci delete decoderDemo; 201da853ecaSopenharmony_ci} 202da853ecaSopenharmony_ci 203da853ecaSopenharmony_ci/** 204da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_006 205da853ecaSopenharmony_ci * @tc.name : InnerDestroy(1000 times) 206da853ecaSopenharmony_ci * @tc.desc : Stability test 207da853ecaSopenharmony_ci */ 208da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_006, TestSize.Level2) 209da853ecaSopenharmony_ci{ 210da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 211da853ecaSopenharmony_ci int32_t ret = decoderDemo->InnerCreateByName("OH.Media.Codec.Decoder.Audio.Mpeg"); 212da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 213da853ecaSopenharmony_ci std::shared_ptr<ADecSignal> signal_ = decoderDemo->getSignal(); 214da853ecaSopenharmony_ci std::shared_ptr<InnerADecDemoCallback> cb_ = make_unique<InnerADecDemoCallback>(signal_); 215da853ecaSopenharmony_ci decoderDemo->InnerSetCallback(cb_); 216da853ecaSopenharmony_ci Format format; 217da853ecaSopenharmony_ci 218da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 320000); 219da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 220da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 48000); 221da853ecaSopenharmony_ci 222da853ecaSopenharmony_ci decoderDemo->InnerConfigure(format); 223da853ecaSopenharmony_ci decoderDemo->InnerPrepare(); 224da853ecaSopenharmony_ci decoderDemo->InnerStart(); 225da853ecaSopenharmony_ci decoderDemo->InnerStop(); 226da853ecaSopenharmony_ci 227da853ecaSopenharmony_ci for (int i = 0; i < RUN_TIMES; i++) 228da853ecaSopenharmony_ci { 229da853ecaSopenharmony_ci ret = decoderDemo->InnerDestroy(); 230da853ecaSopenharmony_ci cout << "run time is: " << i << ", ret is:" << ret << endl; 231da853ecaSopenharmony_ci } 232da853ecaSopenharmony_ci delete decoderDemo; 233da853ecaSopenharmony_ci} 234da853ecaSopenharmony_ci 235da853ecaSopenharmony_ci 236da853ecaSopenharmony_ci/** 237da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_007 238da853ecaSopenharmony_ci * @tc.name : InnerReset(1000 times) 239da853ecaSopenharmony_ci * @tc.desc : Stability test 240da853ecaSopenharmony_ci */ 241da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_007, TestSize.Level2) 242da853ecaSopenharmony_ci{ 243da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 244da853ecaSopenharmony_ci int32_t ret = decoderDemo->InnerCreateByName("OH.Media.Codec.Decoder.Audio.Mpeg"); 245da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 246da853ecaSopenharmony_ci std::shared_ptr<ADecSignal> signal_ = decoderDemo->getSignal(); 247da853ecaSopenharmony_ci std::shared_ptr<InnerADecDemoCallback> cb_ = make_unique<InnerADecDemoCallback>(signal_); 248da853ecaSopenharmony_ci decoderDemo->InnerSetCallback(cb_); 249da853ecaSopenharmony_ci Format format; 250da853ecaSopenharmony_ci 251da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 320000); 252da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 253da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 48000); 254da853ecaSopenharmony_ci 255da853ecaSopenharmony_ci decoderDemo->InnerConfigure(format); 256da853ecaSopenharmony_ci decoderDemo->InnerPrepare(); 257da853ecaSopenharmony_ci decoderDemo->InnerStart(); 258da853ecaSopenharmony_ci 259da853ecaSopenharmony_ci for (int i = 0; i < RUN_TIMES; i++) 260da853ecaSopenharmony_ci { 261da853ecaSopenharmony_ci ret = decoderDemo->InnerReset(); 262da853ecaSopenharmony_ci cout << "run time is: " << i << ", ret is:" << ret << endl; 263da853ecaSopenharmony_ci } 264da853ecaSopenharmony_ci decoderDemo->InnerDestroy(); 265da853ecaSopenharmony_ci delete decoderDemo; 266da853ecaSopenharmony_ci} 267da853ecaSopenharmony_ci 268da853ecaSopenharmony_ci 269da853ecaSopenharmony_ci/** 270da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_008 271da853ecaSopenharmony_ci * @tc.name : InnerFlush(1000 times) 272da853ecaSopenharmony_ci * @tc.desc : Stability test 273da853ecaSopenharmony_ci */ 274da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_008, TestSize.Level2) 275da853ecaSopenharmony_ci{ 276da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 277da853ecaSopenharmony_ci int32_t ret = decoderDemo->InnerCreateByName("OH.Media.Codec.Decoder.Audio.Mpeg"); 278da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 279da853ecaSopenharmony_ci std::shared_ptr<ADecSignal> signal_ = decoderDemo->getSignal(); 280da853ecaSopenharmony_ci std::shared_ptr<InnerADecDemoCallback> cb_ = make_unique<InnerADecDemoCallback>(signal_); 281da853ecaSopenharmony_ci decoderDemo->InnerSetCallback(cb_); 282da853ecaSopenharmony_ci Format format; 283da853ecaSopenharmony_ci 284da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 320000); 285da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 286da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 48000); 287da853ecaSopenharmony_ci 288da853ecaSopenharmony_ci decoderDemo->InnerConfigure(format); 289da853ecaSopenharmony_ci decoderDemo->InnerPrepare(); 290da853ecaSopenharmony_ci decoderDemo->InnerStart(); 291da853ecaSopenharmony_ci 292da853ecaSopenharmony_ci for (int i = 0; i < RUN_TIMES; i++) 293da853ecaSopenharmony_ci { 294da853ecaSopenharmony_ci ret = decoderDemo->InnerFlush(); 295da853ecaSopenharmony_ci cout << "run time is: " << i << ", ret is:" << ret << endl; 296da853ecaSopenharmony_ci } 297da853ecaSopenharmony_ci decoderDemo->InnerDestroy(); 298da853ecaSopenharmony_ci delete decoderDemo; 299da853ecaSopenharmony_ci} 300da853ecaSopenharmony_ci 301da853ecaSopenharmony_ci 302da853ecaSopenharmony_ci/** 303da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_009 304da853ecaSopenharmony_ci * @tc.name : InnerRelease(1000 times) 305da853ecaSopenharmony_ci * @tc.desc : Stability test 306da853ecaSopenharmony_ci */ 307da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_009, TestSize.Level2) 308da853ecaSopenharmony_ci{ 309da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 310da853ecaSopenharmony_ci int32_t ret = decoderDemo->InnerCreateByName("OH.Media.Codec.Decoder.Audio.Mpeg"); 311da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, ret); 312da853ecaSopenharmony_ci std::shared_ptr<ADecSignal> signal_ = decoderDemo->getSignal(); 313da853ecaSopenharmony_ci std::shared_ptr<InnerADecDemoCallback> cb_ = make_unique<InnerADecDemoCallback>(signal_); 314da853ecaSopenharmony_ci decoderDemo->InnerSetCallback(cb_); 315da853ecaSopenharmony_ci Format format; 316da853ecaSopenharmony_ci 317da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 320000); 318da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 319da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 48000); 320da853ecaSopenharmony_ci 321da853ecaSopenharmony_ci decoderDemo->InnerConfigure(format); 322da853ecaSopenharmony_ci decoderDemo->InnerPrepare(); 323da853ecaSopenharmony_ci decoderDemo->InnerStart(); 324da853ecaSopenharmony_ci 325da853ecaSopenharmony_ci for (int i = 0; i < RUN_TIMES; i++) 326da853ecaSopenharmony_ci { 327da853ecaSopenharmony_ci ret = decoderDemo->InnerRelease(); 328da853ecaSopenharmony_ci cout << "run time is: " << i << ", ret is:" << ret << endl; 329da853ecaSopenharmony_ci } 330da853ecaSopenharmony_ci decoderDemo->InnerDestroy(); 331da853ecaSopenharmony_ci delete decoderDemo; 332da853ecaSopenharmony_ci} 333da853ecaSopenharmony_ci 334da853ecaSopenharmony_ci 335da853ecaSopenharmony_ci/** 336da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_010 337da853ecaSopenharmony_ci * @tc.name : MP3(long time) 338da853ecaSopenharmony_ci * @tc.desc : Stability test 339da853ecaSopenharmony_ci */ 340da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_010, TestSize.Level2) 341da853ecaSopenharmony_ci{ 342da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 343da853ecaSopenharmony_ci time_t startTime = time(nullptr); 344da853ecaSopenharmony_ci ASSERT_NE(startTime, -1); 345da853ecaSopenharmony_ci time_t curTime = startTime; 346da853ecaSopenharmony_ci 347da853ecaSopenharmony_ci while (difftime(curTime, startTime) < RUN_TIME) 348da853ecaSopenharmony_ci { 349da853ecaSopenharmony_ci cout << "run time: " << difftime(curTime, startTime) << " seconds" << endl; 350da853ecaSopenharmony_ci std::string inputFilePath = "s16p_128k_16000_1_dayuhaitang.mp3"; 351da853ecaSopenharmony_ci std::string outputFilePath = "SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_010.pcm"; 352da853ecaSopenharmony_ci 353da853ecaSopenharmony_ci Format format; 354da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000); 355da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 356da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 16000); 357da853ecaSopenharmony_ci 358da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFilePath, outputFilePath, "OH.Media.Codec.Decoder.Audio.Mpeg", format); 359da853ecaSopenharmony_ci curTime = time(nullptr); 360da853ecaSopenharmony_ci ASSERT_NE(curTime, -1); 361da853ecaSopenharmony_ci } 362da853ecaSopenharmony_ci delete decoderDemo; 363da853ecaSopenharmony_ci} 364da853ecaSopenharmony_ci 365da853ecaSopenharmony_ci 366da853ecaSopenharmony_ci/** 367da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_011 368da853ecaSopenharmony_ci * @tc.name : aac(long time) 369da853ecaSopenharmony_ci * @tc.desc : Stability test 370da853ecaSopenharmony_ci */ 371da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_011, TestSize.Level2) 372da853ecaSopenharmony_ci{ 373da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 374da853ecaSopenharmony_ci time_t startTime = time(nullptr); 375da853ecaSopenharmony_ci ASSERT_NE(startTime, -1); 376da853ecaSopenharmony_ci time_t curTime = startTime; 377da853ecaSopenharmony_ci 378da853ecaSopenharmony_ci while (difftime(curTime, startTime) < RUN_TIME) 379da853ecaSopenharmony_ci { 380da853ecaSopenharmony_ci cout << "run time: " << difftime(curTime, startTime) << " seconds" << endl; 381da853ecaSopenharmony_ci std::string inputFilePath = "fltp_aac_low_128k_16000_2_dayuhaitang.aac"; 382da853ecaSopenharmony_ci std::string outputFilePath = "SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_011.pcm"; 383da853ecaSopenharmony_ci 384da853ecaSopenharmony_ci Format format; 385da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2); 386da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 16000); 387da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000); 388da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1); 389da853ecaSopenharmony_ci 390da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFilePath, outputFilePath, "avdec_aac", format); 391da853ecaSopenharmony_ci curTime = time(nullptr); 392da853ecaSopenharmony_ci ASSERT_NE(curTime, -1); 393da853ecaSopenharmony_ci } 394da853ecaSopenharmony_ci delete decoderDemo; 395da853ecaSopenharmony_ci} 396da853ecaSopenharmony_ci 397da853ecaSopenharmony_ci 398da853ecaSopenharmony_ci/** 399da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_012 400da853ecaSopenharmony_ci * @tc.name : avdec_vorbis(long time) 401da853ecaSopenharmony_ci * @tc.desc : Stability test 402da853ecaSopenharmony_ci */ 403da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_012, TestSize.Level2) 404da853ecaSopenharmony_ci{ 405da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 406da853ecaSopenharmony_ci time_t startTime = time(nullptr); 407da853ecaSopenharmony_ci ASSERT_NE(startTime, -1); 408da853ecaSopenharmony_ci time_t curTime = startTime; 409da853ecaSopenharmony_ci 410da853ecaSopenharmony_ci while (difftime(curTime, startTime) < RUN_TIME) 411da853ecaSopenharmony_ci { 412da853ecaSopenharmony_ci cout << "run time: " << difftime(curTime, startTime) << " seconds" << endl; 413da853ecaSopenharmony_ci std::string inputFilePath = "fltp_128k_16000_2_dayuhaitang.ogg"; 414da853ecaSopenharmony_ci std::string outputFilePath = "SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_012.pcm"; 415da853ecaSopenharmony_ci 416da853ecaSopenharmony_ci Format format; 417da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000); 418da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2); 419da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 16000); 420da853ecaSopenharmony_ci 421da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFilePath, outputFilePath, "avdec_vorbis", format); 422da853ecaSopenharmony_ci curTime = time(nullptr); 423da853ecaSopenharmony_ci ASSERT_NE(curTime, -1); 424da853ecaSopenharmony_ci } 425da853ecaSopenharmony_ci delete decoderDemo; 426da853ecaSopenharmony_ci} 427da853ecaSopenharmony_ci 428da853ecaSopenharmony_ci 429da853ecaSopenharmony_ci/** 430da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_013 431da853ecaSopenharmony_ci * @tc.name : avdec_flac(long time) 432da853ecaSopenharmony_ci * @tc.desc : Stability test 433da853ecaSopenharmony_ci */ 434da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_013, TestSize.Level2) 435da853ecaSopenharmony_ci{ 436da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 437da853ecaSopenharmony_ci time_t startTime = time(nullptr); 438da853ecaSopenharmony_ci ASSERT_NE(startTime, -1); 439da853ecaSopenharmony_ci time_t curTime = startTime; 440da853ecaSopenharmony_ci 441da853ecaSopenharmony_ci while (difftime(curTime, startTime) < RUN_TIME) 442da853ecaSopenharmony_ci { 443da853ecaSopenharmony_ci cout << "run time: " << difftime(curTime, startTime) << " seconds" << endl; 444da853ecaSopenharmony_ci std::string inputFilePath = "s32_16000_2_dayuhaitang.flac"; 445da853ecaSopenharmony_ci std::string outputFilePath = "SUB_MULTIMEDIA_AUDIO_DECODER_STABILITY_013.pcm"; 446da853ecaSopenharmony_ci 447da853ecaSopenharmony_ci Format format; 448da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 357000); 449da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2); 450da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 16000); 451da853ecaSopenharmony_ci format.PutIntValue("bits_per_coded_sample", 24); 452da853ecaSopenharmony_ci 453da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFilePath, outputFilePath, "avdec_flac", format); 454da853ecaSopenharmony_ci curTime = time(nullptr); 455da853ecaSopenharmony_ci ASSERT_NE(curTime, -1); 456da853ecaSopenharmony_ci } 457da853ecaSopenharmony_ci delete decoderDemo; 458da853ecaSopenharmony_ci}