1da853ecaSopenharmony_ci/* 2da853ecaSopenharmony_ci * Copyright (C) 2023 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#include <string> 16da853ecaSopenharmony_ci#include <iostream> 17da853ecaSopenharmony_ci#include <unistd.h> 18da853ecaSopenharmony_ci#include "gtest/gtest.h" 19da853ecaSopenharmony_ci#include "AudioDecoderDemoCommon.h" 20da853ecaSopenharmony_ci#include "avcodec_errors.h" 21da853ecaSopenharmony_ci#include "avcodec_common.h" 22da853ecaSopenharmony_ci#include "media_description.h" 23da853ecaSopenharmony_ci#include "securec.h" 24da853ecaSopenharmony_ci 25da853ecaSopenharmony_ciusing namespace std; 26da853ecaSopenharmony_ciusing namespace testing::ext; 27da853ecaSopenharmony_ciusing namespace OHOS; 28da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec; 29da853ecaSopenharmony_ci 30da853ecaSopenharmony_ci 31da853ecaSopenharmony_cinamespace { 32da853ecaSopenharmony_ci class InnerFunctionTest : public testing::Test { 33da853ecaSopenharmony_ci public: 34da853ecaSopenharmony_ci static void SetUpTestCase(); 35da853ecaSopenharmony_ci static void TearDownTestCase(); 36da853ecaSopenharmony_ci void SetUp() override; 37da853ecaSopenharmony_ci void TearDown() override; 38da853ecaSopenharmony_ci }; 39da853ecaSopenharmony_ci 40da853ecaSopenharmony_ci void InnerFunctionTest::SetUpTestCase() {} 41da853ecaSopenharmony_ci void InnerFunctionTest::TearDownTestCase() {} 42da853ecaSopenharmony_ci void InnerFunctionTest::SetUp() {} 43da853ecaSopenharmony_ci void InnerFunctionTest::TearDown() {} 44da853ecaSopenharmony_ci 45da853ecaSopenharmony_ci int32_t testResult[10] = { -1 }; 46da853ecaSopenharmony_ci 47da853ecaSopenharmony_ci bool compareFile(string file1, string file2) 48da853ecaSopenharmony_ci { 49da853ecaSopenharmony_ci string ans1, ans2; 50da853ecaSopenharmony_ci int i; 51da853ecaSopenharmony_ci (void)freopen(file1.c_str(), "r", stdin); 52da853ecaSopenharmony_ci char c; 53da853ecaSopenharmony_ci while (scanf_s("%c", &c, 1) != EOF) { 54da853ecaSopenharmony_ci ans1 += c; 55da853ecaSopenharmony_ci } 56da853ecaSopenharmony_ci (void)fclose(stdin); 57da853ecaSopenharmony_ci 58da853ecaSopenharmony_ci (void)freopen(file2.c_str(), "r", stdin); 59da853ecaSopenharmony_ci while (scanf_s("%c", &c, 1) != EOF) { 60da853ecaSopenharmony_ci ans2 += c; 61da853ecaSopenharmony_ci } 62da853ecaSopenharmony_ci (void)fclose(stdin); 63da853ecaSopenharmony_ci if (ans1.size() != ans2.size()) { 64da853ecaSopenharmony_ci return false; 65da853ecaSopenharmony_ci } 66da853ecaSopenharmony_ci for (i = 0; i < ans1.size(); i++) { 67da853ecaSopenharmony_ci if (ans1[i] != ans2[i]) { 68da853ecaSopenharmony_ci return false; 69da853ecaSopenharmony_ci } 70da853ecaSopenharmony_ci } 71da853ecaSopenharmony_ci return true; 72da853ecaSopenharmony_ci } 73da853ecaSopenharmony_ci 74da853ecaSopenharmony_ci void runDecode(string decoderName, string inputFile, string outputFile, int32_t threadId) 75da853ecaSopenharmony_ci { 76da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 77da853ecaSopenharmony_ci 78da853ecaSopenharmony_ci if (decoderName == "OH.Media.Codec.Decoder.Audio.AAC") { 79da853ecaSopenharmony_ci Format format; 80da853ecaSopenharmony_ci uint32_t CHANNEL_COUNT = 1; 81da853ecaSopenharmony_ci uint32_t SAMPLE_RATE = 16100; 82da853ecaSopenharmony_ci uint32_t BITS_RATE = 128000; 83da853ecaSopenharmony_ci uint32_t DEFAULT_AAC_IS_ADTS = 1; 84da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, CHANNEL_COUNT); 85da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE); 86da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, BITS_RATE); 87da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, DEFAULT_AAC_IS_ADTS); 88da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format); 89da853ecaSopenharmony_ci } else if (decoderName == "OH.Media.Codec.Decoder.Audio.Mpeg") { 90da853ecaSopenharmony_ci Format format; 91da853ecaSopenharmony_ci uint32_t CHANNEL_COUNT = 2; 92da853ecaSopenharmony_ci uint32_t SAMPLE_RATE = 44100; 93da853ecaSopenharmony_ci uint32_t BITS_RATE = 128000; 94da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, CHANNEL_COUNT); 95da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE); 96da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, BITS_RATE); 97da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format); 98da853ecaSopenharmony_ci } else if (decoderName == "OH.Media.Codec.Decoder.Audio.Flac") { 99da853ecaSopenharmony_ci Format format; 100da853ecaSopenharmony_ci uint32_t CHANNEL_COUNT = 2; 101da853ecaSopenharmony_ci uint32_t SAMPLE_RATE = 8000; 102da853ecaSopenharmony_ci uint32_t BITS_RATE = 199000; 103da853ecaSopenharmony_ci uint32_t BITS_PER_CODED_SAMPLE = 24; 104da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, CHANNEL_COUNT); 105da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE); 106da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, BITS_RATE); 107da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, BITS_PER_CODED_SAMPLE); 108da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format); 109da853ecaSopenharmony_ci } else { 110da853ecaSopenharmony_ci Format format; 111da853ecaSopenharmony_ci uint32_t CHANNEL_COUNT = 2; 112da853ecaSopenharmony_ci uint32_t SAMPLE_RATE = 48000; 113da853ecaSopenharmony_ci uint32_t BITS_RATE = 45000; 114da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, CHANNEL_COUNT); 115da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE); 116da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, BITS_RATE); 117da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format); 118da853ecaSopenharmony_ci } 119da853ecaSopenharmony_ci testResult[threadId] = AVCS_ERR_OK; 120da853ecaSopenharmony_ci delete decoderDemo; 121da853ecaSopenharmony_ci } 122da853ecaSopenharmony_ci} 123da853ecaSopenharmony_ci 124da853ecaSopenharmony_ci/** 125da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_001 126da853ecaSopenharmony_ci * @tc.name : AAC different sample_rate 127da853ecaSopenharmony_ci * @tc.desc : Function test 128da853ecaSopenharmony_ci */ 129da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_001, TestSize.Level2) 130da853ecaSopenharmony_ci{ 131da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 132da853ecaSopenharmony_ci ASSERT_NE(nullptr, decoderDemo); 133da853ecaSopenharmony_ci 134da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.AAC"; 135da853ecaSopenharmony_ci 136da853ecaSopenharmony_ci int32_t sample_rate_List[] = {7350, 16000, 44100, 48000, 96000}; 137da853ecaSopenharmony_ci 138da853ecaSopenharmony_ci for (int i = 0; i < 5; i++) 139da853ecaSopenharmony_ci { 140da853ecaSopenharmony_ci Format format; 141da853ecaSopenharmony_ci int32_t sample_rate = sample_rate_List[i]; 142da853ecaSopenharmony_ci cout << "sample_rate is: " << sample_rate << endl; 143da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 144da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, sample_rate); 145da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000); 146da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1); 147da853ecaSopenharmony_ci 148da853ecaSopenharmony_ci string inputFile = "fltp_128k_" + to_string(sample_rate) + "_1_dayuhaitang.aac"; 149da853ecaSopenharmony_ci string outputFile = "FUNCTION_001_" + to_string(sample_rate) + "_1_aac_output.pcm"; 150da853ecaSopenharmony_ci 151da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format); 152da853ecaSopenharmony_ci } 153da853ecaSopenharmony_ci delete decoderDemo; 154da853ecaSopenharmony_ci} 155da853ecaSopenharmony_ci 156da853ecaSopenharmony_ci/** 157da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_002 158da853ecaSopenharmony_ci * @tc.name : MP3 different sample_rate 159da853ecaSopenharmony_ci * @tc.desc : Function test 160da853ecaSopenharmony_ci */ 161da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_002, TestSize.Level2) 162da853ecaSopenharmony_ci{ 163da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 164da853ecaSopenharmony_ci ASSERT_NE(nullptr, decoderDemo); 165da853ecaSopenharmony_ci 166da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Mpeg"; 167da853ecaSopenharmony_ci 168da853ecaSopenharmony_ci int32_t sample_rate_List[] = {8000, 16000, 44100, 48000}; 169da853ecaSopenharmony_ci 170da853ecaSopenharmony_ci for (int i = 0; i < 4; i++) 171da853ecaSopenharmony_ci { 172da853ecaSopenharmony_ci Format format; 173da853ecaSopenharmony_ci int32_t sample_rate = sample_rate_List[i]; 174da853ecaSopenharmony_ci cout << "sample_rate is: " << sample_rate << endl; 175da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2); 176da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, sample_rate); 177da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 40000); 178da853ecaSopenharmony_ci 179da853ecaSopenharmony_ci string inputFile = "fltp_40k_" + to_string(sample_rate) + "_2_dayuhaitang.mp3";; 180da853ecaSopenharmony_ci string outputFile = "FUNCTION_002_" + to_string(sample_rate) + "_2_mp3_output.pcm"; 181da853ecaSopenharmony_ci 182da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format); 183da853ecaSopenharmony_ci } 184da853ecaSopenharmony_ci delete decoderDemo; 185da853ecaSopenharmony_ci} 186da853ecaSopenharmony_ci 187da853ecaSopenharmony_ci/** 188da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_003 189da853ecaSopenharmony_ci * @tc.name : vorbis sample_rate 190da853ecaSopenharmony_ci * @tc.desc : Function test 191da853ecaSopenharmony_ci */ 192da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_003, TestSize.Level2) 193da853ecaSopenharmony_ci{ 194da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 195da853ecaSopenharmony_ci ASSERT_NE(nullptr, decoderDemo); 196da853ecaSopenharmony_ci 197da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Vorbis"; 198da853ecaSopenharmony_ci 199da853ecaSopenharmony_ci int32_t sample_rate_List[] = {8000, 16000, 44100, 48000}; 200da853ecaSopenharmony_ci 201da853ecaSopenharmony_ci for (int i = 0; i < 4; i++) 202da853ecaSopenharmony_ci { 203da853ecaSopenharmony_ci Format format; 204da853ecaSopenharmony_ci int32_t sample_rate = sample_rate_List[i]; 205da853ecaSopenharmony_ci cout << "sample_rate is: " << sample_rate << endl; 206da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2); 207da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, sample_rate); 208da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 45000); 209da853ecaSopenharmony_ci 210da853ecaSopenharmony_ci string inputFile = "fltp_45k_" + to_string(sample_rate) + "_2_dayuhaitang.ogg"; 211da853ecaSopenharmony_ci string outputFile = "FUNCTION_003_" + to_string(sample_rate) + "_2_vorbis_output.pcm"; 212da853ecaSopenharmony_ci 213da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format); 214da853ecaSopenharmony_ci } 215da853ecaSopenharmony_ci delete decoderDemo; 216da853ecaSopenharmony_ci} 217da853ecaSopenharmony_ci 218da853ecaSopenharmony_ci/** 219da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_004 220da853ecaSopenharmony_ci * @tc.name : flac different sample_rate 221da853ecaSopenharmony_ci * @tc.desc : Function test 222da853ecaSopenharmony_ci */ 223da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_004, TestSize.Level2) 224da853ecaSopenharmony_ci{ 225da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 226da853ecaSopenharmony_ci ASSERT_NE(nullptr, decoderDemo); 227da853ecaSopenharmony_ci 228da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Flac"; 229da853ecaSopenharmony_ci 230da853ecaSopenharmony_ci int32_t sample_rate_List[] = {8000, 16000, 44100, 48000, 192000}; 231da853ecaSopenharmony_ci 232da853ecaSopenharmony_ci for (int i = 0; i < 5; i++) 233da853ecaSopenharmony_ci { 234da853ecaSopenharmony_ci Format format; 235da853ecaSopenharmony_ci int32_t sample_rate = sample_rate_List[i]; 236da853ecaSopenharmony_ci cout << "sample_rate is: " << sample_rate << endl; 237da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2); 238da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, sample_rate); 239da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 199000); 240da853ecaSopenharmony_ci format.PutIntValue("bits_per_coded_sample", 24); 241da853ecaSopenharmony_ci 242da853ecaSopenharmony_ci string inputFile = "s16_" + to_string(sample_rate) + "_2_dayuhaitang.flac";; 243da853ecaSopenharmony_ci string outputFile = "FUNCTION_004_" + to_string(sample_rate) + "_2_flac_output.pcm"; 244da853ecaSopenharmony_ci 245da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format); 246da853ecaSopenharmony_ci } 247da853ecaSopenharmony_ci delete decoderDemo; 248da853ecaSopenharmony_ci} 249da853ecaSopenharmony_ci 250da853ecaSopenharmony_ci/** 251da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_005 252da853ecaSopenharmony_ci * @tc.name : AAC different Channel_count 253da853ecaSopenharmony_ci * @tc.desc : Function test 254da853ecaSopenharmony_ci */ 255da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_005, TestSize.Level2) 256da853ecaSopenharmony_ci{ 257da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 258da853ecaSopenharmony_ci ASSERT_NE(nullptr, decoderDemo); 259da853ecaSopenharmony_ci 260da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.AAC"; 261da853ecaSopenharmony_ci 262da853ecaSopenharmony_ci int Channel_count_List[] = {1, 2, 8}; 263da853ecaSopenharmony_ci 264da853ecaSopenharmony_ci for (int i = 0; i < 3; i++) 265da853ecaSopenharmony_ci { 266da853ecaSopenharmony_ci Format format; 267da853ecaSopenharmony_ci int Channel_count = Channel_count_List[i]; 268da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, Channel_count); 269da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 270da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000); 271da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1); 272da853ecaSopenharmony_ci 273da853ecaSopenharmony_ci string inputFile = "fltp_128k_44100_" + to_string(Channel_count) + "_dayuhaitang.aac"; 274da853ecaSopenharmony_ci string outputFile = "FUNCTION_005_44100_" + to_string(Channel_count) + "_aac_output.pcm"; 275da853ecaSopenharmony_ci 276da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format); 277da853ecaSopenharmony_ci } 278da853ecaSopenharmony_ci delete decoderDemo; 279da853ecaSopenharmony_ci} 280da853ecaSopenharmony_ci 281da853ecaSopenharmony_ci 282da853ecaSopenharmony_ci/** 283da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_006 284da853ecaSopenharmony_ci * @tc.name : mp3 different Channel_count 285da853ecaSopenharmony_ci * @tc.desc : Function test 286da853ecaSopenharmony_ci */ 287da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_006, TestSize.Level2) 288da853ecaSopenharmony_ci{ 289da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 290da853ecaSopenharmony_ci ASSERT_NE(nullptr, decoderDemo); 291da853ecaSopenharmony_ci 292da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Mpeg"; 293da853ecaSopenharmony_ci 294da853ecaSopenharmony_ci int Channel_count_List[] = {1, 2}; 295da853ecaSopenharmony_ci 296da853ecaSopenharmony_ci for (int i = 0; i < 2; i++) 297da853ecaSopenharmony_ci { 298da853ecaSopenharmony_ci Format format; 299da853ecaSopenharmony_ci int Channel_count = Channel_count_List[i]; 300da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, Channel_count); 301da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 302da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 320000); 303da853ecaSopenharmony_ci 304da853ecaSopenharmony_ci string inputFile = "fltp_128k_44100_" + to_string(Channel_count) + "_dayuhaitang.mp3"; 305da853ecaSopenharmony_ci string outputFile = "FUNCTION_006_44100_" + to_string(Channel_count) + "_mp3_output.pcm"; 306da853ecaSopenharmony_ci 307da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format); 308da853ecaSopenharmony_ci } 309da853ecaSopenharmony_ci delete decoderDemo; 310da853ecaSopenharmony_ci} 311da853ecaSopenharmony_ci 312da853ecaSopenharmony_ci 313da853ecaSopenharmony_ci/** 314da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_007 315da853ecaSopenharmony_ci * @tc.name : flac different Channel_count 316da853ecaSopenharmony_ci * @tc.desc : Function test 317da853ecaSopenharmony_ci */ 318da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_007, TestSize.Level2) 319da853ecaSopenharmony_ci{ 320da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 321da853ecaSopenharmony_ci ASSERT_NE(nullptr, decoderDemo); 322da853ecaSopenharmony_ci 323da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Flac"; 324da853ecaSopenharmony_ci 325da853ecaSopenharmony_ci int Channel_count_List[] = {1, 2, 8}; 326da853ecaSopenharmony_ci 327da853ecaSopenharmony_ci for (int i = 0; i < 3; i++) 328da853ecaSopenharmony_ci { 329da853ecaSopenharmony_ci Format format; 330da853ecaSopenharmony_ci int Channel_count = Channel_count_List[i]; 331da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, Channel_count); 332da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 48000); 333da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 320000); 334da853ecaSopenharmony_ci format.PutIntValue("bits_per_coded_sample", 24); 335da853ecaSopenharmony_ci 336da853ecaSopenharmony_ci string inputFile = "s16_48000_" + to_string(Channel_count) + "_dayuhaitang.flac"; 337da853ecaSopenharmony_ci string outputFile = "FUNCTION_007_48000_" + to_string(Channel_count) + "_flac_output.pcm"; 338da853ecaSopenharmony_ci 339da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format); 340da853ecaSopenharmony_ci } 341da853ecaSopenharmony_ci delete decoderDemo; 342da853ecaSopenharmony_ci} 343da853ecaSopenharmony_ci 344da853ecaSopenharmony_ci/** 345da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_008 346da853ecaSopenharmony_ci * @tc.name : vorbis different Channel_count 347da853ecaSopenharmony_ci * @tc.desc : Function test 348da853ecaSopenharmony_ci */ 349da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_008, TestSize.Level2) 350da853ecaSopenharmony_ci{ 351da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 352da853ecaSopenharmony_ci ASSERT_NE(nullptr, decoderDemo); 353da853ecaSopenharmony_ci 354da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Vorbis"; 355da853ecaSopenharmony_ci 356da853ecaSopenharmony_ci int Channel_count_List[] = {1, 2}; 357da853ecaSopenharmony_ci 358da853ecaSopenharmony_ci for (int i = 0; i < 2; i++) 359da853ecaSopenharmony_ci { 360da853ecaSopenharmony_ci Format format; 361da853ecaSopenharmony_ci int Channel_count = Channel_count_List[i]; 362da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, Channel_count); 363da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 48000); 364da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000); 365da853ecaSopenharmony_ci format.PutIntValue("bits_per_coded_sample", 4); 366da853ecaSopenharmony_ci 367da853ecaSopenharmony_ci string inputFile = "fltp_128k_48000_" + to_string(Channel_count) + "_dayuhaitang.ogg"; 368da853ecaSopenharmony_ci string outputFile = "FUNCTION_008_48000_" + to_string(Channel_count) + "_vorbis_output.pcm"; 369da853ecaSopenharmony_ci 370da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format); 371da853ecaSopenharmony_ci } 372da853ecaSopenharmony_ci delete decoderDemo; 373da853ecaSopenharmony_ci} 374da853ecaSopenharmony_ci 375da853ecaSopenharmony_ci/** 376da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_009 377da853ecaSopenharmony_ci * @tc.name : AAC different bitrate 378da853ecaSopenharmony_ci * @tc.desc : Function test 379da853ecaSopenharmony_ci */ 380da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_009, TestSize.Level2) 381da853ecaSopenharmony_ci{ 382da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 383da853ecaSopenharmony_ci ASSERT_NE(nullptr, decoderDemo); 384da853ecaSopenharmony_ci 385da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.AAC"; 386da853ecaSopenharmony_ci 387da853ecaSopenharmony_ci int32_t bitrateList[] = {32000, 128000}; 388da853ecaSopenharmony_ci int32_t sample_rate_List[] = {16000, 44100}; 389da853ecaSopenharmony_ci string fileList[] = {"fltp_32k_16000_2_dayuhaitang.aac", "fltp_128k_44100_2_dayuhaitang.aac"}; 390da853ecaSopenharmony_ci for (int i = 0; i < 2; i++) 391da853ecaSopenharmony_ci { 392da853ecaSopenharmony_ci Format format; 393da853ecaSopenharmony_ci int32_t bitrate = bitrateList[i]; 394da853ecaSopenharmony_ci int32_t sample_rate = sample_rate_List[i]; 395da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2); 396da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, sample_rate); 397da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, bitrate); 398da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1); 399da853ecaSopenharmony_ci 400da853ecaSopenharmony_ci string inputFile = fileList[i]; 401da853ecaSopenharmony_ci string outputFile = "FUNCTION_009_16000_2_" + to_string(bitrate) + "_aac_output.pcm"; 402da853ecaSopenharmony_ci 403da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format); 404da853ecaSopenharmony_ci } 405da853ecaSopenharmony_ci delete decoderDemo; 406da853ecaSopenharmony_ci} 407da853ecaSopenharmony_ci 408da853ecaSopenharmony_ci/** 409da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_010 410da853ecaSopenharmony_ci * @tc.name : mp3 different bitrate 411da853ecaSopenharmony_ci * @tc.desc : Function test 412da853ecaSopenharmony_ci */ 413da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_010, TestSize.Level2) 414da853ecaSopenharmony_ci{ 415da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 416da853ecaSopenharmony_ci ASSERT_NE(nullptr, decoderDemo); 417da853ecaSopenharmony_ci 418da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Mpeg"; 419da853ecaSopenharmony_ci 420da853ecaSopenharmony_ci int32_t bitrateList[] = {40000, 128000, 320000}; 421da853ecaSopenharmony_ci 422da853ecaSopenharmony_ci for (int i = 0; i < 3; i++) 423da853ecaSopenharmony_ci { 424da853ecaSopenharmony_ci Format format; 425da853ecaSopenharmony_ci int32_t bitrate = bitrateList[i]; 426da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2); 427da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 428da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, bitrate); 429da853ecaSopenharmony_ci 430da853ecaSopenharmony_ci string inputFile = "fltp_" + to_string((int)(bitrate/1000)) + "k_44100_2_dayuhaitang.mp3"; 431da853ecaSopenharmony_ci string outputFile = "FUNCTION_010_44100_2_" + to_string(bitrate) + "_mp3_output.pcm"; 432da853ecaSopenharmony_ci 433da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format); 434da853ecaSopenharmony_ci } 435da853ecaSopenharmony_ci delete decoderDemo; 436da853ecaSopenharmony_ci} 437da853ecaSopenharmony_ci 438da853ecaSopenharmony_ci/** 439da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_011 440da853ecaSopenharmony_ci * @tc.name : flac different bitrate 441da853ecaSopenharmony_ci * @tc.desc : Function test 442da853ecaSopenharmony_ci */ 443da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_011, TestSize.Level2) 444da853ecaSopenharmony_ci{ 445da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 446da853ecaSopenharmony_ci ASSERT_NE(nullptr, decoderDemo); 447da853ecaSopenharmony_ci 448da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Flac"; 449da853ecaSopenharmony_ci 450da853ecaSopenharmony_ci int32_t bitrateList[] = {195000, 780000}; 451da853ecaSopenharmony_ci int32_t sample_rate_List[] = {8000, 44100}; 452da853ecaSopenharmony_ci string fileList[] = {"s16_8000_2_dayuhaitang.flac", "s16_44100_2_dayuhaitang.flac"}; 453da853ecaSopenharmony_ci for (int i = 0; i < 2; i++) 454da853ecaSopenharmony_ci { 455da853ecaSopenharmony_ci Format format; 456da853ecaSopenharmony_ci int32_t bitrate = bitrateList[i]; 457da853ecaSopenharmony_ci int32_t sample_rate = sample_rate_List[i]; 458da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2); 459da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, sample_rate); 460da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, bitrate); 461da853ecaSopenharmony_ci format.PutIntValue("bits_per_coded_sample", 24); 462da853ecaSopenharmony_ci 463da853ecaSopenharmony_ci string inputFile = fileList[i]; 464da853ecaSopenharmony_ci string outputFile = "FUNCTION_011_"+ to_string(sample_rate) +"_2_" + to_string(bitrate) + "_flac_output.pcm"; 465da853ecaSopenharmony_ci 466da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format); 467da853ecaSopenharmony_ci } 468da853ecaSopenharmony_ci delete decoderDemo; 469da853ecaSopenharmony_ci} 470da853ecaSopenharmony_ci 471da853ecaSopenharmony_ci/** 472da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_012 473da853ecaSopenharmony_ci * @tc.name : MP3 different sample_format 474da853ecaSopenharmony_ci * @tc.desc : Function test 475da853ecaSopenharmony_ci */ 476da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_012, TestSize.Level2) 477da853ecaSopenharmony_ci{ 478da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 479da853ecaSopenharmony_ci ASSERT_NE(nullptr, decoderDemo); 480da853ecaSopenharmony_ci 481da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Mpeg"; 482da853ecaSopenharmony_ci 483da853ecaSopenharmony_ci string SampleFormatList[] = {"fltp", "s16p"}; 484da853ecaSopenharmony_ci for (int j = 0; j < 2; j++) { 485da853ecaSopenharmony_ci Format format; 486da853ecaSopenharmony_ci int32_t sample_rate = 48000; 487da853ecaSopenharmony_ci string SampleFormat = SampleFormatList[j]; 488da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2); 489da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, sample_rate); 490da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000); 491da853ecaSopenharmony_ci 492da853ecaSopenharmony_ci string inputFile = SampleFormat + "_128k_"+to_string(sample_rate) + "_2_dayuhaitang.mp3"; 493da853ecaSopenharmony_ci string outputFile = "FUNCTION_012_" + SampleFormat + to_string(sample_rate) + "_2_" + "_mp3_output.pcm"; 494da853ecaSopenharmony_ci 495da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format); 496da853ecaSopenharmony_ci } 497da853ecaSopenharmony_ci 498da853ecaSopenharmony_ci delete decoderDemo; 499da853ecaSopenharmony_ci} 500da853ecaSopenharmony_ci 501da853ecaSopenharmony_ci/** 502da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_013 503da853ecaSopenharmony_ci * @tc.name : flac different sample_format 504da853ecaSopenharmony_ci * @tc.desc : Function test 505da853ecaSopenharmony_ci */ 506da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_013, TestSize.Level2) 507da853ecaSopenharmony_ci{ 508da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 509da853ecaSopenharmony_ci ASSERT_NE(nullptr, decoderDemo); 510da853ecaSopenharmony_ci 511da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Flac"; 512da853ecaSopenharmony_ci 513da853ecaSopenharmony_ci string SampleFormatList[] = {"s32", "s16"}; 514da853ecaSopenharmony_ci 515da853ecaSopenharmony_ci for (int j = 0; j < 2; j++) { 516da853ecaSopenharmony_ci Format format; 517da853ecaSopenharmony_ci int32_t sample_rate = 48000; 518da853ecaSopenharmony_ci string SampleFormat = SampleFormatList[j]; 519da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2); 520da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, sample_rate); 521da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000); 522da853ecaSopenharmony_ci format.PutIntValue("bits_per_coded_sample", 24); 523da853ecaSopenharmony_ci 524da853ecaSopenharmony_ci string inputFile = SampleFormat + "_"+to_string(sample_rate) + "_2_dayuhaitang.flac"; 525da853ecaSopenharmony_ci string outputFile = "FUNCTION_013_" + SampleFormat + to_string(sample_rate) + "_2_" + "_flac_output.pcm"; 526da853ecaSopenharmony_ci 527da853ecaSopenharmony_ci decoderDemo->InnerRunCase(inputFile, outputFile, decoderName.c_str(), format); 528da853ecaSopenharmony_ci } 529da853ecaSopenharmony_ci delete decoderDemo; 530da853ecaSopenharmony_ci} 531da853ecaSopenharmony_ci 532da853ecaSopenharmony_ci/** 533da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_014 534da853ecaSopenharmony_ci * @tc.name : aac flush 535da853ecaSopenharmony_ci * @tc.desc : Function test 536da853ecaSopenharmony_ci */ 537da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_014, TestSize.Level2) 538da853ecaSopenharmony_ci{ 539da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 540da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.AAC"; 541da853ecaSopenharmony_ci 542da853ecaSopenharmony_ci string inputFile = "fltp_128k_16000_1_dayuhaitang.aac"; 543da853ecaSopenharmony_ci 544da853ecaSopenharmony_ci Format format; 545da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 546da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 16000); 547da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000); 548da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1); 549da853ecaSopenharmony_ci 550da853ecaSopenharmony_ci string firstOutputFile = "FUNCTION_014_16000_1_aac_output_1_flush.pcm"; 551da853ecaSopenharmony_ci string secondOutputFile = "FUNCTION_014_16000_1_aac_output_2_flush.pcm"; 552da853ecaSopenharmony_ci 553da853ecaSopenharmony_ci decoderDemo->InnerRunCaseFlush(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format); 554da853ecaSopenharmony_ci 555da853ecaSopenharmony_ci bool isSame = compareFile(firstOutputFile, secondOutputFile); 556da853ecaSopenharmony_ci ASSERT_EQ(true, isSame); 557da853ecaSopenharmony_ci 558da853ecaSopenharmony_ci delete decoderDemo; 559da853ecaSopenharmony_ci} 560da853ecaSopenharmony_ci 561da853ecaSopenharmony_ci/** 562da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_015 563da853ecaSopenharmony_ci * @tc.name : MP3 flush 564da853ecaSopenharmony_ci * @tc.desc : Function test 565da853ecaSopenharmony_ci */ 566da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_015, TestSize.Level2) 567da853ecaSopenharmony_ci{ 568da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 569da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Mpeg"; 570da853ecaSopenharmony_ci 571da853ecaSopenharmony_ci string inputFile = "fltp_128k_44100_2_dayuhaitang.mp3"; 572da853ecaSopenharmony_ci string firstOutputFile = "FUNCTION_015_1_flush.pcm"; 573da853ecaSopenharmony_ci string secondOutputFile = "FUNCTION_015_2_flush.pcm"; 574da853ecaSopenharmony_ci 575da853ecaSopenharmony_ci Format format; 576da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2); 577da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 578da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000); 579da853ecaSopenharmony_ci 580da853ecaSopenharmony_ci decoderDemo->InnerRunCaseFlush(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format); 581da853ecaSopenharmony_ci bool isSame = compareFile(firstOutputFile, secondOutputFile); 582da853ecaSopenharmony_ci ASSERT_EQ(true, isSame); 583da853ecaSopenharmony_ci delete decoderDemo; 584da853ecaSopenharmony_ci} 585da853ecaSopenharmony_ci 586da853ecaSopenharmony_ci/** 587da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_016 588da853ecaSopenharmony_ci * @tc.name : Flac flush 589da853ecaSopenharmony_ci * @tc.desc : Function test 590da853ecaSopenharmony_ci */ 591da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_016, TestSize.Level2) 592da853ecaSopenharmony_ci{ 593da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 594da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Flac"; 595da853ecaSopenharmony_ci 596da853ecaSopenharmony_ci string inputFile = "s16_8000_2_dayuhaitang.flac"; 597da853ecaSopenharmony_ci string firstOutputFile = "FUNCTION_016_1_flush.pcm"; 598da853ecaSopenharmony_ci string secondOutputFile = "FUNCTION_016_2_flush.pcm"; 599da853ecaSopenharmony_ci 600da853ecaSopenharmony_ci Format format; 601da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2); 602da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 8000); 603da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 40000); 604da853ecaSopenharmony_ci format.PutIntValue("bits_per_coded_sample", 24); 605da853ecaSopenharmony_ci 606da853ecaSopenharmony_ci decoderDemo->InnerRunCaseFlush(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format); 607da853ecaSopenharmony_ci bool isSame = compareFile(firstOutputFile, secondOutputFile); 608da853ecaSopenharmony_ci ASSERT_EQ(true, isSame); 609da853ecaSopenharmony_ci delete decoderDemo; 610da853ecaSopenharmony_ci} 611da853ecaSopenharmony_ci 612da853ecaSopenharmony_ci/** 613da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_017 614da853ecaSopenharmony_ci * @tc.name : Vorbis flush 615da853ecaSopenharmony_ci * @tc.desc : Function test 616da853ecaSopenharmony_ci */ 617da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_017, TestSize.Level2) 618da853ecaSopenharmony_ci{ 619da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 620da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Vorbis"; 621da853ecaSopenharmony_ci 622da853ecaSopenharmony_ci string inputFile = "fltp_45k_8000_2_dayuhaitang.ogg"; 623da853ecaSopenharmony_ci string firstOutputFile = "FUNCTION_017_1_flush.pcm"; 624da853ecaSopenharmony_ci string secondOutputFile = "FUNCTION_017_2_flush.pcm"; 625da853ecaSopenharmony_ci 626da853ecaSopenharmony_ci Format format; 627da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2); 628da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 8000); 629da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 45000); 630da853ecaSopenharmony_ci 631da853ecaSopenharmony_ci decoderDemo->InnerRunCaseFlush(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format); 632da853ecaSopenharmony_ci bool isSame = compareFile(firstOutputFile, secondOutputFile); 633da853ecaSopenharmony_ci ASSERT_EQ(true, isSame); 634da853ecaSopenharmony_ci delete decoderDemo; 635da853ecaSopenharmony_ci} 636da853ecaSopenharmony_ci 637da853ecaSopenharmony_ci/** 638da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_018 639da853ecaSopenharmony_ci * @tc.name : aac reset 640da853ecaSopenharmony_ci * @tc.desc : Function test 641da853ecaSopenharmony_ci */ 642da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_018, TestSize.Level2) 643da853ecaSopenharmony_ci{ 644da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 645da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.AAC"; 646da853ecaSopenharmony_ci 647da853ecaSopenharmony_ci Format format; 648da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 649da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 16000); 650da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000); 651da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1); 652da853ecaSopenharmony_ci 653da853ecaSopenharmony_ci string inputFile = "fltp_128k_16000_1_dayuhaitang.aac"; 654da853ecaSopenharmony_ci string firstOutputFile = "FUNCTION_018_16000_1_aac_output_1_reset.pcm"; 655da853ecaSopenharmony_ci string secondOutputFile = "FUNCTION_018_16000_1_aac_output_2_reset.pcm"; 656da853ecaSopenharmony_ci 657da853ecaSopenharmony_ci decoderDemo->InnerRunCaseReset(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format); 658da853ecaSopenharmony_ci bool isSame = compareFile(firstOutputFile, secondOutputFile); 659da853ecaSopenharmony_ci ASSERT_EQ(true, isSame); 660da853ecaSopenharmony_ci delete decoderDemo; 661da853ecaSopenharmony_ci} 662da853ecaSopenharmony_ci 663da853ecaSopenharmony_ci/** 664da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_019 665da853ecaSopenharmony_ci * @tc.name : mp3 reset 666da853ecaSopenharmony_ci * @tc.desc : Function test 667da853ecaSopenharmony_ci */ 668da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_019, TestSize.Level2) 669da853ecaSopenharmony_ci{ 670da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 671da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Mpeg"; 672da853ecaSopenharmony_ci 673da853ecaSopenharmony_ci string inputFile = "fltp_128k_44100_2_dayuhaitang.mp3"; 674da853ecaSopenharmony_ci string firstOutputFile = "FUNCTION_019_1_reset.pcm"; 675da853ecaSopenharmony_ci string secondOutputFile = "FUNCTION_019_2_reset.pcm"; 676da853ecaSopenharmony_ci 677da853ecaSopenharmony_ci Format format; 678da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2); 679da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 680da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000); 681da853ecaSopenharmony_ci 682da853ecaSopenharmony_ci decoderDemo->InnerRunCaseReset(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format); 683da853ecaSopenharmony_ci bool isSame = compareFile(firstOutputFile, secondOutputFile); 684da853ecaSopenharmony_ci ASSERT_EQ(true, isSame); 685da853ecaSopenharmony_ci 686da853ecaSopenharmony_ci delete decoderDemo; 687da853ecaSopenharmony_ci} 688da853ecaSopenharmony_ci 689da853ecaSopenharmony_ci/** 690da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_020 691da853ecaSopenharmony_ci * @tc.name : Flac reset 692da853ecaSopenharmony_ci * @tc.desc : Function test 693da853ecaSopenharmony_ci */ 694da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_020, TestSize.Level2) 695da853ecaSopenharmony_ci{ 696da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 697da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Flac"; 698da853ecaSopenharmony_ci 699da853ecaSopenharmony_ci string inputFile = "s16_44100_2_dayuhaitang.flac"; 700da853ecaSopenharmony_ci string firstOutputFile = "FUNCTION_020_1_reset.pcm"; 701da853ecaSopenharmony_ci string secondOutputFile = "FUNCTION_020_2_reset.pcm"; 702da853ecaSopenharmony_ci 703da853ecaSopenharmony_ci Format format; 704da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 2); 705da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 706da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000); 707da853ecaSopenharmony_ci format.PutIntValue("bits_per_coded_sample", 24); 708da853ecaSopenharmony_ci 709da853ecaSopenharmony_ci decoderDemo->InnerRunCaseReset(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format); 710da853ecaSopenharmony_ci 711da853ecaSopenharmony_ci bool isSame = compareFile(firstOutputFile, secondOutputFile); 712da853ecaSopenharmony_ci ASSERT_EQ(true, isSame); 713da853ecaSopenharmony_ci 714da853ecaSopenharmony_ci delete decoderDemo; 715da853ecaSopenharmony_ci} 716da853ecaSopenharmony_ci/** 717da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_021 718da853ecaSopenharmony_ci * @tc.name : Vorbis reset 719da853ecaSopenharmony_ci * @tc.desc : Function test 720da853ecaSopenharmony_ci */ 721da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_021, TestSize.Level2) 722da853ecaSopenharmony_ci{ 723da853ecaSopenharmony_ci AudioDecoderDemo* decoderDemo = new AudioDecoderDemo(); 724da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Vorbis"; 725da853ecaSopenharmony_ci 726da853ecaSopenharmony_ci string inputFile = "fltp_128k_48000_1_dayuhaitang.ogg"; 727da853ecaSopenharmony_ci string firstOutputFile = "FUNCTION_021_1.pcm"; 728da853ecaSopenharmony_ci string secondOutputFile = "FUNCTION_021_2.pcm"; 729da853ecaSopenharmony_ci 730da853ecaSopenharmony_ci Format format; 731da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 732da853ecaSopenharmony_ci format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 48000); 733da853ecaSopenharmony_ci format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 128000); 734da853ecaSopenharmony_ci 735da853ecaSopenharmony_ci decoderDemo->InnerRunCaseReset(inputFile, firstOutputFile, secondOutputFile, decoderName.c_str(), format); 736da853ecaSopenharmony_ci 737da853ecaSopenharmony_ci bool isSame = compareFile(firstOutputFile, secondOutputFile); 738da853ecaSopenharmony_ci ASSERT_EQ(true, isSame); 739da853ecaSopenharmony_ci 740da853ecaSopenharmony_ci delete decoderDemo; 741da853ecaSopenharmony_ci} 742da853ecaSopenharmony_ci 743da853ecaSopenharmony_ci/** 744da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_022 745da853ecaSopenharmony_ci * @tc.name : AAC(thread) 746da853ecaSopenharmony_ci * @tc.desc : Function test 747da853ecaSopenharmony_ci */ 748da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_022, TestSize.Level2) 749da853ecaSopenharmony_ci{ 750da853ecaSopenharmony_ci vector<thread> threadVec; 751da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.AAC"; 752da853ecaSopenharmony_ci 753da853ecaSopenharmony_ci string inputFile = "fltp_128k_16000_1_dayuhaitang.aac"; 754da853ecaSopenharmony_ci 755da853ecaSopenharmony_ci for (int32_t i = 0; i < 16; i++) 756da853ecaSopenharmony_ci { 757da853ecaSopenharmony_ci string outputFile = "FUNCTION_022_" + to_string(i) + ".pcm"; 758da853ecaSopenharmony_ci threadVec.push_back(thread(runDecode, decoderName, inputFile, outputFile, i)); 759da853ecaSopenharmony_ci } 760da853ecaSopenharmony_ci for (uint32_t i = 0; i < threadVec.size(); i++) 761da853ecaSopenharmony_ci { 762da853ecaSopenharmony_ci threadVec[i].join(); 763da853ecaSopenharmony_ci } 764da853ecaSopenharmony_ci for (int32_t i = 0; i < 10; i++) 765da853ecaSopenharmony_ci { 766da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, testResult[i]); 767da853ecaSopenharmony_ci } 768da853ecaSopenharmony_ci} 769da853ecaSopenharmony_ci 770da853ecaSopenharmony_ci 771da853ecaSopenharmony_ci/** 772da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_023 773da853ecaSopenharmony_ci * @tc.name : MP3(thread) 774da853ecaSopenharmony_ci * @tc.desc : Function test 775da853ecaSopenharmony_ci */ 776da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_023, TestSize.Level2) 777da853ecaSopenharmony_ci{ 778da853ecaSopenharmony_ci vector<thread> threadVec; 779da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Mpeg"; 780da853ecaSopenharmony_ci 781da853ecaSopenharmony_ci string inputFile = "fltp_128k_44100_2_dayuhaitang.mp3"; 782da853ecaSopenharmony_ci 783da853ecaSopenharmony_ci for (int32_t i = 0; i < 16; i++) 784da853ecaSopenharmony_ci { 785da853ecaSopenharmony_ci string outputFile = "FUNCTION_023_" + to_string(i) + ".pcm"; 786da853ecaSopenharmony_ci threadVec.push_back(thread(runDecode, decoderName, inputFile, outputFile, i)); 787da853ecaSopenharmony_ci } 788da853ecaSopenharmony_ci for (uint32_t i = 0; i < threadVec.size(); i++) 789da853ecaSopenharmony_ci { 790da853ecaSopenharmony_ci threadVec[i].join(); 791da853ecaSopenharmony_ci } 792da853ecaSopenharmony_ci for (int32_t i = 0; i < 10; i++) 793da853ecaSopenharmony_ci { 794da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, testResult[i]); 795da853ecaSopenharmony_ci } 796da853ecaSopenharmony_ci} 797da853ecaSopenharmony_ci 798da853ecaSopenharmony_ci 799da853ecaSopenharmony_ci/** 800da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_024 801da853ecaSopenharmony_ci * @tc.name : Flac(thread) 802da853ecaSopenharmony_ci * @tc.desc : Function test 803da853ecaSopenharmony_ci */ 804da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_024, TestSize.Level2) 805da853ecaSopenharmony_ci{ 806da853ecaSopenharmony_ci vector<thread> threadVec; 807da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Flac"; 808da853ecaSopenharmony_ci 809da853ecaSopenharmony_ci string inputFile = "s16_44100_2_dayuhaitang.flac"; 810da853ecaSopenharmony_ci 811da853ecaSopenharmony_ci for (int32_t i = 0; i < 16; i++) 812da853ecaSopenharmony_ci { 813da853ecaSopenharmony_ci string outputFile = "FUNCTION_024_" + to_string(i) + ".pcm"; 814da853ecaSopenharmony_ci threadVec.push_back(thread(runDecode, decoderName, inputFile, outputFile, i)); 815da853ecaSopenharmony_ci } 816da853ecaSopenharmony_ci for (uint32_t i = 0; i < threadVec.size(); i++) 817da853ecaSopenharmony_ci { 818da853ecaSopenharmony_ci threadVec[i].join(); 819da853ecaSopenharmony_ci } 820da853ecaSopenharmony_ci for (int32_t i = 0; i < 10; i++) 821da853ecaSopenharmony_ci { 822da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, testResult[i]); 823da853ecaSopenharmony_ci } 824da853ecaSopenharmony_ci} 825da853ecaSopenharmony_ci 826da853ecaSopenharmony_ci 827da853ecaSopenharmony_ci/** 828da853ecaSopenharmony_ci * @tc.number : SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_025 829da853ecaSopenharmony_ci * @tc.name : Vorbis(thread) 830da853ecaSopenharmony_ci * @tc.desc : Function test 831da853ecaSopenharmony_ci */ 832da853ecaSopenharmony_ciHWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_DECODER_FUNCTION_025, TestSize.Level2) 833da853ecaSopenharmony_ci{ 834da853ecaSopenharmony_ci vector<thread> threadVec; 835da853ecaSopenharmony_ci string decoderName = "OH.Media.Codec.Decoder.Audio.Vorbis"; 836da853ecaSopenharmony_ci 837da853ecaSopenharmony_ci string inputFile = "fltp_45k_48000_2_dayuhaitang.ogg"; 838da853ecaSopenharmony_ci 839da853ecaSopenharmony_ci for (int32_t i = 0; i < 16; i++) 840da853ecaSopenharmony_ci { 841da853ecaSopenharmony_ci string outputFile = "FUNCTION_025_" + to_string(i) + ".pcm"; 842da853ecaSopenharmony_ci threadVec.push_back(thread(runDecode, decoderName, inputFile, outputFile, i)); 843da853ecaSopenharmony_ci } 844da853ecaSopenharmony_ci for (uint32_t i = 0; i < threadVec.size(); i++) 845da853ecaSopenharmony_ci { 846da853ecaSopenharmony_ci threadVec[i].join(); 847da853ecaSopenharmony_ci } 848da853ecaSopenharmony_ci for (int32_t i = 0; i < 10; i++) 849da853ecaSopenharmony_ci { 850da853ecaSopenharmony_ci ASSERT_EQ(AVCS_ERR_OK, testResult[i]); 851da853ecaSopenharmony_ci } 852da853ecaSopenharmony_ci}