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