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