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