1 /*
2 * Copyright (C) 2023 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 <iostream>
17 #include <cstdio>
18
19 #include <atomic>
20 #include <fstream>
21 #include <thread>
22 #include <mutex>
23 #include <queue>
24 #include <string>
25
26 #include "gtest/gtest.h"
27 #include "videodec_sample.h"
28 using namespace std;
29 using namespace OHOS;
30 using namespace OHOS::Media;
31 using namespace testing::ext;
32 namespace OHOS {
33 namespace Media {
34 class SwdecCompNdkTest : public testing::Test {
35 public:
36 // SetUpTestCase: Called before all test cases
37 static void SetUpTestCase(void);
38 // TearDownTestCase: Called after all test case
39 static void TearDownTestCase(void);
40 // SetUp: Called before each test cases
41 void SetUp(void);
42 // TearDown: Called after each test cases
43 void TearDown(void);
44
45 protected:
46 const ::testing::TestInfo *testInfo_ = nullptr;
47 bool createCodecSuccess_ = false;
48 };
49
SetUpTestCase(void)50 void SwdecCompNdkTest::SetUpTestCase(void) {}
TearDownTestCase(void)51 void SwdecCompNdkTest::TearDownTestCase(void) {}
SetUp(void)52 void SwdecCompNdkTest::SetUp(void) {}
TearDown(void)53 void SwdecCompNdkTest::TearDown(void) {}
54 } // namespace Media
55 } // namespace OHOS
56
57 namespace {
58 /**
59 * @tc.number : VIDEO_SWDEC_H264_IPB_0100
60 * @tc.name : software decode all idr frame
61 * @tc.desc : function test
62 */
63 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_IPB_0100, TestSize.Level0)
64 {
65 VDecNdkSample *vDecSample = new VDecNdkSample();
66
67 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
68 ASSERT_EQ(AV_ERR_OK, ret);
69 ret = vDecSample->SetVideoDecoderCallback();
70 ASSERT_EQ(AV_ERR_OK, ret);
71 ret = vDecSample->ConfigureVideoDecoder();
72 ASSERT_EQ(AV_ERR_OK, ret);
73 vDecSample->INP_DIR = "/data/test/media/1920x1080I.h264";
74 ret = vDecSample->StartVideoDecoder();
75 ASSERT_EQ(AV_ERR_OK, ret);
76 vDecSample->WaitForEOS();
77 ASSERT_EQ(0, vDecSample->errCount);
78 vDecSample->Stop();
79 vDecSample->Release();
80 }
81
82 /**
83 * @tc.number : VIDEO_SWDEC_H264_IPB_0200
84 * @tc.name : software decode single idr frame
85 * @tc.desc : function test
86 */
87 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_IPB_0200, TestSize.Level0)
88 {
89 VDecNdkSample *vDecSample = new VDecNdkSample();
90
91 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
92 ASSERT_EQ(AV_ERR_OK, ret);
93 ret = vDecSample->SetVideoDecoderCallback();
94 ASSERT_EQ(AV_ERR_OK, ret);
95 ret = vDecSample->ConfigureVideoDecoder();
96 ASSERT_EQ(AV_ERR_OK, ret);
97 vDecSample->INP_DIR = "/data/test/media/1920x1080IP.h264";
98 ret = vDecSample->StartVideoDecoder();
99 ASSERT_EQ(AV_ERR_OK, ret);
100 vDecSample->WaitForEOS();
101 ASSERT_EQ(0, vDecSample->errCount);
102 vDecSample->Stop();
103 vDecSample->Release();
104 }
105
106 /**
107 * @tc.number : VIDEO_SWDEC_H264_IPB_0300
108 * @tc.name : software decode all idr frame
109 * @tc.desc : function test
110 */
111 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_IPB_0300, TestSize.Level0)
112 {
113 VDecNdkSample *vDecSample = new VDecNdkSample();
114
115 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
116 ASSERT_EQ(AV_ERR_OK, ret);
117 ret = vDecSample->SetVideoDecoderCallback();
118 ASSERT_EQ(AV_ERR_OK, ret);
119 ret = vDecSample->ConfigureVideoDecoder();
120 ASSERT_EQ(AV_ERR_OK, ret);
121 vDecSample->INP_DIR = "/data/test/media/1920x1080IPB.h264";
122 ret = vDecSample->StartVideoDecoder();
123 ASSERT_EQ(AV_ERR_OK, ret);
124 vDecSample->WaitForEOS();
125 ASSERT_EQ(0, vDecSample->errCount);
126 vDecSample->Stop();
127 vDecSample->Release();
128 }
129
130 /**
131 * @tc.number : VIDEO_SWDEC_H264_SVC_0100
132 * @tc.name : software decode all type frame
133 * @tc.desc : function test
134 */
135 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_SVC_0100, TestSize.Level0)
136 {
137 VDecNdkSample *vDecSample = new VDecNdkSample();
138
139 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
140 ASSERT_EQ(AV_ERR_OK, ret);
141 ret = vDecSample->SetVideoDecoderCallback();
142 ASSERT_EQ(AV_ERR_OK, ret);
143 ret = vDecSample->ConfigureVideoDecoder();
144 ASSERT_EQ(AV_ERR_OK, ret);
145 vDecSample->INP_DIR = "/data/test/media/1920x1080IPB.h264";
146 ret = vDecSample->StartVideoDecoder();
147 ASSERT_EQ(AV_ERR_OK, ret);
148 vDecSample->WaitForEOS();
149 ASSERT_EQ(0, vDecSample->errCount);
150 vDecSample->Stop();
151 vDecSample->Release();
152 }
153
154 /**
155 * @tc.number : VIDEO_SWDEC_H264_01_0200
156 * @tc.name : software decode frame
157 * @tc.desc : function test
158 */
159 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_01_0200, TestSize.Level0)
160 {
161 VDecNdkSample *vDecSample = new VDecNdkSample();
162
163 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
164 ASSERT_EQ(AV_ERR_OK, ret);
165 ret = vDecSample->SetVideoDecoderCallback();
166 ASSERT_EQ(AV_ERR_OK, ret);
167 ret = vDecSample->ConfigureVideoDecoder();
168 ASSERT_EQ(AV_ERR_OK, ret);
169 vDecSample->INP_DIR = "/data/test/media/3840x2160_60_10Mb.h264";
170 ret = vDecSample->StartVideoDecoder();
171 ASSERT_EQ(AV_ERR_OK, ret);
172 vDecSample->WaitForEOS();
173 ASSERT_EQ(0, vDecSample->errCount);
174 vDecSample->Stop();
175 vDecSample->Release();
176 }
177
178 /**
179 * @tc.number : VIDEO_SWDEC_H264_01_0300
180 * @tc.name : software decode frame
181 * @tc.desc : function test
182 */
183 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_01_0300, TestSize.Level0)
184 {
185 VDecNdkSample *vDecSample = new VDecNdkSample();
186
187 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
188 ASSERT_EQ(AV_ERR_OK, ret);
189 ret = vDecSample->SetVideoDecoderCallback();
190 ASSERT_EQ(AV_ERR_OK, ret);
191 ret = vDecSample->ConfigureVideoDecoder();
192 ASSERT_EQ(AV_ERR_OK, ret);
193 vDecSample->INP_DIR = "/data/test/media/1920x1080_60_10Mb.h264";
194 ret = vDecSample->StartVideoDecoder();
195 ASSERT_EQ(AV_ERR_OK, ret);
196 vDecSample->WaitForEOS();
197 ASSERT_EQ(0, vDecSample->errCount);
198 vDecSample->Stop();
199 vDecSample->Release();
200 }
201
202 /**
203 * @tc.number : VIDEO_SWDEC_H264_01_0400
204 * @tc.name : software decode frame
205 * @tc.desc : function test
206 */
207 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_01_0400, TestSize.Level0)
208 {
209 VDecNdkSample *vDecSample = new VDecNdkSample();
210
211 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
212 ASSERT_EQ(AV_ERR_OK, ret);
213 ret = vDecSample->SetVideoDecoderCallback();
214 ASSERT_EQ(AV_ERR_OK, ret);
215 ret = vDecSample->ConfigureVideoDecoder();
216 ASSERT_EQ(AV_ERR_OK, ret);
217 vDecSample->INP_DIR = "/data/test/media/1504x720_60_10Mb.h264";
218 ret = vDecSample->StartVideoDecoder();
219 ASSERT_EQ(AV_ERR_OK, ret);
220 vDecSample->WaitForEOS();
221 ASSERT_EQ(0, vDecSample->errCount);
222 vDecSample->Stop();
223 vDecSample->Release();
224 }
225
226 /**
227 * @tc.number : VIDEO_SWDEC_H264_01_0500
228 * @tc.name : software decode frame
229 * @tc.desc : function test
230 */
231 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_01_0500, TestSize.Level0)
232 {
233 VDecNdkSample *vDecSample = new VDecNdkSample();
234
235 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
236 ASSERT_EQ(AV_ERR_OK, ret);
237 ret = vDecSample->SetVideoDecoderCallback();
238 ASSERT_EQ(AV_ERR_OK, ret);
239 ret = vDecSample->ConfigureVideoDecoder();
240 ASSERT_EQ(AV_ERR_OK, ret);
241 vDecSample->INP_DIR = "/data/test/media/1440x1080_60_10Mb.h264";
242 ret = vDecSample->StartVideoDecoder();
243 ASSERT_EQ(AV_ERR_OK, ret);
244 vDecSample->WaitForEOS();
245 ASSERT_EQ(0, vDecSample->errCount);
246 vDecSample->Stop();
247 vDecSample->Release();
248 }
249
250 /**
251 * @tc.number : VIDEO_SWDEC_H264_01_0600
252 * @tc.name : software decode frame
253 * @tc.desc : function test
254 */
255 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_01_0600, TestSize.Level0)
256 {
257 VDecNdkSample *vDecSample = new VDecNdkSample();
258
259 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
260 ASSERT_EQ(AV_ERR_OK, ret);
261 ret = vDecSample->SetVideoDecoderCallback();
262 ASSERT_EQ(AV_ERR_OK, ret);
263 ret = vDecSample->ConfigureVideoDecoder();
264 ASSERT_EQ(AV_ERR_OK, ret);
265 vDecSample->INP_DIR = "/data/test/media/1280x720_60_10Mb.h264";
266 ret = vDecSample->StartVideoDecoder();
267 ASSERT_EQ(AV_ERR_OK, ret);
268 vDecSample->WaitForEOS();
269 ASSERT_EQ(0, vDecSample->errCount);
270 vDecSample->Stop();
271 vDecSample->Release();
272 }
273
274 /**
275 * @tc.number : VIDEO_SWDEC_H264_01_0700
276 * @tc.name : software decode frame
277 * @tc.desc : function test
278 */
279 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_01_0700, TestSize.Level0)
280 {
281 VDecNdkSample *vDecSample = new VDecNdkSample();
282
283 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
284 ASSERT_EQ(AV_ERR_OK, ret);
285 ret = vDecSample->SetVideoDecoderCallback();
286 ASSERT_EQ(AV_ERR_OK, ret);
287 ret = vDecSample->ConfigureVideoDecoder();
288 ASSERT_EQ(AV_ERR_OK, ret);
289 vDecSample->INP_DIR = "/data/test/media/1232x768_60_10Mb.h264";
290 ret = vDecSample->StartVideoDecoder();
291 ASSERT_EQ(AV_ERR_OK, ret);
292 vDecSample->WaitForEOS();
293 ASSERT_EQ(0, vDecSample->errCount);
294 vDecSample->Stop();
295 vDecSample->Release();
296 }
297
298 /**
299 * @tc.number : VIDEO_SWDEC_H264_01_0800
300 * @tc.name : software decode frame
301 * @tc.desc : function test
302 */
303 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_01_0800, TestSize.Level0)
304 {
305 VDecNdkSample *vDecSample = new VDecNdkSample();
306
307 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
308 ASSERT_EQ(AV_ERR_OK, ret);
309 ret = vDecSample->SetVideoDecoderCallback();
310 ASSERT_EQ(AV_ERR_OK, ret);
311 ret = vDecSample->ConfigureVideoDecoder();
312 ASSERT_EQ(AV_ERR_OK, ret);
313 vDecSample->INP_DIR = "/data/test/media/1152x720_60_10Mb.h264";
314 ret = vDecSample->StartVideoDecoder();
315 ASSERT_EQ(AV_ERR_OK, ret);
316 vDecSample->WaitForEOS();
317 ASSERT_EQ(0, vDecSample->errCount);
318 vDecSample->Stop();
319 vDecSample->Release();
320 }
321
322 /**
323 * @tc.number : VIDEO_SWDEC_H264_01_0900
324 * @tc.name : software decode frame
325 * @tc.desc : function test
326 */
327 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_01_0900, TestSize.Level0)
328 {
329 VDecNdkSample *vDecSample = new VDecNdkSample();
330
331 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
332 ASSERT_EQ(AV_ERR_OK, ret);
333 ret = vDecSample->SetVideoDecoderCallback();
334 ASSERT_EQ(AV_ERR_OK, ret);
335 ret = vDecSample->ConfigureVideoDecoder();
336 ASSERT_EQ(AV_ERR_OK, ret);
337 vDecSample->INP_DIR = "/data/test/media/960x720_60_10Mb.h264";
338 ret = vDecSample->StartVideoDecoder();
339 ASSERT_EQ(AV_ERR_OK, ret);
340 vDecSample->WaitForEOS();
341 ASSERT_EQ(0, vDecSample->errCount);
342 vDecSample->Stop();
343 vDecSample->Release();
344 }
345
346 /**
347 * @tc.number : VIDEO_SWDEC_H264_01_1000
348 * @tc.name : software decode frame
349 * @tc.desc : function test
350 */
351 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_01_1000, TestSize.Level0)
352 {
353 VDecNdkSample *vDecSample = new VDecNdkSample();
354
355 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
356 ASSERT_EQ(AV_ERR_OK, ret);
357 ret = vDecSample->SetVideoDecoderCallback();
358 ASSERT_EQ(AV_ERR_OK, ret);
359 ret = vDecSample->ConfigureVideoDecoder();
360 ASSERT_EQ(AV_ERR_OK, ret);
361 vDecSample->INP_DIR = "/data/test/media/960x544_60_10Mb.h264";
362 ret = vDecSample->StartVideoDecoder();
363 ASSERT_EQ(AV_ERR_OK, ret);
364 vDecSample->WaitForEOS();
365 ASSERT_EQ(0, vDecSample->errCount);
366 vDecSample->Stop();
367 vDecSample->Release();
368 }
369
370 /**
371 * @tc.number : VIDEO_SWDEC_H264_01_1100
372 * @tc.name : software decode frame
373 * @tc.desc : function test
374 */
375 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_01_1100, TestSize.Level0)
376 {
377 VDecNdkSample *vDecSample = new VDecNdkSample();
378
379 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
380 ASSERT_EQ(AV_ERR_OK, ret);
381 ret = vDecSample->SetVideoDecoderCallback();
382 ASSERT_EQ(AV_ERR_OK, ret);
383 ret = vDecSample->ConfigureVideoDecoder();
384 ASSERT_EQ(AV_ERR_OK, ret);
385 vDecSample->INP_DIR = "/data/test/media/880x720_60_10Mb.h264";
386 ret = vDecSample->StartVideoDecoder();
387 ASSERT_EQ(AV_ERR_OK, ret);
388 vDecSample->WaitForEOS();
389 ASSERT_EQ(0, vDecSample->errCount);
390 vDecSample->Stop();
391 vDecSample->Release();
392 }
393
394 /**
395 * @tc.number : VIDEO_SWDEC_H264_01_1200
396 * @tc.name : software decode frame
397 * @tc.desc : function test
398 */
399 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_01_1200, TestSize.Level0)
400 {
401 VDecNdkSample *vDecSample = new VDecNdkSample();
402
403 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
404 ASSERT_EQ(AV_ERR_OK, ret);
405 ret = vDecSample->SetVideoDecoderCallback();
406 ASSERT_EQ(AV_ERR_OK, ret);
407 ret = vDecSample->ConfigureVideoDecoder();
408 ASSERT_EQ(AV_ERR_OK, ret);
409 vDecSample->INP_DIR = "/data/test/media/720x720_60_10Mb.h264";
410 ret = vDecSample->StartVideoDecoder();
411 ASSERT_EQ(AV_ERR_OK, ret);
412 vDecSample->WaitForEOS();
413 ASSERT_EQ(0, vDecSample->errCount);
414 vDecSample->Stop();
415 vDecSample->Release();
416 }
417
418 /**
419 * @tc.number : VIDEO_SWDEC_H264_01_1300
420 * @tc.name : software decode frame
421 * @tc.desc : function test
422 */
423 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_01_1300, TestSize.Level0)
424 {
425 VDecNdkSample *vDecSample = new VDecNdkSample();
426
427 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
428 ASSERT_EQ(AV_ERR_OK, ret);
429 ret = vDecSample->SetVideoDecoderCallback();
430 ASSERT_EQ(AV_ERR_OK, ret);
431 ret = vDecSample->ConfigureVideoDecoder();
432 ASSERT_EQ(AV_ERR_OK, ret);
433 vDecSample->INP_DIR = "/data/test/media/720x480_60_10Mb.h264";
434 ret = vDecSample->StartVideoDecoder();
435 ASSERT_EQ(AV_ERR_OK, ret);
436 vDecSample->WaitForEOS();
437 ASSERT_EQ(0, vDecSample->errCount);
438 vDecSample->Stop();
439 vDecSample->Release();
440 }
441
442 /**
443 * @tc.number : VIDEO_SWDEC_H264_01_1400
444 * @tc.name : software decode frame
445 * @tc.desc : function test
446 */
447 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_01_1400, TestSize.Level0)
448 {
449 VDecNdkSample *vDecSample = new VDecNdkSample();
450
451 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
452 ASSERT_EQ(AV_ERR_OK, ret);
453 ret = vDecSample->SetVideoDecoderCallback();
454 ASSERT_EQ(AV_ERR_OK, ret);
455 ret = vDecSample->ConfigureVideoDecoder();
456 ASSERT_EQ(AV_ERR_OK, ret);
457 vDecSample->INP_DIR = "/data/test/media/640x480_60_10Mb.h264";
458 ret = vDecSample->StartVideoDecoder();
459 ASSERT_EQ(AV_ERR_OK, ret);
460 vDecSample->WaitForEOS();
461 ASSERT_EQ(0, vDecSample->errCount);
462 vDecSample->Stop();
463 vDecSample->Release();
464 }
465
466 /**
467 * @tc.number : VIDEO_SWDEC_H264_01_1500
468 * @tc.name : software decode frame
469 * @tc.desc : function test
470 */
471 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_01_1500, TestSize.Level0)
472 {
473 VDecNdkSample *vDecSample = new VDecNdkSample();
474
475 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
476 ASSERT_EQ(AV_ERR_OK, ret);
477 ret = vDecSample->SetVideoDecoderCallback();
478 ASSERT_EQ(AV_ERR_OK, ret);
479 ret = vDecSample->ConfigureVideoDecoder();
480 ASSERT_EQ(AV_ERR_OK, ret);
481 vDecSample->INP_DIR = "/data/test/media/320x240_60_10Mb.h264";
482 ret = vDecSample->StartVideoDecoder();
483 ASSERT_EQ(AV_ERR_OK, ret);
484 vDecSample->WaitForEOS();
485 ASSERT_EQ(0, vDecSample->errCount);
486 vDecSample->Stop();
487 vDecSample->Release();
488 }
489
490 /**
491 * @tc.number : VIDEO_SWDEC_H264_01_1600
492 * @tc.name : software decode frame
493 * @tc.desc : function test
494 */
495 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_01_1600, TestSize.Level0)
496 {
497 VDecNdkSample *vDecSample = new VDecNdkSample();
498
499 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
500 ASSERT_EQ(AV_ERR_OK, ret);
501 ret = vDecSample->SetVideoDecoderCallback();
502 ASSERT_EQ(AV_ERR_OK, ret);
503 ret = vDecSample->ConfigureVideoDecoder();
504 ASSERT_EQ(AV_ERR_OK, ret);
505 vDecSample->INP_DIR = "/data/test/media/352x288_60_10Mb.h264";
506 ret = vDecSample->StartVideoDecoder();
507 ASSERT_EQ(AV_ERR_OK, ret);
508 vDecSample->WaitForEOS();
509 ASSERT_EQ(0, vDecSample->errCount);
510 vDecSample->Stop();
511 vDecSample->Release();
512 }
513
514 /**
515 * @tc.number : VIDEO_SWDEC_H264_02_0100
516 * @tc.name : software decode frame
517 * @tc.desc : function test
518 */
519 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_02_0100, TestSize.Level0)
520 {
521 VDecNdkSample *vDecSample = new VDecNdkSample();
522
523 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
524 ASSERT_EQ(AV_ERR_OK, ret);
525 ret = vDecSample->SetVideoDecoderCallback();
526 ASSERT_EQ(AV_ERR_OK, ret);
527 ret = vDecSample->ConfigureVideoDecoder();
528 ASSERT_EQ(AV_ERR_OK, ret);
529 vDecSample->INP_DIR = "/data/test/media/1920x1080_60_30Mb.h264";
530 ret = vDecSample->StartVideoDecoder();
531 ASSERT_EQ(AV_ERR_OK, ret);
532 vDecSample->WaitForEOS();
533 ASSERT_EQ(0, vDecSample->errCount);
534 vDecSample->Stop();
535 vDecSample->Release();
536 }
537
538 /**
539 * @tc.number : VIDEO_SWDEC_H264_02_0200
540 * @tc.name : software decode frame
541 * @tc.desc : function test
542 */
543 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_02_0200, TestSize.Level0)
544 {
545 VDecNdkSample *vDecSample = new VDecNdkSample();
546
547 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
548 ASSERT_EQ(AV_ERR_OK, ret);
549 ret = vDecSample->SetVideoDecoderCallback();
550 ASSERT_EQ(AV_ERR_OK, ret);
551 ret = vDecSample->ConfigureVideoDecoder();
552 ASSERT_EQ(AV_ERR_OK, ret);
553 vDecSample->INP_DIR = "/data/test/media/1920x1080_30_30Mb.h264";
554 ret = vDecSample->StartVideoDecoder();
555 ASSERT_EQ(AV_ERR_OK, ret);
556 vDecSample->WaitForEOS();
557 ASSERT_EQ(0, vDecSample->errCount);
558 vDecSample->Stop();
559 vDecSample->Release();
560 }
561
562 /**
563 * @tc.number : VIDEO_SWDEC_H264_02_0300
564 * @tc.name : software decode frame
565 * @tc.desc : function test
566 */
567 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_02_0300, TestSize.Level0)
568 {
569 VDecNdkSample *vDecSample = new VDecNdkSample();
570
571 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
572 ASSERT_EQ(AV_ERR_OK, ret);
573 ret = vDecSample->SetVideoDecoderCallback();
574 ASSERT_EQ(AV_ERR_OK, ret);
575 ret = vDecSample->ConfigureVideoDecoder();
576 ASSERT_EQ(AV_ERR_OK, ret);
577 vDecSample->INP_DIR = "/data/test/media/1920x1080_10_30Mb.h264";
578 ret = vDecSample->StartVideoDecoder();
579 ASSERT_EQ(AV_ERR_OK, ret);
580 vDecSample->WaitForEOS();
581 ASSERT_EQ(0, vDecSample->errCount);
582 vDecSample->Stop();
583 vDecSample->Release();
584 }
585
586 /**
587 * @tc.number : VIDEO_SWDEC_H264_03_0100
588 * @tc.name : software decode frame
589 * @tc.desc : function test
590 */
591 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_03_0100, TestSize.Level0)
592 {
593 VDecNdkSample *vDecSample = new VDecNdkSample();
594
595 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
596 ASSERT_EQ(AV_ERR_OK, ret);
597 ret = vDecSample->SetVideoDecoderCallback();
598 ASSERT_EQ(AV_ERR_OK, ret);
599 ret = vDecSample->ConfigureVideoDecoder();
600 ASSERT_EQ(AV_ERR_OK, ret);
601 vDecSample->INP_DIR = "/data/test/media/1920x1080_60_30Mb.h264";
602 ret = vDecSample->StartVideoDecoder();
603 ASSERT_EQ(AV_ERR_OK, ret);
604 vDecSample->WaitForEOS();
605 ASSERT_EQ(0, vDecSample->errCount);
606 vDecSample->Stop();
607 vDecSample->Release();
608 }
609
610 /**
611 * @tc.number : VIDEO_SWDEC_H264_03_0200
612 * @tc.name : software decode frame
613 * @tc.desc : function test
614 */
615 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_03_0200, TestSize.Level0)
616 {
617 VDecNdkSample *vDecSample = new VDecNdkSample();
618
619 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
620 ASSERT_EQ(AV_ERR_OK, ret);
621 ret = vDecSample->SetVideoDecoderCallback();
622 ASSERT_EQ(AV_ERR_OK, ret);
623 ret = vDecSample->ConfigureVideoDecoder();
624 ASSERT_EQ(AV_ERR_OK, ret);
625 vDecSample->INP_DIR = "/data/test/media/1920x1080_60_30Mb.h264";
626 ret = vDecSample->StartVideoDecoder();
627 ASSERT_EQ(AV_ERR_OK, ret);
628 vDecSample->WaitForEOS();
629 ASSERT_EQ(0, vDecSample->errCount);
630 vDecSample->Stop();
631 vDecSample->Release();
632 }
633
634 /**
635 * @tc.number : VIDEO_SWDEC_H264_03_0300
636 * @tc.name : software decode frame
637 * @tc.desc : function test
638 */
639 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_03_0300, TestSize.Level0)
640 {
641 VDecNdkSample *vDecSample = new VDecNdkSample();
642
643 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
644 ASSERT_EQ(AV_ERR_OK, ret);
645 ret = vDecSample->SetVideoDecoderCallback();
646 ASSERT_EQ(AV_ERR_OK, ret);
647 ret = vDecSample->ConfigureVideoDecoder();
648 ASSERT_EQ(AV_ERR_OK, ret);
649 vDecSample->INP_DIR = "/data/test/media/1920x1080_60_20Mb.h264";
650 ret = vDecSample->StartVideoDecoder();
651 ASSERT_EQ(AV_ERR_OK, ret);
652 vDecSample->WaitForEOS();
653 ASSERT_EQ(0, vDecSample->errCount);
654 vDecSample->Stop();
655 vDecSample->Release();
656 }
657
658 /**
659 * @tc.number : VIDEO_SWDEC_H264_03_0400
660 * @tc.name : software decode frame
661 * @tc.desc : function test
662 */
663 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_03_0400, TestSize.Level0)
664 {
665 VDecNdkSample *vDecSample = new VDecNdkSample();
666
667 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
668 ASSERT_EQ(AV_ERR_OK, ret);
669 ret = vDecSample->SetVideoDecoderCallback();
670 ASSERT_EQ(AV_ERR_OK, ret);
671 ret = vDecSample->ConfigureVideoDecoder();
672 ASSERT_EQ(AV_ERR_OK, ret);
673 vDecSample->INP_DIR = "/data/test/media/1920x1080_60_3Mb.h264";
674 ret = vDecSample->StartVideoDecoder();
675 ASSERT_EQ(AV_ERR_OK, ret);
676 vDecSample->WaitForEOS();
677 ASSERT_EQ(0, vDecSample->errCount);
678 vDecSample->Stop();
679 vDecSample->Release();
680 }
681
682 /**
683 * @tc.number : VIDEO_SWDEC_H264_03_0500
684 * @tc.name : software decode frame
685 * @tc.desc : function test
686 */
687 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_03_0500, TestSize.Level0)
688 {
689 VDecNdkSample *vDecSample = new VDecNdkSample();
690
691 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
692 ASSERT_EQ(AV_ERR_OK, ret);
693 ret = vDecSample->SetVideoDecoderCallback();
694 ASSERT_EQ(AV_ERR_OK, ret);
695 ret = vDecSample->ConfigureVideoDecoder();
696 ASSERT_EQ(AV_ERR_OK, ret);
697 vDecSample->INP_DIR = "/data/test/media/1920x1080_60_2Mb.h264";
698 ret = vDecSample->StartVideoDecoder();
699 ASSERT_EQ(AV_ERR_OK, ret);
700 vDecSample->WaitForEOS();
701 ASSERT_EQ(0, vDecSample->errCount);
702 vDecSample->Stop();
703 vDecSample->Release();
704 }
705
706 /**
707 * @tc.number : VIDEO_SWDEC_H264_03_0600
708 * @tc.name : software decode frame
709 * @tc.desc : function test
710 */
711 HWTEST_F(SwdecCompNdkTest, VIDEO_SWDEC_H264_03_0600, TestSize.Level0)
712 {
713 VDecNdkSample *vDecSample = new VDecNdkSample();
714
715 int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.AVC");
716 ASSERT_EQ(AV_ERR_OK, ret);
717 ret = vDecSample->SetVideoDecoderCallback();
718 ASSERT_EQ(AV_ERR_OK, ret);
719 ret = vDecSample->ConfigureVideoDecoder();
720 ASSERT_EQ(AV_ERR_OK, ret);
721 vDecSample->INP_DIR = "/data/test/media/1920x1080_60_1Mb.h264";
722 ret = vDecSample->StartVideoDecoder();
723 ASSERT_EQ(AV_ERR_OK, ret);
724 vDecSample->WaitForEOS();
725 ASSERT_EQ(0, vDecSample->errCount);
726 vDecSample->Stop();
727 vDecSample->Release();
728 }
729 } // namespace