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 #include "gtest/gtest.h"
26 #include "avcodec_codec_name.h"
27 #include "videodec_sample.h"
28 #include "native_avcapability.h"
29 
30 using namespace std;
31 using namespace OHOS;
32 using namespace OHOS::Media;
33 using namespace testing::ext;
34 namespace OHOS {
35 namespace Media {
36 class HwdecNdkTest : public testing::Test {
37 public:
38     // SetUpTestCase: Called before all test cases
39     static void SetUpTestCase(void);
40     // TearDownTestCase: Called after all test case
41     static void TearDownTestCase(void);
42     // SetUp: Called before each test cases
43     void SetUp(void);
44     // TearDown: Called after each test cases
45     void TearDown(void);
46 
47 protected:
48     const ::testing::TestInfo *testInfo_ = nullptr;
49     bool createCodecSuccess_ = false;
50 };
51 
52 string g_codecName;
53 OH_AVCapability *cap = nullptr;
54 
SetUpTestCase(void)55 void HwdecNdkTest::SetUpTestCase(void)
56 {
57     cap = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
58     g_codecName = OH_AVCapability_GetName(cap);
59 }
TearDownTestCase(void)60 void HwdecNdkTest::TearDownTestCase(void) {}
SetUp(void)61 void HwdecNdkTest::SetUp(void) {}
TearDown(void)62 void HwdecNdkTest::TearDown(void) {}
63 } // namespace Media
64 } // namespace OHOS
65 
66 namespace {
67 /**
68  * @tc.number    : VIDEO_HWDEC_H264_IPB_0100
69  * @tc.name      : hardware decode all idr frame
70  * @tc.desc      : function test
71  */
72 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_IPB_0100, TestSize.Level0)
73 {
74     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
75     vDecSample->INP_DIR = "/data/test/media/1920_1080I.h264";
76     vDecSample->DEFAULT_WIDTH = 1920;
77     vDecSample->DEFAULT_HEIGHT = 1080;
78     vDecSample->DEFAULT_FRAME_RATE = 30;
79     vDecSample->SF_OUTPUT = false;
80     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
81     vDecSample->WaitForEOS();
82     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
83 }
84 
85 /**
86  * @tc.number    : VIDEO_HWDEC_H264_IPB_0200
87  * @tc.name      : hardware decode single idr frame
88  * @tc.desc      : function test
89  */
90 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_IPB_0200, TestSize.Level0)
91 {
92     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
93     vDecSample->INP_DIR = "/data/test/media/1920_1080IP.h264";
94     vDecSample->DEFAULT_WIDTH = 1920;
95     vDecSample->DEFAULT_HEIGHT = 1080;
96     vDecSample->DEFAULT_FRAME_RATE = 30;
97     vDecSample->SF_OUTPUT = false;
98     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
99     vDecSample->WaitForEOS();
100     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
101 }
102 
103 /**
104  * @tc.number    : VIDEO_HWDEC_H264_IPB_0300
105  * @tc.name      : hardware decode all type frame
106  * @tc.desc      : function test
107  */
108 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_IPB_0300, TestSize.Level0)
109 {
110     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
111     vDecSample->INP_DIR = "/data/test/media/1920_1080IPB.h264";
112     vDecSample->DEFAULT_WIDTH = 1920;
113     vDecSample->DEFAULT_HEIGHT = 1080;
114     vDecSample->DEFAULT_FRAME_RATE = 30;
115     vDecSample->SF_OUTPUT = false;
116     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
117     vDecSample->WaitForEOS();
118     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
119 }
120 
121 /**
122  * @tc.number    : VIDEO_HWDEC_H264_SVC_0100
123  * @tc.name      : hardware decode svc frame
124  * @tc.desc      : function test
125  */
126 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_SVC_0100, TestSize.Level0)
127 {
128     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
129     vDecSample->INP_DIR = "/data/test/media/1920_1080_svc_avcc.h264";
130     vDecSample->DEFAULT_WIDTH = 1920;
131     vDecSample->DEFAULT_HEIGHT = 1080;
132     vDecSample->DEFAULT_FRAME_RATE = 30;
133     vDecSample->SF_OUTPUT = false;
134     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
135     vDecSample->WaitForEOS();
136     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
137 }
138 
139 /**
140  * @tc.number    : VIDEO_HWDEC_H264_01_0100
141  * @tc.name      : hardware decode 4k frame
142  * @tc.desc      : function test
143  */
144 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_01_0100, TestSize.Level0)
145 {
146     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
147     vDecSample->INP_DIR = "/data/test/media/4096_2160_60_30Mb.h264";
148     vDecSample->DEFAULT_WIDTH = 3840;
149     vDecSample->DEFAULT_HEIGHT = 2160;
150     vDecSample->DEFAULT_FRAME_RATE = 30;
151     vDecSample->SF_OUTPUT = false;
152     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
153     vDecSample->WaitForEOS();
154     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
155 }
156 
157 /**
158  * @tc.number    : VIDEO_HWDEC_H264_01_0200
159  * @tc.name      : hardware decode 4k frame
160  * @tc.desc      : function test
161  */
162 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_01_0200, TestSize.Level0)
163 {
164     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
165     vDecSample->INP_DIR = "/data/test/media/3840_2160_60_10M.h264";
166     vDecSample->DEFAULT_WIDTH = 3840;
167     vDecSample->DEFAULT_HEIGHT = 2160;
168     vDecSample->DEFAULT_FRAME_RATE = 30;
169     vDecSample->SF_OUTPUT = false;
170     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
171     vDecSample->WaitForEOS();
172     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
173 }
174 
175 /**
176  * @tc.number    : VIDEO_HWDEC_H264_01_0300
177  * @tc.name      : hardware decode 1080p frame
178  * @tc.desc      : function test
179  */
180 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_01_0300, TestSize.Level0)
181 {
182     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
183     vDecSample->INP_DIR = "/data/test/media/1920_1080_60_10M_IP.h264";
184     vDecSample->DEFAULT_WIDTH = 1920;
185     vDecSample->DEFAULT_HEIGHT = 1080;
186     vDecSample->DEFAULT_FRAME_RATE = 30;
187     vDecSample->SF_OUTPUT = false;
188     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
189     vDecSample->WaitForEOS();
190     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
191 }
192 
193 /**
194  * @tc.number    : VIDEO_HWDEC_H264_01_0400
195  * @tc.name      : hardware decode non-standard resolution frame
196  * @tc.desc      : function test
197  */
198 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_01_0400, TestSize.Level0)
199 {
200     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
201     vDecSample->INP_DIR = "/data/test/media/1504_720_60_10Mb.h264";
202     vDecSample->DEFAULT_WIDTH = 1920;
203     vDecSample->DEFAULT_HEIGHT = 1080;
204     vDecSample->DEFAULT_FRAME_RATE = 30;
205     vDecSample->SF_OUTPUT = false;
206     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
207     vDecSample->WaitForEOS();
208     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
209 }
210 
211 /**
212  * @tc.number    : VIDEO_HWDEC_H264_01_0500
213  * @tc.name      : hardware decode non-standard resolution frame
214  * @tc.desc      : function test
215  */
216 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_01_0500, TestSize.Level0)
217 {
218     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
219     vDecSample->INP_DIR = "/data/test/media/1440_1080_60_10Mb.h264";
220     vDecSample->DEFAULT_WIDTH = 1920;
221     vDecSample->DEFAULT_HEIGHT = 1080;
222     vDecSample->DEFAULT_FRAME_RATE = 30;
223     vDecSample->SF_OUTPUT = false;
224     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
225     vDecSample->WaitForEOS();
226     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
227 }
228 
229 /**
230  * @tc.number    : VIDEO_HWDEC_H264_01_0600
231  * @tc.name      : hardware decode 720p frame
232  * @tc.desc      : function test
233  */
234 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_01_0600, TestSize.Level0)
235 {
236     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
237     vDecSample->INP_DIR = "/data/test/media/1280_720_60_10M.h264";
238     vDecSample->DEFAULT_WIDTH = 1920;
239     vDecSample->DEFAULT_HEIGHT = 1080;
240     vDecSample->DEFAULT_FRAME_RATE = 30;
241     vDecSample->SF_OUTPUT = false;
242     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
243     vDecSample->WaitForEOS();
244     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
245 }
246 
247 /**
248  * @tc.number    : VIDEO_HWDEC_H264_01_0700
249  * @tc.name      : hardware decode non-standard resolution frame
250  * @tc.desc      : function test
251  */
252 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_01_0700, TestSize.Level0)
253 {
254     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
255     vDecSample->INP_DIR = "/data/test/media/1232_768_60_10Mb.h264";
256     vDecSample->DEFAULT_WIDTH = 1920;
257     vDecSample->DEFAULT_HEIGHT = 1080;
258     vDecSample->DEFAULT_FRAME_RATE = 30;
259     vDecSample->SF_OUTPUT = false;
260     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
261     vDecSample->WaitForEOS();
262     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
263 }
264 
265 /**
266  * @tc.number    : VIDEO_HWDEC_H264_01_0800
267  * @tc.name      : hardware decode non-standard resolution frame
268  * @tc.desc      : function test
269  */
270 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_01_0800, TestSize.Level0)
271 {
272     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
273     vDecSample->INP_DIR = "/data/test/media/1152_720_60_10Mb.h264";
274     vDecSample->DEFAULT_WIDTH = 1920;
275     vDecSample->DEFAULT_HEIGHT = 1080;
276     vDecSample->DEFAULT_FRAME_RATE = 30;
277     vDecSample->SF_OUTPUT = false;
278     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
279     vDecSample->WaitForEOS();
280     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
281 }
282 
283 /**
284  * @tc.number    : VIDEO_HWDEC_H264_01_0900
285  * @tc.name      : hardware decode non-standard resolution frame
286  * @tc.desc      : function test
287  */
288 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_01_0900, TestSize.Level0)
289 {
290     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
291     vDecSample->INP_DIR = "/data/test/media/960_720_60_10Mb.h264";
292     vDecSample->DEFAULT_WIDTH = 1920;
293     vDecSample->DEFAULT_HEIGHT = 1080;
294     vDecSample->DEFAULT_FRAME_RATE = 30;
295     vDecSample->SF_OUTPUT = false;
296     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
297     vDecSample->WaitForEOS();
298     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
299 }
300 
301 /**
302  * @tc.number    : VIDEO_HWDEC_H264_01_1000
303  * @tc.name      : hardware decode non-standard resolution frame
304  * @tc.desc      : function test
305  */
306 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_01_1000, TestSize.Level0)
307 {
308     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
309     vDecSample->INP_DIR = "/data/test/media/960_544_60_10Mb.h264";
310     vDecSample->DEFAULT_WIDTH = 1920;
311     vDecSample->DEFAULT_HEIGHT = 1080;
312     vDecSample->DEFAULT_FRAME_RATE = 30;
313     vDecSample->SF_OUTPUT = false;
314     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
315     vDecSample->WaitForEOS();
316     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
317 }
318 
319 /**
320  * @tc.number    : VIDEO_HWDEC_H264_01_1100
321  * @tc.name      : hardware decode non-standard resolution frame
322  * @tc.desc      : function test
323  */
324 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_01_1100, TestSize.Level0)
325 {
326     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
327     vDecSample->INP_DIR = "/data/test/media/880_720_60_10Mb.h264";
328     vDecSample->DEFAULT_WIDTH = 1920;
329     vDecSample->DEFAULT_HEIGHT = 1080;
330     vDecSample->DEFAULT_FRAME_RATE = 30;
331     vDecSample->SF_OUTPUT = false;
332     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
333     vDecSample->WaitForEOS();
334     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
335 }
336 
337 /**
338  * @tc.number    : VIDEO_HWDEC_H264_01_1200
339  * @tc.name      : hardware decode non-standard resolution frame
340  * @tc.desc      : function test
341  */
342 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_01_1200, TestSize.Level0)
343 {
344     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
345     vDecSample->INP_DIR = "/data/test/media/720_720_60_10Mb.h264";
346     vDecSample->DEFAULT_WIDTH = 1920;
347     vDecSample->DEFAULT_HEIGHT = 1080;
348     vDecSample->DEFAULT_FRAME_RATE = 30;
349     vDecSample->SF_OUTPUT = false;
350     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
351     vDecSample->WaitForEOS();
352     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
353 }
354 
355 /**
356  * @tc.number    : VIDEO_HWDEC_H264_01_1300
357  * @tc.name      : hardware decode 480p frame
358  * @tc.desc      : function test
359  */
360 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_01_1300, TestSize.Level0)
361 {
362     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
363     vDecSample->INP_DIR = "/data/test/media/720_480_60_10Mb.h264";
364     vDecSample->DEFAULT_WIDTH = 1920;
365     vDecSample->DEFAULT_HEIGHT = 1080;
366     vDecSample->DEFAULT_FRAME_RATE = 30;
367     vDecSample->SF_OUTPUT = false;
368     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
369     vDecSample->WaitForEOS();
370     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
371 }
372 
373 /**
374  * @tc.number    : VIDEO_HWDEC_H264_01_1400
375  * @tc.name      : hardware decode non-standard resolution frame
376  * @tc.desc      : function test
377  */
378 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_01_1400, TestSize.Level0)
379 {
380     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
381     vDecSample->INP_DIR = "/data/test/media/640_480_60_10Mb.h264";
382     vDecSample->DEFAULT_WIDTH = 1920;
383     vDecSample->DEFAULT_HEIGHT = 1080;
384     vDecSample->DEFAULT_FRAME_RATE = 30;
385     vDecSample->SF_OUTPUT = false;
386     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
387     vDecSample->WaitForEOS();
388     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
389 }
390 
391 /**
392  * @tc.number    : VIDEO_HWDEC_H264_01_1500
393  * @tc.name      : hardware decode non-standard resolution frame
394  * @tc.desc      : function test
395  */
396 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_01_1500, TestSize.Level0)
397 {
398     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
399     vDecSample->INP_DIR = "/data/test/media/320_240_60_10Mb.h264";
400     vDecSample->DEFAULT_WIDTH = 1920;
401     vDecSample->DEFAULT_HEIGHT = 1080;
402     vDecSample->DEFAULT_FRAME_RATE = 30;
403     vDecSample->SF_OUTPUT = false;
404     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
405     vDecSample->WaitForEOS();
406     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
407 }
408 
409 /**
410  * @tc.number    : VIDEO_HWDEC_H264_01_1600
411  * @tc.name      : hardware decode non-standard resolution frame
412  * @tc.desc      : function test
413  */
414 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_01_1600, TestSize.Level0)
415 {
416     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
417     vDecSample->INP_DIR = "/data/test/media/352_288_60_10Mb.h264";
418     vDecSample->DEFAULT_WIDTH = 1920;
419     vDecSample->DEFAULT_HEIGHT = 1080;
420     vDecSample->DEFAULT_FRAME_RATE = 30;
421     vDecSample->SF_OUTPUT = false;
422     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
423     vDecSample->WaitForEOS();
424     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
425 }
426 
427 /**
428  * @tc.number    : VIDEO_HWDEC_H264_02_0100
429  * @tc.name      : hardware decode 1080p frame
430  * @tc.desc      : function test
431  */
432 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_02_0100, TestSize.Level0)
433 {
434     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
435     vDecSample->INP_DIR = "/data/test/media/1920_1080_60_30M.h264";
436     vDecSample->DEFAULT_WIDTH = 1920;
437     vDecSample->DEFAULT_HEIGHT = 1080;
438     vDecSample->DEFAULT_FRAME_RATE = 30;
439     vDecSample->SF_OUTPUT = false;
440     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
441     vDecSample->WaitForEOS();
442     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
443 }
444 
445 /**
446  * @tc.number    : VIDEO_HWDEC_H264_02_0200
447  * @tc.name      : hardware decode 1080p frame
448  * @tc.desc      : function test
449  */
450 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_02_0200, TestSize.Level0)
451 {
452     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
453     vDecSample->INP_DIR = "/data/test/media/1920_1080_30_30M.h264";
454     vDecSample->DEFAULT_WIDTH = 1920;
455     vDecSample->DEFAULT_HEIGHT = 1080;
456     vDecSample->DEFAULT_FRAME_RATE = 30;
457     vDecSample->SF_OUTPUT = false;
458     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
459     vDecSample->WaitForEOS();
460     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
461 }
462 
463 /**
464  * @tc.number    : VIDEO_HWDEC_H264_02_0300
465  * @tc.name      : hardware decode 1080p frame
466  * @tc.desc      : function test
467  */
468 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_02_0300, TestSize.Level0)
469 {
470     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
471     vDecSample->INP_DIR = "/data/test/media/1920_1080_10_30Mb.h264";
472     vDecSample->DEFAULT_WIDTH = 1920;
473     vDecSample->DEFAULT_HEIGHT = 1080;
474     vDecSample->DEFAULT_FRAME_RATE = 30;
475     vDecSample->SF_OUTPUT = false;
476     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
477     vDecSample->WaitForEOS();
478     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
479 }
480 
481 /**
482  * @tc.number    : VIDEO_HWDEC_H264_03_0100
483  * @tc.name      : hardware decode 1080p frame
484  * @tc.desc      : function test
485  */
486 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_03_0100, TestSize.Level0)
487 {
488     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
489     vDecSample->INP_DIR = "/data/test/media/1920_1080_60_30M.h264";
490     vDecSample->DEFAULT_WIDTH = 1920;
491     vDecSample->DEFAULT_HEIGHT = 1080;
492     vDecSample->DEFAULT_FRAME_RATE = 30;
493     vDecSample->SF_OUTPUT = false;
494     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
495     vDecSample->WaitForEOS();
496     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
497 }
498 
499 /**
500  * @tc.number    : VIDEO_HWDEC_H264_03_0200
501  * @tc.name      : hardware decode 1080p frame
502  * @tc.desc      : function test
503  */
504 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_03_0200, TestSize.Level0)
505 {
506     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
507     vDecSample->INP_DIR = "/data/test/media/1920_1080_60_30M.h264";
508     vDecSample->DEFAULT_WIDTH = 1920;
509     vDecSample->DEFAULT_HEIGHT = 1080;
510     vDecSample->DEFAULT_FRAME_RATE = 30;
511     vDecSample->SF_OUTPUT = false;
512     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
513     vDecSample->WaitForEOS();
514     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
515 }
516 
517 /**
518  * @tc.number    : VIDEO_HWDEC_H264_03_0300
519  * @tc.name      : hardware decode 1080p frame
520  * @tc.desc      : function test
521  */
522 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_03_0300, TestSize.Level0)
523 {
524     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
525     vDecSample->INP_DIR = "/data/test/media/1920_1080_60_20M.h264";
526     vDecSample->DEFAULT_WIDTH = 1920;
527     vDecSample->DEFAULT_HEIGHT = 1080;
528     vDecSample->DEFAULT_FRAME_RATE = 30;
529     vDecSample->SF_OUTPUT = false;
530     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
531     vDecSample->WaitForEOS();
532     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
533 }
534 
535 /**
536  * @tc.number    : VIDEO_HWDEC_H264_03_0400
537  * @tc.name      : hardware decode 1080p frame
538  * @tc.desc      : function test
539  */
540 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_03_0400, TestSize.Level0)
541 {
542     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
543     vDecSample->INP_DIR = "/data/test/media/1920_1080_60_3M.h264";
544     vDecSample->DEFAULT_WIDTH = 1920;
545     vDecSample->DEFAULT_HEIGHT = 1080;
546     vDecSample->DEFAULT_FRAME_RATE = 30;
547     vDecSample->SF_OUTPUT = false;
548     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
549     vDecSample->WaitForEOS();
550     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
551 }
552 
553 /**
554  * @tc.number    : VIDEO_HWDEC_H264_03_0500
555  * @tc.name      : hardware decode 1080p frame
556  * @tc.desc      : function test
557  */
558 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_03_0500, TestSize.Level0)
559 {
560     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
561     vDecSample->INP_DIR = "/data/test/media/1920_1080_60_2M.h264";
562     vDecSample->DEFAULT_WIDTH = 1920;
563     vDecSample->DEFAULT_HEIGHT = 1080;
564     vDecSample->DEFAULT_FRAME_RATE = 30;
565     vDecSample->SF_OUTPUT = false;
566     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
567     vDecSample->WaitForEOS();
568     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
569 }
570 
571 /**
572  * @tc.number    : VIDEO_HWDEC_H264_03_0600
573  * @tc.name      : hardware decode 1080p frame
574  * @tc.desc      : function test
575  */
576 HWTEST_F(HwdecNdkTest, VIDEO_HWDEC_H264_03_0600, TestSize.Level0)
577 {
578     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
579     vDecSample->INP_DIR = "/data/test/media/1920_1080_60_1M.h264";
580     vDecSample->DEFAULT_WIDTH = 1920;
581     vDecSample->DEFAULT_HEIGHT = 1080;
582     vDecSample->DEFAULT_FRAME_RATE = 30;
583     vDecSample->SF_OUTPUT = false;
584     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
585     vDecSample->WaitForEOS();
586     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
587 }
588 } // namespace