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