1 /* 2 * Copyright (C) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #include <string> 16 #include <iostream> 17 #include <unistd.h> 18 #include "gtest/gtest.h" 19 #include "AudioEncoderDemoCommon.h" 20 #include "avcodec_errors.h" 21 #include "avcodec_common.h" 22 #include "media_description.h" 23 #include "securec.h" 24 #include "avcodec_audio_common.h" 25 #include "libavcodec/avcodec.h" 26 #include "libavformat/avformat.h" 27 #include "libavutil/imgutils.h" 28 #include "libavutil/samplefmt.h" 29 #include "libavutil/timestamp.h" 30 31 using namespace std; 32 using namespace testing::ext; 33 using namespace OHOS; 34 using namespace OHOS::MediaAVCodec; 35 constexpr uint32_t SAMPLE_RATE_16000 = 16000; 36 constexpr uint32_t SAMPLE_RATE_128000 = 128000; 37 constexpr uint32_t SAMPLE_RATE_112000 = 112000; 38 constexpr uint32_t CHANNEL_COUNT = 2; 39 constexpr uint32_t CHANNEL_COUNT_2 = -2; 40 int32_t testResult[10] = { -1 }; 41 42 namespace { 43 class InnerFunctionTest : public testing::Test { 44 public: 45 static void SetUpTestCase(); 46 static void TearDownTestCase(); 47 void SetUp() override; 48 void TearDown() override; 49 }; 50 SetUpTestCase()51 void InnerFunctionTest::SetUpTestCase() {} TearDownTestCase()52 void InnerFunctionTest::TearDownTestCase() {} SetUp()53 void InnerFunctionTest::SetUp() {} TearDown()54 void InnerFunctionTest::TearDown() {} 55 runEncode(string encoderName,string inputFile,string outputFile,int32_t threadId)56 void runEncode(string encoderName, string inputFile, string outputFile, int32_t threadId) 57 { 58 AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 59 if (encoderName == "OH.Media.Codec.Encoder.Audio.AAC") { 60 Format format; 61 format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 62 format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE_16000); 63 format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, SAMPLE_RATE_128000); 64 format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE); 65 format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE); 66 format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO); 67 format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1); 68 encoderDemo->InnerRunCase(inputFile, outputFile, encoderName.c_str(), format); 69 } else if (encoderName == "OH.Media.Codec.Encoder.Audio.Flac") { 70 Format format; 71 format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, CHANNEL_COUNT); 72 format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE_16000); 73 format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, SAMPLE_RATE_112000); 74 format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_S32LE); 75 format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_S32LE); 76 format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, STEREO); 77 format.PutIntValue(MediaDescriptionKey::MD_KEY_COMPLIANCE_LEVEL, CHANNEL_COUNT_2); 78 79 encoderDemo->InnerRunCase(inputFile, outputFile, encoderName.c_str(), format); 80 } 81 testResult[threadId] = AVCS_ERR_OK; 82 delete encoderDemo; 83 } 84 } 85 86 /** 87 * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_001 88 * @tc.name : aac(different sample rate) 89 * @tc.desc : Function test 90 */ 91 HWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_001, TestSize.Level2) 92 { 93 AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 94 ASSERT_NE(nullptr, encoderDemo); 95 96 string encoderName = "OH.Media.Codec.Encoder.Audio.AAC"; 97 98 int32_t sample_rate_List[] = {7350, 8000, 16000, 44100, 48000, 96000}; 99 100 for (int i = 0; i < 6; i++) 101 { 102 Format format; 103 int sample_rate = sample_rate_List[i]; 104 format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 105 format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, sample_rate); 106 format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, SAMPLE_RATE_128000); 107 format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE); 108 format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE); 109 format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO); 110 format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1); 111 112 string inputFile = "f32le_" + to_string(sample_rate) + "_1_dayuhaitang.pcm"; 113 string outputFile = "FUNCTION_001_" + to_string(sample_rate) + "_1_output.aac"; 114 115 cout << "inputFile " << inputFile << endl; 116 encoderDemo->InnerRunCase(inputFile, outputFile, encoderName.c_str(), format); 117 } 118 delete encoderDemo; 119 } 120 121 122 /** 123 * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_002 124 * @tc.name : AAC different Channel_count 125 * @tc.desc : Function test 126 */ 127 HWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_002, TestSize.Level2) 128 { 129 AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 130 ASSERT_NE(nullptr, encoderDemo); 131 132 string encoderName = "OH.Media.Codec.Encoder.Audio.AAC"; 133 134 int Channel_count_List[] = {1, 2, 8}; 135 136 for (int i = 0; i < 3; i++) 137 { 138 Format format; 139 int Channel_count = Channel_count_List[i]; 140 switch (Channel_count) 141 { 142 case 1: 143 format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO); 144 break; 145 case 2: 146 format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, STEREO); 147 break; 148 case 8: 149 format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, CH_7POINT1); 150 break; 151 default: 152 format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, UNKNOWN_CHANNEL_LAYOUT); 153 break; 154 } 155 156 format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, Channel_count); 157 format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE_16000); 158 format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, SAMPLE_RATE_128000); 159 format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE); 160 format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE); 161 format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1); 162 163 string inputFile = "f32le_16000_" + to_string(Channel_count) + "_dayuhaitang.pcm"; 164 string outputFile = "FUNCTION_002_16000_" + to_string(Channel_count) + "_output.aac"; 165 166 cout << "inputFile " << inputFile << endl; 167 encoderDemo->InnerRunCase(inputFile, outputFile, encoderName.c_str(), format); 168 } 169 delete encoderDemo; 170 } 171 172 /** 173 * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_003 174 * @tc.name : AAC different bitrate 175 * @tc.desc : Function test 176 */ 177 HWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_003, TestSize.Level2) 178 { 179 AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 180 ASSERT_NE(nullptr, encoderDemo); 181 182 string encoderName = "OH.Media.Codec.Encoder.Audio.AAC"; 183 184 int32_t bitrateList[] = {32000, 96000, 128000, 256000, 300000, 500000}; 185 186 for (int i = 0; i < 6; i++) 187 { 188 Format format; 189 int32_t bitrate = bitrateList[i]; 190 191 format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 192 format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, SAMPLE_RATE_16000); 193 format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, bitrate); 194 format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE); 195 format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE); 196 format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO); 197 format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1); 198 199 string inputFile = "f32le_16000_1_dayuhaitang.pcm"; 200 string outputFile = "FUNCTION_003_16000_1_" + to_string((int)(bitrate/1000)) + "k_output.aac"; 201 202 cout << "inputFile " << inputFile << endl; 203 encoderDemo->InnerRunCase(inputFile, outputFile, encoderName.c_str(), format); 204 } 205 delete encoderDemo; 206 } 207 208 /** 209 * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_004 210 * @tc.name : FLAC(different sample rate) 211 * @tc.desc : Function test 212 */ 213 HWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_004, TestSize.Level2) 214 { 215 AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 216 ASSERT_NE(nullptr, encoderDemo); 217 218 string encoderName = "OH.Media.Codec.Encoder.Audio.Flac"; 219 220 int32_t sample_rate_List[] = {8000, 16000, 44100, 48000, 96000}; 221 222 for (int i = 0; i < 5; i++) 223 { 224 Format format; 225 int32_t sample_rate = sample_rate_List[i]; 226 format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, CHANNEL_COUNT); 227 format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, sample_rate); 228 format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 50000); 229 format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_S32LE); 230 format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_S32LE); 231 format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, STEREO); 232 format.PutIntValue(MediaDescriptionKey::MD_KEY_COMPLIANCE_LEVEL, -2); 233 234 string inputFile = "s16_" + to_string(sample_rate) + "_2_dayuhaitang.pcm"; 235 string outputFile = "FUNCTION_004_" + to_string(sample_rate) + "_2_output.flac"; 236 237 cout << "inputFile " << inputFile << endl; 238 encoderDemo->InnerRunCase(inputFile, outputFile, encoderName.c_str(), format); 239 } 240 delete encoderDemo; 241 } 242 243 244 /** 245 * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_005 246 * @tc.name : flac different format 247 * @tc.desc : Function test 248 */ 249 HWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_005, TestSize.Level2) 250 { 251 AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 252 ASSERT_NE(nullptr, encoderDemo); 253 254 string encoderName = "OH.Media.Codec.Encoder.Audio.Flac"; 255 256 string formatList[] = { "s16", "s32" }; 257 uint32_t sample_format; 258 for (int i = 0; i < 2; i++) 259 { 260 Format format; 261 string sample_Media::FORMAT_TYPE = formatList[i]; 262 if (sample_Media::FORMAT_TYPE == "s16") { 263 sample_format = AudioSampleFormat::SAMPLE_S16LE; 264 } 265 if (sample_Media::FORMAT_TYPE == "s32") { 266 sample_format = AudioSampleFormat::SAMPLE_S32LE; 267 } 268 format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, CHANNEL_COUNT); 269 format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 48000); 270 format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 50000); 271 format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, sample_format); 272 format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, sample_format); 273 format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, STEREO); 274 format.PutIntValue(MediaDescriptionKey::MD_KEY_COMPLIANCE_LEVEL, -2); 275 276 string inputFile = sample_Media::FORMAT_TYPE + "_48000_2_dayuhaitang.pcm"; 277 string outputFile = "FUNCTION_005_48000_2_1536k_" + sample_Media::FORMAT_TYPE + "_output.flac"; 278 279 cout << "inputFile " << inputFile << endl; 280 encoderDemo->InnerRunCase(inputFile, outputFile, encoderName.c_str(), format); 281 } 282 delete encoderDemo; 283 } 284 285 /** 286 * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_006 287 * @tc.name : flac different Channel_count 288 * @tc.desc : Function test 289 */ 290 HWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_006, TestSize.Level2) 291 { 292 AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 293 ASSERT_NE(nullptr, encoderDemo); 294 295 string encoderName = "OH.Media.Codec.Encoder.Audio.Flac"; 296 297 int Channel_count_List[] = { 1, 2, 8}; 298 299 for (int i = 0; i < 3; i++) 300 { 301 Format format; 302 int32_t Channel_count = Channel_count_List[i]; 303 304 switch (Channel_count) 305 { 306 case 1: 307 format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO); 308 break; 309 case 2: 310 format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, STEREO); 311 break; 312 case 8: 313 format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, CH_7POINT1); 314 break; 315 default: 316 format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, UNKNOWN_CHANNEL_LAYOUT); 317 break; 318 } 319 320 format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, Channel_count); 321 format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 48000); 322 format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 50000); 323 format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_S32LE); 324 format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_S32LE); 325 format.PutIntValue(MediaDescriptionKey::MD_KEY_COMPLIANCE_LEVEL, -2); 326 327 string inputFile = "s16_48000_" + to_string(Channel_count) + "_dayuhaitang.pcm"; 328 string outputFile = "FUNCTION_006_48000_" + to_string(Channel_count) + "_output.flac"; 329 330 cout << "inputFile " << inputFile << endl; 331 encoderDemo->InnerRunCase(inputFile, outputFile, encoderName.c_str(), format); 332 } 333 delete encoderDemo; 334 } 335 336 /** 337 * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_007 338 * @tc.name : aac flush 339 * @tc.desc : Function test 340 */ 341 HWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_007, TestSize.Level2) 342 { 343 AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 344 ASSERT_NE(nullptr, encoderDemo); 345 346 string encoderName = "OH.Media.Codec.Encoder.Audio.AAC"; 347 348 string inputFile = "f32le_44100_1_dayuhaitang.pcm"; 349 string firstOutputFile = "FUNCTION_007_InnerFlush1.aac"; 350 string secondOutputFile = "FUNCTION_007_InnerFlush2.aac"; 351 352 Format format; 353 format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 354 format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 355 format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, SAMPLE_RATE_112000); 356 format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE); 357 format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE); 358 format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO); 359 format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1); 360 361 cout << "inputFile " << inputFile << endl; 362 encoderDemo->InnerRunCaseFlush(inputFile, firstOutputFile, secondOutputFile, encoderName.c_str(), format); 363 364 delete encoderDemo; 365 } 366 367 /** 368 * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_008 369 * @tc.name : aac reset 370 * @tc.desc : Function test 371 */ 372 HWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_008, TestSize.Level2) 373 { 374 AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 375 ASSERT_NE(nullptr, encoderDemo); 376 377 string encoderName = "OH.Media.Codec.Encoder.Audio.AAC"; 378 379 string inputFile = "f32le_44100_1_dayuhaitang.pcm"; 380 string firstOutputFile = "FUNCTION_008_InnerReset1.aac"; 381 string secondOutputFile = "FUNCTION_008_InnerReset2.aac"; 382 383 Format format; 384 format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, 1); 385 format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 386 format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, 112000); 387 format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_F32LE); 388 format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_F32LE); 389 format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, MONO); 390 format.PutIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, 1); 391 392 cout << "inputFile " << inputFile << endl; 393 encoderDemo->InnerRunCaseReset(inputFile, firstOutputFile, secondOutputFile, encoderName.c_str(), format); 394 395 delete encoderDemo; 396 } 397 398 /** 399 * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_009 400 * @tc.name : flac flush 401 * @tc.desc : Function test 402 */ 403 HWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_009, TestSize.Level2) 404 { 405 AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 406 ASSERT_NE(nullptr, encoderDemo); 407 408 string encoderName = "OH.Media.Codec.Encoder.Audio.Flac"; 409 410 string inputFile = "s16_44100_2_dayuhaitang.pcm"; 411 string firstOutputFile = "FUNCTION_009_InnerFlush1.flac"; 412 string secondOutputFile = "FUNCTION_009_InnerFlush2.flac"; 413 414 415 Format format; 416 format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, CHANNEL_COUNT); 417 format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 418 format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, SAMPLE_RATE_112000); 419 format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_S32LE); 420 format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_S32LE); 421 format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, STEREO); 422 format.PutIntValue(MediaDescriptionKey::MD_KEY_COMPLIANCE_LEVEL, -2); 423 424 cout << "inputFile " << inputFile << endl; 425 encoderDemo->InnerRunCaseFlush(inputFile, firstOutputFile, secondOutputFile, encoderName.c_str(), format); 426 427 delete encoderDemo; 428 } 429 430 /** 431 * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_010 432 * @tc.name : flac reset 433 * @tc.desc : Function test 434 */ 435 HWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_010, TestSize.Level2) 436 { 437 AudioEncoderDemo* encoderDemo = new AudioEncoderDemo(); 438 ASSERT_NE(nullptr, encoderDemo); 439 440 string encoderName = "OH.Media.Codec.Encoder.Audio.Flac"; 441 442 string inputFile = "s16_44100_2_dayuhaitang.pcm"; 443 string firstOutputFile = "FUNCTION_010_InnerReset1.flac"; 444 string secondOutputFile = "FUNCTION_010_InnerReset2.flac"; 445 446 Format format; 447 format.PutIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, CHANNEL_COUNT); 448 format.PutIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, 44100); 449 format.PutLongValue(MediaDescriptionKey::MD_KEY_BITRATE, SAMPLE_RATE_112000); 450 format.PutIntValue(MediaDescriptionKey::MD_KEY_BITS_PER_CODED_SAMPLE, AudioSampleFormat::SAMPLE_S32LE); 451 format.PutIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, AudioSampleFormat::SAMPLE_S32LE); 452 format.PutLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, STEREO); 453 format.PutIntValue(MediaDescriptionKey::MD_KEY_COMPLIANCE_LEVEL, -2); 454 455 cout << "inputFile " << inputFile << endl; 456 encoderDemo->InnerRunCaseReset(inputFile, firstOutputFile, secondOutputFile, encoderName.c_str(), format); 457 458 delete encoderDemo; 459 } 460 461 /** 462 * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_011 463 * @tc.name : AAC(thread) 464 * @tc.desc : Function test 465 */ 466 HWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_011, TestSize.Level2) 467 { 468 vector<thread> threadVec; 469 string decoderName = "OH.Media.Codec.Encoder.Audio.AAC"; 470 471 string inputFile = "f32le_16000_1_dayuhaitang.pcm"; 472 473 for (int32_t i = 0; i < 16; i++) 474 { 475 string outputFile = "FUNCTION_011_" + to_string(i) + ".aac"; 476 threadVec.push_back(thread(runEncode, decoderName, inputFile, outputFile, i)); 477 } 478 for (uint32_t i = 0; i < threadVec.size(); i++) 479 { 480 threadVec[i].join(); 481 } 482 for (int32_t i = 0; i < 10; i++) 483 { 484 ASSERT_EQ(AVCS_ERR_OK, testResult[i]); 485 } 486 } 487 488 /** 489 * @tc.number : SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_012 490 * @tc.name : Flac(thread) 491 * @tc.desc : Function test 492 */ 493 HWTEST_F(InnerFunctionTest, SUB_MULTIMEDIA_AUDIO_ENCODER_FUNCTION_012, TestSize.Level2) 494 { 495 vector<thread> threadVec; 496 string decoderName = "OH.Media.Codec.Encoder.Audio.Flac"; 497 498 string inputFile = "s16_16000_2_dayuhaitang.pcm"; 499 500 for (int i = 0; i < 16; i++) 501 { 502 string outputFile = "FUNCTION_012_" + to_string(i) + ".flac"; 503 threadVec.push_back(thread(runEncode, decoderName, inputFile, outputFile, i)); 504 } 505 for (uint32_t i = 0; i < threadVec.size(); i++) 506 { 507 threadVec[i].join(); 508 } 509 for (int32_t i = 0; i < 10; i++) 510 { 511 ASSERT_EQ(AVCS_ERR_OK, testResult[i]); 512 } 513 } 514