1 /*
2 * Copyright (C) 2025 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 #include <string>
16 #include "gtest/gtest.h"
17 #include "native_avcodec_videodecoder.h"
18 #include "native_averrors.h"
19 #include "videodec_sample.h"
20 #include "videodec_api11_sample.h"
21 #include "native_avcodec_base.h"
22 #include "avcodec_codec_name.h"
23 #include "native_avcapability.h"
24 #include "native_avformat.h"
25 #include "openssl/sha.h"
26
27 #ifdef SUPPORT_DRM
28 #include "native_mediakeysession.h"
29 #include "native_mediakeysystem.h"
30 #endif
31
32 #define MAX_THREAD 16
33
34 using namespace std;
35 using namespace OHOS;
36 using namespace OHOS::Media;
37 using namespace testing::ext;
38
39 namespace OHOS {
40 namespace Media {
41 class Mpeg2SwdecFuncNdkTest : public testing::Test {
42 public:
43 static void SetUpTestCase();
44 static void TearDownTestCase();
45 void SetUp() override;
46 void TearDown() override;
47 void InputFUNCTION();
48 void OutputFUNCTION();
49 void Release();
50 int32_t Stop();
51
52 protected:
53 const string CODEC_NAME = "avdec_mpeg2";
54 const char *INP_DIR_1 = "/data/test/media/simple@low_level_352_288_30.m2v";
55 const char *INP_DIR_2 = "/data/test/media/simple@main_level_640_480_30.m2v";
56 const char *INP_DIR_3 = "/data/test/media/main@low_level_352_288_30.m2v";
57 const char *INP_DIR_4 = "/data/test/media/main@main_level_640_480_30.m2v";
58 const char *INP_DIR_5 = "/data/test/media/main@high14_level_1280_720_60.m2v";
59 const char *INP_DIR_6 = "/data/test/media/main@high_level_1920_1080_60.m2v";
60 const char *INP_DIR_7 = "/data/test/media/snr_scalable@low_level_352_288_30.m2v";
61 const char *INP_DIR_8 = "/data/test/media/snr_scalable@main_level_640_480_30.m2v";
62 const char *INP_DIR_9 = "/data/test/media/snr_scalable@high_level_1920_1080_60.m2v";
63 const char *INP_DIR_10 = "/data/test/media/spatially_scalable@low_level_352_288_30.m2v";
64 const char *INP_DIR_11 = "/data/test/media/spatially_scalable@main_level_640_480_30.m2v";
65 const char *INP_DIR_12 = "/data/test/media/spatially_scalable@high14_level_1280_720_60.m2v";
66 const char *INP_DIR_13 = "/data/test/media/spatially_scalable@high_level_1920_1080_60.m2v";
67 const char *INP_DIR_14 = "/data/test/media/high@low_level_352_288_30.m2v";
68 const char *INP_DIR_15 = "/data/test/media/high@main_level_640_480_30.m2v";
69 const char *INP_DIR_16 = "/data/test/media/high@high14_level_1280_720_60.m2v";
70 const char *INP_DIR_17 = "/data/test/media/high@high_level_1920_1080_60.m2v";
71 const char *INP_DIR_18 = "/data/test/media/422P@main_level_640_480_30.m2v";
72 const char *INP_DIR_19 = "/data/test/media/422P@high14_level_1280_720_60.m2v";
73 const char *INP_DIR_20 = "/data/test/media/422P@high_level_1920_1080_60.m2v";
74 };
75 } // namespace Media
76 } // namespace OHOS
77
78 namespace {
79 static OH_AVCapability *cap_mpeg2 = nullptr;
80 static string g_codecNameMpeg2 = "";
81 } // namespace
82
SetUpTestCase()83 void Mpeg2SwdecFuncNdkTest::SetUpTestCase()
84 {
85 cap_mpeg2 = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_MPEG2, false, SOFTWARE);
86 g_codecNameMpeg2 = OH_AVCapability_GetName(cap_mpeg2);
87 cout << "g_codecNameMpeg2: " << g_codecNameMpeg2 << endl;
88 }
TearDownTestCase()89 void Mpeg2SwdecFuncNdkTest::TearDownTestCase() {}
SetUp()90 void Mpeg2SwdecFuncNdkTest::SetUp() {}
TearDown()91 void Mpeg2SwdecFuncNdkTest::TearDown() {}
92
93 struct DecInfo {
94 const char *inpDir;
95 uint32_t defaultWidth;
96 uint32_t defaultHeight;
97 uint32_t defaultFrameRate;
98 };
99
RunDec(DecInfo decinfo)100 static void RunDec(DecInfo decinfo)
101 {
102 auto vDecSample = make_shared<VDecNdkSample>();
103 vDecSample->INP_DIR = decinfo.inpDir;
104 vDecSample->DEFAULT_WIDTH = decinfo.defaultWidth;
105 vDecSample->DEFAULT_HEIGHT = decinfo.defaultHeight;
106 vDecSample->DEFAULT_FRAME_RATE = decinfo.defaultFrameRate;
107 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameMpeg2));
108 vDecSample->WaitForEOS();
109 }
110
111 namespace {
112 /**
113 * @tc.number : VIDEO_MPEG2SWDEC_FUNCTION_0100
114 * @tc.name : decode mpeg2 stream in buffer mode ,output pixel format is NV12
115 * @tc.desc : FUNCTION test
116 */
117 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2SWDEC_FUNCTION_0100, TestSize.Level2)
118 {
119 if (cap_mpeg2 != nullptr) {
120 auto vDecSample = make_shared<VDecNdkSample>();
121 vDecSample->INP_DIR = INP_DIR_2;
122 vDecSample->DEFAULT_WIDTH = 640;
123 vDecSample->DEFAULT_HEIGHT = 480;
124 vDecSample->DEFAULT_FRAME_RATE = 30;
125 vDecSample->DEFAULT_PIXEL_FORMAT = AV_PIXEL_FORMAT_NV12;
126 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecNameMpeg2));
127 vDecSample->WaitForEOS();
128 ASSERT_EQ(0, vDecSample->errCount);
129 }
130 }
131
132 /**
133 * @tc.number : VIDEO_MPEG2SWDEC_FUNCTION_0200
134 * @tc.name : decode mpeg2 stream in buffer mode ,output pixel format is NV21
135 * @tc.desc : FUNCTION test
136 */
137 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2SWDEC_FUNCTION_0200, TestSize.Level2)
138 {
139 if (cap_mpeg2 != nullptr) {
140 auto vDecSample = make_shared<VDecNdkSample>();
141 vDecSample->INP_DIR = INP_DIR_2;
142 vDecSample->DEFAULT_WIDTH = 640;
143 vDecSample->DEFAULT_HEIGHT = 480;
144 vDecSample->DEFAULT_FRAME_RATE = 30;
145 vDecSample->DEFAULT_PIXEL_FORMAT = AV_PIXEL_FORMAT_NV21;
146 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecNameMpeg2));
147 vDecSample->WaitForEOS();
148 ASSERT_EQ(0, vDecSample->errCount);
149 }
150 }
151
152 /**
153 * @tc.number : VIDEO_MPEG2SWDEC_FUNCTION_0300
154 * @tc.name : decode mpeg2 stream in buffer mode ,output pixel format is YUV420
155 * @tc.desc : FUNCTION test
156 */
157 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2SWDEC_FUNCTION_0300, TestSize.Level2)
158 {
159 if (cap_mpeg2 != nullptr) {
160 auto vDecSample = make_shared<VDecNdkSample>();
161 vDecSample->INP_DIR = INP_DIR_2;
162 vDecSample->DEFAULT_WIDTH = 640;
163 vDecSample->DEFAULT_HEIGHT = 480;
164 vDecSample->DEFAULT_FRAME_RATE = 30;
165 vDecSample->DEFAULT_PIXEL_FORMAT = AV_PIXEL_FORMAT_YUVI420;
166 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecNameMpeg2));
167 vDecSample->WaitForEOS();
168 ASSERT_EQ(0, vDecSample->errCount);
169 }
170 }
171
172 /**
173 * @tc.number : VIDEO_MPEG2SWDEC_FUNCTION_0400
174 * @tc.name : decode mpeg2 stream in buffer mode ,output pixel format is RGBa
175 * @tc.desc : FUNCTION test
176 */
177 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2SWDEC_FUNCTION_0400, TestSize.Level2)
178 {
179 if (cap_mpeg2 != nullptr) {
180 auto vDecSample = make_shared<VDecNdkSample>();
181 vDecSample->INP_DIR = INP_DIR_2;
182 vDecSample->DEFAULT_WIDTH = 640;
183 vDecSample->DEFAULT_HEIGHT = 480;
184 vDecSample->DEFAULT_FRAME_RATE = 30;
185 vDecSample->checkOutPut = false;
186 vDecSample->DEFAULT_PIXEL_FORMAT = AV_PIXEL_FORMAT_RGBA;
187 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecNameMpeg2));
188 vDecSample->WaitForEOS();
189 ASSERT_EQ(0, vDecSample->errCount);
190 }
191 }
192
193 /**
194 * @tc.number : VIDEO_MPEG2SWDEC_FUNCTION_0500
195 * @tc.name : decode mpeg2 stream in surface mode ,output pixel format is NV12
196 * @tc.desc : FUNCTION test
197 */
198 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2SWDEC_FUNCTION_0500, TestSize.Level2)
199 {
200 if (cap_mpeg2 != nullptr) {
201 auto vDecSample = make_shared<VDecNdkSample>();
202 vDecSample->INP_DIR = INP_DIR_2;
203 vDecSample->DEFAULT_WIDTH = 640;
204 vDecSample->DEFAULT_HEIGHT = 480;
205 vDecSample->DEFAULT_FRAME_RATE = 30;
206 vDecSample->DEFAULT_PIXEL_FORMAT = AV_PIXEL_FORMAT_NV12;
207 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameMpeg2));
208 vDecSample->WaitForEOS();
209 bool isVaild = false;
210 OH_VideoDecoder_IsValid(vDecSample->vdec_, &isVaild);
211 ASSERT_EQ(false, isVaild);
212 ASSERT_EQ(0, vDecSample->errCount);
213 }
214 }
215
216 /**
217 * @tc.number : VIDEO_MPEG2SWDEC_FUNCTION_0600
218 * @tc.name : decode mpeg2 stream in surface mode ,output pixel format is NV21
219 * @tc.desc : FUNCTION test
220 */
221 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2SWDEC_FUNCTION_0600, TestSize.Level2)
222 {
223 if (cap_mpeg2 != nullptr) {
224 auto vDecSample = make_shared<VDecNdkSample>();
225 vDecSample->INP_DIR = INP_DIR_2;
226 vDecSample->DEFAULT_WIDTH = 640;
227 vDecSample->DEFAULT_HEIGHT = 480;
228 vDecSample->DEFAULT_FRAME_RATE = 30;
229 vDecSample->DEFAULT_PIXEL_FORMAT = AV_PIXEL_FORMAT_NV21;
230 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameMpeg2));
231 vDecSample->WaitForEOS();
232 bool isVaild = false;
233 OH_VideoDecoder_IsValid(vDecSample->vdec_, &isVaild);
234 ASSERT_EQ(false, isVaild);
235 ASSERT_EQ(0, vDecSample->errCount);
236 }
237 }
238
239 /**
240 * @tc.number : VIDEO_MPEG2SWDEC_FUNCTION_0700
241 * @tc.name : decode mpeg2 stream in surface mode ,output pixel format is YUV420
242 * @tc.desc : FUNCTION test
243 */
244 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2SWDEC_FUNCTION_0700, TestSize.Level2)
245 {
246 if (cap_mpeg2 != nullptr) {
247 auto vDecSample = make_shared<VDecNdkSample>();
248 vDecSample->INP_DIR = INP_DIR_2;
249 vDecSample->DEFAULT_WIDTH = 640;
250 vDecSample->DEFAULT_HEIGHT = 480;
251 vDecSample->DEFAULT_FRAME_RATE = 30;
252 vDecSample->DEFAULT_PIXEL_FORMAT = AV_PIXEL_FORMAT_YUVI420;
253 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameMpeg2));
254 vDecSample->WaitForEOS();
255 bool isVaild = false;
256 OH_VideoDecoder_IsValid(vDecSample->vdec_, &isVaild);
257 ASSERT_EQ(false, isVaild);
258 ASSERT_EQ(0, vDecSample->errCount);
259 }
260 }
261
262 /**
263 * @tc.number : VIDEO_MPEG2SWDEC_FUNCTION_0800
264 * @tc.name : decode mpeg2 stream in surface mode ,output pixel format is RGBa
265 * @tc.desc : FUNCTION test
266 */
267 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2SWDEC_FUNCTION_0800, TestSize.Level2)
268 {
269 if (cap_mpeg2 != nullptr) {
270 auto vDecSample = make_shared<VDecNdkSample>();
271 vDecSample->INP_DIR = INP_DIR_2;
272 vDecSample->DEFAULT_WIDTH = 640;
273 vDecSample->DEFAULT_HEIGHT = 480;
274 vDecSample->DEFAULT_FRAME_RATE = 30;
275 vDecSample->DEFAULT_PIXEL_FORMAT = AV_PIXEL_FORMAT_RGBA;
276 vDecSample->checkOutPut = false;
277 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameMpeg2));
278 vDecSample->WaitForEOS();
279 bool isVaild = false;
280 OH_VideoDecoder_IsValid(vDecSample->vdec_, &isVaild);
281 ASSERT_EQ(false, isVaild);
282 ASSERT_EQ(0, vDecSample->errCount);
283 }
284 }
285
286 /**
287 * @tc.number : VIDEO_MPEG2SWDEC_FUNCTION_0900
288 * @tc.name : decode mpeg2 stream ,under buffer mode
289 * @tc.desc : FUNCTION test
290 */
291 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2SWDEC_FUNCTION_0900, TestSize.Level2)
292 {
293 if (cap_mpeg2 != nullptr) {
294 DecInfo fileTest1{INP_DIR_1, 352, 288, 30};
295 RunDec(fileTest1);
296 DecInfo fileTest2{INP_DIR_2, 640, 480, 30};
297 RunDec(fileTest2);
298 DecInfo fileTest3{INP_DIR_3, 352, 288, 30};
299 RunDec(fileTest3);
300 DecInfo fileTest4{INP_DIR_4, 640, 480, 30};
301 RunDec(fileTest4);
302 DecInfo fileTest5{INP_DIR_5, 1280, 720, 60};
303 RunDec(fileTest5);
304 DecInfo fileTest6{INP_DIR_6, 1920, 1080, 60};
305 RunDec(fileTest6);
306 DecInfo fileTest7{INP_DIR_7, 352, 288, 30};
307 RunDec(fileTest7);
308 DecInfo fileTest8{INP_DIR_8, 640, 480, 30};
309 RunDec(fileTest8);
310 DecInfo fileTest9{INP_DIR_9, 1920, 1080, 60};
311 RunDec(fileTest9);
312 DecInfo fileTest10{INP_DIR_10, 352, 288, 30};
313 RunDec(fileTest10);
314 DecInfo fileTest11{INP_DIR_11, 640, 480, 30};
315 RunDec(fileTest11);
316 DecInfo fileTest12{INP_DIR_12, 1280, 720, 60};
317 RunDec(fileTest12);
318 DecInfo fileTest13{INP_DIR_13, 1920, 1080, 60};
319 RunDec(fileTest13);
320 DecInfo fileTest14{INP_DIR_14, 352, 288, 30};
321 RunDec(fileTest14);
322 DecInfo fileTest15{INP_DIR_15, 640, 480, 30};
323 RunDec(fileTest15);
324 DecInfo fileTest16{INP_DIR_16, 1280, 720, 60};
325 RunDec(fileTest16);
326 DecInfo fileTest17{INP_DIR_17, 1920, 1080, 60};
327 RunDec(fileTest17);
328 DecInfo fileTest18{INP_DIR_18, 640, 480, 30};
329 RunDec(fileTest18);
330 DecInfo fileTest19{INP_DIR_19, 1280, 720, 60};
331 RunDec(fileTest19);
332 DecInfo fileTest20{INP_DIR_20, 1920, 1080, 60};
333 RunDec(fileTest20);
334 }
335 }
336
337 /**
338 * @tc.number : VIDEO_MPEG2SWDEC_FUNCTION_1000
339 * @tc.name : odd resolution of 641 * 481
340 * @tc.desc : FUNCTION test
341 */
342 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2SWDEC_FUNCTION_1000, TestSize.Level2)
343 {
344 if (cap_mpeg2 != nullptr) {
345 auto vDecSample = make_shared<VDecNdkSample>();
346 vDecSample->INP_DIR = "/data/test/media/simple@main_level_641_481_30.m2v";
347 vDecSample->DEFAULT_WIDTH = 641;
348 vDecSample->DEFAULT_HEIGHT = 481;
349 vDecSample->DEFAULT_FRAME_RATE = 30;
350 vDecSample->SURFACE_OUTPUT = false;
351 vDecSample->checkOutPut = false;
352 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
353 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
354 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
355 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
356 vDecSample->WaitForEOS();
357 ASSERT_EQ(0, vDecSample->errCount);
358 }
359 }
360
361 /**
362 * @tc.number : VIDEO_MPEG2SWDEC_FUNCTION_1100
363 * @tc.name : odd resolution of 1281 * 721
364 * @tc.desc : FUNCTION test
365 */
366 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2SWDEC_FUNCTION_1100, TestSize.Level2)
367 {
368 if (cap_mpeg2 != nullptr) {
369 auto vDecSample = make_shared<VDecNdkSample>();
370 vDecSample->INP_DIR = "/data/test/media/main@high14_level_1281_721_60.m2v";
371 vDecSample->DEFAULT_WIDTH = 1281;
372 vDecSample->DEFAULT_HEIGHT = 721;
373 vDecSample->DEFAULT_FRAME_RATE = 60;
374 vDecSample->SURFACE_OUTPUT = false;
375 vDecSample->checkOutPut = false;
376 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
377 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
378 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
379 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
380 vDecSample->WaitForEOS();
381 ASSERT_EQ(0, vDecSample->errCount);
382 }
383 }
384
385 /**
386 * @tc.number : VIDEO_MPEG2SWDEC_FUNCTION_1200
387 * @tc.name : mpeg2 decode res change video
388 * @tc.desc : FUNCTION test
389 */
390 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2SWDEC_FUNCTION_1200, TestSize.Level2)
391 {
392 if (cap_mpeg2 != nullptr) {
393 auto vDecSample = make_shared<VDecNdkSample>();
394 vDecSample->INP_DIR = "/data/test/media/mpeg2_res_change.m2v";
395 vDecSample->DEFAULT_WIDTH = 1920;
396 vDecSample->DEFAULT_HEIGHT = 1080;
397 vDecSample->DEFAULT_FRAME_RATE = 30;
398 vDecSample->SURFACE_OUTPUT = false;
399 vDecSample->checkOutPut = false;
400 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
401 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
402 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
403 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
404 vDecSample->WaitForEOS();
405 ASSERT_EQ(0, vDecSample->errCount);
406 }
407 }
408
409 /**
410 * @tc.number : VIDEO_MPEG2SWDEC_FUNCTION_1300
411 * @tc.name : rotation is 90
412 * @tc.desc : FUNCTION test
413 */
414 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2SWDEC_FUNCTION_1300, TestSize.Level2)
415 {
416 if (cap_mpeg2 != nullptr) {
417 auto vDecSample = make_shared<VDecNdkSample>();
418 vDecSample->INP_DIR = "/data/test/media/simple@low_level_352_288_30_rotation_90.m2v";
419 vDecSample->DEFAULT_WIDTH = 352;
420 vDecSample->DEFAULT_HEIGHT = 288;
421 vDecSample->DEFAULT_FRAME_RATE = 30;
422 vDecSample->DEFAULT_ROTATION = 90;
423 vDecSample->SURFACE_OUTPUT = false;
424 vDecSample->checkOutPut = false;
425 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
426 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
427 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
428 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
429 vDecSample->WaitForEOS();
430 ASSERT_EQ(0, vDecSample->errCount);
431 }
432 }
433
434 /**
435 * @tc.number : VIDEO_MPEG2SWDEC_FUNCTION_1400
436 * @tc.name : rotation is 180
437 * @tc.desc : FUNCTION test
438 */
439 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2SWDEC_FUNCTION_1400, TestSize.Level2)
440 {
441 if (cap_mpeg2 != nullptr) {
442 auto vDecSample = make_shared<VDecNdkSample>();
443 vDecSample->INP_DIR = "/data/test/media/simple@low_level_352_288_30_rotation_180.m2v";
444 vDecSample->DEFAULT_WIDTH = 352;
445 vDecSample->DEFAULT_HEIGHT = 288;
446 vDecSample->DEFAULT_FRAME_RATE = 30;
447 vDecSample->DEFAULT_ROTATION = 180;
448 vDecSample->SURFACE_OUTPUT = false;
449 vDecSample->checkOutPut = false;
450 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
451 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
452 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
453 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
454 vDecSample->WaitForEOS();
455 ASSERT_EQ(0, vDecSample->errCount);
456 }
457 }
458
459 /**
460 * @tc.number : VIDEO_MPEG2SWDEC_FUNCTION_1500
461 * @tc.name : rotation is 270
462 * @tc.desc : FUNCTION test
463 */
464 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2SWDEC_FUNCTION_1500, TestSize.Level2)
465 {
466 if (cap_mpeg2 != nullptr) {
467 auto vDecSample = make_shared<VDecNdkSample>();
468 vDecSample->INP_DIR = "/data/test/media/simple@low_level_352_288_30_rotation_270.m2v";
469 vDecSample->DEFAULT_WIDTH = 352;
470 vDecSample->DEFAULT_HEIGHT = 288;
471 vDecSample->DEFAULT_FRAME_RATE = 30;
472 vDecSample->DEFAULT_ROTATION = 270;
473 vDecSample->SURFACE_OUTPUT = false;
474 vDecSample->checkOutPut = false;
475 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
476 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
477 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
478 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
479 vDecSample->WaitForEOS();
480 ASSERT_EQ(0, vDecSample->errCount);
481 }
482 }
483
484 /**
485 * @tc.number : VIDEO_MPEG2SWDEC_FUNCTION_1600
486 * @tc.name : unaligned byte test
487 * @tc.desc : FUNCTION test
488 */
489 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2SWDEC_FUNCTION_1600, TestSize.Level2)
490 {
491 if (cap_mpeg2 != nullptr) {
492 auto vDecSample = make_shared<VDecNdkSample>();
493 vDecSample->INP_DIR = "/data/test/media/simple@low_level_353_289_30.m2v";
494 vDecSample->DEFAULT_WIDTH = 353;
495 vDecSample->DEFAULT_HEIGHT = 289;
496 vDecSample->DEFAULT_FRAME_RATE = 30;
497 vDecSample->SURFACE_OUTPUT = false;
498 vDecSample->checkOutPut = false;
499 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
500 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
501 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
502 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
503 vDecSample->WaitForEOS();
504 ASSERT_EQ(0, vDecSample->errCount);
505 }
506 }
507
508 /**
509 * @tc.number : VIDEO_MPEG2SWDEC_FUNCTION_1700
510 * @tc.name : mpeg2 decode err resolution
511 * @tc.desc : FUNCTION test
512 */
513 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2SWDEC_FUNCTION_1700, TestSize.Level2)
514 {
515 if (cap_mpeg2 != nullptr) {
516 auto vDecSample = make_shared<VDecNdkSample>();
517 vDecSample->INP_DIR = "/data/test/media/mpeg2_err_res.m2v";
518 vDecSample->DEFAULT_WIDTH = 1920;
519 vDecSample->DEFAULT_HEIGHT = 1080;
520 vDecSample->DEFAULT_FRAME_RATE = 30;
521 vDecSample->SURFACE_OUTPUT = false;
522 vDecSample->checkOutPut = false;
523 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
524 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
525 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
526 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
527 vDecSample->WaitForEOS();
528 ASSERT_EQ(0, vDecSample->errCount);
529 }
530 }
531
532 /**
533 * @tc.number : VIDEO_MPEG2VIDEO_SURF_CHANGE_0100
534 * @tc.name : 1080p ,surf model change in normal state
535 * @tc.desc : FUNCTION test
536 */
537 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_SURF_CHANGE_0100, TestSize.Level2)
538 {
539 if (cap_mpeg2 != nullptr) {
540 auto vDecSample = make_shared<VDecAPI11Sample>();
541 vDecSample->INP_DIR = INP_DIR_6;
542 vDecSample->DEFAULT_WIDTH = 1920;
543 vDecSample->DEFAULT_HEIGHT = 1080;
544 vDecSample->DEFAULT_FRAME_RATE = 60;
545 vDecSample->SURFACE_OUTPUT = true;
546 vDecSample->autoSwitchSurface = true;
547 vDecSample->AFTER_EOS_DESTORY_CODEC = false;
548 vDecSample->sleepOnFPS = true;
549 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameMpeg2));
550 vDecSample->WaitForEOS();
551 ASSERT_EQ(AV_ERR_OK, vDecSample->Reset());
552 ASSERT_EQ(AV_ERR_INVALID_STATE, vDecSample->SwitchSurface());
553 ASSERT_EQ(AV_ERR_OK, vDecSample->Release());
554 }
555 }
556
557 /**
558 * @tc.number : VIDEO_MPEG2VIDEO_SURF_CHANGE_0200
559 * @tc.name : 1080p ,surf model change in flushed state
560 * @tc.desc : FUNCTION test
561 */
562 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_SURF_CHANGE_0200, TestSize.Level2)
563 {
564 if (cap_mpeg2 != nullptr) {
565 auto vDecSample = make_shared<VDecAPI11Sample>();
566 vDecSample->INP_DIR = INP_DIR_6;
567 vDecSample->DEFAULT_WIDTH = 1920;
568 vDecSample->DEFAULT_HEIGHT = 1080;
569 vDecSample->DEFAULT_FRAME_RATE = 60;
570 vDecSample->SURFACE_OUTPUT = true;
571 vDecSample->autoSwitchSurface = true;
572 vDecSample->sleepOnFPS = true;
573 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameMpeg2));
574 ASSERT_EQ(AV_ERR_OK, vDecSample->Flush());
575 ASSERT_EQ(AV_ERR_OK, vDecSample->SwitchSurface());
576 ASSERT_EQ(AV_ERR_OK, vDecSample->Stop());
577 }
578 }
579
580 /**
581 * @tc.number : VIDEO_MPEG2VIDEO_SURF_CHANGE_0300
582 * @tc.name : 1080p ,surf model change in runing state
583 * @tc.desc : FUNCTION test
584 */
585 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_SURF_CHANGE_0300, TestSize.Level2)
586 {
587 if (cap_mpeg2 != nullptr) {
588 auto vDecSample = make_shared<VDecAPI11Sample>();
589 vDecSample->INP_DIR = INP_DIR_6;
590 vDecSample->DEFAULT_WIDTH = 1920;
591 vDecSample->DEFAULT_HEIGHT = 1080;
592 vDecSample->DEFAULT_FRAME_RATE = 60;
593 vDecSample->SURFACE_OUTPUT = false;
594 vDecSample->autoSwitchSurface = false;
595 vDecSample->CreateSurface();
596 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecNameMpeg2));
597 ASSERT_EQ(AV_ERR_OPERATE_NOT_PERMIT, vDecSample->SwitchSurface());
598 vDecSample->WaitForEOS();
599 ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
600 }
601 }
602
603 /**
604 * @tc.number : VIDEO_MPEG2VIDEO_SURF_CHANGE_0400
605 * @tc.name : 1080p ,repeat call setSurface fastly
606 * @tc.desc : FUNCTION test
607 */
608 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_SURF_CHANGE_0400, TestSize.Level2)
609 {
610 if (cap_mpeg2 != nullptr) {
611 auto vDecSample = make_shared<VDecAPI11Sample>();
612 vDecSample->INP_DIR = INP_DIR_6;
613 vDecSample->DEFAULT_WIDTH = 1920;
614 vDecSample->DEFAULT_HEIGHT = 1080;
615 vDecSample->DEFAULT_FRAME_RATE = 60;
616 vDecSample->SURFACE_OUTPUT = true;
617 vDecSample->autoSwitchSurface = true;
618 vDecSample->sleepOnFPS = true;
619 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameMpeg2));
620 ASSERT_EQ(AV_ERR_OK, vDecSample->SwitchSurface());
621 vDecSample->WaitForEOS();
622 }
623 }
624
625 /**
626 * @tc.number : VIDEO_MPEG2VIDEO_SURF_CHANGE_0500
627 * @tc.name : 1080p ,surf model change in flush to runnig state
628 * @tc.desc : FUNCTION test
629 */
630 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_SURF_CHANGE_0500, TestSize.Level2)
631 {
632 if (cap_mpeg2 != nullptr) {
633 auto vDecSample = make_shared<VDecAPI11Sample>();
634 vDecSample->INP_DIR = INP_DIR_6;
635 vDecSample->DEFAULT_WIDTH = 1920;
636 vDecSample->DEFAULT_HEIGHT = 1080;
637 vDecSample->DEFAULT_FRAME_RATE = 60;
638 vDecSample->SURFACE_OUTPUT = true;
639 vDecSample->autoSwitchSurface = true;
640 vDecSample->AFTER_EOS_DESTORY_CODEC = false;
641 vDecSample->sleepOnFPS = true;
642 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameMpeg2));
643 ASSERT_EQ(AV_ERR_OK, vDecSample->Flush());
644 ASSERT_EQ(AV_ERR_OK, vDecSample->Start());
645 ASSERT_EQ(AV_ERR_OK, vDecSample->SwitchSurface());
646 }
647 }
648
649 /**
650 * @tc.number : VIDEO_MPEG2VIDEO_SURF_CHANGE_0600
651 * @tc.name : 1080p ,surf model change in decoder finish to End-of-Stream state
652 * @tc.desc : FUNCTION test
653 */
654 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_SURF_CHANGE_0600, TestSize.Level2)
655 {
656 if (cap_mpeg2 != nullptr) {
657 auto vDecSample = make_shared<VDecAPI11Sample>();
658 vDecSample->INP_DIR = INP_DIR_6;
659 vDecSample->DEFAULT_WIDTH = 1920;
660 vDecSample->DEFAULT_HEIGHT = 1080;
661 vDecSample->DEFAULT_FRAME_RATE = 60;
662 vDecSample->autoSwitchSurface = true;
663 vDecSample->AFTER_EOS_DESTORY_CODEC = false;
664 vDecSample->sleepOnFPS = true;
665 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameMpeg2));
666 vDecSample->WaitForEOS();
667 ASSERT_EQ(AV_ERR_OK, vDecSample->SwitchSurface());
668 }
669 }
670
671 /**
672 * @tc.number : VIDEO_MPEG2VIDEO_SURF_CHANGE_0700
673 * @tc.name : 1080p ,surf model change in config state
674 * @tc.desc : FUNCTION test
675 */
676 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_SURF_CHANGE_0700, TestSize.Level2)
677 {
678 if (cap_mpeg2 != nullptr) {
679 auto vDecSample = make_shared<VDecAPI11Sample>();
680 vDecSample->INP_DIR = INP_DIR_6;
681 vDecSample->DEFAULT_WIDTH = 1920;
682 vDecSample->DEFAULT_HEIGHT = 1080;
683 vDecSample->DEFAULT_FRAME_RATE = 60;
684 vDecSample->SURFACE_OUTPUT = false;
685 vDecSample->autoSwitchSurface = false;
686 vDecSample->CreateSurface();
687 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
688 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
689 ASSERT_EQ(AV_ERR_OK, vDecSample->SwitchSurface());
690 vDecSample->WaitForEOS();
691 ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
692 }
693 }
694
695 /**
696 * @tc.number : VIDEO_MPEG2VIDEO_SURF_CHANGE_0800
697 * @tc.name : Two object repeat call setSurface fastly
698 * @tc.desc : FUNCTION test
699 */
700 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_SURF_CHANGE_0800, TestSize.Level2)
701 {
702 if (cap_mpeg2 != nullptr) {
703 auto vDecSample = make_shared<VDecAPI11Sample>();
704 vDecSample->INP_DIR = INP_DIR_6;
705 vDecSample->DEFAULT_WIDTH = 1920;
706 vDecSample->DEFAULT_HEIGHT = 1080;
707 vDecSample->DEFAULT_FRAME_RATE = 60;
708 vDecSample->autoSwitchSurface = true;
709 vDecSample->sleepOnFPS = true;
710 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameMpeg2));
711 ASSERT_EQ(AV_ERR_OK, vDecSample->SwitchSurface());
712 vDecSample->WaitForEOS();
713 auto vDecSample_1 = make_shared<VDecAPI11Sample>();
714 vDecSample_1->INP_DIR = INP_DIR_6;
715 vDecSample_1->DEFAULT_WIDTH = 1920;
716 vDecSample_1->DEFAULT_HEIGHT = 1080;
717 vDecSample_1->DEFAULT_FRAME_RATE = 60;
718 vDecSample_1->autoSwitchSurface = true;
719 vDecSample_1->sleepOnFPS = true;
720 ASSERT_EQ(AV_ERR_OK, vDecSample_1->RunVideoDec_Surface(g_codecNameMpeg2));
721 ASSERT_EQ(AV_ERR_OK, vDecSample_1->SwitchSurface());
722 vDecSample_1->WaitForEOS();
723 }
724 }
725
726 /**
727 * @tc.number : VIDEO_MPEG2VIDEO_SURF_CHANGE_0900
728 * @tc.name : repeat call setSurface fastly 2 time
729 * @tc.desc : FUNCTION test
730 */
731 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_SURF_CHANGE_0900, TestSize.Level2)
732 {
733 if (cap_mpeg2 != nullptr) {
734 for (int i = 0; i < 2; i++) {
735 auto vDecSample = make_shared<VDecAPI11Sample>();
736 vDecSample->INP_DIR = INP_DIR_6;
737 vDecSample->DEFAULT_WIDTH = 1920;
738 vDecSample->DEFAULT_HEIGHT = 1080;
739 vDecSample->DEFAULT_FRAME_RATE = 60;
740 vDecSample->autoSwitchSurface = true;
741 vDecSample->sleepOnFPS = true;
742 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameMpeg2));
743 ASSERT_EQ(AV_ERR_OK, vDecSample->RepeatCallSetSurface());
744 vDecSample->WaitForEOS();
745 }
746 }
747 }
748
749 /**
750 * @tc.number : VIDEO_MPEG2VIDEO_PARA_0100
751 * @tc.name : width is -1 ,height is -1
752 * @tc.desc : FUNCTION test
753 */
754 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_PARA_0100, TestSize.Level2)
755 {
756 if (cap_mpeg2 != nullptr) {
757 auto vDecSample = make_shared<VDecNdkSample>();
758 vDecSample->INP_DIR = INP_DIR_2;
759 vDecSample->DEFAULT_WIDTH = -1;
760 vDecSample->DEFAULT_HEIGHT = -1;
761 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
762 ASSERT_NE(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
763 ASSERT_EQ(0, vDecSample->errCount);
764 }
765 }
766
767 /**
768 * @tc.number : VIDEO_MPEG2VIDEO_PARA_0200
769 * @tc.name : width is 0 ,height is 0
770 * @tc.desc : FUNCTION test
771 */
772 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_PARA_0200, TestSize.Level2)
773 {
774 if (cap_mpeg2 != nullptr) {
775 auto vDecSample = make_shared<VDecNdkSample>();
776 vDecSample->INP_DIR = INP_DIR_2;
777 vDecSample->DEFAULT_WIDTH = 0;
778 vDecSample->DEFAULT_HEIGHT = 0;
779 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
780 ASSERT_NE(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
781 ASSERT_EQ(0, vDecSample->errCount);
782 }
783 }
784
785 /**
786 * @tc.number : VIDEO_MPEG2VIDEO_PARA_0300
787 * @tc.name : width is 1 ,height is 1
788 * @tc.desc : FUNCTION test
789 */
790 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_PARA_0300, TestSize.Level2)
791 {
792 if (cap_mpeg2 != nullptr) {
793 auto vDecSample = make_shared<VDecNdkSample>();
794 vDecSample->INP_DIR = INP_DIR_2;
795 vDecSample->DEFAULT_WIDTH = 1;
796 vDecSample->DEFAULT_HEIGHT = 1;
797 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
798 ASSERT_NE(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
799 ASSERT_EQ(0, vDecSample->errCount);
800 }
801 }
802
803 /**
804 * @tc.number : VIDEO_MPEG2VIDEO_PARA_0400
805 * @tc.name : width is 1920 ,height is 1080
806 * @tc.desc : FUNCTION test
807 */
808 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_PARA_0400, TestSize.Level2)
809 {
810 if (cap_mpeg2 != nullptr) {
811 auto vDecSample = make_shared<VDecNdkSample>();
812 vDecSample->INP_DIR = INP_DIR_2;
813 vDecSample->DEFAULT_WIDTH = 1920;
814 vDecSample->DEFAULT_HEIGHT = 1080;
815 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
816 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
817 ASSERT_EQ(0, vDecSample->errCount);
818 }
819 }
820
821 /**
822 * @tc.number : VIDEO_MPEG2VIDEO_PARA_0500
823 * @tc.name : width is 4097 ,height is 4097
824 * @tc.desc : FUNCTION test
825 */
826 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_PARA_0500, TestSize.Level2)
827 {
828 if (cap_mpeg2 != nullptr) {
829 auto vDecSample = make_shared<VDecNdkSample>();
830 vDecSample->INP_DIR = INP_DIR_2;
831 vDecSample->DEFAULT_WIDTH = 4097;
832 vDecSample->DEFAULT_HEIGHT = 4097;
833 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
834 ASSERT_NE(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
835 ASSERT_EQ(0, vDecSample->errCount);
836 }
837 }
838
839 /**
840 * @tc.number : VIDEO_MPEG2VIDEO_PARA_0600
841 * @tc.name : width is 10000 ,height is 10000
842 * @tc.desc : FUNCTION test
843 */
844 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_PARA_0600, TestSize.Level2)
845 {
846 if (cap_mpeg2 != nullptr) {
847 auto vDecSample = make_shared<VDecNdkSample>();
848 vDecSample->INP_DIR = INP_DIR_2;
849 vDecSample->DEFAULT_WIDTH = 10000;
850 vDecSample->DEFAULT_HEIGHT = 10000;
851 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
852 ASSERT_NE(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
853 ASSERT_EQ(0, vDecSample->errCount);
854 }
855 }
856
857 /**
858 * @tc.number : VIDEO_MPEG2VIDEO_PARA_0700
859 * @tc.name : framerate is -1
860 * @tc.desc : FUNCTION test
861 */
862 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_PARA_0700, TestSize.Level2)
863 {
864 if (cap_mpeg2 != nullptr) {
865 auto vDecSample = make_shared<VDecNdkSample>();
866 vDecSample->INP_DIR = INP_DIR_2;
867 vDecSample->DEFAULT_WIDTH = 640;
868 vDecSample->DEFAULT_HEIGHT = 480;
869 vDecSample->DEFAULT_FRAME_RATE = -1;
870 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
871 ASSERT_NE(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
872 ASSERT_EQ(0, vDecSample->errCount);
873 }
874 }
875
876 /**
877 * @tc.number : VIDEO_MPEG2VIDEO_PARA_0800
878 * @tc.name : framerate is 0
879 * @tc.desc : FUNCTION test
880 */
881 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_PARA_0800, TestSize.Level2)
882 {
883 if (cap_mpeg2 != nullptr) {
884 auto vDecSample = make_shared<VDecNdkSample>();
885 vDecSample->INP_DIR = INP_DIR_2;
886 vDecSample->DEFAULT_WIDTH = 640;
887 vDecSample->DEFAULT_HEIGHT = 480;
888 vDecSample->DEFAULT_FRAME_RATE = 0;
889 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
890 ASSERT_NE(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
891 ASSERT_EQ(0, vDecSample->errCount);
892 }
893 }
894
895 /**
896 * @tc.number : VIDEO_MPEG2VIDEO_PARA_0900
897 * @tc.name : framerate is 10000
898 * @tc.desc : FUNCTION test
899 */
900 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_PARA_0900, TestSize.Level2)
901 {
902 if (cap_mpeg2 != nullptr) {
903 auto vDecSample = make_shared<VDecNdkSample>();
904 vDecSample->INP_DIR = INP_DIR_2;
905 vDecSample->DEFAULT_WIDTH = 640;
906 vDecSample->DEFAULT_HEIGHT = 480;
907 vDecSample->DEFAULT_FRAME_RATE = 10000;
908 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
909 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
910 vDecSample->WaitForEOS();
911 ASSERT_EQ(0, vDecSample->errCount);
912 }
913 }
914
915 /**
916 * @tc.number : VIDEO_MPEG2VIDEO_PARA_1000
917 * @tc.name : MPEG2 decoder, MPEG4 input
918 * @tc.desc : FUNCTION test
919 */
920 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_MPEG2VIDEO_PARA_1000, TestSize.Level2)
921 {
922 if (cap_mpeg2 != nullptr) {
923 auto vDecSample = make_shared<VDecNdkSample>();
924 vDecSample->INP_DIR = "/data/test/media/mpeg4.m4v";
925 vDecSample->DEFAULT_WIDTH = 1280;
926 vDecSample->DEFAULT_HEIGHT = 720;
927 vDecSample->DEFAULT_FRAME_RATE = 30;
928 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
929 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
930 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
931 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
932 vDecSample->WaitForEOS();
933 ASSERT_EQ(0, vDecSample->errCount);
934 }
935 }
936
937 /**
938 * @tc.number : VIDEO_DECODE_SYNC_SWMPEG2_FUNC_0010
939 * @tc.name : mpeg2同步软解输出nv12
940 * @tc.desc : function test
941 */
942 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_DECODE_SYNC_SWMPEG2_FUNC_0010, TestSize.Level1)
943 {
944 if (cap_mpeg2 != nullptr) {
945 auto vDecSample = make_shared<VDecAPI11Sample>();
946 vDecSample->INP_DIR = INP_DIR_6;
947 vDecSample->DEFAULT_WIDTH = 1920;
948 vDecSample->DEFAULT_HEIGHT = 1080;
949 vDecSample->DEFAULT_FRAME_RATE = 30;
950 vDecSample->enbleSyncMode = 1;
951 vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV12;
952 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
953 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
954 ASSERT_EQ(AV_ERR_OK, vDecSample->StartSyncVideoDecoder());
955 vDecSample->WaitForEOS();
956 ASSERT_EQ(0, vDecSample->errCount);
957 }
958 }
959
960 /**
961 * @tc.number : VIDEO_DECODE_SYNC_SWMPEG2_FUNC_0020
962 * @tc.name : mpeg2同步软解输出nv21
963 * @tc.desc : function test
964 */
965 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_DECODE_SYNC_SWMPEG2_FUNC_0020, TestSize.Level0)
966 {
967 if (cap_mpeg2 != nullptr) {
968 auto vDecSample = make_shared<VDecAPI11Sample>();
969 vDecSample->INP_DIR = INP_DIR_6;
970 vDecSample->DEFAULT_WIDTH = 1920;
971 vDecSample->DEFAULT_HEIGHT = 1080;
972 vDecSample->DEFAULT_FRAME_RATE = 30;
973 vDecSample->enbleSyncMode = 1;
974 vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
975 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
976 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
977 ASSERT_EQ(AV_ERR_OK, vDecSample->StartSyncVideoDecoder());
978 vDecSample->WaitForEOS();
979 ASSERT_EQ(0, vDecSample->errCount);
980 }
981 }
982
983 /**
984 * @tc.number : VIDEO_DECODE_SYNC_SWMPEG2_FUNC_0030
985 * @tc.name : mpeg2同步软解输出surface
986 * @tc.desc : function test
987 */
988 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_DECODE_SYNC_SWMPEG2_FUNC_0030, TestSize.Level1)
989 {
990 if (cap_mpeg2 != nullptr) {
991 auto vDecSample = make_shared<VDecAPI11Sample>();
992 vDecSample->INP_DIR = INP_DIR_6;
993 vDecSample->DEFAULT_WIDTH = 1920;
994 vDecSample->DEFAULT_HEIGHT = 1080;
995 vDecSample->DEFAULT_FRAME_RATE = 30;
996 vDecSample->SURFACE_OUTPUT = true;
997 vDecSample->enbleSyncMode = 1;
998 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
999 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1000 ASSERT_EQ(AV_ERR_OK, vDecSample->DecodeSetSurface());
1001 ASSERT_EQ(AV_ERR_OK, vDecSample->StartSyncVideoDecoder());
1002 vDecSample->WaitForEOS();
1003 ASSERT_EQ(0, vDecSample->errCount);
1004 }
1005 }
1006
1007 /**
1008 * @tc.number : VIDEO_DECODE_SYNC_SWMPEG2_FUNC_0040
1009 * @tc.name : 264同步软解输出rgba
1010 * @tc.desc : function test
1011 */
1012 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_DECODE_SYNC_SWMPEG2_FUNC_0040, TestSize.Level1)
1013 {
1014 if (cap_mpeg2 != nullptr) {
1015 auto vDecSample = make_shared<VDecAPI11Sample>();
1016 vDecSample->INP_DIR = INP_DIR_6;
1017 vDecSample->DEFAULT_WIDTH = 1920;
1018 vDecSample->DEFAULT_HEIGHT = 1080;
1019 vDecSample->DEFAULT_FRAME_RATE = 30;
1020 vDecSample->enbleSyncMode = 1;
1021 vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_RGBA;
1022 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
1023 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1024 ASSERT_EQ(AV_ERR_OK, vDecSample->StartSyncVideoDecoder());
1025 vDecSample->WaitForEOS();
1026 ASSERT_EQ(0, vDecSample->errCount);
1027 }
1028 }
1029
1030 /**
1031 * @tc.number : VIDEO_DECODE_BLANK_FRAME_0010
1032 * @tc.name : config OH_MD_KEY_VIDEO_DECODER_BLANK_FRAME_ON_SHUTDOWN, decoder mpeg2
1033 * @tc.desc : function test
1034 */
1035 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_DECODE_BLANK_FRAME_0010, TestSize.Level2)
1036 {
1037 if (cap_mpeg2 != nullptr) {
1038 auto vDecSample = make_shared<VDecAPI11Sample>();
1039 vDecSample->INP_DIR = INP_DIR_6;
1040 vDecSample->DEFAULT_WIDTH = 1920;
1041 vDecSample->DEFAULT_HEIGHT = 1080;
1042 vDecSample->DEFAULT_FRAME_RATE = 30;
1043 vDecSample->enbleBlankFrame = 1;
1044 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecNameMpeg2));
1045 vDecSample->WaitForEOS();
1046 ASSERT_EQ(0, vDecSample->errCount);
1047 }
1048 }
1049
1050 /**
1051 * @tc.number : VIDEO_DECODE_BLANK_FRAME_0020
1052 * @tc.name : config OH_MD_KEY_VIDEO_DECODER_BLANK_FRAME_ON_SHUTDOWN, decoder mpeg2,surface
1053 * @tc.desc : function test
1054 */
1055 HWTEST_F(Mpeg2SwdecFuncNdkTest, VIDEO_DECODE_BLANK_FRAME_0020, TestSize.Level2)
1056 {
1057 if (cap_mpeg2 != nullptr) {
1058 auto vDecSample = make_shared<VDecAPI11Sample>();
1059 vDecSample->INP_DIR = INP_DIR_6;
1060 vDecSample->DEFAULT_WIDTH = 1920;
1061 vDecSample->DEFAULT_HEIGHT = 1080;
1062 vDecSample->DEFAULT_FRAME_RATE = 30;
1063 vDecSample->enbleBlankFrame = 1;
1064 vDecSample->SURFACE_OUTPUT = true;
1065 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameMpeg2));
1066 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1067 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1068 ASSERT_EQ(AV_ERR_OK, vDecSample->DecodeSetSurface());
1069 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1070 vDecSample->WaitForEOS();
1071 ASSERT_EQ(0, vDecSample->errCount);
1072 }
1073 }
1074 }