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
16 #include <string>
17 #include <sys/stat.h>
18 #include <fcntl.h>
19 #include <cinttypes>
20 #include <fstream>
21 #include "meta/meta_key.h"
22 #include "meta/meta.h"
23 #include "gtest/gtest.h"
24 #include "avcodec_errors.h"
25 #include "avcodec_audio_common.h"
26 #include "avcodec_info.h"
27 #include "media_description.h"
28 #include "file_server_demo.h"
29 #include "avsource_unit_test.h"
30 #include "media_data_source.h"
31 #include "native_avsource.h"
32
33 #define LOCAL true
34 #define URI false
35
36 using namespace OHOS;
37 using namespace OHOS::MediaAVCodec;
38 using namespace testing::ext;
39 using namespace std;
40
41 namespace {
42 unique_ptr<FileServerDemo> server = nullptr;
43 static const string TEST_FILE_PATH = "/data/test/media/";
44 static const string TEST_URI_PATH = "http://127.0.0.1:46666/";
45 static const string TEST_TIMED_METADATA = "com.openharmony.timed_metadata.test";
46 const int64_t SOURCE_OFFSET = 0;
47
48 string g_mp4Path = TEST_FILE_PATH + string("test_264_B_Gop25_4sec_cover.mp4");
49 string g_mp4Path3 = TEST_FILE_PATH + string("test_mpeg2_B_Gop25_4sec.mp4");
50 string g_mp4Path5 = TEST_FILE_PATH + string("test_suffix_mismatch.mp4");
51 string g_mp4Path6 = TEST_FILE_PATH + string("test_empty_file.mp4");
52 string g_mp4Path7 = TEST_FILE_PATH + string("test_error.mp4");
53 string g_mp4Path8 = TEST_FILE_PATH + string("zero_track.mp4");
54 string g_mp4Path9 = TEST_FILE_PATH + string("timed_metadata_track.mp4");
55 string g_mkvPath2 = TEST_FILE_PATH + string("h264_opus_4sec.mkv");
56 string g_tsPath = TEST_FILE_PATH + string("test_mpeg2_Gop25_4sec.ts");
57 string g_aacPath = TEST_FILE_PATH + string("audio/aac_44100_1.aac");
58 string g_flacPath = TEST_FILE_PATH + string("audio/flac_48000_1_cover.flac");
59 string g_m4aPath = TEST_FILE_PATH + string("audio/m4a_48000_1.m4a");
60 string g_mp3Path = TEST_FILE_PATH + string("audio/mp3_48000_1_cover.mp3");
61 string g_oggPath = TEST_FILE_PATH + string("audio/ogg_48000_1.ogg");
62 string g_wavPath = TEST_FILE_PATH + string("audio/wav_48000_1.wav");
63 string g_wavPath2 = TEST_FILE_PATH + string("wav_audio_test_202406290859.wav");
64 string g_amrPath = TEST_FILE_PATH + string("audio/amr_nb_8000_1.amr");
65 string g_amrPath2 = TEST_FILE_PATH + string("audio/amr_wb_16000_1.amr");
66 string g_audioVividPath = TEST_FILE_PATH + string("2obj_44100Hz_16bit_32k.mp4");
67 string g_audioVividPath2 = TEST_FILE_PATH + string("2obj_44100Hz_16bit_32k.ts");
68 string g_flvPath = TEST_FILE_PATH + string("h264.flv");
69 string g_filePath;
70 string g_mp4InfoPath = TEST_FILE_PATH + string("camera_info_parser.mp4");
71 string g_apePath = TEST_FILE_PATH + string("ape_test.ape");
72 string g_apeUri = TEST_URI_PATH + string("ape_test.ape");
73 string g_fmp4AvcPath = TEST_FILE_PATH + string("h264_fmp4.mp4");
74 string g_fmp4m4vPath = TEST_FILE_PATH + string("h264_fmp4.m4v");
75 string g_fmp4m4aPath = TEST_FILE_PATH + string("audio/h264_fmp4.m4a");
76 string g_srt = TEST_FILE_PATH + string("subtitle.srt");
77 string g_nonStandardBomPath = TEST_FILE_PATH + string("nonstandard_bom.mp3");
78 string g_vttPath = TEST_FILE_PATH + string("webvtt_test.vtt");
79 string g_mp4VvcPath = TEST_FILE_PATH + string("vvc.mp4");
80 string g_mp4RotationNone = TEST_FILE_PATH + string("ROTATE_NONE.mp4");
81 string g_mp4Rotation270 = TEST_FILE_PATH + string("ROTATE_270.mp4");
82 string g_mp4FLIPV = TEST_FILE_PATH + string("FLIP_V.mp4");
83 string g_mp4FLIPV90 = TEST_FILE_PATH + string("FLIP_V_90.mp4");
84 } // namespace
85
SetUpTestCase(void)86 void AVSourceUnitTest::SetUpTestCase(void)
87 {
88 server = make_unique<FileServerDemo>();
89 server->StartServer();
90 }
91
TearDownTestCase(void)92 void AVSourceUnitTest::TearDownTestCase(void)
93 {
94 server->StopServer();
95 }
96
SetUp(void)97 void AVSourceUnitTest::SetUp(void) {}
98
TearDown(void)99 void AVSourceUnitTest::TearDown(void)
100 {
101 if (source_ != nullptr) {
102 source_->Destroy();
103 source_ = nullptr;
104 }
105 if (fd_ > 0) {
106 close(fd_);
107 fd_ = -1;
108 }
109 if (format_ != nullptr) {
110 format_->Destroy();
111 format_ = nullptr;
112 }
113 trackIndex_ = 0;
114 size_ = 0;
115 addr_ = nullptr;
116 buffSize_ = 0;
117 initStatus_ = false;
118 ResetFormatValue();
119 }
120
GetFileSize(const string & fileName)121 int64_t AVSourceUnitTest::GetFileSize(const string &fileName)
122 {
123 int64_t fileSize = 0;
124 if (!fileName.empty()) {
125 struct stat fileStatus {};
126 if (stat(fileName.c_str(), &fileStatus) == 0) {
127 fileSize = static_cast<int64_t>(fileStatus.st_size);
128 }
129 }
130 return fileSize;
131 }
132
OpenFile(const string & fileName)133 int32_t AVSourceUnitTest::OpenFile(const string &fileName)
134 {
135 int32_t fd = open(fileName.c_str(), O_RDONLY);
136 return fd;
137 }
138
ResetFormatValue()139 void AVSourceUnitTest::ResetFormatValue()
140 {
141 formatVal_.title = "";
142 formatVal_.artist = "";
143 formatVal_.album = "";
144 formatVal_.albumArtist = "";
145 formatVal_.date = "";
146 formatVal_.comment = "";
147 formatVal_.genre = "";
148 formatVal_.copyright = "";
149 formatVal_.description = "";
150 formatVal_.language = "";
151 formatVal_.lyrics = "";
152 formatVal_.duration = 0;
153 formatVal_.trackCount = 0;
154 formatVal_.author = "";
155 formatVal_.composer = "";
156 formatVal_.hasVideo = -1;
157 formatVal_.hasAudio = -1;
158 formatVal_.fileType = 0;
159 formatVal_.codecMime = "";
160 formatVal_.trackType = 0;
161 formatVal_.width = 0;
162 formatVal_.height = 0;
163 formatVal_.aacIsAdts = -1;
164 formatVal_.sampleRate = 0;
165 formatVal_.channelCount = 0;
166 formatVal_.bitRate = 0;
167 formatVal_.audioSampleFormat = 0;
168 formatVal_.frameRate = 0;
169 formatVal_.rotationAngle = 0;
170 formatVal_.orientationType = 0;
171 formatVal_.channelLayout = 0;
172 formatVal_.hdrType = 0;
173 formatVal_.codecProfile = 0;
174 formatVal_.codecLevel = 0;
175 formatVal_.colorPrimaries = 0;
176 formatVal_.transferCharacteristics = 0;
177 formatVal_.rangeFlag = 0;
178 formatVal_.matrixCoefficients = 0;
179 formatVal_.chromaLocation = 0;
180 formatVal_.profile = 0;
181 formatVal_.level = 0;
182 formatVal_.colorPri = 0;
183 formatVal_.colorTrans = 0;
184 formatVal_.colorMatrix = 0;
185 formatVal_.colorRange = 0;
186 formatVal_.chromaLoc = 0;
187 formatVal_.isHdrVivid = 0;
188 }
189
AVSourceReadAt(OH_AVBuffer * data,int32_t length,int64_t pos)190 static int32_t AVSourceReadAt(OH_AVBuffer *data, int32_t length, int64_t pos)
191 {
192 if (data == nullptr) {
193 printf("AVSourceReadAt : data is nullptr!\n");
194 return OHOS::Media::MediaDataSourceError::SOURCE_ERROR_IO;
195 }
196
197 std::ifstream infile(g_filePath, std::ofstream::binary);
198 if (!infile.is_open()) {
199 printf("AVSourceReadAt : open file failed! file:%s\n", g_filePath.c_str());
200 return OHOS::Media::MediaDataSourceError::SOURCE_ERROR_IO; // 打开文件失败
201 }
202
203 infile.seekg(0, std::ios::end);
204 int64_t fileSize = infile.tellg();
205 if (pos >= fileSize) {
206 printf("AVSourceReadAt : pos over or equals file size!\n");
207 return OHOS::Media::MediaDataSourceError::SOURCE_ERROR_EOF; // pos已经是文件末尾位置,无法读取
208 }
209
210 if (pos + length > fileSize) {
211 length = fileSize - pos; // pos+length长度超过文件大小时,读取从pos到文件末尾的数据
212 }
213
214 infile.seekg(pos, std::ios::beg);
215 if (length <= 0) {
216 printf("AVSourceReadAt : raed length less than zero!\n");
217 return OHOS::Media::MediaDataSourceError::SOURCE_ERROR_IO;
218 }
219 char* buffer = new char[length];
220 infile.read(buffer, length);
221 infile.close();
222
223 errno_t result = memcpy_s(reinterpret_cast<char *>(OH_AVBuffer_GetAddr(data)),
224 OH_AVBuffer_GetCapacity(data), buffer, length);
225 delete[] buffer;
226 if (result != 0) {
227 printf("memcpy_s failed!");
228 return OHOS::Media::MediaDataSourceError::SOURCE_ERROR_IO;
229 }
230
231 return length;
232 }
233
234 /**********************************source FD**************************************/
235 namespace {
236 /**
237 * @tc.name: AVSource_CreateSourceWithFD_1000
238 * @tc.desc: create source with fd, mp4
239 * @tc.type: FUNC
240 */
241 HWTEST_F(AVSourceUnitTest, AVSource_CreateSourceWithFD_1000, TestSize.Level1)
242 {
243 printf("---- %s ----\n", g_mp4Path.c_str());
244 fd_ = OpenFile(g_mp4Path);
245 size_ = GetFileSize(g_mp4Path);
246 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
247 ASSERT_NE(source_, nullptr);
248 size_ += 1000;
249 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
250 ASSERT_NE(source_, nullptr);
251 size_ = 1000;
252 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
253 ASSERT_EQ(source_, nullptr);
254 size_ = 0;
255 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
256 ASSERT_EQ(source_, nullptr);
257 size_ = -1;
258 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
259 ASSERT_EQ(source_, nullptr);
260 }
261
262 /**
263 * @tc.name: AVSource_CreateSourceWithFD_1010
264 * @tc.desc: create source with fd, ts
265 * @tc.type: FUNC
266 */
267 HWTEST_F(AVSourceUnitTest, AVSource_CreateSourceWithFD_1010, TestSize.Level1)
268 {
269 printf("---- %s ----\n", g_tsPath.c_str());
270 fd_ = OpenFile(g_tsPath);
271 size_ = GetFileSize(g_tsPath);
272 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
273 ASSERT_NE(source_, nullptr);
274 }
275
276 /**
277 * @tc.name: AVSource_CreateSourceWithFD_1020
278 * @tc.desc: create source with fd, but file is abnormal
279 * @tc.type: FUNC
280 */
281 HWTEST_F(AVSourceUnitTest, AVSource_CreateSourceWithFD_1020, TestSize.Level1)
282 {
283 printf("---- %s ----\n", g_mp4Path5.c_str());
284 fd_ = OpenFile(g_mp4Path5);
285 size_ = GetFileSize(g_mp4Path5);
286 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
287 ASSERT_EQ(source_, nullptr);
288 }
289
290 /**
291 * @tc.name: AVSource_CreateSourceWithFD_1030
292 * @tc.desc: create source with fd, but file is empty
293 * @tc.type: FUNC
294 */
295 HWTEST_F(AVSourceUnitTest, AVSource_CreateSourceWithFD_1030, TestSize.Level1)
296 {
297 printf("---- %s ----\n", g_mp4Path6.c_str());
298 fd_ = OpenFile(g_mp4Path6);
299 size_ = GetFileSize(g_mp4Path6);
300 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
301 ASSERT_EQ(source_, nullptr);
302 }
303
304 /**
305 * @tc.name: AVSource_CreateSourceWithFD_1040
306 * @tc.desc: create source with fd, but file is error
307 * @tc.type: FUNC
308 */
309 HWTEST_F(AVSourceUnitTest, AVSource_CreateSourceWithFD_1040, TestSize.Level1)
310 {
311 printf("---- %s ----\n", g_mp4Path7.c_str());
312 fd_ = OpenFile(g_mp4Path7);
313 size_ = GetFileSize(g_mp4Path7);
314 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
315 ASSERT_EQ(source_, nullptr);
316 }
317
318 /**
319 * @tc.name: AVSource_CreateSourceWithFD_1050
320 * @tc.desc: create source with fd, but track is zero
321 * @tc.type: FUNC
322 */
323 HWTEST_F(AVSourceUnitTest, AVSource_CreateSourceWithFD_1050, TestSize.Level1)
324 {
325 printf("---- %s ----\n", g_mp4Path8.c_str());
326 fd_ = OpenFile(g_mp4Path8);
327 size_ = GetFileSize(g_mp4Path8);
328 cout << "---fd: " << fd_ << "---size: " << size_ << endl;
329 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
330 ASSERT_NE(source_, nullptr);
331 }
332
333 /**
334 * @tc.name: AVSource_CreateSourceWithFD_1060
335 * @tc.desc: create source with fd, the values of fd is abnormal;
336 * @tc.type: FUNC
337 */
338 HWTEST_F(AVSourceUnitTest, AVSource_CreateSourceWithFD_1060, TestSize.Level1)
339 {
340 size_ = 1000;
341 fd_ = 0;
342 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
343 ASSERT_EQ(source_, nullptr);
344 fd_ = 1;
345 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
346 ASSERT_EQ(source_, nullptr);
347 fd_ = 2;
348 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
349 ASSERT_EQ(source_, nullptr);
350 fd_ = -1;
351 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
352 ASSERT_EQ(source_, nullptr);
353 }
354
355 /**
356 * @tc.name: AVSource_CreateSourceWithFD_1070
357 * @tc.desc: create source with fd, offset is exception value;
358 * @tc.type: FUNC
359 */
360 HWTEST_F(AVSourceUnitTest, AVSource_CreateSourceWithFD_1070, TestSize.Level1)
361 {
362 printf("---- %s ----\n", g_mp4Path.c_str());
363 fd_ = OpenFile(g_mp4Path);
364 size_ = GetFileSize(g_mp4Path);
365 int64_t offset = 5000;
366 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, offset, size_);
367 ASSERT_EQ(source_, nullptr);
368 offset = -10;
369 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, offset, size_);
370 ASSERT_EQ(source_, nullptr);
371 offset = size_;
372 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, offset, size_);
373 ASSERT_EQ(source_, nullptr);
374 offset = size_ + 1000;
375 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, offset, size_);
376 ASSERT_EQ(source_, nullptr);
377 }
378
379 /**
380 * @tc.name: AVSource_CreateSourceWithFD_1080
381 * @tc.desc: Create source repeatedly
382 * @tc.type: FUNC
383 */
384 HWTEST_F(AVSourceUnitTest, AVSource_CreateSourceWithFD_1080, TestSize.Level1)
385 {
386 printf("---- %s ----\n", g_mp4Path.c_str());
387 fd_ = OpenFile(g_mp4Path);
388 size_ = GetFileSize(g_mp4Path);
389 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
390 ASSERT_NE(source_, nullptr);
391 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
392 ASSERT_NE(source_, nullptr);
393 }
394
395 /**
396 * @tc.name: AVSource_CreateSourceWithFD_1090
397 * @tc.desc: destroy source
398 * @tc.type: FUNC
399 */
400 HWTEST_F(AVSourceUnitTest, AVSource_CreateSourceWithFD_1090, TestSize.Level1)
401 {
402 printf("---- %s ----\n", g_mp4Path.c_str());
403 fd_ = OpenFile(g_mp4Path);
404 size_ = GetFileSize(g_mp4Path);
405 int32_t fd2 = OpenFile(g_mp3Path);
406 int64_t size2 = GetFileSize(g_mp3Path);
407 printf("---- %s ----\n", g_mp3Path.c_str());
408 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
409 ASSERT_NE(source_, nullptr);
410 shared_ptr<AVSourceMock> source2 = AVSourceMockFactory::CreateSourceWithFD(fd2, SOURCE_OFFSET, size2);
411 ASSERT_NE(source2, nullptr);
412 ASSERT_EQ(source_->Destroy(), AV_ERR_OK);
413 ASSERT_EQ(source2->Destroy(), AV_ERR_OK);
414 source_ = nullptr;
415 source2 = nullptr;
416 close(fd2);
417 }
418
419 /**
420 * @tc.name: AVSource_CreateSourceWithDataSource_Compare_Fd_1000
421 * @tc.desc: destroy source
422 * @tc.type: FUNC
423 */
424 HWTEST_F(AVSourceUnitTest, AVSource_CreateSourceWithDataSource_Compare_Fd_1000, TestSize.Level1)
425 {
426 printf("---- %s ----\n", g_mp4Path.c_str());
427 fd_ = OpenFile(g_mp4Path);
428 size_ = GetFileSize(g_mp4Path);
429 g_filePath = g_mp4Path;
430 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
431 OH_AVDataSource dataSource = {size_, AVSourceReadAt};
432 std::shared_ptr<NativeAVDataSource> source;
433 std::shared_ptr<AVSourceMock> dataSource_;
434 #ifndef AVSOURCE_INNER_UNIT_TEST
435 dataSource_ = AVSourceMockFactory::CreateWithDataSource(&dataSource);
436 #else
437 source = std::make_shared<NativeAVDataSource>(&dataSource);
438 dataSource_ = AVSourceMockFactory::CreateWithDataSource(source);
439 #endif
440 ASSERT_NE(source_, nullptr);
441 ASSERT_NE(dataSource_, nullptr);
442 ASSERT_EQ(source_->Destroy(), AV_ERR_OK);
443 ASSERT_EQ(dataSource_->Destroy(), AV_ERR_OK);
444 source_ = nullptr;
445 dataSource_ = nullptr;
446 }
447
448 /**
449 * @tc.name: AVSource_CreateSourceWithDataSource_Compare_Fd_1010
450 * @tc.desc: destroy source (test_error.mp4)
451 * @tc.type: FUNC
452 */
453 HWTEST_F(AVSourceUnitTest, AVSource_CreateSourceWithDataSource_Compare_Fd_1010, TestSize.Level1)
454 {
455 printf("---- %s ----\n", g_mp4Path7.c_str());
456 fd_ = OpenFile(g_mp4Path7);
457 size_ = GetFileSize(g_mp4Path7);
458 g_filePath = g_mp4Path7;
459 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
460 OH_AVDataSource dataSource = {size_, AVSourceReadAt};
461 std::shared_ptr<NativeAVDataSource> source;
462 std::shared_ptr<AVSourceMock> dataSource_;
463 #ifndef AVSOURCE_INNER_UNIT_TEST
464 dataSource_ = AVSourceMockFactory::CreateWithDataSource(&dataSource);
465 #else
466 source = std::make_shared<NativeAVDataSource>(&dataSource);
467 dataSource_ = AVSourceMockFactory::CreateWithDataSource(source);
468 #endif
469 ASSERT_EQ(source_, nullptr);
470 ASSERT_EQ(dataSource_, source_);
471 }
472
473 /**
474 * @tc.name: AVSource_CreateSourceWithDataSource_Compare_Fd_1020
475 * @tc.desc: destroy source (test_empty_file.mp4)
476 * @tc.type: FUNC
477 */
478 HWTEST_F(AVSourceUnitTest, AVSource_CreateSourceWithDataSource_Compare_Fd_1020, TestSize.Level1)
479 {
480 printf("---- %s ----\n", g_mp4Path6.c_str());
481 fd_ = OpenFile(g_mp4Path6);
482 size_ = GetFileSize(g_mp4Path6);
483 g_filePath = g_mp4Path6;
484 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
485 OH_AVDataSource dataSource = {size_, AVSourceReadAt};
486 std::shared_ptr<NativeAVDataSource> source;
487 std::shared_ptr<AVSourceMock> dataSource_;
488 #ifndef AVSOURCE_INNER_UNIT_TEST
489 dataSource_ = AVSourceMockFactory::CreateWithDataSource(&dataSource);
490 #else
491 source = std::make_shared<NativeAVDataSource>(&dataSource);
492 dataSource_ = AVSourceMockFactory::CreateWithDataSource(source);
493 #endif
494 ASSERT_EQ(source_, nullptr);
495 ASSERT_EQ(dataSource_, source_);
496 }
497
498 /**
499 * @tc.name: AVSource_Compare_DumpInfo_1000
500 * @tc.desc: Compare the dumpInfo of dataSource and fd (mp4)
501 * @tc.type: FUNC
502 */
503 HWTEST_F(AVSourceUnitTest, AVSource_Compare_DumpInfo_1000, TestSize.Level1)
504 {
505 printf("---- %s ----\n", g_mp4Path.c_str());
506 fd_ = OpenFile(g_mp4Path);
507 size_ = GetFileSize(g_mp4Path);
508 g_filePath = g_mp4Path;
509 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
510 OH_AVDataSource dataSource = {size_, AVSourceReadAt};
511 std::shared_ptr<NativeAVDataSource> source;
512 std::shared_ptr<AVSourceMock> dataSource_;
513 #ifndef AVSOURCE_INNER_UNIT_TEST
514 dataSource_ = AVSourceMockFactory::CreateWithDataSource(&dataSource);
515 #else
516 source = std::make_shared<NativeAVDataSource>(&dataSource);
517 dataSource_ = AVSourceMockFactory::CreateWithDataSource(source);
518 #endif
519 ASSERT_NE(source_, nullptr);
520 ASSERT_NE(dataSource_, nullptr);
521 format_ = source_->GetSourceFormat();
522 std::shared_ptr<FormatMock> dsFormat_ = dataSource_->GetSourceFormat();
523 ASSERT_NE(format_, nullptr);
524 ASSERT_NE(dsFormat_, nullptr);
525 std::string str1(format_->DumpInfo());
526 std::string str2(dsFormat_->DumpInfo());
527 printf("[ sourceFormat ]: %s\n", str1.c_str());
528 printf("[ dataSourceFormat ]: %s\n", str2.c_str());
529 ASSERT_EQ(str1, str2);
530 #ifdef AVSOURCE_INNER_UNIT_TEST
531 ASSERT_EQ(str1, str2);
532 #endif
533 ASSERT_NE(source_, nullptr);
534 ASSERT_NE(dataSource_, nullptr);
535 ASSERT_EQ(source_->Destroy(), AV_ERR_OK);
536 ASSERT_EQ(dataSource_->Destroy(), AV_ERR_OK);
537 source_ = nullptr;
538 dataSource_ = nullptr;
539 }
540
541 /**
542 * @tc.name: AVSource_Compare_DumpInfo_1010
543 * @tc.desc: Compare the dumpInfo of dataSource and fd (zero_track.mp4)
544 * @tc.type: FUNC
545 */
546 HWTEST_F(AVSourceUnitTest, AVSource_Compare_DumpInfo_1010, TestSize.Level1)
547 {
548 printf("---- %s ----\n", g_mp4Path8.c_str());
549 fd_ = OpenFile(g_mp4Path8);
550 size_ = GetFileSize(g_mp4Path8);
551 g_filePath = g_mp4Path8;
552 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
553 OH_AVDataSource dataSource = {size_, AVSourceReadAt};
554 std::shared_ptr<NativeAVDataSource> source;
555 std::shared_ptr<AVSourceMock> dataSource_;
556 #ifndef AVSOURCE_INNER_UNIT_TEST
557 dataSource_ = AVSourceMockFactory::CreateWithDataSource(&dataSource);
558 #else
559 source = std::make_shared<NativeAVDataSource>(&dataSource);
560 dataSource_ = AVSourceMockFactory::CreateWithDataSource(source);
561 #endif
562 ASSERT_NE(source_, nullptr);
563 ASSERT_NE(dataSource_, nullptr);
564 format_ = source_->GetSourceFormat();
565 std::shared_ptr<FormatMock> dsFormat_ = dataSource_->GetSourceFormat();
566 ASSERT_NE(format_, nullptr);
567 ASSERT_NE(dsFormat_, nullptr);
568 std::string str1(format_->DumpInfo());
569 std::string str2(dsFormat_->DumpInfo());
570 printf("[ sourceFormat ]: %s\n", str1.c_str());
571 printf("[ dataSourceFormat ]: %s\n", str2.c_str());
572 ASSERT_EQ(str1, str2);
573 #ifdef AVSOURCE_INNER_UNIT_TEST
574 ASSERT_EQ(str1, str2);
575 #endif
576 ASSERT_NE(source_, nullptr);
577 ASSERT_NE(dataSource_, nullptr);
578 ASSERT_EQ(source_->Destroy(), AV_ERR_OK);
579 ASSERT_EQ(dataSource_->Destroy(), AV_ERR_OK);
580 source_ = nullptr;
581 dataSource_ = nullptr;
582 }
583
584 /**
585 * @tc.name: AVSource_GetFormat_1000
586 * @tc.desc: get source format(mp4)
587 * @tc.type: FUNC
588 */
589 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1000, TestSize.Level1)
590 {
591 fd_ = OpenFile(g_mp4Path);
592 size_ = GetFileSize(g_mp4Path);
593 printf("---- %s ----\n", g_mp4Path.c_str());
594 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
595 ASSERT_NE(source_, nullptr);
596 format_ = source_->GetSourceFormat();
597 ASSERT_NE(format_, nullptr);
598 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
599 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_TITLE, formatVal_.title));
600 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ARTIST, formatVal_.artist));
601 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ALBUM, formatVal_.album));
602 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ALBUM_ARTIST, formatVal_.albumArtist));
603 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_DATE, formatVal_.date));
604 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COMMENT, formatVal_.comment));
605 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_GENRE, formatVal_.genre));
606 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COPYRIGHT, formatVal_.copyright));
607 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_DESCRIPTION, formatVal_.description));
608 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_LYRICS, formatVal_.lyrics));
609 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
610 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
611 ASSERT_EQ(formatVal_.title, "title");
612 ASSERT_EQ(formatVal_.artist, "artist");
613 ASSERT_EQ(formatVal_.album, "album");
614 ASSERT_EQ(formatVal_.albumArtist, "album artist");
615 ASSERT_EQ(formatVal_.date, "2023");
616 ASSERT_EQ(formatVal_.comment, "comment");
617 ASSERT_EQ(formatVal_.genre, "genre");
618 ASSERT_EQ(formatVal_.copyright, "Copyright");
619 ASSERT_EQ(formatVal_.lyrics, "lyrics");
620 ASSERT_EQ(formatVal_.description, "description");
621 ASSERT_EQ(formatVal_.duration, 4120000);
622 ASSERT_EQ(formatVal_.trackCount, 3);
623 #ifdef AVSOURCE_INNER_UNIT_TEST
624 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
625 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
626 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
627 ASSERT_EQ(formatVal_.hasVideo, 1);
628 ASSERT_EQ(formatVal_.hasAudio, 1);
629 ASSERT_EQ(formatVal_.fileType, 101);
630 #endif
631 }
632
633 /**
634 * @tc.name: AVSource_GetFormat_1010
635 * @tc.desc: get track format (mp4)
636 * @tc.type: FUNC
637 */
638 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1010, TestSize.Level1)
639 {
640 fd_ = OpenFile(g_mp4Path);
641 size_ = GetFileSize(g_mp4Path);
642 printf("---- %s ------\n", g_mp4Path.c_str());
643 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
644 ASSERT_NE(source_, nullptr);
645 trackIndex_ = 0;
646 format_ = source_->GetTrackFormat(trackIndex_);
647 ASSERT_NE(format_, nullptr);
648 printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
649 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
650 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
651 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
652 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
653 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
654 ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
655 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
656 ASSERT_EQ(formatVal_.codecMime, "video/avc");
657 ASSERT_EQ(formatVal_.width, 1920);
658 ASSERT_EQ(formatVal_.height, 1080);
659 ASSERT_EQ(formatVal_.bitRate, 7782407);
660 ASSERT_DOUBLE_EQ(formatVal_.frameRate, 25.000000);
661 trackIndex_ = 1;
662 format_ = source_->GetTrackFormat(trackIndex_);
663 ASSERT_NE(format_, nullptr);
664 printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
665 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
666 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
667 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
668 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
669 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, formatVal_.aacIsAdts));
670 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
671 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
672 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
673 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
674 ASSERT_EQ(formatVal_.sampleRate, 44100);
675 ASSERT_EQ(formatVal_.channelCount, 2);
676 ASSERT_EQ(formatVal_.bitRate, 128563);
677 ASSERT_EQ(formatVal_.aacIsAdts, 1);
678 ASSERT_EQ(formatVal_.codecMime, "audio/mp4a-latm");
679 ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
680 ASSERT_EQ(formatVal_.channelLayout, 3);
681 }
682
683 /**
684 * @tc.name: AVSource_GetFormat_1011
685 * @tc.desc: get track format(mp4, cover)
686 * @tc.type: FUNC
687 */
688 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1011, TestSize.Level1)
689 {
690 fd_ = OpenFile(g_mp4Path);
691 size_ = GetFileSize(g_mp4Path);
692 printf("---- %s ------\n", g_mp4Path.c_str());
693 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
694 ASSERT_NE(source_, nullptr);
695 trackIndex_ = 2;
696 format_ = source_->GetTrackFormat(trackIndex_);
697 ASSERT_NE(format_, nullptr);
698 #ifdef AVSOURCE_INNER_UNIT_TEST
699 const char* outFile = "/data/test/test_264_B_Gop25_4sec_cover.bin";
700 FILE* saveFile = fopen(outFile, "wb");
701 ASSERT_TRUE(format_->GetBuffer(MediaDescriptionKey::MD_KEY_COVER, &addr_, buffSize_));
702 fwrite(addr_, sizeof(uint8_t), buffSize_, saveFile);
703 fclose(saveFile);
704 #endif
705 }
706
707 /**
708 * @tc.name: AVSource_GetFormat_1020
709 * @tc.desc: get source format when the file is ts(mpeg2, aac)
710 * @tc.type: FUNC
711 */
712 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1020, TestSize.Level1)
713 {
714 fd_ = OpenFile(g_tsPath);
715 size_ = GetFileSize(g_tsPath);
716 printf("---- %s ----\n", g_tsPath.c_str());
717 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
718 ASSERT_NE(source_, nullptr);
719 format_ = source_->GetSourceFormat();
720 ASSERT_NE(format_, nullptr);
721 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
722 trackIndex_ = 0;
723 format_ = source_->GetTrackFormat(trackIndex_);
724 ASSERT_NE(format_, nullptr);
725 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
726 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
727 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
728 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
729 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
730 ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
731 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
732 ASSERT_EQ(formatVal_.codecMime, "video/mpeg2");
733 ASSERT_EQ(formatVal_.width, 1920);
734 ASSERT_EQ(formatVal_.height, 1080);
735 ASSERT_DOUBLE_EQ(formatVal_.frameRate, 25.000000);
736 trackIndex_ = 1;
737 format_ = source_->GetTrackFormat(trackIndex_);
738 ASSERT_NE(format_, nullptr);
739 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
740 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
741 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
742 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
743 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
744 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
745 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
746 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
747 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
748 ASSERT_EQ(formatVal_.sampleRate, 44100);
749 ASSERT_EQ(formatVal_.channelCount, 2);
750 ASSERT_EQ(formatVal_.bitRate, 127103);
751 ASSERT_EQ(formatVal_.codecMime, "audio/mp4a-latm");
752 ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
753 ASSERT_EQ(formatVal_.channelLayout, 3);
754 }
755
756 /**
757 * @tc.name: AVSource_GetFormat_1030
758 * @tc.desc: get source format when the file is mp4(mpeg2 aac)
759 * @tc.type: FUNC
760 */
761 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1030, TestSize.Level1)
762 {
763 fd_ = OpenFile(g_mp4Path3);
764 size_ = GetFileSize(g_mp4Path3);
765 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
766 ASSERT_NE(source_, nullptr);
767 format_ = source_->GetSourceFormat();
768 ASSERT_NE(format_, nullptr);
769 #ifdef AVSOURCE_INNER_UNIT_TEST
770 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
771 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
772 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
773 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
774 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COMPOSER, formatVal_.composer));
775 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_AUTHOR, formatVal_.author));
776 ASSERT_EQ(formatVal_.hasVideo, 1);
777 ASSERT_EQ(formatVal_.hasAudio, 1);
778 ASSERT_EQ(formatVal_.fileType, 101);
779 ASSERT_EQ(formatVal_.composer, "composer");
780 ASSERT_EQ(formatVal_.author, "author");
781 #endif
782 trackIndex_ = 0;
783 format_ = source_->GetTrackFormat(trackIndex_);
784 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
785 ASSERT_NE(format_, nullptr);
786 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
787 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
788 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
789 ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
790 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
791 ASSERT_EQ(formatVal_.codecMime, "video/mpeg2");
792 ASSERT_EQ(formatVal_.bitRate, 3889231);
793 ASSERT_DOUBLE_EQ(formatVal_.frameRate, 25.000000);
794 trackIndex_ = 1;
795 format_ = source_->GetTrackFormat(trackIndex_);
796 ASSERT_NE(format_, nullptr);
797 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
798 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
799 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
800 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
801 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
802 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
803 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
804 ASSERT_EQ(formatVal_.sampleRate, 44100);
805 ASSERT_EQ(formatVal_.channelCount, 2);
806 ASSERT_EQ(formatVal_.bitRate, 128563);
807 ASSERT_EQ(formatVal_.codecMime, "audio/mp4a-latm");
808 ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
809 ASSERT_EQ(formatVal_.channelLayout, 3);
810 }
811
812 /**
813 * @tc.name: AVSource_GetFormat_1050
814 * @tc.desc: get format when the file is mkv (video: h264, audio: opus)
815 * @tc.type: FUNC
816 */
817 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1050, TestSize.Level1)
818 {
819 fd_ = OpenFile(g_mkvPath2);
820 size_ = GetFileSize(g_mkvPath2);
821 printf("---- %s ----\n", g_mkvPath2.c_str());
822 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
823 ASSERT_NE(source_, nullptr);
824 format_ = source_->GetSourceFormat();
825 ASSERT_NE(format_, nullptr);
826 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
827 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_TITLE, formatVal_.title));
828 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ARTIST, formatVal_.artist));
829 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ALBUM_ARTIST, formatVal_.albumArtist));
830 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_DATE, formatVal_.date));
831 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COMMENT, formatVal_.comment));
832 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_GENRE, formatVal_.genre));
833 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COPYRIGHT, formatVal_.copyright));
834 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_DESCRIPTION, formatVal_.description));
835 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_LYRICS, formatVal_.lyrics));
836 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
837 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
838 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_LANGUAGE, formatVal_.language));
839 ASSERT_EQ(formatVal_.title, "title");
840 ASSERT_EQ(formatVal_.artist, "artist");
841 ASSERT_EQ(formatVal_.albumArtist, "album_artist");
842 ASSERT_EQ(formatVal_.date, "2023");
843 ASSERT_EQ(formatVal_.comment, "comment");
844 ASSERT_EQ(formatVal_.genre, "genre");
845 ASSERT_EQ(formatVal_.copyright, "copyRight");
846 ASSERT_EQ(formatVal_.lyrics, "lyrics");
847 ASSERT_EQ(formatVal_.description, "description");
848 ASSERT_EQ(formatVal_.duration, 4001000);
849 ASSERT_EQ(formatVal_.trackCount, 2);
850 ASSERT_EQ(formatVal_.language, "language");
851 #ifdef AVSOURCE_INNER_UNIT_TEST
852 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COMPOSER, formatVal_.composer));
853 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
854 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
855 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
856 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_AUTHOR, formatVal_.author));
857 ASSERT_EQ(formatVal_.hasVideo, 1);
858 ASSERT_EQ(formatVal_.hasAudio, 1);
859 ASSERT_EQ(formatVal_.fileType, 103);
860 ASSERT_EQ(formatVal_.author, "author");
861 ASSERT_EQ(formatVal_.composer, "composer");
862 #endif
863 }
864
865 /**
866 * @tc.name: AVSource_GetFormat_1060
867 * @tc.desc: get format when the file is mkv (video: h264, audio: opus)
868 * @tc.type: FUNC
869 */
870 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1060, TestSize.Level1)
871 {
872 fd_ = OpenFile(g_mkvPath2);
873 size_ = GetFileSize(g_mkvPath2);
874 printf("---- %s ----\n", g_mkvPath2.c_str());
875 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
876 ASSERT_NE(source_, nullptr);
877 trackIndex_ = 0;
878 format_ = source_->GetTrackFormat(trackIndex_);
879 ASSERT_NE(format_, nullptr);
880 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
881 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
882 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
883 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
884 ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
885 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
886 ASSERT_EQ(formatVal_.codecMime, "video/avc");
887 ASSERT_EQ(formatVal_.width, 1920);
888 ASSERT_EQ(formatVal_.height, 1080);
889 ASSERT_EQ(formatVal_.frameRate, 60.000000);
890 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
891 trackIndex_ = 1;
892 format_ = source_->GetTrackFormat(trackIndex_);
893 ASSERT_NE(format_, nullptr);
894 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
895 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
896 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
897 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
898 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
899 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
900 ASSERT_EQ(formatVal_.channelLayout, 4);
901 ASSERT_EQ(formatVal_.sampleRate, 48000);
902 ASSERT_EQ(formatVal_.codecMime, "audio/opus");
903 ASSERT_EQ(formatVal_.channelCount, 1);
904 ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
905 }
906
907 /**
908 * @tc.name: AVSource_GetFormat_1100
909 * @tc.desc: get format when the file is aac
910 * @tc.type: FUNC
911 */
912 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1100, TestSize.Level1)
913 {
914 fd_ = OpenFile(g_aacPath);
915 size_ = GetFileSize(g_aacPath);
916 printf("---- %s ----\n", g_aacPath.c_str());
917 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
918 ASSERT_NE(source_, nullptr);
919 format_ = source_->GetSourceFormat();
920 ASSERT_NE(format_, nullptr);
921 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
922 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
923 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
924 ASSERT_EQ(formatVal_.duration, 30023469);
925 ASSERT_EQ(formatVal_.trackCount, 1);
926 #ifdef AVSOURCE_INNER_UNIT_TEST
927 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
928 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
929 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
930 ASSERT_EQ(formatVal_.fileType, 202);
931 ASSERT_EQ(formatVal_.hasAudio, 1);
932 ASSERT_EQ(formatVal_.hasVideo, 0);
933 #endif
934 trackIndex_ = 0;
935 format_ = source_->GetTrackFormat(trackIndex_);
936 ASSERT_NE(format_, nullptr);
937 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
938 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
939 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
940 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
941 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
942 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AAC_IS_ADTS, formatVal_.aacIsAdts));
943 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
944 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
945 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
946 ASSERT_EQ(formatVal_.channelLayout, 3);
947 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
948 ASSERT_EQ(formatVal_.sampleRate, 44100);
949 ASSERT_EQ(formatVal_.channelCount, 2);
950 ASSERT_EQ(formatVal_.bitRate, 126800);
951 ASSERT_EQ(formatVal_.aacIsAdts, 1);
952 ASSERT_EQ(formatVal_.codecMime, "audio/mp4a-latm");
953 ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
954 }
955
956 /**
957 * @tc.name: AVSource_GetFormat_1110
958 * @tc.desc: get format when the file is flac
959 * @tc.type: FUNC
960 */
961 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1110, TestSize.Level1)
962 {
963 fd_ = OpenFile(g_flacPath);
964 size_ = GetFileSize(g_flacPath);
965 printf("---- %s ----\n", g_flacPath.c_str());
966 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
967 ASSERT_NE(source_, nullptr);
968 format_ = source_->GetSourceFormat();
969 ASSERT_NE(format_, nullptr);
970 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
971 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_TITLE, formatVal_.title));
972 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ARTIST, formatVal_.artist));
973 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ALBUM, formatVal_.album));
974 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ALBUM_ARTIST, formatVal_.albumArtist));
975 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_DATE, formatVal_.date));
976 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COMMENT, formatVal_.comment));
977 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_GENRE, formatVal_.genre));
978 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COPYRIGHT, formatVal_.copyright));
979 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_LYRICS, formatVal_.lyrics));
980 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_LANGUAGE, formatVal_.language));
981 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
982 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
983 ASSERT_EQ(formatVal_.title, "title");
984 ASSERT_EQ(formatVal_.artist, "artist");
985 ASSERT_EQ(formatVal_.album, "album");
986 ASSERT_EQ(formatVal_.albumArtist, "album artist");
987 ASSERT_EQ(formatVal_.date, "2023");
988 ASSERT_EQ(formatVal_.comment, "comment");
989 ASSERT_EQ(formatVal_.genre, "genre");
990 ASSERT_EQ(formatVal_.copyright, "Copyright");
991 ASSERT_EQ(formatVal_.lyrics, "lyrics");
992 ASSERT_EQ(formatVal_.duration, 30000000);
993 ASSERT_EQ(formatVal_.trackCount, 2);
994 #ifdef AVSOURCE_INNER_UNIT_TEST
995 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COMPOSER, formatVal_.composer));
996 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_AUTHOR, formatVal_.author));
997 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
998 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
999 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1000 ASSERT_EQ(formatVal_.composer, "composer");
1001 ASSERT_EQ(formatVal_.author, "author");
1002 ASSERT_EQ(formatVal_.fileType, 204);
1003 ASSERT_EQ(formatVal_.hasAudio, 1);
1004 ASSERT_EQ(formatVal_.hasVideo, 0);
1005 #endif
1006 }
1007
1008 /**
1009 * @tc.name: AVSource_GetFormat_1111
1010 * @tc.desc: get format when the file is flac
1011 * @tc.type: FUNC
1012 */
1013 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1111, TestSize.Level1)
1014 {
1015 fd_ = OpenFile(g_flacPath);
1016 size_ = GetFileSize(g_flacPath);
1017 printf("---- %s ----\n", g_flacPath.c_str());
1018 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1019 ASSERT_NE(source_, nullptr);
1020 trackIndex_ = 0;
1021 format_ = source_->GetTrackFormat(trackIndex_);
1022 ASSERT_NE(format_, nullptr);
1023 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1024 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1025 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1026 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1027 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1028 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1029 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1030 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1031 ASSERT_EQ(formatVal_.channelLayout, 4);
1032 ASSERT_EQ(formatVal_.sampleRate, 48000);
1033 ASSERT_EQ(formatVal_.channelCount, 1);
1034 ASSERT_EQ(formatVal_.codecMime, "audio/flac");
1035 ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_S32LE);
1036 #ifdef AVSOURCE_INNER_UNIT_TEST
1037 trackIndex_ = 1;
1038 format_ = source_->GetTrackFormat(trackIndex_);
1039 ASSERT_NE(format_, nullptr);
1040 printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1041 const char* outFile = "/data/test/flac_48000_1_cover.bin";
1042 FILE* saveFile = fopen(outFile, "wb");
1043 ASSERT_TRUE(format_->GetBuffer(MediaDescriptionKey::MD_KEY_COVER, &addr_, buffSize_));
1044 fwrite(addr_, sizeof(uint8_t), buffSize_, saveFile);
1045 fclose(saveFile);
1046 #endif
1047 }
1048
1049 /**
1050 * @tc.name: AVSource_GetFormat_11201
1051 * @tc.desc: get format when the file is m4a
1052 * @tc.type: FUNC
1053 */
1054 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_11201, TestSize.Level1)
1055 {
1056 fd_ = OpenFile(g_m4aPath);
1057 size_ = GetFileSize(g_m4aPath);
1058 printf("---- %s ----\n", g_m4aPath.c_str());
1059 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1060 ASSERT_NE(source_, nullptr);
1061 format_ = source_->GetSourceFormat();
1062 ASSERT_NE(format_, nullptr);
1063 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1064 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_TITLE, formatVal_.title));
1065 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ARTIST, formatVal_.artist));
1066 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ALBUM, formatVal_.album));
1067 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ALBUM_ARTIST, formatVal_.albumArtist));
1068 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_DATE, formatVal_.date));
1069 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COMMENT, formatVal_.comment));
1070 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_GENRE, formatVal_.genre));
1071 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COPYRIGHT, formatVal_.copyright));
1072 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_LYRICS, formatVal_.lyrics));
1073 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_DESCRIPTION, formatVal_.description));
1074 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
1075 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
1076 ASSERT_EQ(formatVal_.title, "title");
1077 ASSERT_EQ(formatVal_.artist, "artist");
1078 ASSERT_EQ(formatVal_.album, "album");
1079 ASSERT_EQ(formatVal_.albumArtist, "album artist");
1080 ASSERT_EQ(formatVal_.date, "2023");
1081 ASSERT_EQ(formatVal_.comment, "comment");
1082 ASSERT_EQ(formatVal_.genre, "genre");
1083 ASSERT_EQ(formatVal_.copyright, "Copyright");
1084 ASSERT_EQ(formatVal_.lyrics, "lyrics");
1085 ASSERT_EQ(formatVal_.description, "description");
1086 ASSERT_EQ(formatVal_.duration, 30016000);
1087 ASSERT_EQ(formatVal_.trackCount, 1);
1088 #ifdef AVSOURCE_INNER_UNIT_TEST
1089 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COMPOSER, formatVal_.composer));
1090 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1091 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1092 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1093 ASSERT_EQ(formatVal_.composer, "composer");
1094 ASSERT_EQ(formatVal_.fileType, 206);
1095 ASSERT_EQ(formatVal_.hasAudio, 1);
1096 ASSERT_EQ(formatVal_.hasVideo, 0);
1097 #endif
1098 }
1099
1100 /**
1101 * @tc.name: AVSource_GetFormat_1121
1102 * @tc.desc: get format when the file is m4a
1103 * @tc.type: FUNC
1104 */
1105 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1121, TestSize.Level1)
1106 {
1107 fd_ = OpenFile(g_m4aPath);
1108 size_ = GetFileSize(g_m4aPath);
1109 printf("---- %s ----\n", g_m4aPath.c_str());
1110 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1111 ASSERT_NE(source_, nullptr);
1112 format_ = source_->GetTrackFormat(trackIndex_);
1113 ASSERT_NE(format_, nullptr);
1114 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1115 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1116 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1117 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1118 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1119 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1120 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
1121 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1122 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1123 ASSERT_EQ(formatVal_.channelLayout, 4);
1124 ASSERT_EQ(formatVal_.sampleRate, 48000);
1125 ASSERT_EQ(formatVal_.channelCount, 1);
1126 ASSERT_EQ(formatVal_.codecMime, "audio/mp4a-latm");
1127 ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
1128 ASSERT_EQ(formatVal_.bitRate, 69594);
1129 }
1130
1131 /**
1132 * @tc.name: AVSource_GetFormat_1130
1133 * @tc.desc: get format when the file is mp3
1134 * @tc.type: FUNC
1135 */
1136 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1130, TestSize.Level1)
1137 {
1138 fd_ = OpenFile(g_mp3Path);
1139 size_ = GetFileSize(g_mp3Path);
1140 printf("---- %s ----\n", g_mp3Path.c_str());
1141 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1142 ASSERT_NE(source_, nullptr);
1143 format_ = source_->GetSourceFormat();
1144 ASSERT_NE(format_, nullptr);
1145 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1146 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_TITLE, formatVal_.title));
1147 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ARTIST, formatVal_.artist));
1148 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ALBUM, formatVal_.album));
1149 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ALBUM_ARTIST, formatVal_.albumArtist));
1150 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_DATE, formatVal_.date));
1151 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COMMENT, formatVal_.comment));
1152 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_GENRE, formatVal_.genre));
1153 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COPYRIGHT, formatVal_.copyright));
1154 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_LYRICS, formatVal_.lyrics));
1155 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_LANGUAGE, formatVal_.language));
1156 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_DESCRIPTION, formatVal_.description));
1157 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
1158 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
1159 ASSERT_EQ(formatVal_.title, "title");
1160 ASSERT_EQ(formatVal_.artist, "artist");
1161 ASSERT_EQ(formatVal_.album, "album");
1162 ASSERT_EQ(formatVal_.albumArtist, "album artist");
1163 ASSERT_EQ(formatVal_.date, "2023");
1164 ASSERT_EQ(formatVal_.comment, "comment");
1165 ASSERT_EQ(formatVal_.genre, "genre");
1166 ASSERT_EQ(formatVal_.copyright, "Copyright");
1167 ASSERT_EQ(formatVal_.lyrics, "SLT");
1168 ASSERT_EQ(formatVal_.description, "description");
1169 ASSERT_EQ(formatVal_.language, "language");
1170 ASSERT_EQ(formatVal_.duration, 30024000);
1171 ASSERT_EQ(formatVal_.trackCount, 2);
1172 #ifdef AVSOURCE_INNER_UNIT_TEST
1173 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COMPOSER, formatVal_.composer));
1174 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_AUTHOR, formatVal_.author));
1175 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1176 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1177 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1178 ASSERT_EQ(formatVal_.author, "author");
1179 ASSERT_EQ(formatVal_.composer, "composer");
1180 ASSERT_EQ(formatVal_.fileType, 203);
1181 ASSERT_EQ(formatVal_.hasAudio, 1);
1182 ASSERT_EQ(formatVal_.hasVideo, 0);
1183 #endif
1184 }
1185
1186 /**
1187 * @tc.name: AVSource_GetFormat_1131
1188 * @tc.desc: get format when the file is mp3
1189 * @tc.type: FUNC
1190 */
1191 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1131, TestSize.Level1)
1192 {
1193 fd_ = OpenFile(g_mp3Path);
1194 size_ = GetFileSize(g_mp3Path);
1195 printf("---- %s ----\n", g_mp3Path.c_str());
1196 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1197 ASSERT_NE(source_, nullptr);
1198 trackIndex_ = 0;
1199 format_ = source_->GetTrackFormat(trackIndex_);
1200 ASSERT_NE(format_, nullptr);
1201 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1202 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1203 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1204 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1205 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1206 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1207 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
1208 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1209 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1210 ASSERT_EQ(formatVal_.channelLayout, 4);
1211 ASSERT_EQ(formatVal_.sampleRate, 48000);
1212 ASSERT_EQ(formatVal_.channelCount, 1);
1213 ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
1214 ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
1215 ASSERT_EQ(formatVal_.bitRate, 64000);
1216 #ifdef AVSOURCE_INNER_UNIT_TEST
1217 trackIndex_ = 1;
1218 format_ = source_->GetTrackFormat(trackIndex_);
1219 ASSERT_NE(format_, nullptr);
1220 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1221 const char* outFile = "/data/test/mp3_48000_1_cover.bin";
1222 FILE* saveFile = fopen(outFile, "wb");
1223 ASSERT_TRUE(format_->GetBuffer(MediaDescriptionKey::MD_KEY_COVER, &addr_, buffSize_));
1224 fwrite(addr_, sizeof(uint8_t), buffSize_, saveFile);
1225 fclose(saveFile);
1226 #endif
1227 }
1228
1229 /**
1230 * @tc.name: AVSource_GetFormat_1140
1231 * @tc.desc: get format when the file is ogg
1232 * @tc.type: FUNC
1233 */
1234 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1140, TestSize.Level1)
1235 {
1236 fd_ = OpenFile(g_oggPath);
1237 size_ = GetFileSize(g_oggPath);
1238 printf("---- %s ----\n", g_oggPath.c_str());
1239 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1240 ASSERT_NE(source_, nullptr);
1241 format_ = source_->GetSourceFormat();
1242 ASSERT_NE(format_, nullptr);
1243 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1244 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
1245 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
1246 ASSERT_EQ(formatVal_.duration, 30000000);
1247 ASSERT_EQ(formatVal_.trackCount, 1);
1248 format_ = source_->GetTrackFormat(trackIndex_);
1249 ASSERT_NE(format_, nullptr);
1250 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1251 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1252 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1253 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1254 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1255 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1256 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
1257 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1258 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1259 ASSERT_EQ(formatVal_.channelLayout, 4);
1260 ASSERT_EQ(formatVal_.sampleRate, 48000);
1261 ASSERT_EQ(formatVal_.channelCount, 1);
1262 ASSERT_EQ(formatVal_.codecMime, "audio/vorbis");
1263 ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
1264 ASSERT_EQ(formatVal_.bitRate, 80000);
1265 }
1266
1267 /**
1268 * @tc.name: AVSource_GetFormat_1150
1269 * @tc.desc: get format when the file is wav
1270 * @tc.type: FUNC
1271 */
1272 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1150, TestSize.Level1)
1273 {
1274 fd_ = OpenFile(g_wavPath);
1275 size_ = GetFileSize(g_wavPath);
1276 printf("---- %s ----\n", g_wavPath.c_str());
1277 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1278 ASSERT_NE(source_, nullptr);
1279 format_ = source_->GetSourceFormat();
1280 ASSERT_NE(format_, nullptr);
1281 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1282 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_TITLE, formatVal_.title));
1283 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ARTIST, formatVal_.artist));
1284 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ALBUM, formatVal_.album));
1285 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_DATE, formatVal_.date));
1286 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COMMENT, formatVal_.comment));
1287 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_GENRE, formatVal_.genre));
1288 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COPYRIGHT, formatVal_.copyright));
1289 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_LANGUAGE, formatVal_.language));
1290 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
1291 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
1292 ASSERT_EQ(formatVal_.title, "title");
1293 ASSERT_EQ(formatVal_.artist, "artist");
1294 ASSERT_EQ(formatVal_.album, "album");
1295 ASSERT_EQ(formatVal_.date, "2023");
1296 ASSERT_EQ(formatVal_.comment, "comment");
1297 ASSERT_EQ(formatVal_.genre, "genre");
1298 ASSERT_EQ(formatVal_.copyright, "Copyright");
1299 ASSERT_EQ(formatVal_.language, "language");
1300 ASSERT_EQ(formatVal_.duration, 30037333);
1301 ASSERT_EQ(formatVal_.trackCount, 1);
1302 #ifdef AVSOURCE_INNER_UNIT_TEST
1303 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1304 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1305 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1306 ASSERT_EQ(formatVal_.fileType, 207);
1307 ASSERT_EQ(formatVal_.hasAudio, 1);
1308 ASSERT_EQ(formatVal_.hasVideo, 0);
1309 #endif
1310 }
1311
1312 /**
1313 * @tc.name: AVSource_GetFormat_1151
1314 * @tc.desc: get format when the file is wav
1315 * @tc.type: FUNC
1316 */
1317 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1151, TestSize.Level1)
1318 {
1319 fd_ = OpenFile(g_wavPath);
1320 size_ = GetFileSize(g_wavPath);
1321 printf("---- %s ----\n", g_wavPath.c_str());
1322 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1323 ASSERT_NE(source_, nullptr);
1324 format_ = source_->GetTrackFormat(trackIndex_);
1325 ASSERT_NE(format_, nullptr);
1326 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1327 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1328 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1329 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1330 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1331 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1332 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
1333 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1334 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1335 ASSERT_EQ(formatVal_.channelLayout, 4);
1336 ASSERT_EQ(formatVal_.sampleRate, 48000);
1337 ASSERT_EQ(formatVal_.channelCount, 1);
1338 ASSERT_EQ(formatVal_.codecMime, "audio/raw");
1339 ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_S16LE);
1340 ASSERT_EQ(formatVal_.bitRate, 768000);
1341 }
1342
1343 /**
1344 * @tc.name: AVSource_GetFormat_1160
1345 * @tc.desc: get format when the file is amr (amr_nb)
1346 * @tc.type: FUNC
1347 */
1348 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1160, TestSize.Level1)
1349 {
1350 fd_ = OpenFile(g_amrPath);
1351 size_ = GetFileSize(g_amrPath);
1352 printf("---- %s ----\n", g_amrPath.c_str());
1353 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1354 ASSERT_NE(source_, nullptr);
1355 format_ = source_->GetSourceFormat();
1356 ASSERT_NE(format_, nullptr);
1357 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1358 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
1359 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
1360 ASSERT_EQ(formatVal_.duration, 30988375);
1361 ASSERT_EQ(formatVal_.trackCount, 1);
1362 #ifdef AVSOURCE_INNER_UNIT_TEST
1363 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1364 ASSERT_EQ(formatVal_.fileType, 201);
1365 #endif
1366 format_ = source_->GetTrackFormat(trackIndex_);
1367 ASSERT_NE(format_, nullptr);
1368 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1369 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1370 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1371 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1372 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1373 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1374 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1375 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1376 ASSERT_EQ(formatVal_.channelLayout, 4);
1377 ASSERT_EQ(formatVal_.sampleRate, 8000);
1378 ASSERT_EQ(formatVal_.channelCount, 1);
1379 ASSERT_EQ(formatVal_.codecMime, "audio/3gpp");
1380 ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
1381 }
1382
1383 /**
1384 * @tc.name: AVSource_GetFormat_1170
1385 * @tc.desc: get format when the file is amr (amr_wb)
1386 * @tc.type: FUNC
1387 */
1388 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1170, TestSize.Level1)
1389 {
1390 fd_ = OpenFile(g_amrPath2);
1391 size_ = GetFileSize(g_amrPath2);
1392 printf("---- %s ----\n", g_amrPath2.c_str());
1393 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1394 ASSERT_NE(source_, nullptr);
1395 format_ = source_->GetSourceFormat();
1396 ASSERT_NE(format_, nullptr);
1397 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1398 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
1399 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
1400 ASSERT_EQ(formatVal_.duration, 30937500);
1401 ASSERT_EQ(formatVal_.trackCount, 1);
1402 #ifdef AVSOURCE_INNER_UNIT_TEST
1403 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1404 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1405 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1406 ASSERT_EQ(formatVal_.fileType, 201);
1407 ASSERT_EQ(formatVal_.hasAudio, 1);
1408 ASSERT_EQ(formatVal_.hasVideo, 0);
1409 #endif
1410 format_ = source_->GetTrackFormat(trackIndex_);
1411 ASSERT_NE(format_, nullptr);
1412 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1413 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1414 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1415 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1416 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1417 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1418 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1419 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1420 ASSERT_EQ(formatVal_.channelLayout, 4);
1421 ASSERT_EQ(formatVal_.sampleRate, 16000);
1422 ASSERT_EQ(formatVal_.channelCount, 1);
1423 ASSERT_EQ(formatVal_.codecMime, "audio/amr-wb");
1424 ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
1425 }
1426
1427 /**
1428 * @tc.name: AVSource_GetFormat_1308
1429 * @tc.desc: get source format(two sound track mp4)
1430 * @tc.type: FUNC
1431 */
1432 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1308, TestSize.Level1)
1433 {
1434 string path = TEST_FILE_PATH + string("avcc_aac_mp3.mp4");
1435 fd_ = OpenFile(path);
1436 size_ = GetFileSize(path);
1437 printf("---- %s ----\n", path.c_str());
1438 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1439 ASSERT_NE(source_, nullptr);
1440 format_ = source_->GetSourceFormat();
1441 ASSERT_NE(format_, nullptr);
1442 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1443 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_TITLE, formatVal_.title));
1444 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
1445 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
1446 ASSERT_EQ(formatVal_.title, "test");
1447 ASSERT_EQ(formatVal_.duration, 10034000);
1448 ASSERT_EQ(formatVal_.trackCount, 3);
1449 format_ = source_->GetTrackFormat(trackIndex_);
1450 ASSERT_NE(format_, nullptr);
1451 printf("[trackFormat idx=%d]: %s\n", trackIndex_, format_->DumpInfo());
1452 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1453 ASSERT_EQ(formatVal_.codecMime, CodecMimeType::VIDEO_AVC);
1454 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_LANGUAGE, formatVal_.language));
1455 ASSERT_EQ(formatVal_.language, "eng");
1456 formatVal_.language = "";
1457 trackIndex_ = 1;
1458 format_ = source_->GetTrackFormat(trackIndex_);
1459 ASSERT_NE(format_, nullptr);
1460 printf("[trackFormat idx=%d]: %s\n", trackIndex_, format_->DumpInfo());
1461 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1462 ASSERT_EQ(formatVal_.codecMime, CodecMimeType::AUDIO_AAC);
1463 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_LANGUAGE, formatVal_.language));
1464 ASSERT_EQ(formatVal_.language, "chi");
1465 formatVal_.language = "";
1466 trackIndex_ = 2;
1467 format_ = source_->GetTrackFormat(trackIndex_);
1468 ASSERT_NE(format_, nullptr);
1469 printf("[trackFormat idx=%d]: %s\n", trackIndex_, format_->DumpInfo());
1470 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1471 ASSERT_EQ(formatVal_.codecMime, CodecMimeType::AUDIO_MPEG);
1472 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_LANGUAGE, formatVal_.language));
1473 ASSERT_EQ(formatVal_.language, "eng");
1474 }
1475
1476 /**
1477 * @tc.name: AVSource_GetFormat_1309
1478 * @tc.desc: get format when the file is ape
1479 * @tc.type: FUNC
1480 */
1481 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1309, TestSize.Level1)
1482 {
1483 fd_ = OpenFile(g_apePath);
1484 size_ = GetFileSize(g_apePath);
1485 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1486 ASSERT_NE(source_, nullptr);
1487 format_ = source_->GetSourceFormat();
1488 ASSERT_NE(format_, nullptr);
1489 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1490 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
1491 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
1492 ASSERT_EQ(formatVal_.duration, 11006984);
1493 ASSERT_EQ(formatVal_.trackCount, 1);
1494 #ifdef AVSOURCE_INNER_UNIT_TEST
1495 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1496 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1497 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1498 ASSERT_EQ(formatVal_.fileType, 208);
1499 ASSERT_EQ(formatVal_.hasVideo, 0);
1500 ASSERT_EQ(formatVal_.hasAudio, 1);
1501 #endif
1502
1503 printf("---- %s ----\n", g_apePath.c_str());
1504 trackIndex_ = 0;
1505 format_ = source_->GetTrackFormat(trackIndex_);
1506 ASSERT_NE(format_, nullptr);
1507 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1508 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1509 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1510 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1511 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1512 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1513 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1514 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1515 ASSERT_EQ(formatVal_.channelLayout, 3);
1516 ASSERT_EQ(formatVal_.channelCount, 2);
1517 ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_S16P);
1518 ASSERT_EQ(formatVal_.sampleRate, 44100);
1519 ASSERT_EQ(formatVal_.codecMime, "audio/x-ape");
1520 }
1521
1522 /**
1523 * @tc.name: AVSource_GetFormat_1404
1524 * @tc.desc: get format when the file is ape
1525 * @tc.type: FUNC
1526 */
1527 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1310, TestSize.Level1)
1528 {
1529 InitResource(g_apeUri, URI);
1530 ASSERT_TRUE(initStatus_);
1531 format_ = source_->GetSourceFormat();
1532 ASSERT_NE(format_, nullptr);
1533 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1534 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
1535 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
1536 ASSERT_EQ(formatVal_.duration, 11006984);
1537 ASSERT_EQ(formatVal_.trackCount, 1);
1538 #ifdef AVSOURCE_INNER_UNIT_TEST
1539 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1540 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1541 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1542 ASSERT_EQ(formatVal_.fileType, 208);
1543 ASSERT_EQ(formatVal_.hasVideo, 0);
1544 ASSERT_EQ(formatVal_.hasAudio, 1);
1545 #endif
1546
1547 trackIndex_ = vTrackIdx_;
1548 format_ = source_->GetTrackFormat(trackIndex_);
1549 ASSERT_NE(format_, nullptr);
1550 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1551 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1552 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1553 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1554 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1555 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1556 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1557 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1558 ASSERT_EQ(formatVal_.channelLayout, 3);
1559 ASSERT_EQ(formatVal_.channelCount, 2);
1560 ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_S16P);
1561 ASSERT_EQ(formatVal_.sampleRate, 44100);
1562 ASSERT_EQ(formatVal_.codecMime, "audio/x-ape");
1563 }
1564
1565 /**
1566 * @tc.name: AVSource_GetFormat_1316
1567 * @tc.desc: get fmp4 264 mp4 format, local
1568 * @tc.type: FUNC
1569 */
1570 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1316, TestSize.Level1)
1571 {
1572 fd_ = OpenFile(g_fmp4AvcPath);
1573 size_ = GetFileSize(g_fmp4AvcPath);
1574 printf("---- %s ------\n", g_fmp4AvcPath.c_str());
1575 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1576 ASSERT_NE(source_, nullptr);
1577 format_ = source_->GetSourceFormat();
1578 ASSERT_NE(format_, nullptr);
1579 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1580 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
1581 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
1582 ASSERT_EQ(formatVal_.duration, 10066666);
1583 ASSERT_EQ(formatVal_.trackCount, 2);
1584 #ifdef AVSOURCE_INNER_UNIT_TEST
1585 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1586 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1587 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1588 ASSERT_EQ(formatVal_.hasVideo, 1);
1589 ASSERT_EQ(formatVal_.hasAudio, 1);
1590 ASSERT_EQ(formatVal_.fileType, 101);
1591 #endif
1592 format_ = source_->GetTrackFormat(trackIndex_);
1593 ASSERT_NE(format_, nullptr);
1594 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1595 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1596 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
1597 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
1598 ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
1599 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1600 ASSERT_EQ(formatVal_.codecMime, "video/avc");
1601 ASSERT_EQ(formatVal_.width, 720);
1602 ASSERT_EQ(formatVal_.height, 480);
1603 ASSERT_EQ(formatVal_.frameRate, 60.000000);
1604 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
1605 trackIndex_ = 1;
1606 format_ = source_->GetTrackFormat(trackIndex_);
1607 ASSERT_NE(format_, nullptr);
1608 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1609 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1610 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1611 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1612 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1613 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1614 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1615 ASSERT_EQ(formatVal_.channelLayout, 3);
1616 ASSERT_EQ(formatVal_.sampleRate, 44100);
1617 ASSERT_EQ(formatVal_.codecMime, "audio/mp4a-latm");
1618 ASSERT_EQ(formatVal_.channelCount, 2);
1619 ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
1620 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1621 }
1622
1623 /**
1624 * @tc.name: AVSource_GetFormat_1318
1625 * @tc.desc: get fmp4 m4v format, local
1626 * @tc.type: FUNC
1627 */
1628 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1318, TestSize.Level1)
1629 {
1630 fd_ = OpenFile(g_fmp4m4vPath);
1631 size_ = GetFileSize(g_fmp4m4vPath);
1632 printf("---- %s ------\n", g_fmp4m4vPath.c_str());
1633 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1634 ASSERT_NE(source_, nullptr);
1635 format_ = source_->GetSourceFormat();
1636 ASSERT_NE(format_, nullptr);
1637 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1638 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
1639 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
1640 ASSERT_EQ(formatVal_.duration, 10033333);
1641 ASSERT_EQ(formatVal_.trackCount, 1);
1642 #ifdef AVSOURCE_INNER_UNIT_TEST
1643 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1644 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1645 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1646 ASSERT_EQ(formatVal_.hasVideo, 1);
1647 ASSERT_EQ(formatVal_.hasAudio, 0);
1648 ASSERT_EQ(formatVal_.fileType, 206);
1649 #endif
1650 format_ = source_->GetTrackFormat(trackIndex_);
1651 ASSERT_NE(format_, nullptr);
1652 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1653 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1654 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
1655 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
1656 ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
1657 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1658 ASSERT_EQ(formatVal_.codecMime, "video/avc");
1659 ASSERT_EQ(formatVal_.width, 720);
1660 ASSERT_EQ(formatVal_.height, 480);
1661 ASSERT_EQ(formatVal_.frameRate, 60.000000);
1662 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
1663 }
1664
1665 /**
1666 * @tc.name: AVSource_GetFormat_1319
1667 * @tc.desc: get fmp4 m4a format, local
1668 * @tc.type: FUNC
1669 */
1670 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1319, TestSize.Level1)
1671 {
1672 fd_ = OpenFile(g_fmp4m4aPath);
1673 size_ = GetFileSize(g_fmp4m4aPath);
1674 printf("---- %s ------\n", g_fmp4m4aPath.c_str());
1675 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1676 ASSERT_NE(source_, nullptr);
1677 format_ = source_->GetSourceFormat();
1678 ASSERT_NE(format_, nullptr);
1679 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1680 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
1681 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
1682 ASSERT_EQ(formatVal_.duration, 10064354);
1683 ASSERT_EQ(formatVal_.trackCount, 1);
1684 #ifdef AVSOURCE_INNER_UNIT_TEST
1685 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1686 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1687 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1688 ASSERT_EQ(formatVal_.hasVideo, 0);
1689 ASSERT_EQ(formatVal_.hasAudio, 1);
1690 ASSERT_EQ(formatVal_.fileType, 206);
1691 #endif
1692 format_ = source_->GetTrackFormat(trackIndex_);
1693 ASSERT_NE(format_, nullptr);
1694 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1695 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1696 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1697 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1698 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1699 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1700 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1701 ASSERT_EQ(formatVal_.channelLayout, 3);
1702 ASSERT_EQ(formatVal_.sampleRate, 44100);
1703 ASSERT_EQ(formatVal_.codecMime, "audio/mp4a-latm");
1704 ASSERT_EQ(formatVal_.channelCount, 2);
1705 ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
1706 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1707 }
1708
1709 /**
1710 * @tc.name: AVSource_GetFormat_1400
1711 * @tc.desc: get source format(flv)
1712 * @tc.type: FUNC
1713 */
1714 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1400, TestSize.Level1)
1715 {
1716 fd_ = OpenFile(g_flvPath);
1717 size_ = GetFileSize(g_flvPath);
1718 printf("---- %s ----\n", g_flvPath.c_str());
1719 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1720 ASSERT_NE(source_, nullptr);
1721 format_ = source_->GetSourceFormat();
1722 ASSERT_NE(format_, nullptr);
1723 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1724 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
1725 ASSERT_EQ(formatVal_.trackCount, 2);
1726 #ifdef AVSOURCE_INNER_UNIT_TEST
1727 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1728 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1729 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1730 ASSERT_EQ(formatVal_.hasVideo, 1);
1731 ASSERT_EQ(formatVal_.hasAudio, 1);
1732 ASSERT_EQ(formatVal_.fileType, 104);
1733 #endif
1734 }
1735
1736 /**
1737 * @tc.name: AVSource_GetFormat_1401
1738 * @tc.desc: get format when the file is flv
1739 * @tc.type: FUNC
1740 */
1741 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1401, TestSize.Level1)
1742 {
1743 fd_ = OpenFile(g_flvPath);
1744 size_ = GetFileSize(g_flvPath);
1745 printf("---- %s ------\n", g_flvPath.c_str());
1746 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1747 ASSERT_NE(source_, nullptr);
1748 trackIndex_ = 0;
1749 format_ = source_->GetTrackFormat(trackIndex_);
1750 ASSERT_NE(format_, nullptr);
1751 printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1752 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1753 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1754 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
1755 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
1756 ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
1757 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
1758 ASSERT_EQ(formatVal_.codecMime, "video/avc");
1759 ASSERT_EQ(formatVal_.width, 720);
1760 ASSERT_EQ(formatVal_.height, 1280);
1761 ASSERT_DOUBLE_EQ(formatVal_.frameRate, 30.000000);
1762 trackIndex_ = 1;
1763 format_ = source_->GetTrackFormat(trackIndex_);
1764 ASSERT_NE(format_, nullptr);
1765 printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1766 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1767 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1768 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1769 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
1770 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1771 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1772 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1773 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1774 ASSERT_EQ(formatVal_.sampleRate, 48000);
1775 ASSERT_EQ(formatVal_.channelCount, 2);
1776 ASSERT_EQ(formatVal_.bitRate, 128000);
1777 ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
1778 ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
1779 ASSERT_EQ(formatVal_.channelLayout, 3);
1780 }
1781
1782 /**
1783 * @tc.name: AVSource_GetFormat_1501
1784 * @tc.desc: get camera info
1785 * @tc.type: FUNC
1786 */
1787 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1501, TestSize.Level1)
1788 {
1789 #ifdef AVSOURCE_INNER_UNIT_TEST
1790 fd_ = OpenFile(g_mp4InfoPath);
1791 size_ = GetFileSize(g_mp4InfoPath);
1792 printf("---- %s ------\n", g_mp4InfoPath.c_str());
1793 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1794 ASSERT_NE(source_, nullptr);
1795 format_ = source_->GetSourceFormat();
1796 ASSERT_NE(format_, nullptr);
1797 printf("[source Format]: %s\n", format_->DumpInfo());
1798
1799 float longitude = 0.0;
1800 ASSERT_TRUE(format_->GetFloatValue(Media::Tag::MEDIA_LONGITUDE, longitude));
1801 ASSERT_EQ(longitude, float(22.670000)); // longitude test
1802
1803 float latitude = 0.0;
1804 ASSERT_TRUE(format_->GetFloatValue(Media::Tag::MEDIA_LATITUDE, latitude));
1805 ASSERT_EQ(latitude, float(114.059998)); // latitude test
1806
1807 string genre;
1808 ASSERT_TRUE(format_->GetStringValue(Media::Tag::MEDIA_GENRE, genre));
1809 ASSERT_EQ(genre, "{marketing-name:\"HW P60\"}");
1810
1811 std::shared_ptr<FormatMock> format = source_->GetUserData();
1812 ASSERT_NE(format, nullptr);
1813 printf("[User Meta]: %s\n", format->DumpInfo());
1814
1815 float fps = 0;
1816 ASSERT_TRUE(format->GetFloatValue("com.os.capture.fps", fps));
1817 ASSERT_EQ(fps, float(30.0)); // test user float data fps
1818 int32_t version = 0;
1819 ASSERT_TRUE(format->GetIntValue("com.os.version", version));
1820 ASSERT_EQ(version, int(5)); // test user int data version
1821 std::string manufacturer;
1822 ASSERT_TRUE(format->GetStringValue("com.os.manufacturer", manufacturer));
1823 ASSERT_EQ(manufacturer, "HW"); // test user string data manufacturer
1824 #endif
1825 }
1826
1827 /**
1828 * @tc.name: AVSource_GetFormat_3000
1829 * @tc.desc: get format when the file is srt
1830 * @tc.type: FUNC
1831 */
1832 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_3000, TestSize.Level1)
1833 {
1834 fd_ = OpenFile(g_srt);
1835 size_ = GetFileSize(g_srt);
1836 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1837 ASSERT_NE(source_, nullptr);
1838 format_ = source_->GetSourceFormat();
1839 ASSERT_NE(format_, nullptr);
1840 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1841 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
1842 ASSERT_EQ(formatVal_.trackCount, 1);
1843 #ifdef AVSOURCE_INNER_UNIT_TEST
1844 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1845 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1846 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1847 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_SUBTITLE, formatVal_.hasSubtitle));
1848 ASSERT_EQ(formatVal_.fileType, 301);
1849 ASSERT_EQ(formatVal_.hasVideo, 0);
1850 ASSERT_EQ(formatVal_.hasAudio, 0);
1851 ASSERT_EQ(formatVal_.hasSubtitle, 1);
1852 #endif
1853
1854 printf("---- %s ----\n", g_srt.c_str());
1855 trackIndex_ = 0;
1856 format_ = source_->GetTrackFormat(trackIndex_);
1857 ASSERT_NE(format_, nullptr);
1858 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1859 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1860 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1861 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_SUBTITLE);
1862 ASSERT_EQ(formatVal_.codecMime, "application/x-subrip");
1863 }
1864
1865 /**
1866 * @tc.name: AVSource_GetFormat_3001
1867 * @tc.desc: get format when the file has timed metadata track
1868 * @tc.type: FUNC
1869 */
1870 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_3001, TestSize.Level1)
1871 {
1872 fd_ = OpenFile(g_mp4Path9);
1873 size_ = GetFileSize(g_mp4Path9);
1874 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1875 ASSERT_NE(source_, nullptr);
1876 format_ = source_->GetSourceFormat();
1877 ASSERT_NE(format_, nullptr);
1878 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1879 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
1880 ASSERT_EQ(formatVal_.trackCount, 2);
1881 #ifdef AVSOURCE_INNER_UNIT_TEST
1882 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1883 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1884 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1885 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_TIMEDMETA, formatVal_.hasTimedMeta));
1886 ASSERT_EQ(formatVal_.fileType, 101);
1887 ASSERT_EQ(formatVal_.hasVideo, 1);
1888 ASSERT_EQ(formatVal_.hasAudio, 0);
1889 ASSERT_EQ(formatVal_.hasTimedMeta, 1);
1890 #endif
1891
1892 trackIndex_ = 1;
1893 format_ = source_->GetTrackFormat(trackIndex_);
1894 ASSERT_NE(format_, nullptr);
1895 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1896 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1897 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1898 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_TIMED_METADATA_KEY, formatVal_.timedMetadataKey));
1899 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TIMED_METADATA_SRC_TRACK_ID, formatVal_.srcTrackID));
1900 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_TIMED_METADATA);
1901 ASSERT_EQ(formatVal_.codecMime, "meta/timed-metadata");
1902 ASSERT_EQ(formatVal_.timedMetadataKey, TEST_TIMED_METADATA.c_str());
1903 ASSERT_EQ(formatVal_.srcTrackID, 0);
1904 }
1905
1906 /**
1907 * @tc.name: AVSource_GetFormat_3002
1908 * @tc.desc: get format when the file is vtt
1909 * @tc.type: FUNC
1910 */
1911 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_3002, TestSize.Level1)
1912 {
1913 fd_ = OpenFile(g_vttPath);
1914 size_ = GetFileSize(g_vttPath);
1915 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1916 ASSERT_NE(source_, nullptr);
1917 format_ = source_->GetSourceFormat();
1918 ASSERT_NE(format_, nullptr);
1919 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1920 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
1921 ASSERT_EQ(formatVal_.trackCount, 1);
1922 #ifdef AVSOURCE_INNER_UNIT_TEST
1923 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1924 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1925 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1926 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_SUBTITLE, formatVal_.hasSubtitle));
1927 ASSERT_EQ(formatVal_.fileType, 302);
1928 ASSERT_EQ(formatVal_.hasVideo, 0);
1929 ASSERT_EQ(formatVal_.hasAudio, 0);
1930 ASSERT_EQ(formatVal_.hasSubtitle, 1);
1931 #endif
1932
1933 printf("---- %s ----\n", g_vttPath.c_str());
1934 trackIndex_ = 0;
1935 format_ = source_->GetTrackFormat(trackIndex_);
1936 ASSERT_NE(format_, nullptr);
1937 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1938 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1939 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1940 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_SUBTITLE);
1941 ASSERT_EQ(formatVal_.codecMime, "text/vtt");
1942 }
1943
1944 /**
1945 * @tc.name: AVSource_GetFormat_4000
1946 * @tc.desc: get format when the file is nonstandard BOM
1947 * @tc.type: FUNC
1948 */
1949 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_4000, TestSize.Level1)
1950 {
1951 fd_ = OpenFile(g_nonStandardBomPath);
1952 size_ = GetFileSize(g_nonStandardBomPath);
1953 printf("---- %s ----\n", g_nonStandardBomPath.c_str());
1954 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1955 ASSERT_NE(source_, nullptr);
1956 format_ = source_->GetSourceFormat();
1957 ASSERT_NE(format_, nullptr);
1958 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1959
1960 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_TITLE, formatVal_.title));
1961 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ARTIST, formatVal_.artist));
1962 ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ALBUM, formatVal_.album));
1963
1964 ASSERT_EQ(formatVal_.title, "bom");
1965 ASSERT_EQ(formatVal_.artist, "张三");
1966 ASSERT_EQ(formatVal_.album, "a");
1967 }
1968
1969 /**
1970 * @tc.name: AVSource_GetFormat_1601
1971 * @tc.desc: get format when the file is mp4 vvc
1972 * @tc.type: FUNC
1973 */
1974 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1601, TestSize.Level1)
1975 {
1976 if (access(g_mp4VvcPath.c_str(), F_OK) != 0) {
1977 return;
1978 }
1979 fd_ = OpenFile(g_mp4VvcPath);
1980 size_ = GetFileSize(g_mp4VvcPath);
1981 printf("---- %s ------\n", g_mp4VvcPath.c_str());
1982 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1983 ASSERT_NE(source_, nullptr);
1984 format_ = source_->GetSourceFormat();
1985 ASSERT_NE(format_, nullptr);
1986 printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1987 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
1988 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
1989 ASSERT_EQ(formatVal_.duration, 10000000);
1990 ASSERT_EQ(formatVal_.trackCount, 1);
1991 #ifdef AVSOURCE_INNER_UNIT_TEST
1992 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1993 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1994 ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1995 ASSERT_EQ(formatVal_.hasVideo, 1);
1996 ASSERT_EQ(formatVal_.hasAudio, 0);
1997 ASSERT_EQ(formatVal_.fileType, 101);
1998 #endif
1999 trackIndex_ = 0;
2000 format_ = source_->GetTrackFormat(trackIndex_);
2001 ASSERT_NE(format_, nullptr);
2002 printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
2003 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
2004 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
2005 ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
2006 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
2007 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
2008 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
2009 ASSERT_EQ(formatVal_.bitRate, 506976);
2010 ASSERT_EQ(formatVal_.codecMime, "video/vvc");
2011 ASSERT_DOUBLE_EQ(formatVal_.frameRate, 60.000000);
2012 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
2013 ASSERT_EQ(formatVal_.width, 640);
2014 ASSERT_EQ(formatVal_.height, 360);
2015 }
2016
2017 /**
2018 * @tc.name: AVSource_ValidateMimeType_1000
2019 * @tc.desc: validate MimeType when av_codec Type is mulaw
2020 * @tc.type: FUNC
2021 */
2022 HWTEST_F(AVSourceUnitTest, AVSource_ValidateMimeType_1000, TestSize.Level1)
2023 {
2024 fd_ = OpenFile(g_wavPath2);
2025 size_ = GetFileSize(g_wavPath2);
2026 printf("----%s----\n", g_wavPath2.c_str());
2027 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
2028 ASSERT_NE(source_, nullptr);
2029 format_ = source_->GetTrackFormat(trackIndex_);
2030 ASSERT_NE(format_, nullptr);
2031 printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
2032 ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
2033 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
2034 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
2035 ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
2036 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
2037 ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
2038 ASSERT_EQ(formatVal_.codecMime, "audio/g711mu");
2039 ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
2040 ASSERT_EQ(formatVal_.channelLayout, 3);
2041 ASSERT_EQ(formatVal_.sampleRate, 44100);
2042 ASSERT_EQ(formatVal_.channelCount, 2);
2043 ASSERT_EQ(formatVal_.bitRate, 705600);
2044 }
2045
2046 /**
2047 * @tc.name: AVSourse_OrientationType_1000
2048 * @tc.desc: determine the orientation type of the video ROTATE_NONE.mp4
2049 * @tc.type: FUNC
2050 */
2051 HWTEST_F(AVSourceUnitTest, AVSourse_OrientationType_1000, TestSize.Level1)
2052 {
2053 fd_ = OpenFile(g_mp4RotationNone);
2054 size_ = GetFileSize(g_mp4RotationNone);
2055 printf("----%s----\n", g_mp4RotationNone.c_str());
2056 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
2057 ASSERT_NE(source_, nullptr);
2058 format_ = source_->GetTrackFormat(trackIndex_);
2059 ASSERT_NE(format_, nullptr);
2060 ASSERT_TRUE(format_->GetIntValue(Media::Tag::VIDEO_ORIENTATION_TYPE, formatVal_.orientationType));
2061 ASSERT_EQ(formatVal_.orientationType, 0);
2062 }
2063
2064 /**
2065 * @tc.name: AVSourse_OrientationType_1001
2066 * @tc.desc: determine the orientation type of the video ROTATE_270.mp4
2067 * @tc.type: FUNC
2068 */
2069 HWTEST_F(AVSourceUnitTest, AVSourse_OrientationType_1001, TestSize.Level1)
2070 {
2071 fd_ = OpenFile(g_mp4Rotation270);
2072 size_ = GetFileSize(g_mp4Rotation270);
2073 printf("----%s----\n", g_mp4Rotation270.c_str());
2074 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
2075 ASSERT_NE(source_, nullptr);
2076 format_ = source_->GetTrackFormat(trackIndex_);
2077 ASSERT_NE(format_, nullptr);
2078 ASSERT_TRUE(format_->GetIntValue(Media::Tag::VIDEO_ORIENTATION_TYPE, formatVal_.orientationType));
2079 ASSERT_EQ(formatVal_.orientationType, 3);
2080 }
2081
2082 /**
2083 * @tc.name: AVSourse_OrientationType_1002
2084 * @tc.desc: determine the orientation type of the video FLIP_V.mp4
2085 * @tc.type: FUNC
2086 */
2087 HWTEST_F(AVSourceUnitTest, AVSourse_OrientationType_1002, TestSize.Level1)
2088 {
2089 fd_ = OpenFile(g_mp4FLIPV);
2090 size_ = GetFileSize(g_mp4FLIPV);
2091 printf("----%s----\n", g_mp4FLIPV.c_str());
2092 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
2093 ASSERT_NE(source_, nullptr);
2094 format_ = source_->GetTrackFormat(trackIndex_);
2095 ASSERT_NE(format_, nullptr);
2096 ASSERT_TRUE(format_->GetIntValue(Media::Tag::VIDEO_ORIENTATION_TYPE, formatVal_.orientationType));
2097 ASSERT_EQ(formatVal_.orientationType, 5);
2098 }
2099
2100 /**
2101 * @tc.name: AVSourse_OrientationType_1003
2102 * @tc.desc: determine the orientation type of the video FLIP_V_90.mp4
2103 * @tc.type: FUNC
2104 */
2105 HWTEST_F(AVSourceUnitTest, AVSourse_OrientationType_1003, TestSize.Level1)
2106 {
2107 fd_ = OpenFile(g_mp4FLIPV90);
2108 size_ = GetFileSize(g_mp4FLIPV90);
2109 printf("----%s----\n", g_mp4FLIPV90.c_str());
2110 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
2111 ASSERT_NE(source_, nullptr);
2112 format_ = source_->GetTrackFormat(trackIndex_);
2113 ASSERT_NE(format_, nullptr);
2114 ASSERT_TRUE(format_->GetIntValue(Media::Tag::VIDEO_ORIENTATION_TYPE, formatVal_.orientationType));
2115 ASSERT_EQ(formatVal_.orientationType, 7);
2116 }
2117
2118 /**
2119 * @tc.name: AVSourse_OrientationType_1004
2120 * @tc.desc: determine the orientation type of the video flv
2121 * @tc.type: FUNC
2122 */
2123 HWTEST_F(AVSourceUnitTest, AVSourse_OrientationType_1004, TestSize.Level1)
2124 {
2125 fd_ = OpenFile(g_flvPath);
2126 size_ = GetFileSize(g_flvPath);
2127 printf("----%s----\n", g_flvPath.c_str());
2128 source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
2129 ASSERT_NE(source_, nullptr);
2130 format_ = source_->GetTrackFormat(trackIndex_);
2131 ASSERT_NE(format_, nullptr);
2132 ASSERT_FALSE(format_->GetIntValue(Media::Tag::VIDEO_ORIENTATION_TYPE, formatVal_.orientationType));
2133 }
2134 } // namespace
2135