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