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 "AudioEncoderDemoCommon.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#include "avcodec_audio_common.h" 30da853ecaSopenharmony_ci 31da853ecaSopenharmony_ciusing namespace std; 32da853ecaSopenharmony_ciusing namespace testing::ext; 33da853ecaSopenharmony_ciusing namespace OHOS; 34da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec; 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 constexpr int RUN_TIMES = 100000; 50da853ecaSopenharmony_ci constexpr int RUN_TIME = 12 * 3600; 51da853ecaSopenharmony_ci string inputFilePath = "/data/audioIn.mp3"; 52da853ecaSopenharmony_ci string outputFilePath = "/data/audioOut.pcm"; 53da853ecaSopenharmony_ci} 54da853ecaSopenharmony_ci 55da853ecaSopenharmony_ci/** 56da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_001 57da853ecaSopenharmony_ci * @tc.name : InnerCreateByMime(1000 times) 58da853ecaSopenharmony_ci * @tc.desc : Stability test 59da853ecaSopenharmony_ci */ 60da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_001, TestSize.Level2) 61da853ecaSopenharmony_ci{ 62da853ecaSopenharmony_ci srand(time(nullptr) * 10); 63da853ecaSopenharmony_ci AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 64da853ecaSopenharmony_ci ASSERT_NE(nullptr, encoderDemo); 65da853ecaSopenharmony_ci string mimeType[] = { "audio/mp4a-latm", "audio/flac" }; 66da853ecaSopenharmony_ci 67da853ecaSopenharmony_ci for (int i = 0; i < RUN_TIMES; i++) 68da853ecaSopenharmony_ci { 69da853ecaSopenharmony_ci int typeIndex = rand() % 4; 70da853ecaSopenharmony_ci encoderDemo->InnerCreateByMime(mimeType[typeIndex].c_str()); 71da853ecaSopenharmony_ci cout << "run time is: " << i << endl; 72da853ecaSopenharmony_ci encoderDemo->InnerDestroy(); 73da853ecaSopenharmony_ci } 74da853ecaSopenharmony_ci 75da853ecaSopenharmony_ci delete encoderDemo; 76da853ecaSopenharmony_ci} 77da853ecaSopenharmony_ci 78da853ecaSopenharmony_ci/** 79da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_002 80da853ecaSopenharmony_ci * @tc.name : InnerCreateByName(1000 times) 81da853ecaSopenharmony_ci * @tc.desc : Stability test 82da853ecaSopenharmony_ci */ 83da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_002, TestSize.Level2) 84da853ecaSopenharmony_ci{ 85da853ecaSopenharmony_ci srand(time(nullptr) * 10); 86da853ecaSopenharmony_ci AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 87da853ecaSopenharmony_ci ASSERT_NE(nullptr, encoderDemo); 88da853ecaSopenharmony_ci for (int i = 0; i < RUN_TIMES; i++) 89da853ecaSopenharmony_ci { 90da853ecaSopenharmony_ci encoderDemo->InnerCreateByName("OH.Media.Codec.Encoder.Audio.AAC"); 91da853ecaSopenharmony_ci cout << "run time is: " << i << endl; 92da853ecaSopenharmony_ci encoderDemo->InnerDestroy(); 93da853ecaSopenharmony_ci } 94da853ecaSopenharmony_ci delete encoderDemo; 95da853ecaSopenharmony_ci} 96da853ecaSopenharmony_ci 97da853ecaSopenharmony_ci/** 98da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_003 99da853ecaSopenharmony_ci * @tc.name : InnerPrepare(1000 times) 100da853ecaSopenharmony_ci * @tc.desc : Stability test 101da853ecaSopenharmony_ci */ 102da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_003, TestSize.Level2) 103da853ecaSopenharmony_ci{ 104da853ecaSopenharmony_ci AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 105da853ecaSopenharmony_ci encoderDemo->InnerCreateByName("OH.Media.Codec.Encoder.Audio.AAC"); 106da853ecaSopenharmony_ci ASSERT_NE(nullptr, encoderDemo); 107da853ecaSopenharmony_ci Format format; 108da853ecaSopenharmony_ci 109da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 110da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 111da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 112000); 112da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE); 113da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE); 114da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO); 115da853ecaSopenharmony_ci 116da853ecaSopenharmony_ci encoderDemo->InnerConfigure(format); 117da853ecaSopenharmony_ci 118da853ecaSopenharmony_ci for (int i = 0; i < RUN_TIMES; i++) 119da853ecaSopenharmony_ci { 120da853ecaSopenharmony_ci int32_t ret = encoderDemo->InnerPrepare(); 121da853ecaSopenharmony_ci cout << "run time is: " << i << ", ret is:" << ret << endl; 122da853ecaSopenharmony_ci } 123da853ecaSopenharmony_ci 124da853ecaSopenharmony_ci encoderDemo->InnerDestroy(); 125da853ecaSopenharmony_ci 126da853ecaSopenharmony_ci delete encoderDemo; 127da853ecaSopenharmony_ci} 128da853ecaSopenharmony_ci 129da853ecaSopenharmony_ci 130da853ecaSopenharmony_ci/** 131da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_004 132da853ecaSopenharmony_ci * @tc.name : InnerStart(1000 times) 133da853ecaSopenharmony_ci * @tc.desc : Stability test 134da853ecaSopenharmony_ci */ 135da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_004, TestSize.Level2) 136da853ecaSopenharmony_ci{ 137da853ecaSopenharmony_ci AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 138da853ecaSopenharmony_ci encoderDemo->InnerCreateByName("OH.Media.Codec.Encoder.Audio.AAC"); 139da853ecaSopenharmony_ci ASSERT_NE(nullptr, encoderDemo); 140da853ecaSopenharmony_ci Format format; 141da853ecaSopenharmony_ci 142da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 143da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 144da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 112000); 145da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE); 146da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE); 147da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO); 148da853ecaSopenharmony_ci 149da853ecaSopenharmony_ci std::shared_ptr<AEncSignal> signal_ = encoderDemo->getSignal(); 150da853ecaSopenharmony_ci std::shared_ptr<InnerAEnDemoCallback> cb_ = make_unique<InnerAEnDemoCallback>(signal_); 151da853ecaSopenharmony_ci int32_t ret = encoderDemo->InnerSetCallback(cb_); 152da853ecaSopenharmony_ci 153da853ecaSopenharmony_ci encoderDemo->InnerConfigure(format); 154da853ecaSopenharmony_ci encoderDemo->InnerPrepare(); 155da853ecaSopenharmony_ci 156da853ecaSopenharmony_ci for (int i = 0; i < RUN_TIMES; i++) 157da853ecaSopenharmony_ci { 158da853ecaSopenharmony_ci ret = encoderDemo->InnerStart(); 159da853ecaSopenharmony_ci cout << "run time is: " << i << ", ret is:" << ret << endl; 160da853ecaSopenharmony_ci } 161da853ecaSopenharmony_ci 162da853ecaSopenharmony_ci encoderDemo->InnerDestroy(); 163da853ecaSopenharmony_ci 164da853ecaSopenharmony_ci delete encoderDemo; 165da853ecaSopenharmony_ci} 166da853ecaSopenharmony_ci 167da853ecaSopenharmony_ci/** 168da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_005 169da853ecaSopenharmony_ci * @tc.name : InnerStop(1000 times) 170da853ecaSopenharmony_ci * @tc.desc : Stability test 171da853ecaSopenharmony_ci */ 172da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_005, TestSize.Level2) 173da853ecaSopenharmony_ci{ 174da853ecaSopenharmony_ci AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 175da853ecaSopenharmony_ci encoderDemo->InnerCreateByName("OH.Media.Codec.Encoder.Audio.AAC"); 176da853ecaSopenharmony_ci ASSERT_NE(nullptr, encoderDemo); 177da853ecaSopenharmony_ci Format format; 178da853ecaSopenharmony_ci 179da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 180da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 181da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 112000); 182da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE); 183da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE); 184da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO); 185da853ecaSopenharmony_ci 186da853ecaSopenharmony_ci std::shared_ptr<AEncSignal> signal_ = encoderDemo->getSignal(); 187da853ecaSopenharmony_ci std::shared_ptr<InnerAEnDemoCallback> cb_ = make_unique<InnerAEnDemoCallback>(signal_); 188da853ecaSopenharmony_ci int32_t ret = encoderDemo->InnerSetCallback(cb_); 189da853ecaSopenharmony_ci 190da853ecaSopenharmony_ci encoderDemo->InnerConfigure(format); 191da853ecaSopenharmony_ci encoderDemo->InnerPrepare(); 192da853ecaSopenharmony_ci encoderDemo->InnerStart(); 193da853ecaSopenharmony_ci 194da853ecaSopenharmony_ci for (int i = 0; i < RUN_TIMES; i++) 195da853ecaSopenharmony_ci { 196da853ecaSopenharmony_ci ret = encoderDemo->InnerStop(); 197da853ecaSopenharmony_ci cout << "run time is: " << i << ", ret is:" << ret << endl; 198da853ecaSopenharmony_ci } 199da853ecaSopenharmony_ci 200da853ecaSopenharmony_ci encoderDemo->InnerDestroy(); 201da853ecaSopenharmony_ci 202da853ecaSopenharmony_ci delete encoderDemo; 203da853ecaSopenharmony_ci} 204da853ecaSopenharmony_ci 205da853ecaSopenharmony_ci 206da853ecaSopenharmony_ci/** 207da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_006 208da853ecaSopenharmony_ci * @tc.name : InnerDestroy(1000 times) 209da853ecaSopenharmony_ci * @tc.desc : Stability test 210da853ecaSopenharmony_ci */ 211da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_006, TestSize.Level2) 212da853ecaSopenharmony_ci{ 213da853ecaSopenharmony_ci AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 214da853ecaSopenharmony_ci encoderDemo->InnerCreateByName("OH.Media.Codec.Encoder.Audio.AAC"); 215da853ecaSopenharmony_ci ASSERT_NE(nullptr, encoderDemo); 216da853ecaSopenharmony_ci Format format; 217da853ecaSopenharmony_ci 218da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 219da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 220da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 112000); 221da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE); 222da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE); 223da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO); 224da853ecaSopenharmony_ci 225da853ecaSopenharmony_ci std::shared_ptr<AEncSignal> signal_ = encoderDemo->getSignal(); 226da853ecaSopenharmony_ci std::shared_ptr<InnerAEnDemoCallback> cb_ = make_unique<InnerAEnDemoCallback>(signal_); 227da853ecaSopenharmony_ci int32_t ret = encoderDemo->InnerSetCallback(cb_); 228da853ecaSopenharmony_ci 229da853ecaSopenharmony_ci encoderDemo->InnerConfigure(format); 230da853ecaSopenharmony_ci encoderDemo->InnerPrepare(); 231da853ecaSopenharmony_ci encoderDemo->InnerStart(); 232da853ecaSopenharmony_ci encoderDemo->InnerStop(); 233da853ecaSopenharmony_ci 234da853ecaSopenharmony_ci for (int i = 0; i < RUN_TIMES; i++) 235da853ecaSopenharmony_ci { 236da853ecaSopenharmony_ci ret = encoderDemo->InnerDestroy(); 237da853ecaSopenharmony_ci cout << "run time is: " << i << ", ret is:" << ret << endl; 238da853ecaSopenharmony_ci } 239da853ecaSopenharmony_ci 240da853ecaSopenharmony_ci delete encoderDemo; 241da853ecaSopenharmony_ci} 242da853ecaSopenharmony_ci 243da853ecaSopenharmony_ci/** 244da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_007 245da853ecaSopenharmony_ci * @tc.name : InnerReset(1000 times) 246da853ecaSopenharmony_ci * @tc.desc : Stability test 247da853ecaSopenharmony_ci */ 248da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_007, TestSize.Level2) 249da853ecaSopenharmony_ci{ 250da853ecaSopenharmony_ci AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 251da853ecaSopenharmony_ci encoderDemo->InnerCreateByName("OH.Media.Codec.Encoder.Audio.AAC"); 252da853ecaSopenharmony_ci ASSERT_NE(nullptr, encoderDemo); 253da853ecaSopenharmony_ci Format format; 254da853ecaSopenharmony_ci 255da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 256da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 257da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 112000); 258da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE); 259da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE); 260da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO); 261da853ecaSopenharmony_ci 262da853ecaSopenharmony_ci std::shared_ptr<AEncSignal> signal_ = encoderDemo->getSignal(); 263da853ecaSopenharmony_ci std::shared_ptr<InnerAEnDemoCallback> cb_ = make_unique<InnerAEnDemoCallback>(signal_); 264da853ecaSopenharmony_ci int32_t ret = encoderDemo->InnerSetCallback(cb_); 265da853ecaSopenharmony_ci 266da853ecaSopenharmony_ci encoderDemo->InnerConfigure(format); 267da853ecaSopenharmony_ci encoderDemo->InnerPrepare(); 268da853ecaSopenharmony_ci encoderDemo->InnerStart(); 269da853ecaSopenharmony_ci 270da853ecaSopenharmony_ci for (int i = 0; i < RUN_TIMES; i++) 271da853ecaSopenharmony_ci { 272da853ecaSopenharmony_ci ret = encoderDemo->InnerReset(); 273da853ecaSopenharmony_ci cout << "run time is: " << i << ", ret is:" << ret << endl; 274da853ecaSopenharmony_ci } 275da853ecaSopenharmony_ci encoderDemo->InnerDestroy(); 276da853ecaSopenharmony_ci delete encoderDemo; 277da853ecaSopenharmony_ci} 278da853ecaSopenharmony_ci 279da853ecaSopenharmony_ci/** 280da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_008 281da853ecaSopenharmony_ci * @tc.name : InnerFlush(1000 times) 282da853ecaSopenharmony_ci * @tc.desc : Stability test 283da853ecaSopenharmony_ci */ 284da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_008, TestSize.Level2) 285da853ecaSopenharmony_ci{ 286da853ecaSopenharmony_ci AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 287da853ecaSopenharmony_ci encoderDemo->InnerCreateByName("OH.Media.Codec.Encoder.Audio.AAC"); 288da853ecaSopenharmony_ci ASSERT_NE(nullptr, encoderDemo); 289da853ecaSopenharmony_ci Format format; 290da853ecaSopenharmony_ci 291da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 292da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 293da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 112000); 294da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE); 295da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE); 296da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO); 297da853ecaSopenharmony_ci 298da853ecaSopenharmony_ci std::shared_ptr<AEncSignal> signal_ = encoderDemo->getSignal(); 299da853ecaSopenharmony_ci std::shared_ptr<InnerAEnDemoCallback> cb_ = make_unique<InnerAEnDemoCallback>(signal_); 300da853ecaSopenharmony_ci int32_t ret = encoderDemo->InnerSetCallback(cb_); 301da853ecaSopenharmony_ci 302da853ecaSopenharmony_ci encoderDemo->InnerConfigure(format); 303da853ecaSopenharmony_ci encoderDemo->InnerPrepare(); 304da853ecaSopenharmony_ci encoderDemo->InnerStart(); 305da853ecaSopenharmony_ci 306da853ecaSopenharmony_ci for (int i = 0; i < RUN_TIMES; i++) 307da853ecaSopenharmony_ci { 308da853ecaSopenharmony_ci ret = encoderDemo->InnerFlush(); 309da853ecaSopenharmony_ci cout << "run time is: " << i << ", ret is:" << ret << endl; 310da853ecaSopenharmony_ci } 311da853ecaSopenharmony_ci encoderDemo->InnerDestroy(); 312da853ecaSopenharmony_ci delete encoderDemo; 313da853ecaSopenharmony_ci} 314da853ecaSopenharmony_ci 315da853ecaSopenharmony_ci/** 316da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_009 317da853ecaSopenharmony_ci * @tc.name : InnerRelease(1000 times) 318da853ecaSopenharmony_ci * @tc.desc : Stability test 319da853ecaSopenharmony_ci */ 320da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_009, TestSize.Level2) 321da853ecaSopenharmony_ci{ 322da853ecaSopenharmony_ci AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 323da853ecaSopenharmony_ci encoderDemo->InnerCreateByName("OH.Media.Codec.Encoder.Audio.AAC"); 324da853ecaSopenharmony_ci ASSERT_NE(nullptr, encoderDemo); 325da853ecaSopenharmony_ci Format format; 326da853ecaSopenharmony_ci 327da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 328da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 329da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 112000); 330da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE); 331da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE); 332da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO); 333da853ecaSopenharmony_ci 334da853ecaSopenharmony_ci std::shared_ptr<AEncSignal> signal_ = encoderDemo->getSignal(); 335da853ecaSopenharmony_ci std::shared_ptr<InnerAEnDemoCallback> cb_ = make_unique<InnerAEnDemoCallback>(signal_); 336da853ecaSopenharmony_ci int32_t ret = encoderDemo->InnerSetCallback(cb_); 337da853ecaSopenharmony_ci 338da853ecaSopenharmony_ci encoderDemo->InnerConfigure(format); 339da853ecaSopenharmony_ci encoderDemo->InnerPrepare(); 340da853ecaSopenharmony_ci encoderDemo->InnerStart(); 341da853ecaSopenharmony_ci 342da853ecaSopenharmony_ci for (int i = 0; i < RUN_TIMES; i++) 343da853ecaSopenharmony_ci { 344da853ecaSopenharmony_ci ret = encoderDemo->InnerRelease(); 345da853ecaSopenharmony_ci cout << "run time is: " << i << ", ret is:" << ret << endl; 346da853ecaSopenharmony_ci } 347da853ecaSopenharmony_ci encoderDemo->InnerDestroy(); 348da853ecaSopenharmony_ci delete encoderDemo; 349da853ecaSopenharmony_ci} 350da853ecaSopenharmony_ci 351da853ecaSopenharmony_ci/** 352da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_010 353da853ecaSopenharmony_ci * @tc.name : aac(long time) 354da853ecaSopenharmony_ci * @tc.desc : Function test 355da853ecaSopenharmony_ci */ 356da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_010, TestSize.Level2) 357da853ecaSopenharmony_ci{ 358da853ecaSopenharmony_ci AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 359da853ecaSopenharmony_ci time_t startTime = time(nullptr); 360da853ecaSopenharmony_ci ASSERT_NE(startTime, -1); 361da853ecaSopenharmony_ci time_t curTime = startTime; 362da853ecaSopenharmony_ci 363da853ecaSopenharmony_ci while (difftime(curTime, startTime) < RUN_TIME) 364da853ecaSopenharmony_ci { 365da853ecaSopenharmony_ci cout << "run time: " << difftime(curTime, startTime) << " seconds" << endl; 366da853ecaSopenharmony_ci inputFilePath = "f32le_44100_1_dayuhaitang.pcm"; 367da853ecaSopenharmony_ci outputFilePath = "FUNCTION_010_stability.aac"; 368da853ecaSopenharmony_ci 369da853ecaSopenharmony_ci Format format; 370da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 371da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 372da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 112000); 373da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE); 374da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE); 375da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO); 376da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1); 377da853ecaSopenharmony_ci 378da853ecaSopenharmony_ci encoderDemo->InnerRunCase(inputFilePath, outputFilePath, "OH.Media.Codec.Encoder.Audio.AAC", format); 379da853ecaSopenharmony_ci curTime = time(nullptr); 380da853ecaSopenharmony_ci ASSERT_NE(curTime, -1); 381da853ecaSopenharmony_ci } 382da853ecaSopenharmony_ci delete encoderDemo; 383da853ecaSopenharmony_ci} 384da853ecaSopenharmony_ci 385da853ecaSopenharmony_ci/** 386da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_011 387da853ecaSopenharmony_ci * @tc.name : flac(long time) 388da853ecaSopenharmony_ci * @tc.desc : Function test 389da853ecaSopenharmony_ci */ 390da853ecaSopenharmony_ciHWTEST_F(InnerStablityTest, SUB_MULTIMEDIA_AUDIO_ENCODER_STABILITY_011, TestSize.Level2) 391da853ecaSopenharmony_ci{ 392da853ecaSopenharmony_ci AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 393da853ecaSopenharmony_ci time_t startTime = time(nullptr); 394da853ecaSopenharmony_ci ASSERT_NE(startTime, -1); 395da853ecaSopenharmony_ci time_t curTime = startTime; 396da853ecaSopenharmony_ci 397da853ecaSopenharmony_ci while (difftime(curTime, startTime) < RUN_TIME) 398da853ecaSopenharmony_ci { 399da853ecaSopenharmony_ci cout << "run time: " << difftime(curTime, startTime) << " seconds" << endl; 400da853ecaSopenharmony_ci inputFilePath = "s16_44100_2_dayuhaitang.pcm"; 401da853ecaSopenharmony_ci outputFilePath = "FUNCTION_011_stability.flac"; 402da853ecaSopenharmony_ci 403da853ecaSopenharmony_ci Format format; 404da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2); 405da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 406da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 112000); 407da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_S32LE); 408da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_S32LE); 409da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, STEREO); 410da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_COMPLIANCE_LEVEL, -2); 411da853ecaSopenharmony_ci encoderDemo->InnerRunCase(inputFilePath, outputFilePath, "OH.Media.Codec.Encoder.Audio.Flac", format); 412da853ecaSopenharmony_ci curTime = time(nullptr); 413da853ecaSopenharmony_ci ASSERT_NE(curTime, -1); 414da853ecaSopenharmony_ci } 415da853ecaSopenharmony_ci delete encoderDemo; 416da853ecaSopenharmony_ci} 417