1 /* 2 * Copyright (C) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include <string> 17 #include "meta/meta_key.h" 18 #include "meta/meta.h" 19 #include "avcodec_info.h" 20 #include "media_description.h" 21 #include "avsource_unit_test.h" 22 23 #define LOCAL true 24 #define URI false 25 26 using namespace OHOS; 27 using namespace OHOS::MediaAVCodec; 28 using namespace testing::ext; 29 using namespace std; 30 31 namespace { 32 const int64_t SOURCE_OFFSET = 0; 33 static const string TEST_FILE_PATH = "/data/test/media/"; 34 string g_audioVividPath = TEST_FILE_PATH + string("2obj_44100Hz_16bit_32k.mp4"); 35 string g_audioVividPath2 = TEST_FILE_PATH + string("2obj_44100Hz_16bit_32k.ts"); 36 string g_audioVividPath3 = TEST_FILE_PATH + string("2obj_16bit_44100Hz_64kbps.mp4"); 37 string g_audioVividPath4 = TEST_FILE_PATH + string("5_1_4_4obj_16bit_48000Hz_1232kbps.mp4"); 38 string g_audioVividPath5 = TEST_FILE_PATH + string("5_1_4_16bit_96000Hz_704kbps.mp4"); 39 string g_audioVividPath6 = TEST_FILE_PATH + string("5_1_4_24bit_48000Hz_704kbps.mp4"); 40 string g_audioVividPath7 = TEST_FILE_PATH + string("7_1_4_16bit_48000Hz_832kbps.mp4"); 41 string g_audioVividPath8 = TEST_FILE_PATH + string("hoa3_16bit_48000Hz_640kbps.mp4"); 42 string g_audioVividPath9 = TEST_FILE_PATH + string("stereo_16bit_48000Hz_32kbps.mp4"); 43 string g_filePath; 44 } // namespace 45 46 /**********************************source FD**************************************/ 47 namespace { 48 /** 49 * @tc.name: AVSource_GetFormat_1201 50 * @tc.desc: get format when the file is audio vivid (2obj_44100Hz_16bit_32k.ts) 51 * @tc.type: FUNC 52 */ 53 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1201, TestSize.Level1) 54 { 55 fd_ = OpenFile(g_audioVividPath2); 56 size_ = GetFileSize(g_audioVividPath2); 57 printf("---- %s ----\n", g_audioVividPath2.c_str()); 58 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_); 59 ASSERT_NE(source_, nullptr); 60 format_ = source_->GetSourceFormat(); 61 ASSERT_NE(format_, nullptr); 62 printf("[ sourceFormat ]: %s\n", format_->DumpInfo()); 63 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration)); 64 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount)); 65 ASSERT_EQ(formatVal_.duration, 31718456); 66 ASSERT_EQ(formatVal_.trackCount, 1); 67 #ifdef AVSOURCE_INNER_UNIT_TEST 68 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType)); 69 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo)); 70 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio)); 71 ASSERT_EQ(formatVal_.fileType, 102); 72 ASSERT_EQ(formatVal_.hasVideo, 0); 73 ASSERT_EQ(formatVal_.hasAudio, 1); 74 #endif 75 format_ = source_->GetTrackFormat(trackIndex_); 76 ASSERT_NE(format_, nullptr); 77 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo()); 78 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType)); 79 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate)); 80 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount)); 81 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime)); 82 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate)); 83 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout)); 84 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD); 85 ASSERT_EQ(formatVal_.channelLayout, 0); 86 ASSERT_EQ(formatVal_.sampleRate, 44100); 87 ASSERT_EQ(formatVal_.channelCount, 2); 88 ASSERT_EQ(formatVal_.codecMime, CodecMimeType::AUDIO_AVS3DA); 89 ASSERT_EQ(formatVal_.bitRate, 64000); 90 } 91 92 /** 93 * @tc.name: AVSource_GetFormat_1202 94 * @tc.desc: get format when the file is audio vivid (2obj_16bit_44100Hz_64kbps.mp4) 95 * @tc.type: FUNC 96 */ 97 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1202, TestSize.Level1) 98 { 99 fd_ = OpenFile(g_audioVividPath3); 100 size_ = GetFileSize(g_audioVividPath3); 101 printf("---- %s ----\n", g_audioVividPath3.c_str()); 102 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_); 103 ASSERT_NE(source_, nullptr); 104 format_ = source_->GetSourceFormat(); 105 ASSERT_NE(format_, nullptr); 106 printf("[ sourceFormat ]: %s\n", format_->DumpInfo()); 107 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration)); 108 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount)); 109 ASSERT_EQ(formatVal_.duration, 32044000); 110 ASSERT_EQ(formatVal_.trackCount, 1); 111 #ifdef AVSOURCE_INNER_UNIT_TEST 112 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType)); 113 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo)); 114 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio)); 115 ASSERT_EQ(formatVal_.fileType, 101); 116 ASSERT_EQ(formatVal_.hasVideo, 0); 117 ASSERT_EQ(formatVal_.hasAudio, 1); 118 #endif 119 format_ = source_->GetTrackFormat(trackIndex_); 120 ASSERT_NE(format_, nullptr); 121 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo()); 122 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType)); 123 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate)); 124 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount)); 125 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime)); 126 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout)); 127 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate)); 128 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD); 129 ASSERT_EQ(formatVal_.channelLayout, 0); 130 ASSERT_EQ(formatVal_.sampleRate, 44100); 131 ASSERT_EQ(formatVal_.channelCount, 2); 132 ASSERT_EQ(formatVal_.codecMime, CodecMimeType::AUDIO_AVS3DA); 133 ASSERT_EQ(formatVal_.bitRate, 64082); 134 } 135 136 /** 137 * @tc.name: AVSource_GetFormat_1203 138 * @tc.desc: get format when the file is audio vivid (5_1_4_4obj_16bit_48000Hz_1232kbps.mp4) 139 * @tc.type: FUNC 140 */ 141 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1203, TestSize.Level1) 142 { 143 fd_ = OpenFile(g_audioVividPath4); 144 size_ = GetFileSize(g_audioVividPath4); 145 printf("---- %s ----\n", g_audioVividPath4.c_str()); 146 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_); 147 ASSERT_NE(source_, nullptr); 148 format_ = source_->GetSourceFormat(); 149 ASSERT_NE(format_, nullptr); 150 printf("[ sourceFormat ]: %s\n", format_->DumpInfo()); 151 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration)); 152 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount)); 153 ASSERT_EQ(formatVal_.duration, 60459000); 154 ASSERT_EQ(formatVal_.trackCount, 1); 155 #ifdef AVSOURCE_INNER_UNIT_TEST 156 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType)); 157 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo)); 158 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio)); 159 ASSERT_EQ(formatVal_.fileType, 101); 160 ASSERT_EQ(formatVal_.hasVideo, 0); 161 ASSERT_EQ(formatVal_.hasAudio, 1); 162 #endif 163 format_ = source_->GetTrackFormat(trackIndex_); 164 ASSERT_NE(format_, nullptr); 165 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo()); 166 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType)); 167 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate)); 168 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount)); 169 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime)); 170 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout)); 171 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate)); 172 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD); 173 ASSERT_EQ(formatVal_.channelLayout, 185871); 174 ASSERT_EQ(formatVal_.sampleRate, 48000); 175 ASSERT_EQ(formatVal_.channelCount, 14); 176 ASSERT_EQ(formatVal_.codecMime, CodecMimeType::AUDIO_AVS3DA); 177 ASSERT_EQ(formatVal_.bitRate, 1232250); 178 } 179 180 /** 181 * @tc.name: AVSource_GetFormat_1204 182 * @tc.desc: get format when the file is audio vivid (5_1_4_16bit_96000Hz_704kbps.mp4) 183 * @tc.type: FUNC 184 */ 185 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1204, TestSize.Level1) 186 { 187 fd_ = OpenFile(g_audioVividPath5); 188 size_ = GetFileSize(g_audioVividPath5); 189 printf("---- %s ----\n", g_audioVividPath5.c_str()); 190 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_); 191 ASSERT_NE(source_, nullptr); 192 format_ = source_->GetSourceFormat(); 193 ASSERT_NE(format_, nullptr); 194 printf("[ sourceFormat ]: %s\n", format_->DumpInfo()); 195 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration)); 196 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount)); 197 ASSERT_EQ(formatVal_.duration, 60000000); 198 ASSERT_EQ(formatVal_.trackCount, 1); 199 #ifdef AVSOURCE_INNER_UNIT_TEST 200 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType)); 201 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo)); 202 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio)); 203 ASSERT_EQ(formatVal_.fileType, 101); 204 ASSERT_EQ(formatVal_.hasVideo, 0); 205 ASSERT_EQ(formatVal_.hasAudio, 1); 206 #endif 207 format_ = source_->GetTrackFormat(trackIndex_); 208 ASSERT_NE(format_, nullptr); 209 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo()); 210 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType)); 211 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate)); 212 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount)); 213 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime)); 214 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout)); 215 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate)); 216 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD); 217 ASSERT_EQ(formatVal_.channelLayout, 185871); 218 ASSERT_EQ(formatVal_.sampleRate, 96000); 219 ASSERT_EQ(formatVal_.channelCount, 10); 220 ASSERT_EQ(formatVal_.codecMime, CodecMimeType::AUDIO_AVS3DA); 221 ASSERT_EQ(formatVal_.bitRate, 704250); 222 } 223 224 /** 225 * @tc.name: AVSource_GetFormat_1205 226 * @tc.desc: get format when the file is audio vivid (5_1_4_24bit_48000Hz_704kbps.mp4) 227 * @tc.type: FUNC 228 */ 229 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1205, TestSize.Level1) 230 { 231 fd_ = OpenFile(g_audioVividPath6); 232 size_ = GetFileSize(g_audioVividPath6); 233 printf("---- %s ----\n", g_audioVividPath6.c_str()); 234 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_); 235 ASSERT_NE(source_, nullptr); 236 format_ = source_->GetSourceFormat(); 237 ASSERT_NE(format_, nullptr); 238 printf("[ sourceFormat ]: %s\n", format_->DumpInfo()); 239 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration)); 240 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount)); 241 ASSERT_EQ(formatVal_.duration, 60011000); 242 ASSERT_EQ(formatVal_.trackCount, 1); 243 #ifdef AVSOURCE_INNER_UNIT_TEST 244 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType)); 245 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo)); 246 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio)); 247 ASSERT_EQ(formatVal_.fileType, 101); 248 ASSERT_EQ(formatVal_.hasVideo, 0); 249 ASSERT_EQ(formatVal_.hasAudio, 1); 250 #endif 251 format_ = source_->GetTrackFormat(trackIndex_); 252 ASSERT_NE(format_, nullptr); 253 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo()); 254 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType)); 255 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate)); 256 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount)); 257 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime)); 258 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout)); 259 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate)); 260 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD); 261 ASSERT_EQ(formatVal_.channelLayout, 185871); 262 ASSERT_EQ(formatVal_.sampleRate, 48000); 263 ASSERT_EQ(formatVal_.channelCount, 10); 264 ASSERT_EQ(formatVal_.codecMime, CodecMimeType::AUDIO_AVS3DA); 265 ASSERT_EQ(formatVal_.bitRate, 704250); 266 } 267 268 /** 269 * @tc.name: AVSource_GetFormat_1206 270 * @tc.desc: get format when the file is audio vivid (7_1_4_16bit_48000Hz_832kbps.mp4) 271 * @tc.type: FUNC 272 */ 273 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1206, TestSize.Level1) 274 { 275 fd_ = OpenFile(g_audioVividPath7); 276 size_ = GetFileSize(g_audioVividPath7); 277 printf("---- %s ----\n", g_audioVividPath7.c_str()); 278 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_); 279 ASSERT_NE(source_, nullptr); 280 format_ = source_->GetSourceFormat(); 281 ASSERT_NE(format_, nullptr); 282 printf("[ sourceFormat ]: %s\n", format_->DumpInfo()); 283 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration)); 284 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount)); 285 ASSERT_EQ(formatVal_.duration, 60011000); 286 ASSERT_EQ(formatVal_.trackCount, 1); 287 #ifdef AVSOURCE_INNER_UNIT_TEST 288 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType)); 289 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo)); 290 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio)); 291 ASSERT_EQ(formatVal_.fileType, 101); 292 ASSERT_EQ(formatVal_.hasVideo, 0); 293 ASSERT_EQ(formatVal_.hasAudio, 1); 294 #endif 295 format_ = source_->GetTrackFormat(trackIndex_); 296 ASSERT_NE(format_, nullptr); 297 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo()); 298 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType)); 299 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate)); 300 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount)); 301 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime)); 302 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout)); 303 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate)); 304 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD); 305 ASSERT_EQ(formatVal_.channelLayout, 185919); 306 ASSERT_EQ(formatVal_.sampleRate, 48000); 307 ASSERT_EQ(formatVal_.channelCount, 12); 308 ASSERT_EQ(formatVal_.codecMime, CodecMimeType::AUDIO_AVS3DA); 309 ASSERT_EQ(formatVal_.bitRate, 832125); 310 } 311 312 /** 313 * @tc.name: AVSource_GetFormat_1207 314 * @tc.desc: get format when the file is audio vivid (hoa3_16bit_48000Hz_640kbps.mp4) 315 * @tc.type: FUNC 316 */ 317 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1207, TestSize.Level1) 318 { 319 fd_ = OpenFile(g_audioVividPath8); 320 size_ = GetFileSize(g_audioVividPath8); 321 printf("---- %s ----\n", g_audioVividPath8.c_str()); 322 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_); 323 ASSERT_NE(source_, nullptr); 324 format_ = source_->GetSourceFormat(); 325 ASSERT_NE(format_, nullptr); 326 printf("[ sourceFormat ]: %s\n", format_->DumpInfo()); 327 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration)); 328 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount)); 329 ASSERT_EQ(formatVal_.duration, 198678000); 330 ASSERT_EQ(formatVal_.trackCount, 1); 331 #ifdef AVSOURCE_INNER_UNIT_TEST 332 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType)); 333 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo)); 334 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio)); 335 ASSERT_EQ(formatVal_.fileType, 101); 336 ASSERT_EQ(formatVal_.hasVideo, 0); 337 ASSERT_EQ(formatVal_.hasAudio, 1); 338 #endif 339 format_ = source_->GetTrackFormat(trackIndex_); 340 ASSERT_NE(format_, nullptr); 341 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo()); 342 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType)); 343 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate)); 344 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount)); 345 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime)); 346 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout)); 347 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate)); 348 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD); 349 ASSERT_EQ(formatVal_.channelLayout, 17592186048515); 350 ASSERT_EQ(formatVal_.sampleRate, 48000); 351 ASSERT_EQ(formatVal_.channelCount, 16); 352 ASSERT_EQ(formatVal_.codecMime, CodecMimeType::AUDIO_AVS3DA); 353 ASSERT_EQ(formatVal_.bitRate, 640125); 354 } 355 356 /** 357 * @tc.name: AVSource_GetFormat_1208 358 * @tc.desc: get format when the file is audio vivid (stereo_16bit_48000Hz_32kbps.mp4) 359 * @tc.type: FUNC 360 */ 361 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1208, TestSize.Level1) 362 { 363 fd_ = OpenFile(g_audioVividPath9); 364 size_ = GetFileSize(g_audioVividPath9); 365 printf("---- %s ----\n", g_audioVividPath9.c_str()); 366 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_); 367 ASSERT_NE(source_, nullptr); 368 format_ = source_->GetSourceFormat(); 369 ASSERT_NE(format_, nullptr); 370 printf("[ sourceFormat ]: %s\n", format_->DumpInfo()); 371 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration)); 372 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount)); 373 ASSERT_EQ(formatVal_.duration, 20032000); 374 ASSERT_EQ(formatVal_.trackCount, 1); 375 #ifdef AVSOURCE_INNER_UNIT_TEST 376 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType)); 377 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo)); 378 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio)); 379 ASSERT_EQ(formatVal_.fileType, 101); 380 ASSERT_EQ(formatVal_.hasVideo, 0); 381 ASSERT_EQ(formatVal_.hasAudio, 1); 382 #endif 383 format_ = source_->GetTrackFormat(trackIndex_); 384 ASSERT_NE(format_, nullptr); 385 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo()); 386 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType)); 387 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate)); 388 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount)); 389 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime)); 390 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout)); 391 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate)); 392 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD); 393 ASSERT_EQ(formatVal_.channelLayout, 3); 394 ASSERT_EQ(formatVal_.sampleRate, 48000); 395 ASSERT_EQ(formatVal_.channelCount, 2); 396 ASSERT_EQ(formatVal_.codecMime, CodecMimeType::AUDIO_AVS3DA); 397 ASSERT_EQ(formatVal_.bitRate, 32250); 398 } 399 400 /** 401 * @tc.name: AVSource_GetFormat_1209 402 * @tc.desc: get format when the file is audio vivid (2obj_44100Hz_16bit_32k.mp4) 403 * @tc.type: FUNC 404 */ 405 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1209, TestSize.Level1) 406 { 407 fd_ = OpenFile(g_audioVividPath); 408 size_ = GetFileSize(g_audioVividPath); 409 printf("---- %s ----\n", g_audioVividPath.c_str()); 410 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_); 411 ASSERT_NE(source_, nullptr); 412 format_ = source_->GetSourceFormat(); 413 ASSERT_NE(format_, nullptr); 414 printf("[ sourceFormat ]: %s\n", format_->DumpInfo()); 415 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration)); 416 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount)); 417 ASSERT_EQ(formatVal_.duration, 32044000); 418 ASSERT_EQ(formatVal_.trackCount, 1); 419 #ifdef AVSOURCE_INNER_UNIT_TEST 420 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType)); 421 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo)); 422 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio)); 423 ASSERT_EQ(formatVal_.fileType, 101); 424 ASSERT_EQ(formatVal_.hasVideo, 0); 425 ASSERT_EQ(formatVal_.hasAudio, 1); 426 #endif 427 format_ = source_->GetTrackFormat(trackIndex_); 428 ASSERT_NE(format_, nullptr); 429 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo()); 430 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType)); 431 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate)); 432 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount)); 433 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime)); 434 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout)); 435 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate)); 436 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD); 437 ASSERT_EQ(formatVal_.channelLayout, 0); 438 ASSERT_EQ(formatVal_.sampleRate, 44100); 439 ASSERT_EQ(formatVal_.channelCount, 2); 440 ASSERT_EQ(formatVal_.codecMime, CodecMimeType::AUDIO_AVS3DA); 441 ASSERT_EQ(formatVal_.bitRate, 64082); 442 } 443 } // namespace 444