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 <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_tsMpeg4Path = TEST_FILE_PATH + string("test_mpeg4_Gop25_4sec.ts");
49 string g_tsMpeg4Uri = TEST_URI_PATH + string("test_mpeg4_Gop25_4sec.ts");
50 string g_h264aacPath = TEST_FILE_PATH + string("h264_allmetadata.mov");
51 string g_h264mp3Path = TEST_FILE_PATH + string("h264_mp3.mov");
52 string g_h264vorPath = TEST_FILE_PATH + string("h264_vorbis.mov");
53 string g_mpg4mp2Path = TEST_FILE_PATH + string("MPEG4_mp2.mov");
54 string g_h264aacUri = TEST_URI_PATH + string("h264_allmetadata.mov");
55 string g_h264mp3Uri = TEST_URI_PATH + string("h264_mp3.mov");
56 string g_h264vorUri = TEST_URI_PATH + string("h264_vorbis.mov");
57 string g_mpg4mp2Uri = TEST_URI_PATH + string("MPEG4_mp2.mov");
58 string g_aviPath = TEST_FILE_PATH + string("h264_aac_metadata.avi");
59 string g_aviUri = TEST_URI_PATH + string("h264_aac_metadata.avi");
60 string g_aviAvcMp3Path = TEST_FILE_PATH + string("h264_mp3.avi");
61 string g_aviAvcMp3Uri = TEST_URI_PATH + string("h264_mp3.avi");
62 string g_avi263AacPath = TEST_FILE_PATH + string("test_263_aac_B_Gop25_4sec_cover.avi");
63 string g_avi263AacUri = TEST_URI_PATH + string("test_263_aac_B_Gop25_4sec_cover.avi");
64 string g_aviMpeg2Mp2Path = TEST_FILE_PATH + string("test_mpeg2_mp2_B_Gop25_4sec_cover.avi");
65 string g_aviMpeg2Mp2Uri = TEST_URI_PATH + string("test_mpeg2_mp2_B_Gop25_4sec_cover.avi");
66 string g_aviMpeg4PcmPath = TEST_FILE_PATH + string("mpeg4_pcm.avi");
67 string g_aviMpeg4PcmUri = TEST_URI_PATH + string("mpeg4_pcm.avi");
68 string g_mpg4mp4Path = TEST_FILE_PATH + string("MPEG4.mp4");
69 string g_mpg4mp4Uri = TEST_URI_PATH + string("MPEG4.mp4");
70 string g_mpegPath = TEST_FILE_PATH + string("mpeg_h264_mp2.mpeg");
71 string g_mpegPath2 = TEST_FILE_PATH + string("mpeg_h264_mp3.mpeg");
72 string g_mpegPath3 = TEST_FILE_PATH + string("mpeg_mpeg2_mp2.mpeg");
73 string g_mpegPath4 = TEST_FILE_PATH + string("mpeg_mpeg2_mp3.mpeg");
74 string g_mpegUri = TEST_URI_PATH + string("mpeg_h264_mp2.mpeg");
75 string g_mpegUri2 = TEST_URI_PATH + string("mpeg_h264_mp3.mpeg");
76 string g_mpegUri3 = TEST_URI_PATH + string("mpeg_mpeg2_mp2.mpeg");
77 string g_mpegUri4 = TEST_URI_PATH + string("mpeg_mpeg2_mp3.mpeg");
78 }
79 
80 /**********************************source FD**************************************/
81 namespace {
82 /**
83  * @tc.name: AVSource_GetFormat_1025
84  * @tc.desc: get source format when the file is ts(mpeg4, mp2)
85  * @tc.type: FUNC
86  */
87 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_1025, TestSize.Level1)
88 {
89     fd_ = OpenFile(g_tsMpeg4Path);
90     size_ = GetFileSize(g_tsMpeg4Path);
91     printf("---- %s ----\n", g_tsMpeg4Path.c_str());
92     source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
93     ASSERT_NE(source_, nullptr);
94     format_ = source_->GetSourceFormat();
95     ASSERT_NE(format_, nullptr);
96     printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
97     trackIndex_ = 0;
98     format_ = source_->GetTrackFormat(trackIndex_);
99     ASSERT_NE(format_, nullptr);
100     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
101     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
102     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
103     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
104     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
105     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
106     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
107     ASSERT_EQ(formatVal_.codecMime, "video/mp4v-es");
108     ASSERT_EQ(formatVal_.width, 1920);
109     ASSERT_EQ(formatVal_.height, 1080);
110     ASSERT_DOUBLE_EQ(formatVal_.frameRate, 25.000000);
111     trackIndex_ = 1;
112     format_->Destroy();
113     format_ = source_->GetTrackFormat(trackIndex_);
114     ASSERT_NE(format_, nullptr);
115     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
116     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
117     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
118     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
119     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
120     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
121     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
122     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
123     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
124     ASSERT_EQ(formatVal_.sampleRate, 44100);
125     ASSERT_EQ(formatVal_.channelCount, 2);
126     ASSERT_EQ(formatVal_.bitRate, 384000);
127     ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
128     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
129     ASSERT_EQ(formatVal_.channelLayout, 3);
130 }
131 
132 /**
133  * @tc.name: AVSource_GetFormat_2025
134  * @tc.desc: get source format when the file is ts(mpeg4, aac)
135  * @tc.type: FUNC
136  */
137 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2025, TestSize.Level1)
138 {
139     printf("---- %s ------\n", g_tsMpeg4Uri.data());
140     source_ = AVSourceMockFactory::CreateSourceWithURI(const_cast<char*>(g_tsMpeg4Uri.data()));
141     ASSERT_NE(source_, nullptr);
142     trackIndex_ = 0;
143     format_ = source_->GetSourceFormat();
144     ASSERT_NE(format_, nullptr);
145     printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
146     trackIndex_ = 0;
147     format_ = source_->GetTrackFormat(trackIndex_);
148     ASSERT_NE(format_, nullptr);
149     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
150     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
151     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
152     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
153     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
154     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
155     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
156     ASSERT_EQ(formatVal_.codecMime, "video/mp4v-es");
157     ASSERT_EQ(formatVal_.width, 1920);
158     ASSERT_EQ(formatVal_.height, 1080);
159     ASSERT_DOUBLE_EQ(formatVal_.frameRate, 25.000000);
160     trackIndex_ = 1;
161     format_->Destroy();
162     format_ = source_->GetTrackFormat(trackIndex_);
163     ASSERT_NE(format_, nullptr);
164     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
165     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
166     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
167     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
168     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
169     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
170     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
171     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
172     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
173     ASSERT_EQ(formatVal_.sampleRate, 44100);
174     ASSERT_EQ(formatVal_.channelCount, 2);
175     ASSERT_EQ(formatVal_.bitRate, 384000);
176     ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
177     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
178     ASSERT_EQ(formatVal_.channelLayout, 3);
179 }
180 
181 /**
182  * @tc.name: AVSource_GetFormat_2221
183  * @tc.desc: get track format (avi)
184  * @tc.type: FUNC
185  */
186 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2221, TestSize.Level1)
187 {
188     fd_ = OpenFile(g_aviAvcMp3Path);
189     size_ = GetFileSize(g_aviAvcMp3Path);
190     printf("---- %s ------\n", g_aviAvcMp3Path.c_str());
191     source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
192     ASSERT_NE(source_, nullptr);
193     trackIndex_ = 0;
194     format_ = source_->GetTrackFormat(trackIndex_);
195     ASSERT_NE(format_, nullptr);
196     printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
197     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
198     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
199     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
200     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
201     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
202     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
203     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
204     ASSERT_EQ(formatVal_.codecMime, "video/avc");
205     ASSERT_EQ(formatVal_.width, 720);
206     ASSERT_EQ(formatVal_.height, 480);
207     ASSERT_EQ(formatVal_.bitRate, 1175235);
208     ASSERT_DOUBLE_EQ(formatVal_.frameRate, 60.000000);
209     trackIndex_ = 1;
210     format_->Destroy();
211     format_ = source_->GetTrackFormat(trackIndex_);
212     ASSERT_NE(format_, nullptr);
213     printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
214     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
215     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
216     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
217     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
218     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
219     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
220     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
221     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
222     ASSERT_EQ(formatVal_.sampleRate, 44100);
223     ASSERT_EQ(formatVal_.channelCount, 2);
224     ASSERT_EQ(formatVal_.bitRate, 128332);
225     ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
226     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
227     ASSERT_EQ(formatVal_.channelLayout, 3);
228 }
229 
230 /**
231  * @tc.name: AVSource_GetFormat_2231
232  * @tc.desc: get track format when the file is avi (video: h264, audio: mp3)
233  * @tc.type: FUNC
234  */
235 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2231, TestSize.Level1)
236 {
237     printf("---- %s ------\n", g_aviAvcMp3Uri.data());
238     source_ = AVSourceMockFactory::CreateSourceWithURI(const_cast<char*>(g_aviAvcMp3Uri.data()));
239     ASSERT_NE(source_, nullptr);
240     trackIndex_ = 0;
241     format_ = source_->GetTrackFormat(trackIndex_);
242     ASSERT_NE(format_, nullptr);
243     printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
244     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
245     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
246     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
247     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
248     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
249     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
250     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
251     ASSERT_EQ(formatVal_.codecMime, "video/avc");
252     ASSERT_EQ(formatVal_.width, 720);
253     ASSERT_EQ(formatVal_.height, 480);
254     ASSERT_EQ(formatVal_.bitRate, 1175235);
255     ASSERT_DOUBLE_EQ(formatVal_.frameRate, 60.000000);
256     trackIndex_ = 1;
257     format_->Destroy();
258     format_ = source_->GetTrackFormat(trackIndex_);
259     ASSERT_NE(format_, nullptr);
260     printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
261     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
262     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
263     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
264     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
265     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
266     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
267     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
268     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
269     ASSERT_EQ(formatVal_.sampleRate, 44100);
270     ASSERT_EQ(formatVal_.channelCount, 2);
271     ASSERT_EQ(formatVal_.bitRate, 128332);
272     ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
273     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
274     ASSERT_EQ(formatVal_.channelLayout, 3);
275 }
276 
277 /**
278  * @tc.name: AVSource_GetFormat_2222
279  * @tc.desc: get source format (avi)
280  * @tc.type: FUNC
281  */
282 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2222, TestSize.Level1)
283 {
284     fd_ = OpenFile(g_aviPath);
285     size_ = GetFileSize(g_aviPath);
286     printf("---- %s ----\n", g_aviPath.c_str());
287     source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
288     ASSERT_NE(source_, nullptr);
289     format_ = source_->GetSourceFormat();
290     ASSERT_NE(format_, nullptr);
291     printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
292     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ARTIST, formatVal_.artist));
293     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COMMENT, formatVal_.comment));
294     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COPYRIGHT, formatVal_.copyright));
295     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_DATE, formatVal_.date));
296     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_GENRE, formatVal_.genre));
297     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_TITLE, formatVal_.title));
298     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
299     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
300     ASSERT_EQ(formatVal_.artist, "artist");
301     ASSERT_EQ(formatVal_.comment, "comment");
302     ASSERT_EQ(formatVal_.copyright, "Copyright");
303     ASSERT_EQ(formatVal_.date, "2024");
304     ASSERT_EQ(formatVal_.genre, "Lyrical");
305     ASSERT_EQ(formatVal_.title, "test");
306     ASSERT_EQ(formatVal_.duration, 10025000);
307     ASSERT_EQ(formatVal_.trackCount, 2);
308 #ifdef AVSOURCE_INNER_UNIT_TEST
309     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
310     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
311     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
312     ASSERT_EQ(formatVal_.hasVideo, 1);
313     ASSERT_EQ(formatVal_.hasAudio, 1);
314     ASSERT_EQ(formatVal_.fileType, 105);
315 #endif
316 }
317 
318 /**
319  * @tc.name: AVSource_GetFormat_2232
320  * @tc.desc: get source format when the file is avi
321  * @tc.type: FUNC
322  */
323 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2232, TestSize.Level1)
324 {
325     printf("---- %s ----\n", g_aviUri.data());
326     source_ = AVSourceMockFactory::CreateSourceWithURI(const_cast<char*>(g_aviUri.data()));
327     ASSERT_NE(source_, nullptr);
328     format_ = source_->GetSourceFormat();
329     ASSERT_NE(format_, nullptr);
330     printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
331     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ARTIST, formatVal_.artist));
332     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COMMENT, formatVal_.comment));
333     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COPYRIGHT, formatVal_.copyright));
334     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_DATE, formatVal_.date));
335     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_GENRE, formatVal_.genre));
336     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_TITLE, formatVal_.title));
337     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
338     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
339     ASSERT_EQ(formatVal_.artist, "artist");
340     ASSERT_EQ(formatVal_.comment, "comment");
341     ASSERT_EQ(formatVal_.copyright, "Copyright");
342     ASSERT_EQ(formatVal_.date, "2024");
343     ASSERT_EQ(formatVal_.genre, "Lyrical");
344     ASSERT_EQ(formatVal_.title, "test");
345     ASSERT_EQ(formatVal_.duration, 10025000);
346     ASSERT_EQ(formatVal_.trackCount, 2);
347 #ifdef AVSOURCE_INNER_UNIT_TEST
348     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
349     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
350     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
351     ASSERT_EQ(formatVal_.hasVideo, 1);
352     ASSERT_EQ(formatVal_.hasAudio, 1);
353     ASSERT_EQ(formatVal_.fileType, 105);
354 #endif
355 }
356 
357 /**
358  * @tc.name: AVSource_GetFormat_2226
359  * @tc.desc: get track format (avi)
360  * @tc.type: FUNC
361  */
362 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2226, TestSize.Level1)
363 {
364     fd_ = OpenFile(g_aviMpeg2Mp2Path);
365     size_ = GetFileSize(g_aviMpeg2Mp2Path);
366     printf("---- %s ------\n", g_aviMpeg2Mp2Path.c_str());
367     source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
368     ASSERT_NE(source_, nullptr);
369     trackIndex_ = 0;
370     format_ = source_->GetTrackFormat(trackIndex_);
371     ASSERT_NE(format_, nullptr);
372     printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
373     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
374     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
375     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
376     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
377     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
378     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
379     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
380     ASSERT_EQ(formatVal_.codecMime, "video/mpeg2");
381     ASSERT_EQ(formatVal_.width, 1920);
382     ASSERT_EQ(formatVal_.height, 1080);
383     ASSERT_EQ(formatVal_.bitRate, 3328590);
384     ASSERT_DOUBLE_EQ(formatVal_.frameRate, 25.000000);
385     trackIndex_ = 1;
386     format_->Destroy();
387     format_ = source_->GetTrackFormat(trackIndex_);
388     ASSERT_NE(format_, nullptr);
389     printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
390     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
391     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
392     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
393     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
394     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
395     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
396     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
397     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
398     ASSERT_EQ(formatVal_.sampleRate, 44100);
399     ASSERT_EQ(formatVal_.channelCount, 2);
400     ASSERT_EQ(formatVal_.bitRate, 384000);
401     ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
402     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_S16P);
403     ASSERT_EQ(formatVal_.channelLayout, 3);
404 }
405 
406 /**
407  * @tc.name: AVSource_GetFormat_2236
408  * @tc.desc: get track format when the file is avi (video: mpeg2, audio:mp2)
409  * @tc.type: FUNC
410  */
411 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2236, TestSize.Level1)
412 {
413     printf("---- %s ------\n", g_aviMpeg2Mp2Uri.data());
414     source_ = AVSourceMockFactory::CreateSourceWithURI(const_cast<char*>(g_aviMpeg2Mp2Uri.data()));
415     ASSERT_NE(source_, nullptr);
416     trackIndex_ = 0;
417     format_ = source_->GetTrackFormat(trackIndex_);
418     ASSERT_NE(format_, nullptr);
419     printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
420     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
421     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
422     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
423     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
424     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
425     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
426     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
427     ASSERT_EQ(formatVal_.codecMime, "video/mpeg2");
428     ASSERT_EQ(formatVal_.width, 1920);
429     ASSERT_EQ(formatVal_.height, 1080);
430     ASSERT_EQ(formatVal_.bitRate, 3328590);
431     ASSERT_DOUBLE_EQ(formatVal_.frameRate, 25.000000);
432     trackIndex_ = 1;
433     format_->Destroy();
434     format_ = source_->GetTrackFormat(trackIndex_);
435     ASSERT_NE(format_, nullptr);
436     printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
437     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
438     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
439     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
440     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
441     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
442     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
443     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
444     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
445     ASSERT_EQ(formatVal_.sampleRate, 44100);
446     ASSERT_EQ(formatVal_.channelCount, 2);
447     ASSERT_EQ(formatVal_.bitRate, 384000);
448     ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
449     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_S16P);
450     ASSERT_EQ(formatVal_.channelLayout, 3);
451 }
452 
453 /**
454  * @tc.name: AVSource_GetFormat_2229
455  * @tc.desc: get track format (avi)
456  * @tc.type: FUNC
457  */
458 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2229, TestSize.Level1)
459 {
460     fd_ = OpenFile(g_aviMpeg4PcmPath);
461     size_ = GetFileSize(g_aviMpeg4PcmPath);
462     printf("---- %s ------\n", g_aviMpeg4PcmPath.c_str());
463     source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
464     ASSERT_NE(source_, nullptr);
465     trackIndex_ = 0;
466     format_ = source_->GetTrackFormat(trackIndex_);
467     ASSERT_NE(format_, nullptr);
468     printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
469     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
470     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
471     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
472     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
473     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
474     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
475     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
476     ASSERT_EQ(formatVal_.codecMime, "video/mp4v-es");
477     ASSERT_EQ(formatVal_.width, 720);
478     ASSERT_EQ(formatVal_.height, 480);
479     ASSERT_EQ(formatVal_.bitRate, 766523);
480     ASSERT_DOUBLE_EQ(formatVal_.frameRate, 60.000000);
481     trackIndex_ = 1;
482     format_->Destroy();
483     format_ = source_->GetTrackFormat(trackIndex_);
484     ASSERT_NE(format_, nullptr);
485     printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
486     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
487     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
488     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
489     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
490     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
491     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
492     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
493     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
494     ASSERT_EQ(formatVal_.sampleRate, 44100);
495     ASSERT_EQ(formatVal_.channelCount, 2);
496     ASSERT_EQ(formatVal_.bitRate, 1411200);
497     ASSERT_EQ(formatVal_.codecMime, "audio/raw");
498     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_S16LE);
499     ASSERT_EQ(formatVal_.channelLayout, 3);
500 }
501 
502 /**
503  * @tc.name: AVSource_GetFormat_2239
504  * @tc.desc: get track format when the file is avi (video: mpeg4, audio:pcm)
505  * @tc.type: FUNC
506  */
507 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2239, TestSize.Level1)
508 {
509     printf("---- %s ------\n", g_aviMpeg4PcmUri.data());
510     source_ = AVSourceMockFactory::CreateSourceWithURI(const_cast<char*>(g_aviMpeg4PcmUri.data()));
511     ASSERT_NE(source_, nullptr);
512     trackIndex_ = 0;
513     format_ = source_->GetTrackFormat(trackIndex_);
514     ASSERT_NE(format_, nullptr);
515     printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
516     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
517     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
518     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
519     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
520     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
521     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
522     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
523     ASSERT_EQ(formatVal_.codecMime, "video/mp4v-es");
524     ASSERT_EQ(formatVal_.width, 720);
525     ASSERT_EQ(formatVal_.height, 480);
526     ASSERT_EQ(formatVal_.bitRate, 766523);
527     ASSERT_DOUBLE_EQ(formatVal_.frameRate, 60.000000);
528     trackIndex_ = 1;
529     format_->Destroy();
530     format_ = source_->GetTrackFormat(trackIndex_);
531     ASSERT_NE(format_, nullptr);
532     printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
533     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
534     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
535     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
536     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
537     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
538     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
539     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
540     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
541     ASSERT_EQ(formatVal_.sampleRate, 44100);
542     ASSERT_EQ(formatVal_.channelCount, 2);
543     ASSERT_EQ(formatVal_.bitRate, 1411200);
544     ASSERT_EQ(formatVal_.codecMime, "audio/raw");
545     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_S16LE);
546     ASSERT_EQ(formatVal_.channelLayout, 3);
547 }
548 
549 /**
550  * @tc.name: AVSource_GetFormat_2230
551  * @tc.desc: get track format (avi)
552  * @tc.type: FUNC
553  */
554 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2230, TestSize.Level1)
555 {
556     fd_ = OpenFile(g_avi263AacPath);
557     size_ = GetFileSize(g_avi263AacPath);
558     printf("---- %s ------\n", g_avi263AacPath.c_str());
559     source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
560     ASSERT_NE(source_, nullptr);
561     trackIndex_ = 0;
562     format_ = source_->GetTrackFormat(trackIndex_);
563     ASSERT_NE(format_, nullptr);
564     printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
565     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
566     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
567     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
568     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
569     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
570     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
571     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
572     ASSERT_EQ(formatVal_.codecMime, "video/h263");
573     ASSERT_EQ(formatVal_.width, 1408);
574     ASSERT_EQ(formatVal_.height, 1152);
575     ASSERT_EQ(formatVal_.bitRate, 2704586);
576     ASSERT_DOUBLE_EQ(formatVal_.frameRate, 25.000000);
577     trackIndex_ = 1;
578     format_->Destroy();
579     format_ = source_->GetTrackFormat(trackIndex_);
580     ASSERT_NE(format_, nullptr);
581     printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
582     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
583     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
584     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
585     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
586     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
587     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
588     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
589     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
590     ASSERT_EQ(formatVal_.sampleRate, 44100);
591     ASSERT_EQ(formatVal_.channelCount, 2);
592     ASSERT_EQ(formatVal_.bitRate, 128000);
593     ASSERT_EQ(formatVal_.codecMime, "audio/mp4a-latm");
594     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
595     ASSERT_EQ(formatVal_.channelLayout, 3);
596 }
597 
598 /**
599  * @tc.name: AVSource_GetFormat_2240
600  * @tc.desc: get track format when the file is avi (video: h263, audio:aac)
601  * @tc.type: FUNC
602  */
603 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2240, TestSize.Level1)
604 {
605     printf("---- %s ------\n", g_avi263AacUri.data());
606     source_ = AVSourceMockFactory::CreateSourceWithURI(const_cast<char*>(g_avi263AacUri.data()));
607     ASSERT_NE(source_, nullptr);
608     trackIndex_ = 0;
609     format_ = source_->GetTrackFormat(trackIndex_);
610     ASSERT_NE(format_, nullptr);
611     printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
612     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
613     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
614     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
615     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
616     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
617     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
618     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
619     ASSERT_EQ(formatVal_.codecMime, "video/h263");
620     ASSERT_EQ(formatVal_.width, 1408);
621     ASSERT_EQ(formatVal_.height, 1152);
622     ASSERT_EQ(formatVal_.bitRate, 2704586);
623     ASSERT_DOUBLE_EQ(formatVal_.frameRate, 25.000000);
624     trackIndex_ = 1;
625     format_->Destroy();
626     format_ = source_->GetTrackFormat(trackIndex_);
627     ASSERT_NE(format_, nullptr);
628     printf("[ trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
629     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
630     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
631     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
632     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
633     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
634     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
635     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
636     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
637     ASSERT_EQ(formatVal_.sampleRate, 44100);
638     ASSERT_EQ(formatVal_.channelCount, 2);
639     ASSERT_EQ(formatVal_.bitRate, 128000);
640     ASSERT_EQ(formatVal_.codecMime, "audio/mp4a-latm");
641     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
642     ASSERT_EQ(formatVal_.channelLayout, 3);
643 }
644 
645 /**
646  * @tc.name: AVSource_GetFormat_2296
647  * @tc.desc: get source format, local (264-aac)
648  * @tc.type: FUNC
649  */
650 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2296, TestSize.Level1)
651 {
652     fd_ = OpenFile(g_h264aacPath);
653     size_ = GetFileSize(g_h264aacPath);
654     printf("---- %s ------\n", g_h264aacPath.c_str());
655     source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
656     ASSERT_NE(source_, nullptr);
657     format_ = source_->GetSourceFormat();
658     ASSERT_NE(format_, nullptr);
659     printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
660     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_TITLE, formatVal_.title));
661     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ARTIST, formatVal_.artist));
662     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ALBUM, formatVal_.album));
663     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
664     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
665     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_GENRE, formatVal_.genre));
666     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_DATE, formatVal_.date));
667     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COMMENT, formatVal_.comment));
668     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COPYRIGHT, formatVal_.copyright));
669     ASSERT_EQ(formatVal_.title, "test");
670     ASSERT_EQ(formatVal_.artist, "元数据测试");
671     ASSERT_EQ(formatVal_.album, "media");
672     ASSERT_EQ(formatVal_.genre, "Lyrical");
673     ASSERT_EQ(formatVal_.date, "2024");
674     ASSERT_EQ(formatVal_.comment, "comment");
675     ASSERT_EQ(formatVal_.copyright, "copyright");
676     ASSERT_EQ(formatVal_.duration, 10067000);
677     ASSERT_EQ(formatVal_.trackCount, 2);
678 #ifdef AVSOURCE_INNER_UNIT_TEST
679     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
680     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
681     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
682     ASSERT_EQ(formatVal_.hasVideo, 1);
683     ASSERT_EQ(formatVal_.hasAudio, 1);
684     ASSERT_EQ(formatVal_.fileType, 107);
685 #endif
686 }
687 
688 /**
689  * @tc.name: AVSource_GetFormat_2297
690  * @tc.desc: get source format, uri (264-aac)
691  * @tc.type: FUNC
692  */
693 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2297, TestSize.Level1)
694 {
695     printf("---- %s ------\n", g_h264aacUri.data());
696     source_ = AVSourceMockFactory::CreateSourceWithURI(const_cast<char*>(g_h264aacUri.data()));
697     ASSERT_NE(source_, nullptr);
698     format_ = source_->GetSourceFormat();
699     ASSERT_NE(format_, nullptr);
700     printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
701     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_TITLE, formatVal_.title));
702     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ARTIST, formatVal_.artist));
703     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_ALBUM, formatVal_.album));
704     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_DURATION, formatVal_.duration));
705     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_COUNT, formatVal_.trackCount));
706     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_GENRE, formatVal_.genre));
707     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_DATE, formatVal_.date));
708     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COMMENT, formatVal_.comment));
709     ASSERT_TRUE(format_->GetStringValue(AVSourceFormat::SOURCE_COPYRIGHT, formatVal_.copyright));
710     ASSERT_EQ(formatVal_.title, "test");
711     ASSERT_EQ(formatVal_.artist, "元数据测试");
712     ASSERT_EQ(formatVal_.album, "media");
713     ASSERT_EQ(formatVal_.genre, "Lyrical");
714     ASSERT_EQ(formatVal_.date, "2024");
715     ASSERT_EQ(formatVal_.comment, "comment");
716     ASSERT_EQ(formatVal_.copyright, "copyright");
717     ASSERT_EQ(formatVal_.duration, 10067000);
718     ASSERT_EQ(formatVal_.trackCount, 2);
719 #ifdef AVSOURCE_INNER_UNIT_TEST
720     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
721     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
722     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
723     ASSERT_EQ(formatVal_.hasVideo, 1);
724     ASSERT_EQ(formatVal_.hasAudio, 1);
725     ASSERT_EQ(formatVal_.fileType, 107);
726 #endif
727 }
728 
729 /**
730  * @tc.name: AVSource_GetFormat_2298
731  * @tc.desc: get track format, local (264-aac)
732  * @tc.type: FUNC
733  */
734 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2298, TestSize.Level1)
735 {
736     fd_ = OpenFile(g_h264aacPath);
737     size_ = GetFileSize(g_h264aacPath);
738     printf("---- %s ------\n", g_h264aacPath.c_str());
739     source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
740     ASSERT_NE(source_, nullptr);
741     trackIndex_ = 0;
742     format_ = source_->GetTrackFormat(trackIndex_);
743     ASSERT_NE(format_, nullptr);
744     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
745     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
746     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
747     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
748     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
749     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
750     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
751     ASSERT_EQ(formatVal_.codecMime, "video/avc");
752     ASSERT_EQ(formatVal_.width, 720);
753     ASSERT_EQ(formatVal_.height, 480);
754     ASSERT_EQ(formatVal_.frameRate, 60.000000);
755     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
756     ASSERT_EQ(formatVal_.bitRate, 1187898);
757     trackIndex_ = 1;
758     format_->Destroy();
759     format_ = source_->GetTrackFormat(trackIndex_);
760     ASSERT_NE(format_, nullptr);
761     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
762     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
763     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
764     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
765     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
766     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
767     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
768     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
769     ASSERT_EQ(formatVal_.channelLayout, 3);
770     ASSERT_EQ(formatVal_.sampleRate, 44100);
771     ASSERT_EQ(formatVal_.codecMime, "audio/mp4a-latm");
772     ASSERT_EQ(formatVal_.channelCount, 2);
773     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
774     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
775     ASSERT_EQ(formatVal_.bitRate, 128064);
776 }
777 
778 /**
779  * @tc.name: AVSource_GetFormat_2299
780  * @tc.desc: get track format, uri (264-aac)
781  * @tc.type: FUNC
782  */
783 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2299, TestSize.Level1)
784 {
785     printf("---- %s ------\n", g_h264aacUri.data());
786     source_ = AVSourceMockFactory::CreateSourceWithURI(const_cast<char*>(g_h264aacUri.data()));
787     ASSERT_NE(source_, nullptr);
788     trackIndex_ = 0;
789     format_ = source_->GetTrackFormat(trackIndex_);
790     ASSERT_NE(format_, nullptr);
791     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
792     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
793     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
794     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
795     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
796     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
797     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
798     ASSERT_EQ(formatVal_.codecMime, "video/avc");
799     ASSERT_EQ(formatVal_.width, 720);
800     ASSERT_EQ(formatVal_.height, 480);
801     ASSERT_EQ(formatVal_.frameRate, 60.000000);
802     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
803     ASSERT_EQ(formatVal_.bitRate, 1187898);
804     trackIndex_ = 1;
805     format_->Destroy();
806     format_ = source_->GetTrackFormat(trackIndex_);
807     ASSERT_NE(format_, nullptr);
808     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
809     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
810     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
811     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
812     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
813     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
814     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
815     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
816     ASSERT_EQ(formatVal_.channelLayout, 3);
817     ASSERT_EQ(formatVal_.sampleRate, 44100);
818     ASSERT_EQ(formatVal_.codecMime, "audio/mp4a-latm");
819     ASSERT_EQ(formatVal_.channelCount, 2);
820     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
821     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
822     ASSERT_EQ(formatVal_.bitRate, 128064);
823 }
824 
825 /**
826  * @tc.name: AVSource_GetFormat_2300
827  * @tc.desc: get track format, local (264-mp3)
828  * @tc.type: FUNC
829  */
830 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2300, TestSize.Level1)
831 {
832     fd_ = OpenFile(g_h264mp3Path);
833     size_ = GetFileSize(g_h264mp3Path);
834     printf("---- %s ------\n", g_h264mp3Path.c_str());
835     source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
836     ASSERT_NE(source_, nullptr);
837     trackIndex_ = 0;
838     format_ = source_->GetTrackFormat(trackIndex_);
839     ASSERT_NE(format_, nullptr);
840     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
841     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
842     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
843     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
844     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
845     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
846     ASSERT_EQ(formatVal_.codecMime, "video/avc");
847     ASSERT_EQ(formatVal_.width, 720);
848     ASSERT_EQ(formatVal_.height, 480);
849     ASSERT_EQ(formatVal_.frameRate, 60.000000);
850     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
851     trackIndex_ = 1;
852     format_->Destroy();
853     format_ = source_->GetTrackFormat(trackIndex_);
854     ASSERT_NE(format_, nullptr);
855     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
856     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
857     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
858     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
859     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
860     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
861     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
862     ASSERT_EQ(formatVal_.channelLayout, 3);
863     ASSERT_EQ(formatVal_.sampleRate, 44100);
864     ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
865     ASSERT_EQ(formatVal_.channelCount, 2);
866     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
867     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
868 }
869 
870 /**
871  * @tc.name: AVSource_GetFormat_2301
872  * @tc.desc: get track format, uri (264-mp3)
873  * @tc.type: FUNC
874  */
875 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2301, TestSize.Level1)
876 {
877     printf("---- %s ------\n", g_h264mp3Uri.data());
878     source_ = AVSourceMockFactory::CreateSourceWithURI(const_cast<char*>(g_h264mp3Uri.data()));
879     ASSERT_NE(source_, nullptr);
880     trackIndex_ = 0;
881     format_ = source_->GetTrackFormat(trackIndex_);
882     ASSERT_NE(format_, nullptr);
883     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
884     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
885     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
886     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
887     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
888     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
889     ASSERT_EQ(formatVal_.codecMime, "video/avc");
890     ASSERT_EQ(formatVal_.width, 720);
891     ASSERT_EQ(formatVal_.height, 480);
892     ASSERT_EQ(formatVal_.frameRate, 60.000000);
893     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
894     trackIndex_ = 1;
895     format_->Destroy();
896     format_ = source_->GetTrackFormat(trackIndex_);
897     ASSERT_NE(format_, nullptr);
898     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
899     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
900     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
901     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
902     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
903     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
904     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
905     ASSERT_EQ(formatVal_.channelLayout, 3);
906     ASSERT_EQ(formatVal_.sampleRate, 44100);
907     ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
908     ASSERT_EQ(formatVal_.channelCount, 2);
909     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
910     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
911 }
912 
913 /**
914  * @tc.name: AVSource_GetFormat_2302
915  * @tc.desc: get track format, local (264-vorbis)
916  * @tc.type: FUNC
917  */
918 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2302, TestSize.Level1)
919 {
920     fd_ = OpenFile(g_h264vorPath);
921     size_ = GetFileSize(g_h264vorPath);
922     printf("---- %s ------\n", g_h264vorPath.c_str());
923     source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
924     ASSERT_NE(source_, nullptr);
925     trackIndex_ = 0;
926     format_ = source_->GetTrackFormat(trackIndex_);
927     ASSERT_NE(format_, nullptr);
928     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
929     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
930     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
931     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
932     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
933     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
934     ASSERT_EQ(formatVal_.codecMime, "video/avc");
935     ASSERT_EQ(formatVal_.width, 720);
936     ASSERT_EQ(formatVal_.height, 480);
937     ASSERT_EQ(formatVal_.frameRate, 60.000000);
938     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
939     trackIndex_ = 1;
940     format_->Destroy();
941     format_ = source_->GetTrackFormat(trackIndex_);
942     ASSERT_NE(format_, nullptr);
943     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
944     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
945     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
946     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
947     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
948     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
949     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
950     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
951     ASSERT_EQ(formatVal_.channelLayout, 3);
952     ASSERT_EQ(formatVal_.sampleRate, 44100);
953     ASSERT_EQ(formatVal_.codecMime, "audio/vorbis");
954     ASSERT_EQ(formatVal_.channelCount, 2);
955     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
956     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
957     ASSERT_EQ(formatVal_.bitRate, 80435);
958 }
959 
960 /**
961  * @tc.name: AVSource_GetFormat_2303
962  * @tc.desc: get track format, uri (264-vorbis)
963  * @tc.type: FUNC
964  */
965 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2303, TestSize.Level1)
966 {
967     printf("---- %s ------\n", g_h264vorUri.data());
968     source_ = AVSourceMockFactory::CreateSourceWithURI(const_cast<char*>(g_h264vorUri.data()));
969     ASSERT_NE(source_, nullptr);
970     trackIndex_ = 0;
971     format_ = source_->GetTrackFormat(trackIndex_);
972     ASSERT_NE(format_, nullptr);
973     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
974     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
975     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
976     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
977     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
978     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
979     ASSERT_EQ(formatVal_.codecMime, "video/avc");
980     ASSERT_EQ(formatVal_.width, 720);
981     ASSERT_EQ(formatVal_.height, 480);
982     ASSERT_EQ(formatVal_.frameRate, 60.000000);
983     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
984     trackIndex_ = 1;
985     format_->Destroy();
986     format_ = source_->GetTrackFormat(trackIndex_);
987     ASSERT_NE(format_, nullptr);
988     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
989     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
990     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
991     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
992     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
993     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
994     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
995     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
996     ASSERT_EQ(formatVal_.channelLayout, 3);
997     ASSERT_EQ(formatVal_.sampleRate, 44100);
998     ASSERT_EQ(formatVal_.codecMime, "audio/vorbis");
999     ASSERT_EQ(formatVal_.channelCount, 2);
1000     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
1001     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1002     ASSERT_EQ(formatVal_.bitRate, 80435);
1003 }
1004 
1005 /**
1006  * @tc.name: AVSource_GetFormat_2304
1007  * @tc.desc: get track format, local (mpeg4-mp2)
1008  * @tc.type: FUNC
1009  */
1010 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2304, TestSize.Level1)
1011 {
1012     fd_ = OpenFile(g_mpg4mp2Path);
1013     size_ = GetFileSize(g_mpg4mp2Path);
1014     printf("---- %s ------\n", g_mpg4mp2Path.c_str());
1015     source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1016     ASSERT_NE(source_, nullptr);
1017     trackIndex_ = 0;
1018     format_ = source_->GetTrackFormat(trackIndex_);
1019     ASSERT_NE(format_, nullptr);
1020     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1021     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1022     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
1023     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
1024     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
1025     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1026     ASSERT_EQ(formatVal_.codecMime, "video/mp4v-es");
1027     ASSERT_EQ(formatVal_.width, 720);
1028     ASSERT_EQ(formatVal_.height, 480);
1029     ASSERT_EQ(formatVal_.frameRate, 60.000000);
1030     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
1031     trackIndex_ = 1;
1032     format_->Destroy();
1033     format_ = source_->GetTrackFormat(trackIndex_);
1034     ASSERT_NE(format_, nullptr);
1035     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1036     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1037     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1038     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1039     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1040     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1041     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1042     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
1043     ASSERT_EQ(formatVal_.channelLayout, 3);
1044     ASSERT_EQ(formatVal_.sampleRate, 44100);
1045     ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
1046     ASSERT_EQ(formatVal_.channelCount, 2);
1047     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_S16P);
1048     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1049     ASSERT_EQ(formatVal_.bitRate, 191862);
1050 }
1051 
1052 /**
1053  * @tc.name: AVSource_GetFormat_2305
1054  * @tc.desc: get track format, local (mpeg4-mp2)
1055  * @tc.type: FUNC
1056  */
1057 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2305, TestSize.Level1)
1058 {
1059     printf("---- %s ------\n", g_mpg4mp2Uri.data());
1060     source_ = AVSourceMockFactory::CreateSourceWithURI(const_cast<char*>(g_mpg4mp2Uri.data()));
1061     ASSERT_NE(source_, nullptr);
1062     trackIndex_ = 0;
1063     format_ = source_->GetTrackFormat(trackIndex_);
1064     ASSERT_NE(format_, nullptr);
1065     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1066     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1067     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
1068     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
1069     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
1070     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1071     ASSERT_EQ(formatVal_.codecMime, "video/mp4v-es");
1072     ASSERT_EQ(formatVal_.width, 720);
1073     ASSERT_EQ(formatVal_.height, 480);
1074     ASSERT_EQ(formatVal_.frameRate, 60.000000);
1075     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
1076     trackIndex_ = 1;
1077     format_->Destroy();
1078     format_ = source_->GetTrackFormat(trackIndex_);
1079     ASSERT_NE(format_, nullptr);
1080     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1081     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1082     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1083     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1084     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1085     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1086     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1087     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
1088     ASSERT_EQ(formatVal_.channelLayout, 3);
1089     ASSERT_EQ(formatVal_.sampleRate, 44100);
1090     ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
1091     ASSERT_EQ(formatVal_.channelCount, 2);
1092     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_S16P);
1093     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1094     ASSERT_EQ(formatVal_.bitRate, 191862);
1095 }
1096 
1097 /**
1098  * @tc.name: AVSource_GetFormat_2312
1099  * @tc.desc: get track format, local (mpeg4-mp4)
1100  * @tc.type: FUNC
1101  */
1102 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2312, TestSize.Level1)
1103 {
1104     fd_ = OpenFile(g_mpg4mp4Path);
1105     size_ = GetFileSize(g_mpg4mp4Path);
1106     printf("---- %s ------\n", g_mpg4mp4Path.c_str());
1107     source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1108     ASSERT_NE(source_, nullptr);
1109     trackIndex_ = 0;
1110     format_ = source_->GetTrackFormat(trackIndex_);
1111     ASSERT_NE(format_, nullptr);
1112     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1113     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1114     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
1115     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
1116     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
1117     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1118     ASSERT_EQ(formatVal_.codecMime, "video/mp4v-es");
1119     ASSERT_EQ(formatVal_.width, 720);
1120     ASSERT_EQ(formatVal_.height, 480);
1121     ASSERT_EQ(formatVal_.frameRate, 60.000000);
1122     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
1123     trackIndex_ = 1;
1124     format_->Destroy();
1125     format_ = source_->GetTrackFormat(trackIndex_);
1126     ASSERT_NE(format_, nullptr);
1127     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1128     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1129     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1130     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1131     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1132     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1133     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1134     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
1135     ASSERT_EQ(formatVal_.channelLayout, 3);
1136     ASSERT_EQ(formatVal_.sampleRate, 44100);
1137     ASSERT_EQ(formatVal_.codecMime, "audio/mp4a-latm");
1138     ASSERT_EQ(formatVal_.channelCount, 2);
1139     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
1140     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1141     ASSERT_EQ(formatVal_.bitRate, 130231);
1142 }
1143 
1144 /**
1145  * @tc.name: AVSource_GetFormat_2313
1146  * @tc.desc: get  format, uri(mpeg4-mp4)
1147  * @tc.type: FUNC
1148  */
1149 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2313, TestSize.Level1)
1150 {
1151     printf("---- %s ------\n", g_mpg4mp4Uri.data());
1152     source_ = AVSourceMockFactory::CreateSourceWithURI(const_cast<char*>(g_mpg4mp4Uri.data()));
1153     ASSERT_NE(source_, nullptr);
1154     trackIndex_ = 0;
1155     format_ = source_->GetTrackFormat(trackIndex_);
1156     ASSERT_NE(format_, nullptr);
1157     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1158     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1159     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
1160     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
1161     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
1162     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1163     ASSERT_EQ(formatVal_.codecMime, "video/mp4v-es");
1164     ASSERT_EQ(formatVal_.width, 720);
1165     ASSERT_EQ(formatVal_.height, 480);
1166     ASSERT_EQ(formatVal_.frameRate, 60.000000);
1167     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
1168     trackIndex_ = 1;
1169     format_->Destroy();
1170     format_ = source_->GetTrackFormat(trackIndex_);
1171     ASSERT_NE(format_, nullptr);
1172     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1173     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1174     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1175     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1176     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1177     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1178     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1179     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
1180     ASSERT_EQ(formatVal_.channelLayout, 3);
1181     ASSERT_EQ(formatVal_.sampleRate, 44100);
1182     ASSERT_EQ(formatVal_.codecMime, "audio/mp4a-latm");
1183     ASSERT_EQ(formatVal_.channelCount, 2);
1184     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
1185     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1186     ASSERT_EQ(formatVal_.bitRate, 130231);
1187 }
1188 
1189 /**
1190  * @tc.name: AVSource_GetFormat_2250
1191  * @tc.desc: get source format(mpeg)
1192  * @tc.type: FUNC
1193  */
1194 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2250, TestSize.Level1)
1195 {
1196     fd_ = OpenFile(g_mpegPath);
1197     size_ = GetFileSize(g_mpegPath);
1198     source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1199     ASSERT_NE(source_, nullptr);
1200     format_ = source_->GetSourceFormat();
1201     ASSERT_NE(format_, nullptr);
1202     printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1203     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1204     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1205     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1206     ASSERT_EQ(formatVal_.hasVideo, 1);
1207     ASSERT_EQ(formatVal_.hasAudio, 1);
1208     ASSERT_EQ(formatVal_.fileType, 106);
1209     trackIndex_ = 0;
1210     format_->Destroy();
1211     format_ = source_->GetTrackFormat(trackIndex_);
1212     ASSERT_NE(format_, nullptr);
1213     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1214     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
1215     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1216     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1217     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
1218     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
1219     ASSERT_EQ(formatVal_.codecMime, "video/avc");
1220     ASSERT_EQ(formatVal_.width, 1920);
1221     ASSERT_EQ(formatVal_.height, 1080);
1222     ASSERT_EQ(formatVal_.frameRate, 24.000000);
1223     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
1224     trackIndex_ = 1;
1225     format_->Destroy();
1226     format_ = source_->GetTrackFormat(trackIndex_);
1227     ASSERT_NE(format_, nullptr);
1228     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1229     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1230     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1231     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1232     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1233     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1234     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
1235     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1236     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_S16P);
1237     ASSERT_EQ(formatVal_.channelLayout, 3);
1238     ASSERT_EQ(formatVal_.sampleRate, 48000);
1239     ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
1240     ASSERT_EQ(formatVal_.channelCount, 2);
1241     ASSERT_EQ(formatVal_.bitRate, 384000);
1242     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1243 }
1244 
1245 /**
1246  * @tc.name: AVSource_GetFormat_2251
1247  * @tc.desc: get source format(mpeg)
1248  * @tc.type: FUNC
1249  */
1250 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2251, TestSize.Level1)
1251 {
1252     fd_ = OpenFile(g_mpegPath2);
1253     size_ = GetFileSize(g_mpegPath2);
1254     source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1255     ASSERT_NE(source_, nullptr);
1256     format_ = source_->GetSourceFormat();
1257     ASSERT_NE(format_, nullptr);
1258     printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1259     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1260     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1261     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1262     ASSERT_EQ(formatVal_.hasVideo, 1);
1263     ASSERT_EQ(formatVal_.hasAudio, 1);
1264     ASSERT_EQ(formatVal_.fileType, 106);
1265     trackIndex_ = 0;
1266     format_->Destroy();
1267     format_ = source_->GetTrackFormat(trackIndex_);
1268     ASSERT_NE(format_, nullptr);
1269     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1270     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1271     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
1272     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
1273     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
1274     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1275     ASSERT_EQ(formatVal_.codecMime, "video/avc");
1276     ASSERT_EQ(formatVal_.width, 1920);
1277     ASSERT_EQ(formatVal_.height, 1080);
1278     ASSERT_EQ(formatVal_.frameRate, 24.000000);
1279     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
1280     trackIndex_ = 1;
1281     format_->Destroy();
1282     format_ = source_->GetTrackFormat(trackIndex_);
1283     ASSERT_NE(format_, nullptr);
1284     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1285     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1286     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
1287     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1288     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1289     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1290     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1291     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1292     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
1293     ASSERT_EQ(formatVal_.bitRate, 128000);
1294     ASSERT_EQ(formatVal_.channelLayout, 3);
1295     ASSERT_EQ(formatVal_.sampleRate, 48000);
1296     ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
1297     ASSERT_EQ(formatVal_.channelCount, 2);
1298     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1299 }
1300 
1301 /**
1302  * @tc.name: AVSource_GetFormat_2252
1303  * @tc.desc: get source format(mpeg)
1304  * @tc.type: FUNC
1305  */
1306 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2252, TestSize.Level1)
1307 {
1308     fd_ = OpenFile(g_mpegPath3);
1309     size_ = GetFileSize(g_mpegPath3);
1310     source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1311     ASSERT_NE(source_, nullptr);
1312     format_ = source_->GetSourceFormat();
1313     ASSERT_NE(format_, nullptr);
1314     printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1315     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1316     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1317     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1318     ASSERT_EQ(formatVal_.hasVideo, 1);
1319     ASSERT_EQ(formatVal_.hasAudio, 1);
1320     ASSERT_EQ(formatVal_.fileType, 106);
1321     trackIndex_ = 0;
1322     format_->Destroy();
1323     format_ = source_->GetTrackFormat(trackIndex_);
1324     ASSERT_NE(format_, nullptr);
1325     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1326     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1327     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
1328     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
1329     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
1330     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1331     ASSERT_EQ(formatVal_.codecMime, "video/mpeg2");
1332     ASSERT_EQ(formatVal_.width, 1920);
1333     ASSERT_EQ(formatVal_.height, 1080);
1334     ASSERT_EQ(formatVal_.frameRate, 24.000000);
1335     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
1336     trackIndex_ = 1;
1337     format_->Destroy();
1338     format_ = source_->GetTrackFormat(trackIndex_);
1339     ASSERT_NE(format_, nullptr);
1340     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1341     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1342     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1343     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1344     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1345     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1346     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1347     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
1348     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_S16P);
1349     ASSERT_EQ(formatVal_.channelLayout, 3);
1350     ASSERT_EQ(formatVal_.sampleRate, 48000);
1351     ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
1352     ASSERT_EQ(formatVal_.channelCount, 2);
1353     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1354     ASSERT_EQ(formatVal_.bitRate, 384000);
1355 }
1356 
1357 /**
1358  * @tc.name: AVSource_GetFormat_2253
1359  * @tc.desc: get source format(mpeg)
1360  * @tc.type: FUNC
1361  */
1362 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2253, TestSize.Level1)
1363 {
1364     fd_ = OpenFile(g_mpegPath4);
1365     size_ = GetFileSize(g_mpegPath4);
1366     source_ = AVSourceMockFactory::CreateSourceWithFD(fd_, SOURCE_OFFSET, size_);
1367     ASSERT_NE(source_, nullptr);
1368     format_ = source_->GetSourceFormat();
1369     ASSERT_NE(format_, nullptr);
1370     printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1371     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1372     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1373     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1374     ASSERT_EQ(formatVal_.hasVideo, 1);
1375     ASSERT_EQ(formatVal_.hasAudio, 1);
1376     ASSERT_EQ(formatVal_.fileType, 106);
1377     trackIndex_ = 0;
1378     format_->Destroy();
1379     format_ = source_->GetTrackFormat(trackIndex_);
1380     ASSERT_NE(format_, nullptr);
1381     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1382     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1383     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
1384     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
1385     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
1386     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1387     ASSERT_EQ(formatVal_.codecMime, "video/mpeg2");
1388     ASSERT_EQ(formatVal_.width, 1920);
1389     ASSERT_EQ(formatVal_.height, 1080);
1390     ASSERT_EQ(formatVal_.frameRate, 24.000000);
1391     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
1392     trackIndex_ = 1;
1393     format_->Destroy();
1394     format_ = source_->GetTrackFormat(trackIndex_);
1395     ASSERT_NE(format_, nullptr);
1396     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1397     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1398     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1399     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1400     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1401     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1402     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
1403     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1404     ASSERT_EQ(formatVal_.channelLayout, 3);
1405     ASSERT_EQ(formatVal_.sampleRate, 48000);
1406     ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
1407     ASSERT_EQ(formatVal_.channelCount, 2);
1408     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1409     ASSERT_EQ(formatVal_.bitRate, 128000);
1410     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
1411 }
1412 
1413 /**
1414  * @tc.name: AVSource_GetFormat_2260
1415  * @tc.desc: get source format(mpeg)
1416  * @tc.type: FUNC
1417  */
1418 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2260, TestSize.Level1)
1419 {
1420     fd_ = OpenFile(g_mpegUri);
1421     size_ = GetFileSize(g_mpegUri);
1422     source_ = AVSourceMockFactory::CreateSourceWithURI(const_cast<char*>(g_mpegUri.data()));
1423     ASSERT_NE(source_, nullptr);
1424     format_ = source_->GetSourceFormat();
1425     ASSERT_NE(format_, nullptr);
1426     printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1427     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1428     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1429     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1430     ASSERT_EQ(formatVal_.hasVideo, 1);
1431     ASSERT_EQ(formatVal_.hasAudio, 1);
1432     ASSERT_EQ(formatVal_.fileType, 106);
1433     trackIndex_ = 0;
1434     format_->Destroy();
1435     format_ = source_->GetTrackFormat(trackIndex_);
1436     ASSERT_NE(format_, nullptr);
1437     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1438     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
1439     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1440     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1441     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
1442     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
1443     ASSERT_EQ(formatVal_.codecMime, "video/avc");
1444     ASSERT_EQ(formatVal_.width, 1920);
1445     ASSERT_EQ(formatVal_.height, 1080);
1446     ASSERT_EQ(formatVal_.frameRate, 24.000000);
1447     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
1448     trackIndex_ = 1;
1449     format_->Destroy();
1450     format_ = source_->GetTrackFormat(trackIndex_);
1451     ASSERT_NE(format_, nullptr);
1452     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1453     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1454     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1455     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1456     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1457     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1458     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
1459     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1460     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_S16P);
1461     ASSERT_EQ(formatVal_.channelLayout, 3);
1462     ASSERT_EQ(formatVal_.sampleRate, 48000);
1463     ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
1464     ASSERT_EQ(formatVal_.channelCount, 2);
1465     ASSERT_EQ(formatVal_.bitRate, 384000);
1466     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1467 }
1468 
1469 /**
1470  * @tc.name: AVSource_GetFormat_2261
1471  * @tc.desc: get source format(mpeg)
1472  * @tc.type: FUNC
1473  */
1474 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2261, TestSize.Level1)
1475 {
1476     fd_ = OpenFile(g_mpegUri2);
1477     size_ = GetFileSize(g_mpegUri2);
1478     source_ = AVSourceMockFactory::CreateSourceWithURI(const_cast<char*>(g_mpegUri2.data()));
1479     ASSERT_NE(source_, nullptr);
1480     format_ = source_->GetSourceFormat();
1481     ASSERT_NE(format_, nullptr);
1482     printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1483     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1484     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1485     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1486     ASSERT_EQ(formatVal_.hasVideo, 1);
1487     ASSERT_EQ(formatVal_.hasAudio, 1);
1488     ASSERT_EQ(formatVal_.fileType, 106);
1489     trackIndex_ = 0;
1490     format_->Destroy();
1491     format_ = source_->GetTrackFormat(trackIndex_);
1492     ASSERT_NE(format_, nullptr);
1493     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1494     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1495     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
1496     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
1497     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
1498     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1499     ASSERT_EQ(formatVal_.codecMime, "video/avc");
1500     ASSERT_EQ(formatVal_.width, 1920);
1501     ASSERT_EQ(formatVal_.height, 1080);
1502     ASSERT_EQ(formatVal_.frameRate, 24.000000);
1503     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
1504     trackIndex_ = 1;
1505     format_->Destroy();
1506     format_ = source_->GetTrackFormat(trackIndex_);
1507     ASSERT_NE(format_, nullptr);
1508     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1509     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1510     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
1511     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1512     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1513     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1514     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1515     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1516     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
1517     ASSERT_EQ(formatVal_.bitRate, 128000);
1518     ASSERT_EQ(formatVal_.channelLayout, 3);
1519     ASSERT_EQ(formatVal_.sampleRate, 48000);
1520     ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
1521     ASSERT_EQ(formatVal_.channelCount, 2);
1522     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1523 }
1524 
1525 /**
1526  * @tc.name: AVSource_GetFormat_2262
1527  * @tc.desc: get source format(mpeg)
1528  * @tc.type: FUNC
1529  */
1530 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2262, TestSize.Level1)
1531 {
1532     fd_ = OpenFile(g_mpegUri3);
1533     size_ = GetFileSize(g_mpegUri3);
1534     source_ = AVSourceMockFactory::CreateSourceWithURI(const_cast<char*>(g_mpegUri3.data()));
1535     ASSERT_NE(source_, nullptr);
1536     format_ = source_->GetSourceFormat();
1537     ASSERT_NE(format_, nullptr);
1538     printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1539     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1540     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1541     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1542     ASSERT_EQ(formatVal_.hasVideo, 1);
1543     ASSERT_EQ(formatVal_.hasAudio, 1);
1544     ASSERT_EQ(formatVal_.fileType, 106);
1545     trackIndex_ = 0;
1546     format_->Destroy();
1547     format_ = source_->GetTrackFormat(trackIndex_);
1548     ASSERT_NE(format_, nullptr);
1549     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1550     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1551     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
1552     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
1553     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
1554     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1555     ASSERT_EQ(formatVal_.codecMime, "video/mpeg2");
1556     ASSERT_EQ(formatVal_.width, 1920);
1557     ASSERT_EQ(formatVal_.height, 1080);
1558     ASSERT_EQ(formatVal_.frameRate, 24.000000);
1559     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
1560     trackIndex_ = 1;
1561     format_->Destroy();
1562     format_ = source_->GetTrackFormat(trackIndex_);
1563     ASSERT_NE(format_, nullptr);
1564     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1565     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1566     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1567     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1568     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1569     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1570     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1571     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
1572     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_S16P);
1573     ASSERT_EQ(formatVal_.channelLayout, 3);
1574     ASSERT_EQ(formatVal_.sampleRate, 48000);
1575     ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
1576     ASSERT_EQ(formatVal_.channelCount, 2);
1577     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1578     ASSERT_EQ(formatVal_.bitRate, 384000);
1579 }
1580 
1581 /**
1582  * @tc.name: AVSource_GetFormat_2263
1583  * @tc.desc: get source format(mpeg)
1584  * @tc.type: FUNC
1585  */
1586 HWTEST_F(AVSourceUnitTest, AVSource_GetFormat_2263, TestSize.Level1)
1587 {
1588     fd_ = OpenFile(g_mpegUri4);
1589     size_ = GetFileSize(g_mpegUri4);
1590     source_ = AVSourceMockFactory::CreateSourceWithURI(const_cast<char*>(g_mpegUri4.data()));
1591     ASSERT_NE(source_, nullptr);
1592     format_ = source_->GetSourceFormat();
1593     ASSERT_NE(format_, nullptr);
1594     printf("[ sourceFormat ]: %s\n", format_->DumpInfo());
1595     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_VIDEO, formatVal_.hasVideo));
1596     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_HAS_AUDIO, formatVal_.hasAudio));
1597     ASSERT_TRUE(format_->GetIntValue(AVSourceFormat::SOURCE_FILE_TYPE, formatVal_.fileType));
1598     ASSERT_EQ(formatVal_.hasVideo, 1);
1599     ASSERT_EQ(formatVal_.hasAudio, 1);
1600     ASSERT_EQ(formatVal_.fileType, 106);
1601     trackIndex_ = 0;
1602     format_->Destroy();
1603     format_ = source_->GetTrackFormat(trackIndex_);
1604     ASSERT_NE(format_, nullptr);
1605     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1606     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1607     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_WIDTH, formatVal_.width));
1608     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_HEIGHT, formatVal_.height));
1609     ASSERT_TRUE(format_->GetDoubleValue(MediaDescriptionKey::MD_KEY_FRAME_RATE, formatVal_.frameRate));
1610     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1611     ASSERT_EQ(formatVal_.codecMime, "video/mpeg2");
1612     ASSERT_EQ(formatVal_.width, 1920);
1613     ASSERT_EQ(formatVal_.height, 1080);
1614     ASSERT_EQ(formatVal_.frameRate, 24.000000);
1615     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_VID);
1616     trackIndex_ = 1;
1617     format_->Destroy();
1618     format_ = source_->GetTrackFormat(trackIndex_);
1619     ASSERT_NE(format_, nullptr);
1620     printf("[trackFormat %d]: %s\n", trackIndex_, format_->DumpInfo());
1621     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_SAMPLE_RATE, formatVal_.sampleRate));
1622     ASSERT_TRUE(format_->GetStringValue(MediaDescriptionKey::MD_KEY_CODEC_MIME, formatVal_.codecMime));
1623     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_CHANNEL_COUNT, formatVal_.channelCount));
1624     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_CHANNEL_LAYOUT, formatVal_.channelLayout));
1625     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_TRACK_TYPE, formatVal_.trackType));
1626     ASSERT_TRUE(format_->GetLongValue(MediaDescriptionKey::MD_KEY_BITRATE, formatVal_.bitRate));
1627     ASSERT_TRUE(format_->GetIntValue(MediaDescriptionKey::MD_KEY_AUDIO_SAMPLE_FORMAT, formatVal_.audioSampleFormat));
1628     ASSERT_EQ(formatVal_.channelLayout, 3);
1629     ASSERT_EQ(formatVal_.sampleRate, 48000);
1630     ASSERT_EQ(formatVal_.codecMime, "audio/mpeg");
1631     ASSERT_EQ(formatVal_.channelCount, 2);
1632     ASSERT_EQ(formatVal_.trackType, MediaType::MEDIA_TYPE_AUD);
1633     ASSERT_EQ(formatVal_.bitRate, 128000);
1634     ASSERT_EQ(formatVal_.audioSampleFormat, AudioSampleFormat::SAMPLE_F32P);
1635 }
1636 } // namespace