• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #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 
25 #define MAX_THREAD 16
26 
27 using namespace std;
28 using namespace OHOS;
29 using namespace OHOS::Media;
30 using namespace testing::ext;
31 
32 namespace OHOS {
33 namespace Media {
34 class HwdecFuncNdkTest : public testing::Test {
35 public:
36     static void SetUpTestCase();
37     static void TearDownTestCase();
38     void SetUp() override;
39     void TearDown() override;
40     void InputFunc();
41     void OutputFunc();
42     void Release();
43     int32_t Stop();
44 
45 protected:
46     const char *INP_DIR_720_30 = "/data/test/media/1280_720_30_10Mb.h264";
47     const char *INP_DIR_1080_30 = "/data/test/media/1920_1080_10_30Mb.h264";
48     const char *INP_DIR_1080_20 = "/data/test/media/1920_1080_20M_30.h265";
49     const char *inpDirVivid = "/data/test/media/hlg_vivid_4k.h265";
50     const char *INP_DIR_VVC_1080 = "/data/test/media/1920_1080_10bit.vvc";
51     const char *inpDirVvcResolution = "/data/test/media/resolution.vvc";
52     const char *inpDirVvcResolution8Bit = "/data/test/media/resolution_8bit.vvc";
53     const char *inpDirVvcResolution10Bit = "/data/test/media/resolution_10bit.vvc";
54     const char *inpDirVvcResolutionHdr10Bit = "/data/test/media/resolution_hdr_10bit.vvc";
55 };
56 } // namespace Media
57 } // namespace OHOS
58 
59 namespace {
60 static OH_AVCapability *cap = nullptr;
61 static OH_AVCapability *cap_hevc = nullptr;
62 static OH_AVCapability *cap_vvc = nullptr;
63 static string g_codecName = "";
64 static string g_codecNameHEVC = "";
65 static string g_codecNameVVC = "";
66 constexpr int32_t DEFAULT_WIDTH = 1920;
67 constexpr int32_t DEFAULT_HEIGHT = 1080;
68 constexpr int32_t MAX_NALU_LEN = 12000;
69 constexpr int32_t UHD_RESOLUTION[2] = {3840, 2160};
70 constexpr int32_t HD_RESOLUTION[2] = {1104, 622};
71 constexpr uint32_t CHANGE_AVC_FRAME = 1500;
72 constexpr uint32_t CHANGE_HEVC_FRAME = 3006;
73 constexpr uint32_t CHANGE_HEVC_TEN_FRAME = 1800;
74 constexpr uint32_t CHANGE_VVC_FRAME = 1524;
75 } // namespace
76 
SetUpTestCase()77 void HwdecFuncNdkTest::SetUpTestCase()
78 {
79     cap = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
80     g_codecName = OH_AVCapability_GetName(cap);
81     cout << "codecname: " << g_codecName << endl;
82     cap_hevc = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, false, HARDWARE);
83     g_codecNameHEVC = OH_AVCapability_GetName(cap_hevc);
84     cout << "g_codecNameHEVC: " << g_codecNameHEVC << endl;
85     cap_vvc = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_VVC, false, HARDWARE);
86     g_codecNameVVC = OH_AVCapability_GetName(cap_vvc);
87     cout << "g_codecNameVVC: " << g_codecNameVVC << endl;
88 }
TearDownTestCase()89 void HwdecFuncNdkTest::TearDownTestCase() {}
SetUp()90 void HwdecFuncNdkTest::SetUp() {}
TearDown()91 void HwdecFuncNdkTest::TearDown() {}
92 
93 namespace {
94 /**
95  * @tc.number    : VIDEO_HWDEC_FUNCTION_0200
96  * @tc.name      : create nonexist decoder
97  * @tc.desc      : function test
98  */
99 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_0200, TestSize.Level1)
100 {
101     OH_AVCodec *vdec_ = OH_VideoDecoder_CreateByName("OMX.h264.decode.111.222.333");
102     ASSERT_EQ(nullptr, vdec_);
103 }
104 
105 /**
106  * @tc.number    : VIDEO_HWDEC_FUNCTION_0300
107  * @tc.name      : test h264 asyn decode buffer, pixel foramt nv12
108  * @tc.desc      : function test
109  */
110 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_0300, TestSize.Level0)
111 {
112     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
113     vDecSample->INP_DIR = INP_DIR_1080_30;
114     vDecSample->DEFAULT_WIDTH = 1920;
115     vDecSample->DEFAULT_HEIGHT = 1080;
116     vDecSample->DEFAULT_FRAME_RATE = 30;
117     vDecSample->SF_OUTPUT = false;
118     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
119     vDecSample->WaitForEOS();
120     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
121 }
122 
123 /**
124  * @tc.number    : VIDEO_HWDEC_FUNCTION_0310
125  * @tc.name      : test h26 asyn decode buffer, pixel foramt nv21
126  * @tc.desc      : function test
127  */
128 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_0310, TestSize.Level0)
129 {
130     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
131     vDecSample->INP_DIR = INP_DIR_1080_30;
132     vDecSample->DEFAULT_WIDTH = 1920;
133     vDecSample->DEFAULT_HEIGHT = 1080;
134     vDecSample->DEFAULT_FRAME_RATE = 30;
135     vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
136     vDecSample->SF_OUTPUT = false;
137     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
138     vDecSample->WaitForEOS();
139     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
140 }
141 
142 /**
143  * @tc.number    : VIDEO_HWDEC_FUNCTION_0320
144  * @tc.name      : test h265 decode buffer, pixel foramt nv12
145  * @tc.desc      : function test
146  */
147 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_0320, TestSize.Level0)
148 {
149     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
150     vDecSample->INP_DIR = INP_DIR_1080_30;
151     vDecSample->DEFAULT_WIDTH = 1920;
152     vDecSample->DEFAULT_HEIGHT = 1080;
153     vDecSample->DEFAULT_FRAME_RATE = 30;
154     vDecSample->SF_OUTPUT = false;
155     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecNameHEVC));
156     vDecSample->WaitForEOS();
157     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
158 }
159 
160 /**
161  * @tc.number    : VIDEO_HWDEC_FUNCTION_0330
162  * @tc.name      : test h265 decode buffer, pixel foramt nv21
163  * @tc.desc      : function test
164  */
165 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_0330, TestSize.Level0)
166 {
167     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
168     vDecSample->INP_DIR = INP_DIR_1080_30;
169     vDecSample->DEFAULT_WIDTH = 1920;
170     vDecSample->DEFAULT_HEIGHT = 1080;
171     vDecSample->DEFAULT_FRAME_RATE = 30;
172     vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
173     vDecSample->SF_OUTPUT = false;
174     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecNameHEVC));
175     vDecSample->WaitForEOS();
176     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
177 }
178 
179 /**
180  * @tc.number    : VIDEO_HWDEC_FUNCTION_0400
181  * @tc.name      : test h264 asyn decode surface, pixel foramt nv12
182  * @tc.desc      : function test
183  */
184 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_0400, TestSize.Level0)
185 {
186     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
187     vDecSample->INP_DIR = INP_DIR_1080_30;
188     vDecSample->SF_OUTPUT = true;
189     vDecSample->DEFAULT_WIDTH = 1920;
190     vDecSample->DEFAULT_HEIGHT = 1080;
191     vDecSample->DEFAULT_FRAME_RATE = 30;
192     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName));
193     vDecSample->WaitForEOS();
194     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
195 }
196 
197 /**
198  * @tc.number    : VIDEO_HWDEC_FUNCTION_0410
199  * @tc.name      : test h264 asyn decode surface, pixel foramt nv21
200  * @tc.desc      : function test
201  */
202 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_0410, TestSize.Level0)
203 {
204     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
205     vDecSample->INP_DIR = INP_DIR_1080_30;
206     vDecSample->SF_OUTPUT = true;
207     vDecSample->DEFAULT_WIDTH = 1920;
208     vDecSample->DEFAULT_HEIGHT = 1080;
209     vDecSample->DEFAULT_FRAME_RATE = 30;
210     vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
211     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName));
212     vDecSample->WaitForEOS();
213     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
214 }
215 
216 /**
217  * @tc.number    : VIDEO_HWDEC_FUNCTION_0420
218  * @tc.name      : test h265 asyn decode surface, pixel foramt nv12
219  * @tc.desc      : function test
220  */
221 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_0420, TestSize.Level0)
222 {
223     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
224     vDecSample->INP_DIR = INP_DIR_1080_30;
225     vDecSample->SF_OUTPUT = true;
226     vDecSample->DEFAULT_WIDTH = 1920;
227     vDecSample->DEFAULT_HEIGHT = 1080;
228     vDecSample->DEFAULT_FRAME_RATE = 30;
229     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameHEVC));
230     vDecSample->WaitForEOS();
231     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
232 }
233 
234 /**
235  * @tc.number    : VIDEO_HWDEC_FUNCTION_0430
236  * @tc.name      : test h265 asyn decode surface, pixel foramt nv21
237  * @tc.desc      : function test
238  */
239 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_0430, TestSize.Level0)
240 {
241     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
242     vDecSample->INP_DIR = INP_DIR_1080_30;
243     vDecSample->SF_OUTPUT = true;
244     vDecSample->DEFAULT_WIDTH = 1920;
245     vDecSample->DEFAULT_HEIGHT = 1080;
246     vDecSample->DEFAULT_FRAME_RATE = 30;
247     vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
248     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameHEVC));
249     vDecSample->WaitForEOS();
250     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
251 }
252 
253 /**
254  * @tc.number    : VIDEO_HWDEC_FUNCTION_0700
255  * @tc.name      : test set EOS when last frame
256  * @tc.desc      : function test
257  */
258 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_0700, TestSize.Level1)
259 {
260     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
261     vDecSample->INP_DIR = INP_DIR_1080_30;
262     vDecSample->DEFAULT_WIDTH = 1920;
263     vDecSample->DEFAULT_HEIGHT = 1080;
264     vDecSample->DEFAULT_FRAME_RATE = 30;
265     vDecSample->SF_OUTPUT = false;
266     ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
267     ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
268     ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
269     ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
270     vDecSample->WaitForEOS();
271     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
272 }
273 
274 /**
275  * @tc.number    : VIDEO_HWDEC_FUNCTION_0800
276  * @tc.name      : test set EOS before last frame then stop
277  * @tc.desc      : function test
278  */
279 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_0800, TestSize.Level1)
280 {
281     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
282     vDecSample->INP_DIR = INP_DIR_1080_30;
283     vDecSample->DEFAULT_WIDTH = 1920;
284     vDecSample->DEFAULT_HEIGHT = 1080;
285     vDecSample->DEFAULT_FRAME_RATE = 30;
286     vDecSample->SF_OUTPUT = false;
287     vDecSample->BEFORE_EOS_INPUT = true;
288     ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
289     ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
290     ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
291     ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
292     vDecSample->WaitForEOS();
293     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
294 }
295 
296 /**
297  * @tc.number    : VIDEO_HWDEC_FUNCTION_0900
298  * @tc.name      : test set EOS before last frame then input frames
299  * @tc.desc      : function test
300  */
301 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_0900, TestSize.Level1)
302 {
303     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
304     vDecSample->INP_DIR = INP_DIR_1080_30;
305     vDecSample->DEFAULT_WIDTH = 1920;
306     vDecSample->DEFAULT_HEIGHT = 1080;
307     vDecSample->DEFAULT_FRAME_RATE = 30;
308     vDecSample->SF_OUTPUT = false;
309     vDecSample->BEFORE_EOS_INPUT_INPUT = true;
310     ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
311     ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
312     ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
313     ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
314     vDecSample->WaitForEOS();
315     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
316 }
317 
318 /**
319  * @tc.number    : VIDEO_HWDEC_FUNCTION_1000
320  * @tc.name      : test reconfigure for new file with one decoder
321  * @tc.desc      : function test
322  */
323 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_1000, TestSize.Level1)
324 {
325     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
326     vDecSample->INP_DIR = INP_DIR_1080_30;
327     vDecSample->DEFAULT_WIDTH = 1920;
328     vDecSample->DEFAULT_HEIGHT = 1080;
329     vDecSample->DEFAULT_FRAME_RATE = 30;
330     vDecSample->SF_OUTPUT = false;
331     vDecSample->AFTER_EOS_DESTORY_CODEC = false;
332     ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
333     ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
334     ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
335     ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
336     vDecSample->WaitForEOS();
337     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
338     ASSERT_EQ(AV_ERR_OK, vDecSample->Reset());
339     ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
340     ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
341     ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
342     vDecSample->WaitForEOS();
343     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
344 }
345 
346 /**
347  * @tc.number    : VIDEO_HWDEC_FUNCTION_1100
348  * @tc.name      : test reconfigure for new file with the recreated decoder
349  * @tc.desc      : function test
350  */
351 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_1100, TestSize.Level1)
352 {
353     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
354     vDecSample->INP_DIR = INP_DIR_1080_30;
355     vDecSample->DEFAULT_WIDTH = 1920;
356     vDecSample->DEFAULT_HEIGHT = 1080;
357     vDecSample->DEFAULT_FRAME_RATE = 30;
358     vDecSample->SF_OUTPUT = false;
359     vDecSample->AFTER_EOS_DESTORY_CODEC = false;
360     ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
361     ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
362     ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
363     ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
364     vDecSample->WaitForEOS();
365     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
366     ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
367     ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
368     ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
369     ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
370     vDecSample->WaitForEOS();
371     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
372 }
373 
374 /**
375  * @tc.number    : VIDEO_HWDEC_FUNCTION_1200
376  * @tc.name      : repeat start and stop 5 times before EOS
377  * @tc.desc      : function test
378  */
379 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_1200, TestSize.Level2)
380 {
381     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
382     vDecSample->INP_DIR = INP_DIR_1080_30;
383     vDecSample->DEFAULT_WIDTH = 1920;
384     vDecSample->DEFAULT_HEIGHT = 1080;
385     vDecSample->DEFAULT_FRAME_RATE = 30;
386     vDecSample->SF_OUTPUT = false;
387     vDecSample->REPEAT_START_STOP_BEFORE_EOS = 5;
388     ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
389     ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
390     ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
391     ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
392     vDecSample->WaitForEOS();
393     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
394 }
395 
396 /**
397  * @tc.number    : VIDEO_HWDEC_FUNCTION_1300
398  * @tc.name      : repeat start and flush 5 times before EOS
399  * @tc.desc      : function test
400  */
401 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_1300, TestSize.Level2)
402 {
403     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
404     vDecSample->INP_DIR = INP_DIR_1080_30;
405     vDecSample->DEFAULT_WIDTH = 1920;
406     vDecSample->DEFAULT_HEIGHT = 1080;
407     vDecSample->DEFAULT_FRAME_RATE = 30;
408     vDecSample->SF_OUTPUT = false;
409     vDecSample->REPEAT_START_FLUSH_BEFORE_EOS = 5;
410     ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
411     ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
412     ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
413     ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
414     vDecSample->WaitForEOS();
415     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
416 }
417 
418 /**
419  * @tc.number    : VIDEO_HWDEC_FUNCTION_1400
420  * @tc.name      : set larger width and height
421  * @tc.desc      : function test
422  */
423 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_1400, TestSize.Level2)
424 {
425     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
426     vDecSample->INP_DIR = INP_DIR_720_30;
427     vDecSample->DEFAULT_WIDTH = 1920;
428     vDecSample->DEFAULT_HEIGHT = 1080;
429     vDecSample->DEFAULT_FRAME_RATE = 30;
430     vDecSample->SF_OUTPUT = false;
431     ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
432     ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
433     ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
434     ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
435     vDecSample->WaitForEOS();
436     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
437 }
438 
439 /**
440  * @tc.number    : VIDEO_HWDEC_FUNCTION_1600
441  * @tc.name      : 265 decode
442  * @tc.desc      : function test
443  */
444 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_1600, TestSize.Level2)
445 {
446     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
447     vDecSample->INP_DIR = "/data/test/media/1920_1080_20M_30.h265";
448     vDecSample->DEFAULT_WIDTH = 1920;
449     vDecSample->DEFAULT_HEIGHT = 1080;
450     vDecSample->DEFAULT_FRAME_RATE = 30;
451     vDecSample->SF_OUTPUT = false;
452     ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameHEVC));
453     ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
454     ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
455     ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
456     vDecSample->WaitForEOS();
457     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
458 }
459 
460 /**
461  * @tc.number    : VIDEO_HWDEC_FUNCTION_1700
462  * @tc.name      : resolution change
463  * @tc.desc      : function test
464  */
465 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_1700, TestSize.Level2)
466 {
467     if (g_codecName.find("hisi") != string::npos) {
468         auto vDecSample = make_shared<VDecAPI11Sample>();
469         vDecSample->INP_DIR = "/data/test/media/resolutionChange.h264";
470         vDecSample->DEFAULT_WIDTH = 1104;
471         vDecSample->DEFAULT_HEIGHT = 622;
472         vDecSample->DEFAULT_FRAME_RATE = 30;
473         vDecSample->SF_OUTPUT = false;
474         vDecSample->NocaleHash = true;
475         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
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(AV_ERR_OK, vDecSample->errCount);
481         ASSERT_EQ(CHANGE_AVC_FRAME, vDecSample->outFrameCount);
482     } else {
483         cout << "hardware encoder is rk,skip." << endl;
484     }
485 }
486 /**
487  * @tc.number    : SURF_CHANGE_FUNC_001
488  * @tc.name      : surf change in normal state
489  * @tc.desc      : function test
490  */
491 HWTEST_F(HwdecFuncNdkTest, SURF_CHANGE_FUNC_001, TestSize.Level0)
492 {
493     auto vDecSample = make_shared<VDecNdkSample>();
494     vDecSample->INP_DIR = INP_DIR_1080_30;
495     vDecSample->DEFAULT_WIDTH = DEFAULT_WIDTH;
496     vDecSample->DEFAULT_HEIGHT = DEFAULT_HEIGHT;
497     vDecSample->DEFAULT_FRAME_RATE = 30;
498     vDecSample->SF_OUTPUT = true;
499     vDecSample->autoSwitchSurface = true;
500     vDecSample->AFTER_EOS_DESTORY_CODEC = false;
501     vDecSample->sleepOnFPS = true;
502     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName));
503     vDecSample->WaitForEOS();
504     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
505     ASSERT_EQ(AV_ERR_OK, vDecSample->Reset());
506     ASSERT_EQ(AV_ERR_INVALID_STATE, vDecSample->SwitchSurface());
507     ASSERT_EQ(AV_ERR_OK, vDecSample->Release());
508 }
509 /**
510  * @tc.number    : SURF_CHANGE_FUNC_002
511  * @tc.name      : surf change in flushed state
512  * @tc.desc      : function test
513  */
514 HWTEST_F(HwdecFuncNdkTest, SURF_CHANGE_FUNC_002, TestSize.Level0)
515 {
516     auto vDecSample = make_shared<VDecNdkSample>();
517     vDecSample->INP_DIR = INP_DIR_1080_30;
518     vDecSample->DEFAULT_WIDTH = DEFAULT_WIDTH;
519     vDecSample->DEFAULT_HEIGHT = DEFAULT_HEIGHT;
520     vDecSample->DEFAULT_FRAME_RATE = 30;
521     vDecSample->SF_OUTPUT = true;
522     vDecSample->autoSwitchSurface = true;
523     vDecSample->sleepOnFPS = true;
524     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName));
525     ASSERT_EQ(AV_ERR_OK, vDecSample->Flush());
526     ASSERT_EQ(AV_ERR_OK, vDecSample->SwitchSurface());
527     ASSERT_EQ(AV_ERR_OK, vDecSample->Stop());
528 }
529 /**
530  * @tc.number    : SURF_CHANGE_FUNC_003
531  * @tc.name      : surf change in buffer mode
532  * @tc.desc      : function test
533  */
534 HWTEST_F(HwdecFuncNdkTest, SURF_CHANGE_FUNC_003, TestSize.Level0)
535 {
536     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
537     vDecSample->INP_DIR = INP_DIR_1080_30;
538     vDecSample->DEFAULT_WIDTH = 1920;
539     vDecSample->DEFAULT_HEIGHT = 1080;
540     vDecSample->DEFAULT_FRAME_RATE = 30;
541     vDecSample->SF_OUTPUT = false;
542     vDecSample->CreateSurface();
543     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
544     ASSERT_EQ(AV_ERR_OPERATE_NOT_PERMIT, vDecSample->SwitchSurface());
545     vDecSample->WaitForEOS();
546     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
547 }
548 /**
549  * @tc.number    : SURF_CHANGE_FUNC_004
550  * @tc.name      : repeat call setSurface fastly
551  * @tc.desc      : function test
552  */
553 HWTEST_F(HwdecFuncNdkTest, SURF_CHANGE_FUNC_004, TestSize.Level0)
554 {
555     auto vDecSample = make_shared<VDecNdkSample>();
556     vDecSample->INP_DIR = INP_DIR_1080_30;
557     vDecSample->DEFAULT_WIDTH = DEFAULT_WIDTH;
558     vDecSample->DEFAULT_HEIGHT = DEFAULT_HEIGHT;
559     vDecSample->DEFAULT_FRAME_RATE = 30;
560     vDecSample->SF_OUTPUT = true;
561     vDecSample->autoSwitchSurface = true;
562     vDecSample->sleepOnFPS = true;
563     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName));
564     ASSERT_EQ(AV_ERR_OK, vDecSample->RepeatCallSetSurface());
565     vDecSample->WaitForEOS();
566 }
567 
568 /**
569  * @tc.number    : OUTPUT_DECS_FUNC_001
570  * @tc.name      : get decode output descriptions h264
571  * @tc.desc      : function test
572  */
573 HWTEST_F(HwdecFuncNdkTest, OUTPUT_DECS_FUNC_001, TestSize.Level0)
574 {
575     if (g_codecName.find("hisi") != string::npos) {
576         auto vDecSample = make_shared<VDecNdkSample>();
577         vDecSample->INP_DIR = "/data/test/media/1920x1080.h264";
578         vDecSample->DEFAULT_WIDTH = DEFAULT_WIDTH;
579         vDecSample->DEFAULT_HEIGHT = DEFAULT_HEIGHT;
580         vDecSample->DEFAULT_FRAME_RATE = 30;
581         vDecSample->needCheckOutputDesc = true;
582         vDecSample->expectCropTop = 0;
583         vDecSample->expectCropBottom = DEFAULT_HEIGHT - 1;
584         vDecSample->expectCropLeft = 0;
585         vDecSample->expectCropRight = DEFAULT_WIDTH - 1;
586 
587         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
588         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
589         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
590         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
591         vDecSample->WaitForEOS();
592         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
593     } else {
594         cout << "hardware encoder is rk,skip." << endl;
595     }
596 }
597 /**
598  * @tc.number    : OUTPUT_DECS_FUNC_002
599  * @tc.name      : get decode output descriptions h265
600  * @tc.desc      : function test
601  */
602 HWTEST_F(HwdecFuncNdkTest, OUTPUT_DECS_FUNC_002, TestSize.Level0)
603 {
604     if (g_codecName.find("hisi") != string::npos) {
605         auto vDecSample = make_shared<VDecNdkSample>();
606         vDecSample->INP_DIR = "/data/test/media/1920x1080.h265";
607         vDecSample->DEFAULT_WIDTH = DEFAULT_WIDTH;
608         vDecSample->DEFAULT_HEIGHT = DEFAULT_HEIGHT;
609         vDecSample->DEFAULT_FRAME_RATE = 30;
610         vDecSample->needCheckOutputDesc = true;
611         vDecSample->expectCropTop = 0;
612         vDecSample->expectCropBottom = DEFAULT_HEIGHT - 1;
613         vDecSample->expectCropLeft = 0;
614         vDecSample->expectCropRight = DEFAULT_WIDTH - 1;
615 
616         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameHEVC));
617         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
618         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
619         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
620         vDecSample->WaitForEOS();
621         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
622     } else {
623         cout << "hardware encoder is rk,skip." << endl;
624     }
625 }
626 /**
627  * @tc.number    : OUTPUT_DECS_FUNC_003
628  * @tc.name      : get decode output descriptions h264 ,4k
629  * @tc.desc      : function test
630  */
631 HWTEST_F(HwdecFuncNdkTest, OUTPUT_DECS_FUNC_003, TestSize.Level0)
632 {
633     if (g_codecName.find("hisi") != string::npos) {
634         auto vDecSample = make_shared<VDecNdkSample>();
635         vDecSample->INP_DIR = "/data/test/media/3840x2160.h264";
636         vDecSample->DEFAULT_WIDTH = UHD_RESOLUTION[0];
637         vDecSample->DEFAULT_HEIGHT = UHD_RESOLUTION[1];
638         vDecSample->DEFAULT_FRAME_RATE = 30;
639         vDecSample->needCheckOutputDesc = true;
640         vDecSample->expectCropTop = 0;
641         vDecSample->expectCropBottom = UHD_RESOLUTION[1] - 1;
642         vDecSample->expectCropLeft = 0;
643         vDecSample->expectCropRight = UHD_RESOLUTION[0] - 1;
644 
645         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
646         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
647         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
648         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
649         vDecSample->WaitForEOS();
650         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
651     } else {
652         cout << "hardware encoder is rk,skip." << endl;
653     }
654 }
655 /**
656  * @tc.number    : OUTPUT_DECS_FUNC_004
657  * @tc.name      : get decode output descriptions h265 ,4k
658  * @tc.desc      : function test
659  */
660 HWTEST_F(HwdecFuncNdkTest, OUTPUT_DECS_FUNC_004, TestSize.Level0)
661 {
662     if (g_codecName.find("hisi") != string::npos) {
663         auto vDecSample = make_shared<VDecNdkSample>();
664         vDecSample->INP_DIR = "/data/test/media/3840x2160.h265";
665         vDecSample->DEFAULT_WIDTH = UHD_RESOLUTION[0];
666         vDecSample->DEFAULT_HEIGHT = UHD_RESOLUTION[1];
667         vDecSample->DEFAULT_FRAME_RATE = 30;
668         vDecSample->needCheckOutputDesc = true;
669         vDecSample->expectCropTop = 0;
670         vDecSample->expectCropBottom = UHD_RESOLUTION[1] - 1;
671         vDecSample->expectCropLeft = 0;
672         vDecSample->expectCropRight = UHD_RESOLUTION[0] - 1;
673 
674         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameHEVC));
675         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
676         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
677         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
678         vDecSample->WaitForEOS();
679         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
680     } else {
681         cout << "hardware encoder is rk,skip." << endl;
682     }
683 }
684 /**
685  * @tc.number    : OUTPUT_DECS_FUNC_005
686  * @tc.name      : get decode output descriptions h264 ,crop size
687  * @tc.desc      : function test
688  */
689 HWTEST_F(HwdecFuncNdkTest, OUTPUT_DECS_FUNC_005, TestSize.Level0)
690 {
691     if (g_codecName.find("hisi") != string::npos) {
692         auto vDecSample = make_shared<VDecNdkSample>();
693         vDecSample->INP_DIR = "/data/test/media/1104x622.h264";
694         vDecSample->DEFAULT_WIDTH = HD_RESOLUTION[0];
695         vDecSample->DEFAULT_HEIGHT = HD_RESOLUTION[1];
696         vDecSample->DEFAULT_FRAME_RATE = 30;
697         vDecSample->needCheckOutputDesc = true;
698         vDecSample->expectCropTop = 0;
699         vDecSample->expectCropBottom = HD_RESOLUTION[1] - 1;
700         vDecSample->expectCropLeft = 0;
701         vDecSample->expectCropRight = HD_RESOLUTION[0] - 1;
702 
703         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
704         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
705         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
706         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
707         vDecSample->WaitForEOS();
708         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
709     } else {
710         cout << "hardware encoder is rk,skip." << endl;
711     }
712 }
713 /**
714  * @tc.number    : OUTPUT_DECS_FUNC_006
715  * @tc.name      : get decode output descriptions h265 ,crop size
716  * @tc.desc      : function test
717  */
718 HWTEST_F(HwdecFuncNdkTest, OUTPUT_DECS_FUNC_006, TestSize.Level0)
719 {
720     if (g_codecName.find("hisi") != string::npos) {
721         auto vDecSample = make_shared<VDecNdkSample>();
722         vDecSample->INP_DIR = "/data/test/media/1104x622.h265";
723         vDecSample->DEFAULT_WIDTH = HD_RESOLUTION[0];
724         vDecSample->DEFAULT_HEIGHT = HD_RESOLUTION[1];
725         vDecSample->DEFAULT_FRAME_RATE = 30;
726         vDecSample->needCheckOutputDesc = true;
727         vDecSample->expectCropTop = 0;
728         vDecSample->expectCropBottom = HD_RESOLUTION[1] - 1;
729         vDecSample->expectCropLeft = 0;
730         vDecSample->expectCropRight = HD_RESOLUTION[0] - 1;
731 
732         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameHEVC));
733         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
734         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
735         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
736         vDecSample->WaitForEOS();
737         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
738     } else {
739         cout << "hardware encoder is rk,skip." << endl;
740     }
741 }
742 /**
743  * @tc.number    : OUTPUT_DECS_FUNC_007
744  * @tc.name      : get decode output descriptions h265 ,resolution change
745  * @tc.desc      : function test
746  */
747 HWTEST_F(HwdecFuncNdkTest, OUTPUT_DECS_FUNC_007, TestSize.Level0)
748 {
749     if (g_codecName.find("hisi") != string::npos) {
750         auto vDecSample = make_shared<VDecNdkSample>();
751         vDecSample->INP_DIR = "/data/test/media/resolutionChange.h264";
752         vDecSample->DEFAULT_WIDTH = HD_RESOLUTION[0];
753         vDecSample->DEFAULT_HEIGHT = HD_RESOLUTION[1];
754         vDecSample->DEFAULT_FRAME_RATE = 30;
755         vDecSample->isResChangeStream = true;
756         vDecSample->expectCropTop = 0;
757         vDecSample->expectCropBottom = HD_RESOLUTION[1] - 1;
758         vDecSample->expectCropLeft = 0;
759         vDecSample->expectCropRight = HD_RESOLUTION[0] - 1;
760 
761         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
762         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
763         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
764         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
765         vDecSample->WaitForEOS();
766         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
767     } else {
768         cout << "hardware encoder is rk,skip." << endl;
769     }
770 }
771 
772 /**
773  * @tc.number    : MAX_INPUT_SIZE_CHECK_001
774  * @tc.name      : MaxInputSize value incorrect
775  * @tc.desc      : function test
776  */
777 HWTEST_F(HwdecFuncNdkTest, MAX_INPUT_SIZE_CHECK_001, TestSize.Level0)
778 {
779     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
780     vDecSample->INP_DIR = "/data/test/media/1920_1080_10_30Mb.h264";
781     vDecSample->DEFAULT_WIDTH = 1920;
782     vDecSample->DEFAULT_HEIGHT = 1080;
783     vDecSample->DEFAULT_FRAME_RATE = 30;
784     vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
785     vDecSample->maxInputSize = -1;
786     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
787     vDecSample->WaitForEOS();
788     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
789 }
790 
791 /**
792  * @tc.number    : MAX_INPUT_SIZE_CHECK_002
793  * @tc.name      : MaxInputSize value incorrect
794  * @tc.desc      : function test
795  */
796 HWTEST_F(HwdecFuncNdkTest, MAX_INPUT_SIZE_CHECK_002, TestSize.Level0)
797 {
798     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
799     vDecSample->INP_DIR = "/data/test/media/1920_1080_10_30Mb.h264";
800     vDecSample->DEFAULT_WIDTH = 1920;
801     vDecSample->DEFAULT_HEIGHT = 1080;
802     vDecSample->DEFAULT_FRAME_RATE = 30;
803     vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
804     vDecSample->maxInputSize = INT_MAX;
805     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
806     vDecSample->WaitForEOS();
807     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
808 }
809 
810 /**
811  * @tc.number    : MAX_INPUT_SIZE_CHECK_003
812  * @tc.name      : MaxInputSize value normal
813  * @tc.desc      : function test
814  */
815 HWTEST_F(HwdecFuncNdkTest, MAX_INPUT_SIZE_CHECK_003, TestSize.Level0)
816 {
817     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
818     vDecSample->INP_DIR = "/data/test/media/1104x622.h264";
819     vDecSample->DEFAULT_WIDTH = 1108;
820     vDecSample->DEFAULT_HEIGHT = 622;
821     vDecSample->DEFAULT_FRAME_RATE = 30;
822     vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
823     vDecSample->maxInputSize = MAX_NALU_LEN;
824     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName));
825     vDecSample->WaitForEOS();
826     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
827 }
828 /**
829  * @tc.number    : MAX_INPUT_SIZE_CHECK_004
830  * @tc.name      : MaxInputSize value incorrect hevc
831  * @tc.desc      : function test
832  */
833 HWTEST_F(HwdecFuncNdkTest, MAX_INPUT_SIZE_CHECK_004, TestSize.Level0)
834 {
835     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
836     vDecSample->INP_DIR = "/data/test/media/1920_1080_20M_30.h265";
837     vDecSample->DEFAULT_WIDTH = 1920;
838     vDecSample->DEFAULT_HEIGHT = 1080;
839     vDecSample->DEFAULT_FRAME_RATE = 30;
840     vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
841     vDecSample->maxInputSize = -1;
842     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecNameHEVC));
843     vDecSample->WaitForEOS();
844     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
845 }
846 
847 /**
848  * @tc.number    : MAX_INPUT_SIZE_CHECK_005
849  * @tc.name      : MaxInputSize value incorrect
850  * @tc.desc      : function test
851  */
852 HWTEST_F(HwdecFuncNdkTest, MAX_INPUT_SIZE_CHECK_005, TestSize.Level0)
853 {
854     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
855     vDecSample->INP_DIR = "/data/test/media/1920_1080_20M_30.h265";
856     vDecSample->DEFAULT_WIDTH = 1920;
857     vDecSample->DEFAULT_HEIGHT = 1080;
858     vDecSample->DEFAULT_FRAME_RATE = 30;
859     vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
860     vDecSample->maxInputSize = INT_MAX;
861     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecNameHEVC));
862     vDecSample->WaitForEOS();
863     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
864 }
865 
866 /**
867  * @tc.number    : MAX_INPUT_SIZE_CHECK_006
868  * @tc.name      : MaxInputSize value normal
869  * @tc.desc      : function test
870  */
871 HWTEST_F(HwdecFuncNdkTest, MAX_INPUT_SIZE_CHECK_006, TestSize.Level0)
872 {
873     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
874     vDecSample->INP_DIR = "/data/test/media/1104x622.h265";
875     vDecSample->DEFAULT_WIDTH = 1108;
876     vDecSample->DEFAULT_HEIGHT = 622;
877     vDecSample->DEFAULT_FRAME_RATE = 30;
878     vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
879     vDecSample->maxInputSize = MAX_NALU_LEN;
880     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecNameHEVC));
881     vDecSample->WaitForEOS();
882     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
883 }
884 
885 /**
886  * @tc.number    : FLUSH_CHECK_001
887  * @tc.name      : Compare the flush frame with the normal process frame
888  * @tc.desc      : function test
889  */
890 HWTEST_F(HwdecFuncNdkTest, FLUSH_CHECK_001, TestSize.Level0)
891 {
892     shared_ptr<VDecNdkSample> vDecSample = make_shared<VDecNdkSample>();
893     vDecSample->INP_DIR = INP_DIR_1080_30;
894     vDecSample->DEFAULT_WIDTH = 1920;
895     vDecSample->DEFAULT_HEIGHT = 1080;
896     vDecSample->DEFAULT_FRAME_RATE = 30;
897     vDecSample->SF_OUTPUT = false;
898     ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
899     ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
900     ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
901     ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
902     vDecSample->WaitForEOS();
903     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
904     cout << "--vDecSample--" << vDecSample->outCount << endl;
905     shared_ptr<VDecNdkSample> vDecSample1 = make_shared<VDecNdkSample>();
906     vDecSample1->INP_DIR = INP_DIR_1080_30;
907     vDecSample1->DEFAULT_WIDTH = 1920;
908     vDecSample1->DEFAULT_HEIGHT = 1080;
909     vDecSample1->DEFAULT_FRAME_RATE = 30;
910     vDecSample1->SF_OUTPUT = false;
911     vDecSample1->REPEAT_START_FLUSH_BEFORE_EOS = 1;
912     ASSERT_EQ(AV_ERR_OK, vDecSample1->CreateVideoDecoder(g_codecName));
913     ASSERT_EQ(AV_ERR_OK, vDecSample1->ConfigureVideoDecoder());
914     ASSERT_EQ(AV_ERR_OK, vDecSample1->SetVideoDecoderCallback());
915     ASSERT_EQ(AV_ERR_OK, vDecSample1->StartVideoDecoder());
916     vDecSample1->WaitForEOS();
917     ASSERT_EQ(AV_ERR_OK, vDecSample1->errCount);
918     cout << "--Flush--" << vDecSample1->outCount << endl;
919     ASSERT_EQ(vDecSample->outCount, vDecSample1->outCount);
920 }
921 
922 /**
923  * @tc.number    : VIDEO_HWDEC_FUNCTION_ATTIME_0010
924  * @tc.name      : test h264 asyn decode surface,use at time
925  * @tc.desc      : function test
926  */
927 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_ATTIME_0010, TestSize.Level0)
928 {
929     shared_ptr<VDecAPI11Sample> vDecSample = make_shared<VDecAPI11Sample>();
930     vDecSample->INP_DIR = INP_DIR_720_30;
931     vDecSample->SF_OUTPUT = true;
932     vDecSample->DEFAULT_WIDTH = 1280;
933     vDecSample->DEFAULT_HEIGHT = 720;
934     vDecSample->DEFAULT_FRAME_RATE = 30;
935     vDecSample->rsAtTime = true;
936     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName));
937     vDecSample->WaitForEOS();
938     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
939 }
940 
941 /**
942  * @tc.number    : VIDEO_HWDEC_FUNCTION_ATTIME_0011
943  * @tc.name      : test h265 asyn decode surface,use at time
944  * @tc.desc      : function test
945  */
946 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_ATTIME_0011, TestSize.Level1)
947 {
948     shared_ptr<VDecAPI11Sample> vDecSample = make_shared<VDecAPI11Sample>();
949     vDecSample->INP_DIR = INP_DIR_1080_20;
950     vDecSample->SF_OUTPUT = true;
951     vDecSample->DEFAULT_WIDTH = 1920;
952     vDecSample->DEFAULT_HEIGHT = 1080;
953     vDecSample->DEFAULT_FRAME_RATE = 30;
954     vDecSample->rsAtTime = true;
955     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameHEVC));
956     vDecSample->WaitForEOS();
957     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
958 }
959 
960 /**
961  * @tc.number    : VIDEO_HWDEC_FUNCTION_ATTIME_0012
962  * @tc.name      : test h265 10bit asyn decode surface,use at time
963  * @tc.desc      : function test
964  */
965 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_ATTIME_0012, TestSize.Level1)
966 {
967     shared_ptr<VDecAPI11Sample> vDecSample = make_shared<VDecAPI11Sample>();
968     vDecSample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN;
969     vDecSample->INP_DIR = inpDirVivid;
970     vDecSample->SF_OUTPUT = true;
971     vDecSample->DEFAULT_WIDTH = 3840;
972     vDecSample->DEFAULT_HEIGHT = 2160;
973     vDecSample->DEFAULT_FRAME_RATE = 30;
974     vDecSample->rsAtTime = true;
975     vDecSample->useHDRSource = true;
976     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameHEVC));
977     vDecSample->WaitForEOS();
978     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
979 }
980 
981 /**
982  * @tc.number    : VIDEO_HWDEC_FUNCTION_1410
983  * @tc.name      : Increase frame rate judgment
984  * @tc.desc      : function test
985  */
986 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_1410, TestSize.Level2)
987 {
988     shared_ptr<VDecAPI11Sample> vDecSample = make_shared<VDecAPI11Sample>();
989     vDecSample->INP_DIR = INP_DIR_720_30;
990     vDecSample->OUT_DIR = "/data/test/media/HW_720_30.yuv";
991     vDecSample->DEFAULT_WIDTH = 1280;
992     vDecSample->DEFAULT_HEIGHT = 720;
993     vDecSample->DEFAULT_FRAME_RATE = 30;
994     vDecSample->SF_OUTPUT = false;
995     vDecSample->outputYuvFlag = true;
996     ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
997     ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
998     ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
999     ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1000     vDecSample->WaitForEOS();
1001     ASSERT_EQ(101, vDecSample->outFrameCount);
1002     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1003 }
1004 
1005 /**
1006  * @tc.number    : VIDEO_HWDEC_FUNCTION_1420
1007  * @tc.name      : Increase frame rate judgment
1008  * @tc.desc      : function test
1009  */
1010 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_1420, TestSize.Level2)
1011 {
1012     shared_ptr<VDecAPI11Sample> vDecSample = make_shared<VDecAPI11Sample>();
1013     vDecSample->INP_DIR = "/data/test/media/1920_1080_20M_30.h265";
1014     vDecSample->OUT_DIR = "/data/test/media/HW_1920_1080_20M_30.yuv";
1015     vDecSample->DEFAULT_WIDTH = 1920;
1016     vDecSample->DEFAULT_HEIGHT = 1080;
1017     vDecSample->DEFAULT_FRAME_RATE = 30;
1018     vDecSample->SF_OUTPUT = false;
1019     vDecSample->outputYuvFlag = true;
1020     ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameHEVC));
1021     ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1022     ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1023     ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1024     vDecSample->WaitForEOS();
1025     ASSERT_EQ(501, vDecSample->outFrameCount);
1026     ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1027 }
1028 
1029 /**
1030  * @tc.number    : VIDEO_DECODE_VVC_0100
1031  * @tc.name      : decode vvc buffer
1032  * @tc.desc      : function test
1033  */
1034 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_0100, TestSize.Level0)
1035 {
1036     if (access(INP_DIR_VVC_1080, F_OK) == 0 && g_codecNameVVC.find("hisi") != string::npos) {
1037         auto vDecSample = make_shared<VDecAPI11Sample>();
1038         vDecSample->INP_DIR = INP_DIR_VVC_1080;
1039         vDecSample->DEFAULT_WIDTH = 1920;
1040         vDecSample->DEFAULT_HEIGHT = 1080;
1041         vDecSample->DEFAULT_FRAME_RATE = 30;
1042         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameVVC));
1043         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1044         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1045         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1046         vDecSample->WaitForEOS();
1047         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1048     }
1049 }
1050 
1051 /**
1052  * @tc.number    : VIDEO_DECODE_VVC_0200
1053  * @tc.name      : decode vvc surface
1054  * @tc.desc      : function test
1055  */
1056 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_0200, TestSize.Level0)
1057 {
1058     if (access(INP_DIR_VVC_1080, F_OK) == 0 && g_codecNameVVC.find("hisi") != string::npos) {
1059         auto vDecSample = make_shared<VDecAPI11Sample>();
1060         vDecSample->INP_DIR = INP_DIR_VVC_1080;
1061         vDecSample->DEFAULT_WIDTH = 1920;
1062         vDecSample->DEFAULT_HEIGHT = 1080;
1063         vDecSample->DEFAULT_FRAME_RATE = 30;
1064         vDecSample->SF_OUTPUT = true;
1065         vDecSample->sleepOnFPS = true;
1066         ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameVVC));
1067         vDecSample->WaitForEOS();
1068         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1069     }
1070 }
1071 
1072 /**
1073  * @tc.number    : VIDEO_DECODE_VVC_0300
1074  * @tc.name      : decode vvc switch surface
1075  * @tc.desc      : function test
1076  */
1077 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_0300, TestSize.Level1)
1078 {
1079     if (access(INP_DIR_VVC_1080, F_OK) == 0 && g_codecNameVVC.find("hisi") != string::npos) {
1080         auto vDecSample = make_shared<VDecAPI11Sample>();
1081         vDecSample->INP_DIR = INP_DIR_VVC_1080;
1082         vDecSample->DEFAULT_WIDTH = 1920;
1083         vDecSample->DEFAULT_HEIGHT = 1080;
1084         vDecSample->DEFAULT_FRAME_RATE = 30;
1085         vDecSample->SF_OUTPUT = true;
1086         vDecSample->autoSwitchSurface = true;
1087         vDecSample->sleepOnFPS = true;
1088         ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameVVC));
1089         vDecSample->WaitForEOS();
1090         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1091     }
1092 }
1093 
1094 /**
1095  * @tc.number    : VIDEO_DECODE_VVC_0400
1096  * @tc.name      : decode vvc resolution change
1097  * @tc.desc      : function test
1098  */
1099 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_0400, TestSize.Level2)
1100 {
1101     if (access(inpDirVvcResolution, F_OK) == 0 && g_codecNameVVC.find("hisi") != string::npos) {
1102         auto vDecSample = make_shared<VDecAPI11Sample>();
1103         vDecSample->INP_DIR = inpDirVvcResolution;
1104         vDecSample->DEFAULT_WIDTH = 1104;
1105         vDecSample->DEFAULT_HEIGHT = 622;
1106         vDecSample->DEFAULT_FRAME_RATE = 30;
1107         vDecSample->SF_OUTPUT = false;
1108         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameVVC));
1109         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1110         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1111         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1112         vDecSample->WaitForEOS();
1113         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1114     }
1115 }
1116 
1117 /**
1118  * @tc.number    : VIDEO_DECODE_VVC_0500
1119  * @tc.name      : decode vvc 10bit hdrVivid
1120  * @tc.desc      : function test
1121  */
1122 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_0500, TestSize.Level1)
1123 {
1124     if (access(INP_DIR_VVC_1080, F_OK) == 0 && g_codecNameVVC.find("hisi") != string::npos) {
1125         auto vDecSample = make_shared<VDecAPI11Sample>();
1126         vDecSample->INP_DIR = INP_DIR_VVC_1080;
1127         vDecSample->DEFAULT_WIDTH = 1920;
1128         vDecSample->DEFAULT_HEIGHT = 1080;
1129         vDecSample->DEFAULT_FRAME_RATE = 30;
1130         vDecSample->SF_OUTPUT = false;
1131         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameVVC));
1132         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1133         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1134         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1135         vDecSample->WaitForEOS();
1136         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1137     }
1138 }
1139 
1140 /**
1141  * @tc.number    : VIDEO_DECODE_VVC_0600
1142  * @tc.name      : decode vvc surf change in normal state
1143  * @tc.desc      : function test
1144  */
1145 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_0600, TestSize.Level2)
1146 {
1147     if (access(INP_DIR_VVC_1080, F_OK) == 0 && g_codecNameVVC.find("hisi") != string::npos) {
1148         auto vDecSample = make_shared<VDecAPI11Sample>();
1149         vDecSample->INP_DIR = INP_DIR_VVC_1080;
1150         vDecSample->DEFAULT_WIDTH = DEFAULT_WIDTH;
1151         vDecSample->DEFAULT_HEIGHT = DEFAULT_HEIGHT;
1152         vDecSample->DEFAULT_FRAME_RATE = 30;
1153         vDecSample->SF_OUTPUT = true;
1154         vDecSample->autoSwitchSurface = true;
1155         vDecSample->AFTER_EOS_DESTORY_CODEC = false;
1156         vDecSample->sleepOnFPS = true;
1157         ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameVVC));
1158         vDecSample->WaitForEOS();
1159         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1160         ASSERT_EQ(AV_ERR_OK, vDecSample->Reset());
1161         ASSERT_EQ(AV_ERR_INVALID_STATE, vDecSample->SwitchSurface());
1162         ASSERT_EQ(AV_ERR_OK, vDecSample->Release());
1163     }
1164 }
1165 
1166 /**
1167  * @tc.number    : VIDEO_DECODE_VVC_0700
1168  * @tc.name      : decode vvc surf change in flushed state
1169  * @tc.desc      : function test
1170  */
1171 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_0700, TestSize.Level2)
1172 {
1173     if (access(INP_DIR_VVC_1080, F_OK) == 0 && g_codecNameVVC.find("hisi") != string::npos) {
1174         auto vDecSample = make_shared<VDecAPI11Sample>();
1175         vDecSample->INP_DIR = INP_DIR_VVC_1080;
1176         vDecSample->DEFAULT_WIDTH = DEFAULT_WIDTH;
1177         vDecSample->DEFAULT_HEIGHT = DEFAULT_HEIGHT;
1178         vDecSample->DEFAULT_FRAME_RATE = 30;
1179         vDecSample->SF_OUTPUT = true;
1180         vDecSample->autoSwitchSurface = true;
1181         vDecSample->sleepOnFPS = true;
1182         ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameVVC));
1183         ASSERT_EQ(AV_ERR_OK, vDecSample->Flush());
1184         ASSERT_EQ(AV_ERR_OK, vDecSample->SwitchSurface());
1185         ASSERT_EQ(AV_ERR_OK, vDecSample->Stop());
1186     }
1187 }
1188 
1189 /**
1190  * @tc.number    : VIDEO_DECODE_VVC_0800
1191  * @tc.name      : decode vvc surf change in buffer mode
1192  * @tc.desc      : function test
1193  */
1194 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_0800, TestSize.Level2)
1195 {
1196     if (access(INP_DIR_VVC_1080, F_OK) == 0 && g_codecNameVVC.find("hisi") != string::npos) {
1197         auto vDecSample = make_shared<VDecAPI11Sample>();
1198         vDecSample->INP_DIR = INP_DIR_VVC_1080;
1199         vDecSample->DEFAULT_WIDTH = 1920;
1200         vDecSample->DEFAULT_HEIGHT = 1080;
1201         vDecSample->DEFAULT_FRAME_RATE = 30;
1202         vDecSample->SF_OUTPUT = false;
1203         vDecSample->CreateSurface();
1204         ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecNameVVC));
1205         ASSERT_EQ(AV_ERR_OPERATE_NOT_PERMIT, vDecSample->SwitchSurface());
1206         vDecSample->WaitForEOS();
1207         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1208     }
1209 }
1210 
1211 /**
1212  * @tc.number    : VIDEO_DECODE_VVC_0900
1213  * @tc.name      : decode vvc get decode output descriptions h265
1214  * @tc.desc      : function test
1215  */
1216 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_0900, TestSize.Level2)
1217 {
1218     if (access(INP_DIR_VVC_1080, F_OK) == 0 && g_codecNameVVC.find("hisi") != string::npos) {
1219         auto vDecSample = make_shared<VDecAPI11Sample>();
1220         vDecSample->INP_DIR = INP_DIR_VVC_1080;
1221         vDecSample->DEFAULT_WIDTH = DEFAULT_WIDTH;
1222         vDecSample->DEFAULT_HEIGHT = DEFAULT_HEIGHT;
1223         vDecSample->DEFAULT_FRAME_RATE = 30;
1224         vDecSample->needCheckOutputDesc = true;
1225         vDecSample->expectCropTop = 0;
1226         vDecSample->expectCropBottom = DEFAULT_HEIGHT - 1;
1227         vDecSample->expectCropLeft = 0;
1228         vDecSample->expectCropRight = DEFAULT_WIDTH - 1;
1229 
1230         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameVVC));
1231         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1232         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1233         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1234         vDecSample->WaitForEOS();
1235         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1236     }
1237 }
1238 
1239 /**
1240  * @tc.number    : VIDEO_DECODE_VVC_1000
1241  * @tc.name      : decode vvc enable low latency
1242  * @tc.desc      : function test
1243  */
1244 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_1000, TestSize.Level2)
1245 {
1246     if (access(INP_DIR_VVC_1080, F_OK) == 0 && g_codecNameVVC.find("hisi") != string::npos) {
1247         auto vDecSample = make_shared<VDecNdkSample>();
1248         vDecSample->INP_DIR = INP_DIR_VVC_1080;
1249         vDecSample->DEFAULT_WIDTH = DEFAULT_WIDTH;
1250         vDecSample->DEFAULT_HEIGHT = DEFAULT_HEIGHT;
1251         vDecSample->DEFAULT_FRAME_RATE = 30;
1252         vDecSample->enableLowLatency = true;
1253         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameVVC));
1254         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1255         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1256         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1257         vDecSample->WaitForEOS();
1258         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1259     }
1260 }
1261 
1262 /**
1263  * @tc.number    : VIDEO_DECODE_VRR_0001
1264  * @tc.name      : decode to NV12 format, enable VRR
1265  * @tc.desc      : function test
1266  */
1267 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VRR_0001, TestSize.Level0)
1268 {
1269     auto vDecSample = make_shared<VDecAPI11Sample>();
1270     vDecSample->INP_DIR = INP_DIR_1080_30;
1271     vDecSample->DEFAULT_FRAME_RATE = 60.0;
1272     vDecSample->DEFAULT_WIDTH = DEFAULT_WIDTH;
1273     vDecSample->DEFAULT_HEIGHT = DEFAULT_HEIGHT;
1274     vDecSample->enableVRR = true;
1275     vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV12;
1276     ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
1277     ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1278 }
1279 
1280 /**
1281  * @tc.number    : VIDEO_DECODE_VRR_0002
1282  * @tc.name      : decode to NV21 format, enable VRR
1283  * @tc.desc      : function test
1284  */
1285 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VRR_0002, TestSize.Level0)
1286 {
1287     auto vDecSample = make_shared<VDecAPI11Sample>();
1288     vDecSample->INP_DIR = INP_DIR_1080_30;
1289     vDecSample->DEFAULT_FRAME_RATE = 60.0;
1290     vDecSample->DEFAULT_WIDTH = DEFAULT_WIDTH;
1291     vDecSample->DEFAULT_HEIGHT = DEFAULT_HEIGHT;
1292     vDecSample->enableVRR = true;
1293     vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
1294     ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
1295     if (!access("/system/lib64/media/", 0)) {
1296         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1297     }
1298 }
1299 
1300 /**
1301  * @tc.number    : VIDEO_HWDEC_FUNCTION_1800
1302  * @tc.name      : resolution change
1303  * @tc.desc      : function test
1304  */
1305 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_1800, TestSize.Level2)
1306 {
1307     if (g_codecNameHEVC.find("hisi") != string::npos) {
1308         auto vDecSample = make_shared<VDecAPI11Sample>();
1309         vDecSample->INP_DIR = "/data/test/media/change_8bit_h265.h265";
1310         vDecSample->DEFAULT_WIDTH = 1280;
1311         vDecSample->DEFAULT_HEIGHT = 720;
1312         vDecSample->DEFAULT_FRAME_RATE = 30;
1313         vDecSample->SF_OUTPUT = false;
1314         vDecSample->outputYuvFlag = true;
1315         vDecSample->NocaleHash = true;
1316         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameHEVC));
1317         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1318         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1319         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1320         vDecSample->WaitForEOS();
1321         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1322         ASSERT_EQ(CHANGE_HEVC_FRAME, vDecSample->outFrameCount);
1323     }
1324 }
1325 
1326 /**
1327  * @tc.number    : VIDEO_HWDEC_FUNCTION_1900
1328  * @tc.name      : resolution change
1329  * @tc.desc      : function test
1330  */
1331 HWTEST_F(HwdecFuncNdkTest, VIDEO_HWDEC_FUNCTION_1900, TestSize.Level2)
1332 {
1333     if (g_codecNameHEVC.find("hisi") != string::npos) {
1334         auto vDecSample = make_shared<VDecAPI11Sample>();
1335         vDecSample->INP_DIR = "/data/test/media/change_10bit_h265.h265";
1336         vDecSample->DEFAULT_WIDTH = 1280;
1337         vDecSample->DEFAULT_HEIGHT = 720;
1338         vDecSample->DEFAULT_FRAME_RATE = 30;
1339         vDecSample->SF_OUTPUT = false;
1340         vDecSample->outputYuvFlag = true;
1341         vDecSample->NocaleHash = true;
1342         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameHEVC));
1343         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1344         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1345         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1346         vDecSample->WaitForEOS();
1347         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1348         ASSERT_EQ(CHANGE_HEVC_TEN_FRAME, vDecSample->outFrameCount);
1349     }
1350 }
1351 
1352 /**
1353  * @tc.number    : VIDEO_DECODE_VVC_RESOLUTION_0010
1354  * @tc.name      : h266变分辨率,8bit解码,buffer, nv12
1355  * @tc.desc      : function test
1356  */
1357 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_RESOLUTION_0010, TestSize.Level0)
1358 {
1359     if (g_codecNameVVC.find("hisi") != string::npos) {
1360         auto vDecSample = make_shared<VDecAPI11Sample>();
1361         vDecSample->INP_DIR = inpDirVvcResolution8Bit;
1362         vDecSample->DEFAULT_WIDTH = 3840;
1363         vDecSample->DEFAULT_HEIGHT = 2160;
1364         vDecSample->DEFAULT_FRAME_RATE = 30;
1365         vDecSample->SF_OUTPUT = false;
1366         vDecSample->outputYuvFlag = true;
1367         vDecSample->NocaleHash = true;
1368         vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV12;
1369         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameVVC));
1370         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1371         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1372         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1373         vDecSample->WaitForEOS();
1374         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1375         ASSERT_EQ(CHANGE_VVC_FRAME, vDecSample->outFrameCount);
1376     }
1377 }
1378 
1379 /**
1380  * @tc.number    : VIDEO_DECODE_VVC_RESOLUTION_0020
1381  * @tc.name      : h266变分辨率,8bit解码,buffer, nv21
1382  * @tc.desc      : function test
1383  */
1384 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_RESOLUTION_0020, TestSize.Level1)
1385 {
1386     if (g_codecNameVVC.find("hisi") != string::npos) {
1387         auto vDecSample = make_shared<VDecAPI11Sample>();
1388         vDecSample->INP_DIR = inpDirVvcResolution8Bit;
1389         vDecSample->DEFAULT_WIDTH = 3840;
1390         vDecSample->DEFAULT_HEIGHT = 2160;
1391         vDecSample->DEFAULT_FRAME_RATE = 30;
1392         vDecSample->SF_OUTPUT = false;
1393         vDecSample->outputYuvFlag = true;
1394         vDecSample->NocaleHash = true;
1395         vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
1396         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameVVC));
1397         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1398         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1399         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1400         vDecSample->WaitForEOS();
1401         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1402         ASSERT_EQ(CHANGE_VVC_FRAME, vDecSample->outFrameCount);
1403     }
1404 }
1405 
1406 /**
1407  * @tc.number    : VIDEO_DECODE_VVC_RESOLUTION_0030
1408  * @tc.name      : h266变分辨率,10bit解码,buffer, nv12
1409  * @tc.desc      : function test
1410  */
1411 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_RESOLUTION_0030, TestSize.Level1)
1412 {
1413     if (g_codecNameVVC.find("hisi") != string::npos) {
1414         auto vDecSample = make_shared<VDecAPI11Sample>();
1415         vDecSample->INP_DIR = inpDirVvcResolution10Bit;
1416         vDecSample->DEFAULT_WIDTH = 128;
1417         vDecSample->DEFAULT_HEIGHT = 128;
1418         vDecSample->DEFAULT_FRAME_RATE = 30;
1419         vDecSample->SF_OUTPUT = false;
1420         vDecSample->outputYuvFlag = true;
1421         vDecSample->NocaleHash = true;
1422         vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV12;
1423         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameVVC));
1424         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1425         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1426         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1427         vDecSample->WaitForEOS();
1428         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1429         ASSERT_EQ(CHANGE_VVC_FRAME, vDecSample->outFrameCount);
1430     }
1431 }
1432 
1433 /**
1434  * @tc.number    : VIDEO_DECODE_VVC_RESOLUTION_0040
1435  * @tc.name      : h266变分辨率,10bit解码,buffer, nv21
1436  * @tc.desc      : function test
1437  */
1438 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_RESOLUTION_0040, TestSize.Level1)
1439 {
1440     if (g_codecNameVVC.find("hisi") != string::npos) {
1441         auto vDecSample = make_shared<VDecAPI11Sample>();
1442         vDecSample->INP_DIR = inpDirVvcResolution10Bit;
1443         vDecSample->DEFAULT_WIDTH = 128;
1444         vDecSample->DEFAULT_HEIGHT = 128;
1445         vDecSample->DEFAULT_FRAME_RATE = 30;
1446         vDecSample->SF_OUTPUT = false;
1447         vDecSample->outputYuvFlag = true;
1448         vDecSample->NocaleHash = true;
1449         vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
1450         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameVVC));
1451         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1452         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1453         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1454         vDecSample->WaitForEOS();
1455         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1456         ASSERT_EQ(CHANGE_VVC_FRAME, vDecSample->outFrameCount);
1457     }
1458 }
1459 
1460 /**
1461  * @tc.number    : VIDEO_DECODE_VVC_RESOLUTION_0050
1462  * @tc.name      : h266变分辨率,hdr解码,buffer, nv12
1463  * @tc.desc      : function test
1464  */
1465 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_RESOLUTION_0050, TestSize.Level1)
1466 {
1467     if (g_codecNameVVC.find("hisi") != string::npos) {
1468         auto vDecSample = make_shared<VDecAPI11Sample>();
1469         vDecSample->INP_DIR = inpDirVvcResolutionHdr10Bit;
1470         vDecSample->DEFAULT_WIDTH = 1280;
1471         vDecSample->DEFAULT_HEIGHT = 720;
1472         vDecSample->DEFAULT_FRAME_RATE = 30;
1473         vDecSample->SF_OUTPUT = false;
1474         vDecSample->outputYuvFlag = true;
1475         vDecSample->NocaleHash = true;
1476         vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV12;
1477         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameVVC));
1478         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1479         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1480         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1481         vDecSample->WaitForEOS();
1482         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1483         ASSERT_EQ(CHANGE_VVC_FRAME, vDecSample->outFrameCount);
1484     }
1485 }
1486 
1487 /**
1488  * @tc.number    : VIDEO_DECODE_VVC_RESOLUTION_0060
1489  * @tc.name      : h266变分辨率,hdr解码,buffer, nv21
1490  * @tc.desc      : function test
1491  */
1492 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_RESOLUTION_0060, TestSize.Level1)
1493 {
1494     if (g_codecNameVVC.find("hisi") != string::npos) {
1495         auto vDecSample = make_shared<VDecAPI11Sample>();
1496         vDecSample->INP_DIR = inpDirVvcResolutionHdr10Bit;
1497         vDecSample->DEFAULT_WIDTH = 1280;
1498         vDecSample->DEFAULT_HEIGHT = 720;
1499         vDecSample->DEFAULT_FRAME_RATE = 30;
1500         vDecSample->SF_OUTPUT = false;
1501         vDecSample->outputYuvFlag = true;
1502         vDecSample->NocaleHash = true;
1503         vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
1504         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameVVC));
1505         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1506         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1507         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1508         vDecSample->WaitForEOS();
1509         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1510         ASSERT_EQ(CHANGE_VVC_FRAME, vDecSample->outFrameCount);
1511     }
1512 }
1513 
1514 /**
1515  * @tc.number    : VIDEO_DECODE_VVC_RESOLUTION_0070
1516  * @tc.name      : h266变分辨率,8bit解码,surface, nv12
1517  * @tc.desc      : function test
1518  */
1519 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_RESOLUTION_0070, TestSize.Level1)
1520 {
1521     if (g_codecNameVVC.find("hisi") != string::npos) {
1522         auto vDecSample = make_shared<VDecAPI11Sample>();
1523         vDecSample->INP_DIR = inpDirVvcResolution8Bit;
1524         vDecSample->DEFAULT_WIDTH = 3840;
1525         vDecSample->DEFAULT_HEIGHT = 2160;
1526         vDecSample->DEFAULT_FRAME_RATE = 30;
1527         vDecSample->SF_OUTPUT = true;
1528         vDecSample->outputYuvSurface = true;
1529         vDecSample->NocaleHash = true;
1530         vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV12;
1531         ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameVVC));
1532         vDecSample->WaitForEOS();
1533         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1534         ASSERT_EQ(CHANGE_VVC_FRAME, vDecSample->outFrameCount);
1535     }
1536 }
1537 
1538 /**
1539  * @tc.number    : VIDEO_DECODE_VVC_RESOLUTION_0080
1540  * @tc.name      : h266变分辨率,8bit解码,surface, nv21
1541  * @tc.desc      : function test
1542  */
1543 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_RESOLUTION_0080, TestSize.Level1)
1544 {
1545     if (g_codecNameVVC.find("hisi") != string::npos) {
1546         auto vDecSample = make_shared<VDecAPI11Sample>();
1547         vDecSample->INP_DIR = inpDirVvcResolution8Bit;
1548         vDecSample->DEFAULT_WIDTH = 3840;
1549         vDecSample->DEFAULT_HEIGHT = 2160;
1550         vDecSample->DEFAULT_FRAME_RATE = 30;
1551         vDecSample->SF_OUTPUT = true;
1552         vDecSample->outputYuvSurface = true;
1553         vDecSample->NocaleHash = true;
1554         vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
1555         ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameVVC));
1556         vDecSample->WaitForEOS();
1557         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1558         ASSERT_EQ(CHANGE_VVC_FRAME, vDecSample->outFrameCount);
1559     }
1560 }
1561 
1562 /**
1563  * @tc.number    : VIDEO_DECODE_VVC_RESOLUTION_0090
1564  * @tc.name      : h266变分辨率,10bit解码,surface, nv12
1565  * @tc.desc      : function test
1566  */
1567 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_RESOLUTION_0090, TestSize.Level1)
1568 {
1569     if (g_codecNameVVC.find("hisi") != string::npos) {
1570         auto vDecSample = make_shared<VDecAPI11Sample>();
1571         vDecSample->INP_DIR = inpDirVvcResolution10Bit;
1572         vDecSample->DEFAULT_WIDTH = 128;
1573         vDecSample->DEFAULT_HEIGHT = 128;
1574         vDecSample->DEFAULT_FRAME_RATE = 30;
1575         vDecSample->SF_OUTPUT = true;
1576         vDecSample->outputYuvSurface = true;
1577         vDecSample->NocaleHash = true;
1578         vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV12;
1579         ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameVVC));
1580         vDecSample->WaitForEOS();
1581         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1582         ASSERT_EQ(CHANGE_VVC_FRAME, vDecSample->outFrameCount);
1583     }
1584 }
1585 
1586 /**
1587  * @tc.number    : VIDEO_DECODE_VVC_RESOLUTION_0100
1588  * @tc.name      : h266变分辨率,10bit解码,surface, nv21
1589  * @tc.desc      : function test
1590  */
1591 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_RESOLUTION_0100, TestSize.Level1)
1592 {
1593     if (g_codecNameVVC.find("hisi") != string::npos) {
1594         auto vDecSample = make_shared<VDecAPI11Sample>();
1595         vDecSample->INP_DIR = inpDirVvcResolution10Bit;
1596         vDecSample->DEFAULT_WIDTH = 128;
1597         vDecSample->DEFAULT_HEIGHT = 128;
1598         vDecSample->DEFAULT_FRAME_RATE = 30;
1599         vDecSample->SF_OUTPUT = true;
1600         vDecSample->outputYuvSurface = true;
1601         vDecSample->NocaleHash = true;
1602         vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
1603         ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameVVC));
1604         vDecSample->WaitForEOS();
1605         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1606         ASSERT_EQ(CHANGE_VVC_FRAME, vDecSample->outFrameCount);
1607     }
1608 }
1609 
1610 /**
1611  * @tc.number    : VIDEO_DECODE_VVC_RESOLUTION_0110
1612  * @tc.name      : h266变分辨率,10bit解码,surface, nv12
1613  * @tc.desc      : function test
1614  */
1615 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_RESOLUTION_0110, TestSize.Level1)
1616 {
1617     if (g_codecNameVVC.find("hisi") != string::npos) {
1618         auto vDecSample = make_shared<VDecAPI11Sample>();
1619         vDecSample->INP_DIR = inpDirVvcResolutionHdr10Bit;
1620         vDecSample->DEFAULT_WIDTH = 1280;
1621         vDecSample->DEFAULT_HEIGHT = 720;
1622         vDecSample->DEFAULT_FRAME_RATE = 30;
1623         vDecSample->SF_OUTPUT = true;
1624         vDecSample->outputYuvSurface = true;
1625         vDecSample->NocaleHash = true;
1626         vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV12;
1627         ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameVVC));
1628         vDecSample->WaitForEOS();
1629         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1630         ASSERT_EQ(CHANGE_VVC_FRAME, vDecSample->outFrameCount);
1631     }
1632 }
1633 
1634 /**
1635  * @tc.number    : VIDEO_DECODE_VVC_RESOLUTION_0100
1636  * @tc.name      : h266变分辨率,10bit解码,surface, nv21
1637  * @tc.desc      : function test
1638  */
1639 HWTEST_F(HwdecFuncNdkTest, VIDEO_DECODE_VVC_RESOLUTION_0120, TestSize.Level1)
1640 {
1641     if (g_codecNameVVC.find("hisi") != string::npos) {
1642         auto vDecSample = make_shared<VDecAPI11Sample>();
1643         vDecSample->INP_DIR = inpDirVvcResolutionHdr10Bit;
1644         vDecSample->DEFAULT_WIDTH = 1280;
1645         vDecSample->DEFAULT_HEIGHT = 720;
1646         vDecSample->DEFAULT_FRAME_RATE = 30;
1647         vDecSample->SF_OUTPUT = true;
1648         vDecSample->outputYuvSurface = true;
1649         vDecSample->NocaleHash = true;
1650         vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
1651         ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecNameVVC));
1652         vDecSample->WaitForEOS();
1653         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1654         ASSERT_EQ(CHANGE_VVC_FRAME, vDecSample->outFrameCount);
1655     }
1656 }
1657 
1658 /**
1659  * @tc.number    : VIDEO_SWDEC_RESOLUTION_PROFILE_0010
1660  * @tc.name      : H264,Resolution and profile change
1661  * @tc.desc      : function test
1662  */
1663 HWTEST_F(HwdecFuncNdkTest, VIDEO_SWDEC_RESOLUTION_PROFILE_0010, TestSize.Level2)
1664 {
1665     if (g_codecName.find("hisi") != string::npos) {
1666         auto vDecSample = make_shared<VDecAPI11Sample>();
1667         vDecSample->INP_DIR = "/data/test/media/profResoChange.h264";
1668         vDecSample->DEFAULT_WIDTH = 1104;
1669         vDecSample->DEFAULT_HEIGHT = 622;
1670         vDecSample->DEFAULT_FRAME_RATE = 30;
1671         vDecSample->SF_OUTPUT = false;
1672         vDecSample->NocaleHash = true;
1673         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName));
1674         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1675         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1676         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1677         vDecSample->WaitForEOS();
1678         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1679         ASSERT_EQ(350, vDecSample->outFrameCount);
1680     } else {
1681         cout << "hardware encoder is rk,skip." << endl;
1682     }
1683 }
1684 
1685 /**
1686  * @tc.number    : VIDEO_SWDEC_RESOLUTION_PROFILE_0010
1687  * @tc.name      : H265,Resolution and profile change
1688  * @tc.desc      : function test
1689  */
1690 HWTEST_F(HwdecFuncNdkTest, VIDEO_SWDEC_RESOLUTION_PROFILE_0020, TestSize.Level2)
1691 {
1692     if (g_codecNameHEVC.find("hisi") != string::npos) {
1693         auto vDecSample = make_shared<VDecAPI11Sample>();
1694         vDecSample->INP_DIR = "/data/test/media/profResoChange.h265";
1695         vDecSample->DEFAULT_WIDTH = 1280;
1696         vDecSample->DEFAULT_HEIGHT = 720;
1697         vDecSample->DEFAULT_FRAME_RATE = 30;
1698         vDecSample->SF_OUTPUT = false;
1699         vDecSample->outputYuvFlag = true;
1700         vDecSample->NocaleHash = true;
1701         ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecNameHEVC));
1702         ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1703         ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1704         ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1705         vDecSample->WaitForEOS();
1706         ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
1707         ASSERT_EQ(800, vDecSample->outFrameCount);
1708     }
1709 }
1710 } // namespace