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