• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 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 "gtest/gtest.h"
17 #include "media_errors.h"
18 #include "avmetadata_unit_test.h"
19 
20 using namespace std;
21 using namespace OHOS;
22 using namespace OHOS::Media;
23 using namespace testing::ext;
24 using namespace AVMetadataTestParam;
25 
26 namespace OHOS {
27 namespace Media {
28 /**
29     Function: compare metadata
30     Description: test for metadata
31     Input: uri, expected MetaData
32     Return: null
33 */
CheckMeta(std::string uri,std::unordered_map<int32_t,std::string> expectMeta)34 void AVMetadataUnitTest::CheckMeta(std::string uri, std::unordered_map<int32_t, std::string> expectMeta)
35 {
36     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
37     ASSERT_NE(nullptr, helper);
38     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
39     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_META_ONLY));
40     for (auto &item : expectMeta) {
41         std::string value = helper->ResolveMetadata(item.first);
42         EXPECT_EQ(AVMetadataTestBase::GetInstance().CompareMetadata(item.first, value, item.second), true);
43     }
44     auto resultMetas = helper->ResolveMetadata();
45     EXPECT_EQ(AVMetadataTestBase::GetInstance().CompareMetadata(resultMetas, expectMeta), true);
46     helper->Release();
47 }
48 
49 /**
50     * @tc.number    : GetThumbnail
51     * @tc.name      : Get Thumbnail
52     * @tc.desc      : Get THUMBNAIL Function case
53 */
GetThumbnail(const std::string uri)54 void AVMetadataUnitTest::GetThumbnail(const std::string uri)
55 {
56     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
57     ASSERT_NE(nullptr, helper);
58     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
59     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_PIXEL_MAP));
60 
61     struct PixelMapParams param = {-1, -1, PixelFormat::RGB_565};
62     int64_t timeUs = 0;
63     int32_t queryOption = AVMetadataQueryOption::AV_META_QUERY_NEXT_SYNC;
64     std::shared_ptr<PixelMap> frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
65     ASSERT_NE(nullptr, frame);
66     helper->FrameToFile(frame, testInfo_->name(), timeUs, queryOption);
67     helper->FrameToJpeg(frame, testInfo_->name(), timeUs, queryOption);
68     timeUs = 5000000;  // 5000000us
69     queryOption = AVMetadataQueryOption::AV_META_QUERY_PREVIOUS_SYNC;
70     frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
71     ASSERT_NE(nullptr, frame);
72     helper->FrameToFile(frame, testInfo_->name(), timeUs, queryOption);
73     helper->FrameToJpeg(frame, testInfo_->name(), timeUs, queryOption);
74 
75     param = {-1, -1, PixelFormat::RGB_888};
76     queryOption = AVMetadataQueryOption::AV_META_QUERY_CLOSEST_SYNC;
77     frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
78     ASSERT_NE(nullptr, frame);
79     helper->FrameToFile(frame, testInfo_->name(), timeUs, queryOption);
80     helper->FrameToJpeg(frame, testInfo_->name(), timeUs, queryOption);
81 
82     timeUs = 0;
83     queryOption = AVMetadataQueryOption::AV_META_QUERY_CLOSEST;
84     frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
85     ASSERT_NE(nullptr, frame);
86     helper->FrameToFile(frame, testInfo_->name(), timeUs, queryOption);
87     helper->FrameToJpeg(frame, testInfo_->name(), timeUs, queryOption);
88     helper->Release();
89 }
90 
91 /**
92  * @tc.number    : ResolveMetadata_Format_MP4_0100
93  * @tc.name      : 01.MP4 format Get MetaData(H264+AAC)
94  * @tc.desc      : test ResolveMetadata
95  */
96 HWTEST_F(AVMetadataUnitTest, ResolveMetadata_Format_MP4_0100, TestSize.Level0)
97 {
98     EXPECT_META[AV_KEY_DATE_TIME] = "2022-05-30 06:10:43";
99     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
100         std::string("H264_AAC.mp4");
101     CheckMeta(uri, EXPECT_META);
102 }
103 
104 /**
105     * @tc.number    : ResolveMetadata_Format_MP4_0200
106     * @tc.name      : 02.MP4 format Get MetaData(H264+MP3)
107     * @tc.desc      : test ResolveMetadata
108 */
109 HWTEST_F(AVMetadataUnitTest, ResolveMetadata_Format_MP4_0200, Function | MediumTest | Level0)
110 {
111     EXPECT_META[AV_KEY_DATE_TIME] = "2022";
112     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
113         std::string("/H264_MP3.mp4");
114     CheckMeta(uri, EXPECT_META);
115 }
116 
117 /**
118     * @tc.number    : ResolveMetadata_Format_MP4_0500
119     * @tc.name      : 05.MP4 format Get MetaData(MPEG4+AAC)
120     * @tc.desc      : test ResolveMetadata
121 */
122 HWTEST_F(AVMetadataUnitTest, ResolveMetadata_Format_MP4_0500, Function | MediumTest | Level0)
123 {
124     EXPECT_META[AV_KEY_DATE_TIME] = "2022-05-29 22:46:43";
125     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
126         std::string("/MPEG4_AAC.mp4");
127     CheckMeta(uri, EXPECT_META);
128 }
129 
130 /**
131     * @tc.number    : ResolveMetadata_Format_MP4_0600
132     * @tc.name      : 06.MP4 format Get MetaData(MPEG4+MP3)
133     * @tc.desc      : test ResolveMetadata
134 */
135 HWTEST_F(AVMetadataUnitTest, ResolveMetadata_Format_MP4_0600, Function | MediumTest | Level0)
136 {
137     EXPECT_META[AV_KEY_DATE_TIME] = "2022-05";
138     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
139         std::string("/MPEG4_MP3.mp4");
140     CheckMeta(uri, EXPECT_META);
141 }
142 
143 /**
144     * @tc.number    : ResolveMetadata_Format_MP4_0700
145     * @tc.name      : 07.MP4 format Get MetaData(HDR)
146     * @tc.desc      : test ResolveMetadata
147 */
148 HWTEST_F(AVMetadataUnitTest, ResolveMetadata_Format_MP4_0700, Function | MediumTest | Level0)
149 {
150     std::unordered_map<int32_t, std::string> expectMeta;
151     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
152         std::string("/HDR.mp4");
153     #ifndef CHECKING_VIDEO_IS_HDR_VIVID
154     expectMeta.insert(std::make_pair(AV_KEY_VIDEO_IS_HDR_VIVID, ""));
155     #else
156     expectMeta.insert(std::make_pair(AV_KEY_VIDEO_IS_HDR_VIVID, "yes"));
157     #endif
158     CheckMeta(uri, expectMeta);
159 }
160 
161 /**
162     * @tc.number    : ResolveMetadata_Format_MP4_0800
163     * @tc.name      : 08.MP4 format Get MetaData(SDR)
164     * @tc.desc      : test ResolveMetadata
165 */
166 HWTEST_F(AVMetadataUnitTest, ResolveMetadata_Format_MP4_0800, Function | MediumTest | Level0)
167 {
168     std::unordered_map<int32_t, std::string> expectMeta;
169     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
170         std::string("/SDR.mp4");
171     expectMeta.insert(std::make_pair(AV_KEY_VIDEO_IS_HDR_VIVID, ""));
172     CheckMeta(uri, expectMeta);
173 }
174 
175 /**
176     * @tc.number    : ResolveMetadata_Format_M4A_0100
177     * @tc.name      : 01.M4A format Get MetaData
178     * @tc.desc      : test ResolveMetadata
179 */
180 HWTEST_F(AVMetadataUnitTest, ResolveMetadata_Format_M4A_0100, Function | MediumTest | Level0)
181 {
182     std::unordered_map<int32_t, std::string> expectMeta = {
183         {AV_KEY_ALBUM, "media"},
184         {AV_KEY_ALBUM_ARTIST, "media_test"},
185         {AV_KEY_ARTIST, "元数据测试"},
186         {AV_KEY_AUTHOR, ""},
187         {AV_KEY_COMPOSER, "测试"},
188         {AV_KEY_DURATION, "219562"},
189         {AV_KEY_GENRE, "Lyrical"},
190         {AV_KEY_HAS_AUDIO, "yes"},
191         {AV_KEY_HAS_VIDEO, ""},
192         {AV_KEY_MIME_TYPE, "audio/mp4"},
193         {AV_KEY_NUM_TRACKS, "1"},
194         {AV_KEY_SAMPLE_RATE, "48000"},
195         {AV_KEY_TITLE, "test"},
196         {AV_KEY_VIDEO_HEIGHT, ""},
197         {AV_KEY_VIDEO_WIDTH, ""},
198         {AV_KEY_DATE_TIME, "2015-11-23"},
199     };
200     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
201         std::string("/aac_48000Hz_70kbs_mono.m4a");
202     CheckMeta(uri, expectMeta);
203 }
204 
205 /**
206     * @tc.number    : ResolveMetadata_Format_MP3_0100
207     * @tc.name      : 01.MP3 format Get MetaData
208     * @tc.desc      : test ResolveMetadata
209 */
210 HWTEST_F(AVMetadataUnitTest, ResolveMetadata_Format_MP3_0100, Function | MediumTest | Level0)
211 {
212     std::unordered_map<int32_t, std::string> expectMeta = {
213         {AV_KEY_ALBUM, "media"},
214         {AV_KEY_ALBUM_ARTIST, "media_test"},
215         {AV_KEY_ARTIST, "元数据测试"},
216         {AV_KEY_AUTHOR, "media"},
217         {AV_KEY_COMPOSER, "测试"},
218         {AV_KEY_DURATION, "219600"},
219         {AV_KEY_GENRE, "Lyrical"},
220         {AV_KEY_HAS_AUDIO, "yes"},
221         {AV_KEY_HAS_VIDEO, ""},
222         {AV_KEY_MIME_TYPE, "audio/mpeg"},
223         {AV_KEY_NUM_TRACKS, "1"},
224         {AV_KEY_SAMPLE_RATE, "48000"},
225         {AV_KEY_TITLE, "test"},
226         {AV_KEY_VIDEO_HEIGHT, ""},
227         {AV_KEY_VIDEO_WIDTH, ""},
228         {AV_KEY_DATE_TIME, "2022-05"},
229     };
230     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
231         std::string("/mp3_48000Hz_64kbs_mono.mp3");
232     CheckMeta(uri, expectMeta);
233 }
234 
235 /**
236     * @tc.number    : ResolveMetadata_Format_AAC_0100
237     * @tc.name      : 01.AAC format Get MetaData
238     * @tc.desc      : test ResolveMetadata
239 */
240 HWTEST_F(AVMetadataUnitTest, ResolveMetadata_Format_AAC_0100, Function | MediumTest | Level0)
241 {
242     std::unordered_map<int32_t, std::string> expectMeta = {
243         {AV_KEY_ALBUM, ""},
244         {AV_KEY_ALBUM_ARTIST, ""},
245         {AV_KEY_ARTIST, ""},
246         {AV_KEY_AUTHOR, ""},
247         {AV_KEY_COMPOSER, ""},
248         {AV_KEY_DURATION, "219780"},
249         {AV_KEY_GENRE, ""},
250         {AV_KEY_HAS_AUDIO, "yes"},
251         {AV_KEY_HAS_VIDEO, ""},
252         {AV_KEY_MIME_TYPE, "audio/aac-adts"},
253         {AV_KEY_NUM_TRACKS, "1"},
254         {AV_KEY_SAMPLE_RATE, "44100"},
255         {AV_KEY_TITLE, ""},
256         {AV_KEY_VIDEO_HEIGHT, ""},
257         {AV_KEY_VIDEO_WIDTH, ""},
258     };
259     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
260         std::string("/aac_44100Hz_143kbs_stereo.aac");
261     CheckMeta(uri, expectMeta);
262 }
263 
264 /**
265     * @tc.number    : ResolveMetadata_Format_WAV_0100
266     * @tc.name      : 01.WAV format Get MetaData
267     * @tc.desc      : test ResolveMetadata
268 */
269 HWTEST_F(AVMetadataUnitTest, ResolveMetadata_Format_WAV_0100, Function | MediumTest | Level0)
270 {
271     std::unordered_map<int32_t, std::string> expectMeta = {
272         {AV_KEY_ALBUM, "media"},
273         {AV_KEY_ARTIST, "元数据测试"},
274         {AV_KEY_ALBUM_ARTIST, ""},
275         {AV_KEY_COMPOSER, ""},
276         {AV_KEY_AUTHOR, ""},
277         {AV_KEY_GENRE, "Lyrical"},
278         {AV_KEY_DURATION, "5460"},
279         {AV_KEY_HAS_VIDEO, ""},
280         {AV_KEY_HAS_AUDIO, "yes"},
281         {AV_KEY_MIME_TYPE, "audio/wav"},
282         {AV_KEY_SAMPLE_RATE, "48000"},
283         {AV_KEY_NUM_TRACKS, "1"},
284         {AV_KEY_DATE_TIME, "2022-05-29 22:46:43"},
285         {AV_KEY_TITLE, "test"},
286         {AV_KEY_VIDEO_WIDTH, ""},
287         {AV_KEY_VIDEO_HEIGHT, ""},
288     };
289     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
290         std::string("/pcm_s16le_48000Hz_768kbs_mono.wav");
291     CheckMeta(uri, expectMeta);
292 }
293 
294 /**
295     * @tc.number    : ResolveMetadata_Format_WAV_0200
296     * @tc.name      : 01.WAV format Get MetaData
297     * @tc.desc      : test ResolveMetadata
298 */
299 HWTEST_F(AVMetadataUnitTest, ResolveMetadata_Format_WAV_0200, Function | MediumTest | Level0)
300 {
301     std::unordered_map<int32_t, std::string> expectMeta = {
302         {AV_KEY_ALBUM, "media"},
303         {AV_KEY_ALBUM_ARTIST, ""},
304         {AV_KEY_ARTIST, "元数据测试"},
305         {AV_KEY_AUTHOR, ""},
306         {AV_KEY_COMPOSER, ""},
307         {AV_KEY_DURATION, "5460"},
308         {AV_KEY_GENRE, "Lyrical"},
309         {AV_KEY_HAS_AUDIO, "yes"},
310         {AV_KEY_HAS_VIDEO, ""},
311         {AV_KEY_MIME_TYPE, "audio/wav"},
312         {AV_KEY_NUM_TRACKS, "1"},
313         {AV_KEY_SAMPLE_RATE, "48000"},
314         {AV_KEY_TITLE, "test"},
315         {AV_KEY_VIDEO_HEIGHT, ""},
316         {AV_KEY_VIDEO_WIDTH, ""},
317         {AV_KEY_DATE_TIME, "2022"},
318     };
319     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
320         std::string("/pcm_s16le_48000Hz_768kbs_mono_date.wav");
321     CheckMeta(uri, expectMeta);
322 }
323 
324 /**
325     * @tc.number    : FetchArtPicture_Format_MP3_0100
326     * @tc.name      : Get SURFACE FROM MP3_SURFACE.mp3
327     * @tc.desc      : Get SURFACE FROM MP3_SURFACE.mp3
328 */
329 HWTEST_F(AVMetadataUnitTest, FetchArtPicture_Format_MP3_0100, Function | MediumTest | Level0)
330 {
331     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
332         std::string("MP3_SURFACE.mp3");
333 
334     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
335     ASSERT_NE(nullptr, helper);
336     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
337     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, AVMetadataUsage::AV_META_USAGE_PIXEL_MAP));
338     std::shared_ptr<AVSharedMemory> frame = helper->FetchArtPicture();
339     helper->SurfaceToFile(frame, testInfo_->name());
340     ASSERT_EQ(51.3046875*1024, frame->GetSize());
341 }
342 
343 /**
344     * @tc.number    : FetchArtPicture_Format_MP3_0200
345     * @tc.name      : Get ArtPicture FROM H264_AAC.mp4
346     * @tc.desc      : Get ArtPicture FROM H264_AAC.mp4
347 */
348 HWTEST_F(AVMetadataUnitTest, FetchArtPicture_Format_MP3_0200, Function | MediumTest | Level0)
349 {
350     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
351         std::string("H264_AAC.mp4");
352 
353     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
354     ASSERT_NE(nullptr, helper);
355     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
356     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, AVMetadataUsage::AV_META_USAGE_PIXEL_MAP));
357     std::shared_ptr<AVSharedMemory> frame = helper->FetchArtPicture();
358     ASSERT_EQ(nullptr, frame);
359 }
360 
361 /**
362  * @tc.number    : FetchFrameAtTime_Resolution_0100
363  * @tc.name      : Resolution 170x170
364  * @tc.desc      : Get THUMBNAIL
365  */
366 HWTEST_F(AVMetadataUnitTest, FetchFrameAtTime_Resolution_0100, TestSize.Level0)
367 {
368     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
369         std::string("out_170_170.mp4");
370     GetThumbnail(uri);
371 }
372 
373 /**
374  * @tc.number    : FetchFrameAtTime_Resolution_0200
375  * @tc.name      : Resolution 480x320
376  * @tc.desc      : Get THUMBNAIL
377  */
378 HWTEST_F(AVMetadataUnitTest, FetchFrameAtTime_Resolution_0200, TestSize.Level0)
379 {
380     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
381         std::string("out_480_320.mp4");
382     GetThumbnail(uri);
383 }
384 
385 /**
386     * @tc.number    : FetchFrameAtTime_API_0100
387     * @tc.name      : FetchFrameAtTime size
388     * @tc.desc      : FetchFrameAtTime API size
389 */
390 HWTEST_F(AVMetadataUnitTest, FetchFrameAtTime_API_0100, TestSize.Level2)
391 {
392     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
393         std::string("H264_AAC.mp4");
394     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
395     ASSERT_NE(nullptr, helper);
396     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
397     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_PIXEL_MAP));
398 
399     struct PixelMapParams param = {-1, 316, PixelFormat::RGB_565};
400     int64_t timeUs = 0;
401     int32_t queryOption = AVMetadataQueryOption::AV_META_QUERY_NEXT_SYNC;
402     std::shared_ptr<PixelMap> frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
403     EXPECT_NE(nullptr, frame);
404     param = {dstWidthMin - 1, 316, PixelFormat::RGB_565};
405     frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
406     EXPECT_NE(nullptr, frame);
407     param = {dstWidthMin, 316, PixelFormat::RGB_565};
408     frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
409     EXPECT_NE(nullptr, frame);
410     param = {dstWidthMax, 316, PixelFormat::RGB_565};
411     frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
412     EXPECT_NE(nullptr, frame);
413     param = {dstWidthMax + 1, 316, PixelFormat::RGB_565};
414     frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
415     EXPECT_NE(nullptr, frame);
416     param = {316, -1, PixelFormat::RGB_565};
417     frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
418     EXPECT_NE(nullptr, frame);
419     param = {316, 0, PixelFormat::RGB_565};
420     frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
421     EXPECT_NE(nullptr, frame);
422     param = {316, dstHeightMin - 1, PixelFormat::RGB_565};
423     frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
424     EXPECT_NE(nullptr, frame);
425     param = {316, dstHeightMin, PixelFormat::RGB_565};
426     frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
427     EXPECT_NE(nullptr, frame);
428     param = {316, dstHeightMax, PixelFormat::RGB_565};
429     frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
430     EXPECT_NE(nullptr, frame);
431     param = {316, dstHeightMax + 1, PixelFormat::RGB_565};
432     frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
433     EXPECT_NE(nullptr, frame);
434     timeUs = -1;
435     param = {316, 316, PixelFormat::RGB_565};
436     frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
437     EXPECT_NE(nullptr, frame);
438     helper->Release();
439 }
440 
441 /**
442     * @tc.number    : FetchFrameAtTime_API_0200
443     * @tc.name      : FetchFrameAtTime AVMetadataQueryOption
444     * @tc.desc      : FetchFrameAtTime API AVMetadataQueryOption
445 */
446 HWTEST_F(AVMetadataUnitTest, FetchFrameAtTime_API_0200, TestSize.Level2)
447 {
448     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
449         std::string("H264_AAC.mp4");
450     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
451     ASSERT_NE(nullptr, helper);
452     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
453     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_PIXEL_MAP));
454 
455     struct PixelMapParams param = {-1, 316, PixelFormat::RGB_565};
456     int64_t timeUs = 0;
457     int32_t queryOption = AVMetadataQueryOption(100);
458     std::shared_ptr<PixelMap> frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
459     EXPECT_NE(nullptr, frame);
460     helper->Release();
461 }
462 
463 /**
464     * @tc.number    : FetchFrameAtTime_API_0300
465     * @tc.name      : FetchFrameAtTime PixelFormat
466     * @tc.desc      : FetchFrameAtTime API PixelFormat
467 */
468 HWTEST_F(AVMetadataUnitTest, FetchFrameAtTime_API_0300, TestSize.Level2)
469 {
470     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
471         std::string("H264_AAC.mp4");
472     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
473     ASSERT_NE(nullptr, helper);
474     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
475     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_PIXEL_MAP));
476 
477     struct PixelMapParams param = {-1, 316, PixelFormat::UNKNOWN};
478     int64_t timeUs = 0;
479     int32_t queryOption = AVMetadataQueryOption::AV_META_QUERY_NEXT_SYNC;
480     std::shared_ptr<PixelMap> frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
481     EXPECT_NE(nullptr, frame);
482     helper->Release();
483 }
484 
485 /**
486     * @tc.number    : FetchFrameAtTime_API_0400
487     * @tc.name      : FetchFrameAtTime PixelFormat
488     * @tc.desc      : FetchFrameAtTime API PixelFormat RGBA_8888
489 */
490 HWTEST_F(AVMetadataUnitTest, FetchFrameAtTime_API_0400, TestSize.Level2)
491 {
492     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
493         std::string("H264_AAC.mp4");
494     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
495     ASSERT_NE(nullptr, helper);
496     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
497     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_PIXEL_MAP));
498 
499     struct PixelMapParams param = {-1, 316, PixelFormat::RGBA_8888};
500     int64_t timeUs = 0;
501     int32_t queryOption = AVMetadataQueryOption::AV_META_QUERY_NEXT_SYNC;
502     std::shared_ptr<PixelMap> frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
503     EXPECT_NE(nullptr, frame);
504     helper->Release();
505 }
506 
507 /**
508     * @tc.number    : FetchFrameAtTime
509     * @tc.name      : FetchFrameAtTime AV_META_USAGE_META_ONLY
510     * @tc.desc      : FetchFrameAtTime API
511 */
HWTEST_F(AVMetadataUnitTest,FetchFrameAtTime_API_0500,Level2)512 HWTEST_F(AVMetadataUnitTest, FetchFrameAtTime_API_0500, Level2)
513 {
514     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
515         std::string("H264_AAC.mp4");
516     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
517     ASSERT_NE(nullptr, helper);
518     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
519     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_META_ONLY));
520 
521     std::string value = helper->ResolveMetadata(AV_KEY_HAS_VIDEO);
522     EXPECT_NE(value, " ");
523     helper->ResolveMetadata();
524     struct PixelMapParams param = {-1, 316, PixelFormat::RGB_565};
525     int64_t timeUs = 0;
526     int32_t queryOption = AVMetadataQueryOption::AV_META_QUERY_NEXT_SYNC;
527     std::shared_ptr<PixelMap> frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
528     EXPECT_NE(nullptr, frame);
529     helper->Release();
530 }
531 
532 /**
533     * @tc.number    : SetSource_API_0100
534     * @tc.name      : SetSource AVMetadataUsage
535     * @tc.desc      : SetSource API AVMetadataUsage
536 */
HWTEST_F(AVMetadataUnitTest,SetSource_API_0100,Level2)537 HWTEST_F(AVMetadataUnitTest, SetSource_API_0100, Level2)
538 {
539     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
540         std::string("H264_AAC.mp4");
541     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
542     ASSERT_NE(nullptr, helper);
543     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
544     EXPECT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage(100)));
545     helper->Release();
546 }
547 
548 /**
549     * @tc.number    : SetSource_API_0200
550     * @tc.name      : SetSource
551     * @tc.desc      : SetSource API
552 */
HWTEST_F(AVMetadataUnitTest,SetSource_API_0200,Level2)553 HWTEST_F(AVMetadataUnitTest, SetSource_API_0200, Level2)
554 {
555     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
556         std::string("H264_AAC.mp4");
557     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
558     ASSERT_NE(nullptr, helper);
559     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
560     struct PixelMapParams param = {-1, 316, PixelFormat::RGB_565};
561     int64_t timeUs = 0;
562     int32_t queryOption = AVMetadataQueryOption::AV_META_QUERY_NEXT_SYNC;
563     std::shared_ptr<PixelMap> frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
564     std::string value = helper->ResolveMetadata(AV_KEY_HAS_VIDEO);
565     EXPECT_NE(value, " ");
566     helper->ResolveMetadata();
567     helper->Release();
568 }
569 
570 /**
571     * @tc.number    : SetSource_API_0400
572     * @tc.name      : SetSource 1kb.mp3
573     * @tc.desc      : SetSource API
574 */
HWTEST_F(AVMetadataUnitTest,SetSource_API_0400,Level2)575 HWTEST_F(AVMetadataUnitTest, SetSource_API_0400, Level2)
576 {
577     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
578         std::string("aac_44100Hz_143kbs_stereo.aac");
579     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
580     ASSERT_NE(nullptr, helper);
581     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
582     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_PIXEL_MAP));
583 
584     std::string value = helper->ResolveMetadata(AV_KEY_HAS_VIDEO);
585     EXPECT_EQ(value, "");
586     helper->ResolveMetadata(AV_KEY_HAS_AUDIO);
587     EXPECT_EQ(value, "");
588     helper->ResolveMetadata();
589     struct PixelMapParams param = {-1, 316, PixelFormat::RGB_565};
590     int64_t timeUs = 0;
591     int32_t queryOption = AVMetadataQueryOption::AV_META_QUERY_NEXT_SYNC;
592     std::shared_ptr<PixelMap> frame = helper->FetchFrameAtTime(timeUs, queryOption, param);
593     EXPECT_EQ(nullptr, frame);
594     helper->Release();
595 }
596 
597 /**
598     * @tc.number    : SetSource_API_0500
599     * @tc.name      : SetSource error.mp4
600     * @tc.desc      : SetSource API
601 */
HWTEST_F(AVMetadataUnitTest,SetSource_API_0500,Level2)602 HWTEST_F(AVMetadataUnitTest, SetSource_API_0500, Level2)
603 {
604     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
605         std::string("error.mp4");
606     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
607     ASSERT_NE(nullptr, helper);
608     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
609     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_PIXEL_MAP));
610     uint64_t time = 0;
611     PixelMapParams param;
612     auto pixelMap = helper->FetchFrameYuv(0, time, param);
613     ASSERT_EQ(pixelMap, nullptr);
614 }
615 
616 /**
617     * @tc.number    : SetSource_API_0600
618     * @tc.name      : SetSource invalid.mp4
619     * @tc.desc      : SetSource API
620 */
HWTEST_F(AVMetadataUnitTest,SetSource_API_0600,Level2)621 HWTEST_F(AVMetadataUnitTest, SetSource_API_0600, Level2)
622 {
623     std::string uri = "file:///data/test/invalid.mp4";
624     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
625     ASSERT_NE(nullptr, helper);
626     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
627     ASSERT_NE(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_PIXEL_MAP));
628 }
629 
630 /**
631     * @tc.number    : GetFrameIndexByTime_API_0100
632     * @tc.name      : SetSource H264_AAC.mp4
633     * @tc.desc      : SetSource API
634 */
HWTEST_F(AVMetadataUnitTest,GetFrameIndexByTime_API_0100,Level2)635 HWTEST_F(AVMetadataUnitTest, GetFrameIndexByTime_API_0100, Level2)
636 {
637     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
638         std::string("H264_AAC.mp4");
639     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
640     ASSERT_NE(nullptr, helper);
641     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
642     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, AVMetadataUsage::AV_META_USAGE_PIXEL_MAP));
643     uint32_t index = 0;
644     ASSERT_EQ(MSERR_OK, helper->GetFrameIndexByTime(0, index));
645 }
646 
647 /**
648     * @tc.number    : GetTimeByFrameIndex_API_0100
649     * @tc.name      : SetSource H264_AAC.mp4
650     * @tc.desc      : SetSource API
651 */
HWTEST_F(AVMetadataUnitTest,GetTimeByFrameIndex_API_0100,Level2)652 HWTEST_F(AVMetadataUnitTest, GetTimeByFrameIndex_API_0100, Level2)
653 {
654     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
655         std::string("H264_AAC.mp4");
656     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
657     ASSERT_NE(nullptr, helper);
658     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
659     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, AVMetadataUsage::AV_META_USAGE_PIXEL_MAP));
660     uint64_t time = 0;
661     ASSERT_EQ(MSERR_OK, helper->GetTimeByFrameIndex(0, time));
662 }
663 
664 /**
665     * @tc.number    : GetFrameIndexByTime_PtsAndFrame_API_0100
666     * @tc.name      : SetSource camera_info_parser.mp4
667     * @tc.desc      : get pts by frameIndex(video track)
668 */
HWTEST_F(AVMetadataUnitTest,GetFrameIndexByTime_PtsAndFrame_API_0100,Level2)669 HWTEST_F(AVMetadataUnitTest, GetFrameIndexByTime_PtsAndFrame_API_0100, Level2)
670 {
671     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
672                       std::string("camera_info_parser.mp4");
673     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
674     ASSERT_NE(nullptr, helper);
675     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
676     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_FRAME_INDEX_CONVERT));
677     uint64_t time = 66666;
678     uint32_t index = 0;
679     ASSERT_EQ(MSERR_OK, helper->GetFrameIndexByTime(time, index));
680     ASSERT_EQ(index, 4);
681 }
682 
683 /**
684     * @tc.number    : GetFrameIndexByTime_PtsAndFrame_API_0200
685     * @tc.name      : SetSource h264.flv
686     * @tc.desc      : get pts by frameIndex(not mp4)
687 */
HWTEST_F(AVMetadataUnitTest,GetFrameIndexByTime_PtsAndFrame_API_0200,Level2)688 HWTEST_F(AVMetadataUnitTest, GetFrameIndexByTime_PtsAndFrame_API_0200, Level2)
689 {
690     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
691                       std::string("h264.flv");
692     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
693     ASSERT_NE(nullptr, helper);
694     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
695     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_FRAME_INDEX_CONVERT));
696     uint64_t time = 69659;
697     uint32_t index = 0;
698     ASSERT_NE(MSERR_OK, helper->GetFrameIndexByTime(time, index));
699 }
700 
701 /**
702     * @tc.number    : GetTimeByFrameIndex_PtsAndFrame_API_0100
703     * @tc.name      : SetSource camera_info_parser.mp4
704     * @tc.desc      : get pts by frameIndex(video track)
705 */
HWTEST_F(AVMetadataUnitTest,GetTimeByFrameIndex_PtsAndFrame_API_0100,Level2)706 HWTEST_F(AVMetadataUnitTest, GetTimeByFrameIndex_PtsAndFrame_API_0100, Level2)
707 {
708     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
709                       std::string("camera_info_parser.mp4");
710     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
711     ASSERT_NE(nullptr, helper);
712     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
713     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_FRAME_INDEX_CONVERT));
714     uint64_t time = 0;
715     uint32_t index = 2;
716     ASSERT_EQ(MSERR_OK, helper->GetTimeByFrameIndex(index, time));
717     ASSERT_EQ(time, 33333);
718 }
719 
720 /**
721     * @tc.number    : GetTimeByFrameIndex_PtsAndFrame_API_0200
722     * @tc.name      : SetSource h264.flv
723     * @tc.desc      : get pts by frameIndex(not mp4)
724 */
HWTEST_F(AVMetadataUnitTest,GetTimeByFrameIndex_PtsAndFrame_API_0200,Level2)725 HWTEST_F(AVMetadataUnitTest, GetTimeByFrameIndex_PtsAndFrame_API_0200, Level2)
726 {
727     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
728                       std::string("h264.flv");
729     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
730     ASSERT_NE(nullptr, helper);
731     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
732     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_FRAME_INDEX_CONVERT));
733     uint64_t time = 0;
734     uint32_t index = 10;
735     ASSERT_NE(MSERR_OK, helper->GetTimeByFrameIndex(index, time));
736 }
737 
738 /**
739     * @tc.number    : PtsAndFrameIndexConversion_API_0100
740     * @tc.name      : SetSource camera_info_parser.mp4
741     * @tc.desc      : pts and frameIndex convertion test(pts -> frameIndex -> pts)
742 */
HWTEST_F(AVMetadataUnitTest,PtsAndFrameIndexConversion_API_0100,Level2)743 HWTEST_F(AVMetadataUnitTest, PtsAndFrameIndexConversion_API_0100, Level2)
744 {
745     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
746                       std::string("camera_info_parser.mp4");
747     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
748     ASSERT_NE(nullptr, helper);
749     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
750     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_FRAME_INDEX_CONVERT));
751     uint64_t time = 66666;
752     uint32_t index = 0;
753     ASSERT_EQ(MSERR_OK, helper->GetFrameIndexByTime(time, index));
754     ASSERT_EQ(index, 4);
755     time = 0;
756     ASSERT_EQ(MSERR_OK, helper->GetTimeByFrameIndex(index, time));
757     ASSERT_EQ(time, 66666);
758 }
759 
760 /**
761     * @tc.number    : PtsAndFrameIndexConversion_API_0200
762     * @tc.name      : SetSource camera_info_parser.mp4
763     * @tc.desc      : pts and frameIndex convertion test(frameIndex -> pts -> frameIndex)
764 */
HWTEST_F(AVMetadataUnitTest,PtsAndFrameIndexConversion_API_0200,Level2)765 HWTEST_F(AVMetadataUnitTest, PtsAndFrameIndexConversion_API_0200, Level2)
766 {
767     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
768                       std::string("camera_info_parser.mp4");
769     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
770     ASSERT_NE(nullptr, helper);
771     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
772     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_FRAME_INDEX_CONVERT));
773     uint64_t time = 0;
774     uint32_t index = 4;
775     ASSERT_EQ(MSERR_OK, helper->GetTimeByFrameIndex(index, time));
776     ASSERT_EQ(time, 66666);
777     index = 0;
778     ASSERT_EQ(MSERR_OK, helper->GetFrameIndexByTime(time, index));
779     ASSERT_EQ(index, 4);
780 }
781 
782 /**
783     * @tc.number    : PTSOutOfRange_1000
784     * @tc.name      : SetSource camera_info_parser.mp4
785     * @tc.desc      : pts out of range
786 */
HWTEST_F(AVMetadataUnitTest,PTSOutOfRange_API_0100,Level2)787 HWTEST_F(AVMetadataUnitTest, PTSOutOfRange_API_0100, Level2)
788 {
789     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
790                       std::string("camera_info_parser.mp4");
791     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
792     ASSERT_NE(nullptr, helper);
793     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
794     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_FRAME_INDEX_CONVERT));
795     uint64_t time = 999999999;
796     uint32_t index = 0;
797     ASSERT_NE(MSERR_OK, helper->GetFrameIndexByTime(time, index));
798     ASSERT_EQ(index, 0);
799 }
800 
801 /**
802     * @tc.number    : IndexOutOfRange_API_0100
803     * @tc.name      : SetSource camera_info_parser.mp4
804     * @tc.desc      : Index out of range
805 */
HWTEST_F(AVMetadataUnitTest,IndexOutOfRange_API_0100,Level2)806 HWTEST_F(AVMetadataUnitTest, IndexOutOfRange_API_0100, Level2)
807 {
808     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
809                       std::string("camera_info_parser.mp4");
810     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
811     ASSERT_NE(nullptr, helper);
812     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
813     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_FRAME_INDEX_CONVERT));
814     uint64_t time = 0;
815     uint32_t index = 9999999;
816     ASSERT_NE(MSERR_OK, helper->GetTimeByFrameIndex(index, time));
817     ASSERT_EQ(time, 0);
818 }
819 
820 /**
821     * @tc.number    : SetSourceDoubleVideoTrack_API_0100
822     * @tc.name      : SetSource h264_double_video_audio.mp4
823     * @tc.desc      : double video track index
824 */
HWTEST_F(AVMetadataUnitTest,SetSourceDoubleVideoTrack_API_0100,Level2)825 HWTEST_F(AVMetadataUnitTest, SetSourceDoubleVideoTrack_API_0100, Level2)
826 {
827     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
828                       std::string("h264_double_video_audio.mp4");
829     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
830     ASSERT_NE(nullptr, helper);
831     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
832     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_FRAME_INDEX_CONVERT));
833     uint64_t time = 0;
834     uint32_t index = 0;
835     ASSERT_EQ(MSERR_OK, helper->GetFrameIndexByTime(time, index));
836 }
837 
838 /**
839     * @tc.number    : SetSourceDoubleVideoTrack_API_0200
840     * @tc.name      : SetSource h264_double_video_audio.mp4
841     * @tc.desc      : double video track index
842 */
HWTEST_F(AVMetadataUnitTest,SetSourceDoubleVideoTrack_API_0200,Level2)843 HWTEST_F(AVMetadataUnitTest, SetSourceDoubleVideoTrack_API_0200, Level2)
844 {
845     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
846                       std::string("h264_double_video_audio.mp4");
847     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
848     ASSERT_NE(nullptr, helper);
849     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
850     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_FRAME_INDEX_CONVERT));
851     uint64_t time = 0;
852     uint32_t index = 0;
853     ASSERT_EQ(MSERR_OK, helper->GetTimeByFrameIndex(index, time));
854 }
855 
856 /**
857     * @tc.number    : FetchFrameYuv_API_0100
858     * @tc.name      : FetchFrameYuv SDR.mp4
859     * @tc.desc      : FetchFrameYuv API
860 */
HWTEST_F(AVMetadataUnitTest,FetchFrameYuv_API_0100,Level2)861 HWTEST_F(AVMetadataUnitTest, FetchFrameYuv_API_0100, Level2)
862 {
863     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
864         std::string("SDR.mp4");
865     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
866     ASSERT_NE(nullptr, helper);
867     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
868     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_PIXEL_MAP));
869     int64_t time = 0;
870     PixelMapParams param;
871     auto pixelMap = helper->FetchFrameYuv(time, 0, param);
872     ASSERT_EQ(pixelMap->GetWidth(), 1920);
873     ASSERT_EQ(pixelMap->GetHeight(), 1080);
874 }
875 
876 /**
877     * @tc.number    : FetchFrameYuv_API_0200
878     * @tc.name      : FetchFrameYuv HDR.mp4
879     * @tc.desc      : FetchFrameYuv API
880 */
HWTEST_F(AVMetadataUnitTest,FetchFrameYuv_API_0200,Level2)881 HWTEST_F(AVMetadataUnitTest, FetchFrameYuv_API_0200, Level2)
882 {
883     std::string uri = AVMetadataTestBase::GetInstance().GetMountPath() +
884         std::string("HDR.mp4");
885     std::shared_ptr<AVMetadataMock> helper = std::make_shared<AVMetadataMock>();
886     ASSERT_NE(nullptr, helper);
887     ASSERT_EQ(true, helper->CreateAVMetadataHelper());
888     ASSERT_EQ(MSERR_OK, helper->SetSource(uri, 0, 0, AVMetadataUsage::AV_META_USAGE_PIXEL_MAP));
889     int64_t time = 0;
890     PixelMapParams param;
891     auto pixelMap = helper->FetchFrameYuv(time, 0, param);
892     ASSERT_EQ(pixelMap->GetWidth(), 1080);
893     ASSERT_EQ(pixelMap->GetHeight(), 2336);
894 }
895 } // namespace Media
896 } // namespace OHOS