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