1 /*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <cstdlib>
17 #include <cstdio>
18 #include <ctime>
19 #include <dlfcn.h>
20 #include <fstream>
21 #include <memory>
22 #include <string>
23
24 #include <gtest/gtest.h>
25
26 #include "algorithm_common.h"
27 #include "algorithm_errors.h"
28 #include "graphic_common_c.h"
29 #include "detailEnh_sample.h"
30 #include "detailEnh_sample_define.h"
31 #include "detail_enhancer_image.h"
32
33 using namespace std;
34 using namespace testing::ext;
35
36 constexpr int32_t DEFAULT_FORMAT_RGBAEIGHT = OHOS::GRAPHIC_PIXEL_FMT_RGBA_8888;
37 constexpr int32_t DEFAULT_FORMAT_YCBCRSP = OHOS::GRAPHIC_PIXEL_FMT_YCBCR_420_SP;
38
39 namespace OHOS {
40 namespace Media {
41 namespace VideoProcessingEngine {
42
GetFileSize(int32_t width,int32_t height,int32_t format)43 int32_t GetFileSize(int32_t width, int32_t height, int32_t format)
44 {
45 int32_t size = width * height;
46 switch (format) {
47 case OHOS::GRAPHIC_PIXEL_FMT_YCBCR_420_SP:
48 case OHOS::GRAPHIC_PIXEL_FMT_YCBCR_420_P:
49 size = size * 3 / 2; // 3; 2
50 break;
51 case OHOS::GRAPHIC_PIXEL_FMT_RGBA_8888:
52 size *= 4; // 4
53 break;
54 default:
55 size *= 3; // 3
56 break;
57 }
58 return size;
59 }
60
61 class DetailEnhancerUnitTest : public testing::Test {
62 public:
63 static void SetUpTestCase(void);
64 static void TearDownTestCase(void);
65 void SetUp();
66 void TearDown();
67 };
68
SetUpTestCase(void)69 void DetailEnhancerUnitTest::SetUpTestCase(void)
70 {
71 cout << "[SetUpTestCase]: " << endl;
72 }
73
TearDownTestCase(void)74 void DetailEnhancerUnitTest::TearDownTestCase(void)
75 {
76 cout << "[TearDownTestCase]: " << endl;
77 }
78
SetUp(void)79 void DetailEnhancerUnitTest::SetUp(void)
80 {
81 cout << "[SetUp]: SetUp!!!" << endl;
82 }
83
TearDown(void)84 void DetailEnhancerUnitTest::TearDown(void)
85 {
86 cout << "[TearDown]: over!!!" << endl;
87 }
88
89 // detail enhancer init
90 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_init_01, TestSize.Level1)
91 {
92 auto detailEnh = DetailEnhancerImage::Create();
93 EXPECT_NE(detailEnh, nullptr);
94 }
95
96 // detail enhancer init meultiple times
97 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_init_02, TestSize.Level1)
98 {
99 auto detailEnh = DetailEnhancerImage::Create();
100 detailEnh = DetailEnhancerImage::Create();
101 detailEnh = DetailEnhancerImage::Create();
102 detailEnh = DetailEnhancerImage::Create();
103 detailEnh = DetailEnhancerImage::Create();
104 EXPECT_NE(detailEnh, nullptr);
105 }
106
107 // set parameter to high
108 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_init_04, TestSize.Level1)
109 {
110 auto detailEnh = DetailEnhancerImage::Create();
111 DetailEnhancerParameters param {
112 .uri = "",
113 .level = DETAIL_ENH_LEVEL_HIGH,
114 };
115 auto res = detailEnh->SetParameter(param);
116 EXPECT_EQ(res, VPE_ALGO_ERR_OK);
117 }
118
119 // set parameter to medium
120 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_init_05, TestSize.Level1)
121 {
122 auto detailEnh = DetailEnhancerImage::Create();
123 DetailEnhancerParameters param {
124 .uri = "",
125 .level = DETAIL_ENH_LEVEL_MEDIUM,
126 };
127 auto res = detailEnh->SetParameter(param);
128 EXPECT_EQ(res, VPE_ALGO_ERR_OK);
129 }
130
131 // set parameter to low
132 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_init_06, TestSize.Level1)
133 {
134 auto detailEnh = DetailEnhancerImage::Create();
135 DetailEnhancerParameters param {
136 .uri = "",
137 .level = DETAIL_ENH_LEVEL_LOW,
138 };
139 auto res = detailEnh->SetParameter(param);
140 EXPECT_EQ(res, VPE_ALGO_ERR_OK);
141 }
142
143 // set parameter to none
144 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_init_07, TestSize.Level1)
145 {
146 auto detailEnh = DetailEnhancerImage::Create();
147 DetailEnhancerParameters param {
148 .uri = "",
149 .level = DETAIL_ENH_LEVEL_NONE,
150 };
151 auto res = detailEnh->SetParameter(param);
152 EXPECT_EQ(res, VPE_ALGO_ERR_OK);
153 }
154
155 // get parameters after set to high
156 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_init_09, TestSize.Level1)
157 {
158 auto detailEnh = DetailEnhancerImage::Create();
159 DetailEnhancerParameters param {
160 .level = DETAIL_ENH_LEVEL_HIGH,
161 .uri = "",
162 };
163 auto res_set = detailEnh->SetParameter(param);
164 auto res_get = detailEnh->GetParameter(param);
165 EXPECT_EQ(res_set, VPE_ALGO_ERR_OK);
166 EXPECT_EQ(res_get, VPE_ALGO_ERR_OK);
167 }
168
169 // get parameters after set to medium
170 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_init_10, TestSize.Level1)
171 {
172 auto detailEnh = DetailEnhancerImage::Create();
173 DetailEnhancerParameters param {
174 .level = DETAIL_ENH_LEVEL_MEDIUM,
175 .uri = "",
176 };
177 auto res_set = detailEnh->SetParameter(param);
178 auto res_get = detailEnh->GetParameter(param);
179 EXPECT_EQ(res_set, VPE_ALGO_ERR_OK);
180 EXPECT_EQ(res_get, VPE_ALGO_ERR_OK);
181 }
182
183 // get parameters after set to low
184 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_init_11, TestSize.Level1)
185 {
186 auto detailEnh = DetailEnhancerImage::Create();
187 DetailEnhancerParameters param {
188 .level = DETAIL_ENH_LEVEL_LOW,
189 .uri = "",
190 };
191 auto res_set = detailEnh->SetParameter(param);
192 auto res_get = detailEnh->GetParameter(param);
193 EXPECT_EQ(res_set, VPE_ALGO_ERR_OK);
194 EXPECT_EQ(res_get, VPE_ALGO_ERR_OK);
195 }
196
197 // get parameters after set to none
198 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_init_12, TestSize.Level1)
199 {
200 auto detailEnh = DetailEnhancerImage::Create();
201 DetailEnhancerParameters param {
202 .level = DETAIL_ENH_LEVEL_NONE,
203 .uri = "",
204 };
205 auto res_set = detailEnh->SetParameter(param);
206 auto res_get = detailEnh->GetParameter(param);
207 EXPECT_EQ(res_set, VPE_ALGO_ERR_OK);
208 EXPECT_EQ(res_get, VPE_ALGO_ERR_OK);
209 }
210
211 // get parameters
212 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_init_13, TestSize.Level1)
213 {
214 auto detailEnh = DetailEnhancerImage::Create();
215 DetailEnhancerParameters param {
216 .level = DETAIL_ENH_LEVEL_HIGH,
217 .uri = "",
218 };
219 auto res = detailEnh->GetParameter(param);
220 EXPECT_EQ(res, VPE_ALGO_ERR_OK);
221 }
222
223 // test getBuffer with bad size
224 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_init_14, TestSize.Level1)
225 {
226 auto createdBuffer = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, -1, -1);
227 EXPECT_EQ(createdBuffer, nullptr);
228 }
229
230 // set parameter uri to abnormal value
231 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_init_15, TestSize.Level1)
232 {
233 auto detailEnh = DetailEnhancerImage::Create();
234 DetailEnhancerParameters param {
235 .uri = "x",
236 .level = DETAIL_ENH_LEVEL_NONE,
237 };
238 auto res = detailEnh->SetParameter(param);
239 EXPECT_EQ(res, VPE_ALGO_ERR_OK);
240 }
241
242 // process RGB to RGB, aisr
243 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_01, TestSize.Level1)
244 {
245 auto detailEnh = DetailEnhancerImage::Create();
246 DetailEnhancerParameters param {
247 .uri = "",
248 .level = DETAIL_ENH_LEVEL_HIGH,
249 };
250 detailEnh->SetParameter(param);
251 int32_t outputWidth = 4096;
252 int32_t outputHeight = 3072;
253 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 1024, 768);
254 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
255 int32_t ret = detailEnh->Process(input, output);
256 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
257 }
258
259 // process RGB to RGB, high
260 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_02, TestSize.Level1)
261 {
262 auto detailEnh = DetailEnhancerImage::Create();
263 DetailEnhancerParameters param {
264 .uri = "",
265 .level = DETAIL_ENH_LEVEL_HIGH,
266 };
267 detailEnh->SetParameter(param);
268 int32_t outputWidth = 2048;
269 int32_t outputHeight = 1536;
270 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
271 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
272 int32_t ret = detailEnh->Process(input, output);
273 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
274 }
275
276 // process RGB to RGB, medium
277 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_03, TestSize.Level1)
278 {
279 auto detailEnh = DetailEnhancerImage::Create();
280 DetailEnhancerParameters param {
281 .uri = "",
282 .level = DETAIL_ENH_LEVEL_MEDIUM,
283 };
284 detailEnh->SetParameter(param);
285 int32_t outputWidth = 2048;
286 int32_t outputHeight = 1536;
287 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
288 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
289 int32_t ret = detailEnh->Process(input, output);
290 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
291 }
292
293 // process RGB to RGB, low
294 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_04, TestSize.Level1)
295 {
296 auto detailEnh = DetailEnhancerImage::Create();
297 DetailEnhancerParameters param {
298 .uri = "",
299 .level = DETAIL_ENH_LEVEL_LOW,
300 };
301 detailEnh->SetParameter(param);
302 int32_t outputWidth = 2048;
303 int32_t outputHeight = 1536;
304 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
305 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
306 int32_t ret = detailEnh->Process(input, output);
307 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
308 }
309
310 // process RGB to RGB, none
311 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_05, TestSize.Level1)
312 {
313 auto detailEnh = DetailEnhancerImage::Create();
314 DetailEnhancerParameters param {
315 .uri = "",
316 .level = DETAIL_ENH_LEVEL_NONE,
317 };
318 detailEnh->SetParameter(param);
319 int32_t outputWidth = 2048;
320 int32_t outputHeight = 1536;
321 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
322 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
323 int32_t ret = detailEnh->Process(input, output);
324 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
325 }
326
327 // process RGB to RGB different resolution 0.5x, aisr MOVED TO VPE_EXT
328 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_06, TestSize.Level1)
329 {
330 auto detailEnh = DetailEnhancerImage::Create();
331 DetailEnhancerParameters param {
332 .uri = "",
333 .level = DETAIL_ENH_LEVEL_HIGH,
334 };
335 detailEnh->SetParameter(param);
336 int32_t outputWidth = 2048;
337 int32_t outputHeight = 1536;
338 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 1024, 768);
339 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
340 int32_t ret = detailEnh->Process(input, output);
341 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
342 }
343
344 // process RGB to RGB different resolution 0.5x, high
345 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_07, TestSize.Level1)
346 {
347 auto detailEnh = DetailEnhancerImage::Create();
348 DetailEnhancerParameters param {
349 .uri = "",
350 .level = DETAIL_ENH_LEVEL_HIGH,
351 };
352 detailEnh->SetParameter(param);
353 int32_t outputWidth = 1024;
354 int32_t outputHeight = 768;
355 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
356 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
357 int32_t ret = detailEnh->Process(input, output);
358 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
359 }
360
361 // process RGB to RGB different resolution 0.5x, medium
362 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_08, TestSize.Level1)
363 {
364 auto detailEnh = DetailEnhancerImage::Create();
365 DetailEnhancerParameters param {
366 .uri = "",
367 .level = DETAIL_ENH_LEVEL_MEDIUM,
368 };
369 detailEnh->SetParameter(param);
370 int32_t outputWidth = 1024;
371 int32_t outputHeight = 768;
372 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
373 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
374 int32_t ret = detailEnh->Process(input, output);
375 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
376 }
377
378 // process RGB to RGB different resolution 0.5x, low
379 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_09, TestSize.Level1)
380 {
381 auto detailEnh = DetailEnhancerImage::Create();
382 DetailEnhancerParameters param {
383 .uri = "",
384 .level = DETAIL_ENH_LEVEL_LOW,
385 };
386 detailEnh->SetParameter(param);
387 int32_t outputWidth = 1024;
388 int32_t outputHeight = 768;
389 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
390 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
391 int32_t ret = detailEnh->Process(input, output);
392 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
393 }
394
395 // process RGB to RGB different resolution 0.5x, none
396 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_10, TestSize.Level1)
397 {
398 auto detailEnh = DetailEnhancerImage::Create();
399 DetailEnhancerParameters param {
400 .uri = "",
401 .level = DETAIL_ENH_LEVEL_NONE,
402 };
403 detailEnh->SetParameter(param);
404 int32_t outputWidth = 1024;
405 int32_t outputHeight = 768;
406 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
407 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
408 int32_t ret = detailEnh->Process(input, output);
409 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
410 }
411
412 // process RGB to RGB different resolution 2x, aisr
413 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_11, TestSize.Level1)
414 {
415 auto detailEnh = DetailEnhancerImage::Create();
416 DetailEnhancerParameters param {
417 .uri = "",
418 .level = DETAIL_ENH_LEVEL_HIGH,
419 };
420 detailEnh->SetParameter(param);
421 int32_t outputWidth = 8192;
422 int32_t outputHeight = 6144;
423 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 1024, 768);
424 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
425 int32_t ret = detailEnh->Process(input, output);
426 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
427 }
428
429 // process RGB to RGB different resolution 2x, high
430 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_12, TestSize.Level1)
431 {
432 auto detailEnh = DetailEnhancerImage::Create();
433 DetailEnhancerParameters param {
434 .uri = "",
435 .level = DETAIL_ENH_LEVEL_HIGH,
436 };
437 detailEnh->SetParameter(param);
438 int32_t outputWidth = 4096;
439 int32_t outputHeight = 3072;
440 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
441 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
442 int32_t ret = detailEnh->Process(input, output);
443 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
444 }
445
446 // process RGB to RGB different resolution 2x, medium
447 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_13, TestSize.Level1)
448 {
449 auto detailEnh = DetailEnhancerImage::Create();
450 DetailEnhancerParameters param {
451 .uri = "",
452 .level = DETAIL_ENH_LEVEL_MEDIUM,
453 };
454 detailEnh->SetParameter(param);
455 int32_t outputWidth = 4096;
456 int32_t outputHeight = 3072;
457 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
458 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
459 int32_t ret = detailEnh->Process(input, output);
460 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
461 }
462
463 // process RGB to RGB different resolution 2x, low
464 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_14, TestSize.Level1)
465 {
466 auto detailEnh = DetailEnhancerImage::Create();
467 DetailEnhancerParameters param {
468 .uri = "",
469 .level = DETAIL_ENH_LEVEL_LOW,
470 };
471 detailEnh->SetParameter(param);
472 int32_t outputWidth = 4096;
473 int32_t outputHeight = 3072;
474 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
475 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
476 int32_t ret = detailEnh->Process(input, output);
477 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
478 }
479
480 // process RGB to RGB different resolution 2x, none
481 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_15, TestSize.Level1)
482 {
483 auto detailEnh = DetailEnhancerImage::Create();
484 DetailEnhancerParameters param {
485 .uri = "",
486 .level = DETAIL_ENH_LEVEL_NONE,
487 };
488 detailEnh->SetParameter(param);
489 int32_t outputWidth = 4096;
490 int32_t outputHeight = 3072;
491 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
492 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
493 int32_t ret = detailEnh->Process(input, output);
494 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
495 }
496
497
498 // process RGB to RGB unusually resolution, aisr exceed x32 scales
499 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_16, TestSize.Level1)
500 {
501 auto detailEnh = DetailEnhancerImage::Create();
502 DetailEnhancerParameters param {
503 .uri = "",
504 .level = DETAIL_ENH_LEVEL_HIGH,
505 };
506 detailEnh->SetParameter(param);
507 int32_t outputWidth = 3145728;
508 int32_t outputHeight = 1;
509 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 1024, 768);
510 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
511 int32_t ret = detailEnh->Process(input, output);
512 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
513 }
514
515 // process RGB to RGB unusually resolution, high
516 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_17, TestSize.Level1)
517 {
518 auto detailEnh = DetailEnhancerImage::Create();
519 DetailEnhancerParameters param {
520 .uri = "",
521 .level = DETAIL_ENH_LEVEL_HIGH,
522 };
523 detailEnh->SetParameter(param);
524 int32_t outputWidth = 3145728;
525 int32_t outputHeight = 1;
526 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
527 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
528 int32_t ret = detailEnh->Process(input, output);
529 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
530 }
531
532 // process RGB to RGB unusually resolution, medium
533 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_18, TestSize.Level1)
534 {
535 auto detailEnh = DetailEnhancerImage::Create();
536 DetailEnhancerParameters param {
537 .uri = "",
538 .level = DETAIL_ENH_LEVEL_MEDIUM,
539 };
540 detailEnh->SetParameter(param);
541 int32_t outputWidth = 3145728;
542 int32_t outputHeight = 1;
543 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
544 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
545 int32_t ret = detailEnh->Process(input, output);
546 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
547 }
548
549 // process RGB to RGB unusually resolution, low
550 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_19, TestSize.Level1)
551 {
552 auto detailEnh = DetailEnhancerImage::Create();
553 DetailEnhancerParameters param {
554 .uri = "",
555 .level = DETAIL_ENH_LEVEL_LOW,
556 };
557 detailEnh->SetParameter(param);
558 int32_t outputWidth = 3145728;
559 int32_t outputHeight = 1;
560 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
561 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
562 int32_t ret = detailEnh->Process(input, output);
563 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
564 }
565
566 // process RGB to RGB unusually resolution, none
567 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_20, TestSize.Level1)
568 {
569 auto detailEnh = DetailEnhancerImage::Create();
570 DetailEnhancerParameters param {
571 .uri = "",
572 .level = DETAIL_ENH_LEVEL_NONE,
573 };
574 detailEnh->SetParameter(param);
575 int32_t outputWidth = 3145728;
576 int32_t outputHeight = 1;
577 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
578 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
579 int32_t ret = detailEnh->Process(input, output);
580 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
581 }
582
583 // process NV12 to I420; different format, aisr
584 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_21, TestSize.Level1)
585 {
586 auto detailEnh = DetailEnhancerImage::Create();
587 DetailEnhancerParameters param {
588 .uri = "",
589 .level = DETAIL_ENH_LEVEL_HIGH,
590 };
591 detailEnh->SetParameter(param);
592 int32_t outputWidth = 2048;
593 int32_t outputHeight = 1536;
594 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCBCR_420_P;
595 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 1024, 768);
596 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
597 int32_t ret = detailEnh->Process(input, output);
598 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
599 }
600
601 // process NV12 to I420; different format, high
602 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_22, TestSize.Level1)
603 {
604 auto detailEnh = DetailEnhancerImage::Create();
605 DetailEnhancerParameters param {
606 .uri = "",
607 .level = DETAIL_ENH_LEVEL_HIGH,
608 };
609 detailEnh->SetParameter(param);
610 int32_t outputWidth = 2048;
611 int32_t outputHeight = 1536;
612 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCBCR_420_P;
613 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
614 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
615 int32_t ret = detailEnh->Process(input, output);
616 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
617 }
618
619 // process NV12 to I420; different format, medium
620 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_23, TestSize.Level1)
621 {
622 auto detailEnh = DetailEnhancerImage::Create();
623 DetailEnhancerParameters param {
624 .uri = "",
625 .level = DETAIL_ENH_LEVEL_MEDIUM,
626 };
627 detailEnh->SetParameter(param);
628 int32_t outputWidth = 2048;
629 int32_t outputHeight = 1536;
630 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
631 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
632 int32_t ret = detailEnh->Process(input, output);
633 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
634 }
635
636 // process NV12 to I420; different format, low
637 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_24, TestSize.Level1)
638 {
639 auto detailEnh = DetailEnhancerImage::Create();
640 DetailEnhancerParameters param {
641 .uri = "",
642 .level = DETAIL_ENH_LEVEL_LOW,
643 };
644 detailEnh->SetParameter(param);
645 int32_t outputWidth = 2048;
646 int32_t outputHeight = 1536;
647 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
648 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
649 int32_t ret = detailEnh->Process(input, output);
650 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
651 }
652
653 // process NV12 to I420; different format, none
654 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_25, TestSize.Level1)
655 {
656 auto detailEnh = DetailEnhancerImage::Create();
657 DetailEnhancerParameters param {
658 .uri = "",
659 .level = DETAIL_ENH_LEVEL_NONE,
660 };
661 detailEnh->SetParameter(param);
662 int32_t outputWidth = 2048;
663 int32_t outputHeight = 1536;
664 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
665 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
666 int32_t ret = detailEnh->Process(input, output);
667 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
668 }
669
670 // process with unsupported input Format
671 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_26, TestSize.Level1)
672 {
673 auto detailEnh = DetailEnhancerImage::Create();
674 DetailEnhancerParameters param {
675 .uri = "",
676 .level = DETAIL_ENH_LEVEL_HIGH,
677 };
678 detailEnh->SetParameter(param);
679 int32_t outputWidth = 2048;
680 int32_t outputHeight = 1536;
681 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_422_SP; // unsupported format
682 auto input = CreateSurfaceBuffer(inputFormat, 4096, 3072);
683 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
684 int32_t ret = detailEnh->Process(input, output);
685 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
686 }
687
688 // process with unsupported output Format
689 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_27, TestSize.Level1)
690 {
691 auto detailEnh = DetailEnhancerImage::Create();
692 DetailEnhancerParameters param {
693 .uri = "",
694 .level = DETAIL_ENH_LEVEL_HIGH,
695 };
696 detailEnh->SetParameter(param);
697 int32_t outputWidth = 2048;
698 int32_t outputHeight = 1536;
699 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_422_SP; // unsupported format
700 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
701 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
702 int32_t ret = detailEnh->Process(input, output);
703 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
704 }
705
706 // process RGB to RGB witout setting parameters first
707 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_28, TestSize.Level1)
708 {
709 auto detailEnh = DetailEnhancerImage::Create();
710 int32_t outputWidth = 2048;
711 int32_t outputHeight = 1536;
712 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
713 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
714 int32_t ret = detailEnh->Process(input, output);
715 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
716 }
717
718 // process NV12 to NV12 extremly small image input, aisr
719 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_29, TestSize.Level1)
720 {
721 auto detailEnh = DetailEnhancerImage::Create();
722 DetailEnhancerParameters param {
723 .uri = "",
724 .level = DETAIL_ENH_LEVEL_HIGH,
725 };
726 detailEnh->SetParameter(param);
727 int32_t outputWidth = 1;
728 int32_t outputHeight = 1;
729 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 1024, 768);
730 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
731 int32_t ret = detailEnh->Process(input, output);
732 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
733 }
734
735 // process NV12 to NV12 extremly small image input, high
736 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_30, TestSize.Level1)
737 {
738 auto detailEnh = DetailEnhancerImage::Create();
739 DetailEnhancerParameters param {
740 .uri = "",
741 .level = DETAIL_ENH_LEVEL_HIGH,
742 };
743 detailEnh->SetParameter(param);
744 int32_t outputWidth = 1;
745 int32_t outputHeight = 1;
746 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
747 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
748 int32_t ret = detailEnh->Process(input, output);
749 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
750 }
751
752 // process NV12 to NV12 extremly small image input, medium
753 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_31, TestSize.Level1)
754 {
755 auto detailEnh = DetailEnhancerImage::Create();
756 DetailEnhancerParameters param {
757 .uri = "",
758 .level = DETAIL_ENH_LEVEL_MEDIUM,
759 };
760 detailEnh->SetParameter(param);
761 int32_t outputWidth = 1;
762 int32_t outputHeight = 1;
763 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
764 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
765 int32_t ret = detailEnh->Process(input, output);
766 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
767 }
768
769 // process NV12 to NV12 extremly small image input, low
770 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_32, TestSize.Level1)
771 {
772 auto detailEnh = DetailEnhancerImage::Create();
773 DetailEnhancerParameters param {
774 .uri = "",
775 .level = DETAIL_ENH_LEVEL_LOW,
776 };
777 detailEnh->SetParameter(param);
778 int32_t outputWidth = 1;
779 int32_t outputHeight = 1;
780 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
781 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
782 int32_t ret = detailEnh->Process(input, output);
783 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
784 }
785
786 // process NV12 to NV12 extremly small image input, none
787 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_33, TestSize.Level1)
788 {
789 auto detailEnh = DetailEnhancerImage::Create();
790 DetailEnhancerParameters param {
791 .uri = "",
792 .level = DETAIL_ENH_LEVEL_NONE,
793 };
794 detailEnh->SetParameter(param);
795 int32_t outputWidth = 1;
796 int32_t outputHeight = 1;
797 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
798 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
799 int32_t ret = detailEnh->Process(input, output);
800 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
801 }
802
803 // process NV12 to NV12 extremly big image input, aisr
804 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_34, TestSize.Level1)
805 {
806 auto detailEnh = DetailEnhancerImage::Create();
807 DetailEnhancerParameters param {
808 .uri = "",
809 .level = DETAIL_ENH_LEVEL_HIGH,
810 };
811 detailEnh->SetParameter(param);
812 int32_t outputWidth = 30720;
813 int32_t outputHeight = 17280;
814 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 1024, 768);
815 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
816 int32_t ret = detailEnh->Process(input, output);
817 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
818 }
819
820 // process NV12 to NV12 extremly big image input, high
821 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_35, TestSize.Level1)
822 {
823 auto detailEnh = DetailEnhancerImage::Create();
824 DetailEnhancerParameters param {
825 .uri = "",
826 .level = DETAIL_ENH_LEVEL_HIGH,
827 };
828 detailEnh->SetParameter(param);
829 int32_t outputWidth = 30720;
830 int32_t outputHeight = 17280;
831 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
832 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
833 int32_t ret = detailEnh->Process(input, output);
834 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
835 }
836
837 // process NV12 to NV12 extremly big image input, medium
838 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_36, TestSize.Level1)
839 {
840 auto detailEnh = DetailEnhancerImage::Create();
841 DetailEnhancerParameters param {
842 .uri = "",
843 .level = DETAIL_ENH_LEVEL_MEDIUM,
844 };
845 detailEnh->SetParameter(param);
846 int32_t outputWidth = 30720;
847 int32_t outputHeight = 17280;
848 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
849 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
850 int32_t ret = detailEnh->Process(input, output);
851 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
852 }
853
854 // process NV12 to NV12 extremly big image input, low
855 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_37, TestSize.Level1)
856 {
857 auto detailEnh = DetailEnhancerImage::Create();
858 DetailEnhancerParameters param {
859 .uri = "",
860 .level = DETAIL_ENH_LEVEL_LOW,
861 };
862 detailEnh->SetParameter(param);
863 int32_t outputWidth = 30720;
864 int32_t outputHeight = 17280;
865 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
866 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
867 int32_t ret = detailEnh->Process(input, output);
868 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
869 }
870
871 // process NV12 to NV12 extremly big image input, none
872 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_38, TestSize.Level1)
873 {
874 auto detailEnh = DetailEnhancerImage::Create();
875 DetailEnhancerParameters param {
876 .uri = "",
877 .level = DETAIL_ENH_LEVEL_NONE,
878 };
879 detailEnh->SetParameter(param);
880 int32_t outputWidth = 30720;
881 int32_t outputHeight = 17280;
882 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
883 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
884 int32_t ret = detailEnh->Process(input, output);
885 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
886 }
887
888 // process NV12 to NV12 odd number input, aisr MOVED TO VPE_EXT
889 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_39, TestSize.Level1)
890 {
891 auto detailEnh = DetailEnhancerImage::Create();
892 DetailEnhancerParameters param {
893 .uri = "",
894 .level = DETAIL_ENH_LEVEL_HIGH,
895 };
896 detailEnh->SetParameter(param);
897 int32_t outputWidth = 1025;
898 int32_t outputHeight = 767;
899 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 1024, 768);
900 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
901 int32_t ret = detailEnh->Process(input, output);
902 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
903 }
904
905 // process NV12 to NV12 odd number input, high
906 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_40, TestSize.Level1)
907 {
908 auto detailEnh = DetailEnhancerImage::Create();
909 DetailEnhancerParameters param {
910 .uri = "",
911 .level = DETAIL_ENH_LEVEL_HIGH,
912 };
913 detailEnh->SetParameter(param);
914 int32_t outputWidth = 1025;
915 int32_t outputHeight = 767;
916 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
917 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
918 int32_t ret = detailEnh->Process(input, output);
919 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
920 }
921
922 // process NV12 to NV12 odd number input, medium
923 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_41, TestSize.Level1)
924 {
925 auto detailEnh = DetailEnhancerImage::Create();
926 DetailEnhancerParameters param {
927 .uri = "",
928 .level = DETAIL_ENH_LEVEL_MEDIUM,
929 };
930 detailEnh->SetParameter(param);
931 int32_t outputWidth = 1025;
932 int32_t outputHeight = 767;
933 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
934 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
935 int32_t ret = detailEnh->Process(input, output);
936 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
937 }
938
939 // process NV12 to NV12 odd number input, low
940 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_42, TestSize.Level1)
941 {
942 auto detailEnh = DetailEnhancerImage::Create();
943 DetailEnhancerParameters param {
944 .uri = "",
945 .level = DETAIL_ENH_LEVEL_LOW,
946 };
947 detailEnh->SetParameter(param);
948 int32_t outputWidth = 1025;
949 int32_t outputHeight = 767;
950 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
951 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
952 int32_t ret = detailEnh->Process(input, output);
953 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
954 }
955
956 // process NV12 to NV12 odd number input, nonw
957 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_43, TestSize.Level1)
958 {
959 auto detailEnh = DetailEnhancerImage::Create();
960 DetailEnhancerParameters param {
961 .uri = "",
962 .level = DETAIL_ENH_LEVEL_NONE,
963 };
964 detailEnh->SetParameter(param);
965 int32_t outputWidth = 1025;
966 int32_t outputHeight = 767;
967 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
968 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
969 int32_t ret = detailEnh->Process(input, output);
970 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
971 }
972
973 // process NV12 to NV12 input output different width/height ratio, aisr MOVED TO VPE_EXT, unsupport resolution
974 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_44, TestSize.Level1)
975 {
976 auto detailEnh = DetailEnhancerImage::Create();
977 DetailEnhancerParameters param {
978 .uri = "",
979 .level = DETAIL_ENH_LEVEL_HIGH,
980 };
981 detailEnh->SetParameter(param);
982 int32_t outputWidth = 1024;
983 int32_t outputHeight = 480;
984 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 1024, 768);
985 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
986 int32_t ret = detailEnh->Process(input, output);
987 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
988 }
989
990 // process NV12 to NV12 input output different width/height ratio, high
991 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_45, TestSize.Level1)
992 {
993 auto detailEnh = DetailEnhancerImage::Create();
994 DetailEnhancerParameters param {
995 .uri = "",
996 .level = DETAIL_ENH_LEVEL_HIGH,
997 };
998 detailEnh->SetParameter(param);
999 int32_t outputWidth = 1024;
1000 int32_t outputHeight = 480;
1001 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
1002 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
1003 int32_t ret = detailEnh->Process(input, output);
1004 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1005 }
1006
1007 // process NV12 to NV12 input output different width/height ratio, medium
1008 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_46, TestSize.Level1)
1009 {
1010 auto detailEnh = DetailEnhancerImage::Create();
1011 DetailEnhancerParameters param {
1012 .uri = "",
1013 .level = DETAIL_ENH_LEVEL_MEDIUM,
1014 };
1015 detailEnh->SetParameter(param);
1016 int32_t outputWidth = 1024;
1017 int32_t outputHeight = 480;
1018 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
1019 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
1020 int32_t ret = detailEnh->Process(input, output);
1021 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1022 }
1023
1024 // process NV12 to NV12 input output different width/height ratio, low
1025 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_47, TestSize.Level1)
1026 {
1027 auto detailEnh = DetailEnhancerImage::Create();
1028 DetailEnhancerParameters param {
1029 .uri = "",
1030 .level = DETAIL_ENH_LEVEL_LOW,
1031 };
1032 detailEnh->SetParameter(param);
1033 int32_t outputWidth = 1024;
1034 int32_t outputHeight = 480;
1035 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
1036 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
1037 int32_t ret = detailEnh->Process(input, output);
1038 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1039 }
1040
1041 // process NV12 to NV12 input output different width/height ratio, none
1042 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_48, TestSize.Level1)
1043 {
1044 auto detailEnh = DetailEnhancerImage::Create();
1045 DetailEnhancerParameters param {
1046 .uri = "",
1047 .level = DETAIL_ENH_LEVEL_NONE,
1048 };
1049 detailEnh->SetParameter(param);
1050 int32_t outputWidth = 1024;
1051 int32_t outputHeight = 480;
1052 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
1053 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
1054 int32_t ret = detailEnh->Process(input, output);
1055 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1056 }
1057
1058 // process but buffer is nullptr
1059 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_49, TestSize.Level1)
1060 {
1061 auto detailEnh = DetailEnhancerImage::Create();
1062 DetailEnhancerParameters param {
1063 .uri = "",
1064 .level = DETAIL_ENH_LEVEL_HIGH,
1065 };
1066 detailEnh->SetParameter(param);
1067 int32_t ret = detailEnh->Process(nullptr, nullptr);
1068 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1069 }
1070
1071 // repeating process I420 to I420 with set parameters
1072 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_50, TestSize.Level1)
1073 {
1074 auto detailEnh = DetailEnhancerImage::Create();
1075 DetailEnhancerParameters param {
1076 .uri = "",
1077 .level = DETAIL_ENH_LEVEL_HIGH,
1078 };
1079 detailEnh->SetParameter(param);
1080 int32_t outputWidth = 2048;
1081 int32_t outputHeight = 1536;
1082 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, 4096, 3072);
1083 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
1084 int32_t ret = detailEnh->Process(input, output);
1085 // repeat again with AISR
1086 DetailEnhancerParameters param2 {
1087 .uri = "",
1088 .level = DETAIL_ENH_LEVEL_HIGH,
1089 };
1090 detailEnh->SetParameter(param2);
1091 int32_t ret2 = detailEnh->Process(input, output);
1092 // repeat again with medium
1093 DetailEnhancerParameters param3 {
1094 .uri = "",
1095 .level = DETAIL_ENH_LEVEL_MEDIUM,
1096 };
1097 detailEnh->SetParameter(param3);
1098 int32_t ret3 = detailEnh->Process(input, output);
1099 // repeat again with low
1100 DetailEnhancerParameters param4 {
1101 .uri = "",
1102 .level = DETAIL_ENH_LEVEL_LOW,
1103 };
1104 detailEnh->SetParameter(param4);
1105 int32_t ret4 = detailEnh->Process(input, output);
1106 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
1107 EXPECT_EQ(ret2, VPE_ALGO_ERR_OK);
1108 EXPECT_NE(ret3, VPE_ALGO_ERR_OK);
1109 EXPECT_NE(ret4, VPE_ALGO_ERR_OK);
1110 }
1111
1112 // process twice
1113 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_51, TestSize.Level1)
1114 {
1115 auto detailEnh = DetailEnhancerImage::Create();
1116 DetailEnhancerParameters param {
1117 .uri = "",
1118 .level = DETAIL_ENH_LEVEL_HIGH,
1119 };
1120 detailEnh->SetParameter(param);
1121 int32_t inputWidth = 4096;
1122 int32_t inputHeight = 3072;
1123 int32_t outputWidth = 2048;
1124 int32_t outputHeight = 1536;
1125 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, inputWidth, inputHeight);
1126 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_YCBCRSP, outputWidth, outputHeight);
1127 int32_t ret = detailEnh->Process(input, output);
1128 ret = detailEnh->Process(input, output);
1129 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
1130 }
1131
1132 // check extern c interface
1133 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_52, TestSize.Level1)
1134 {
1135 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
1136 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 2048, 1536);
1137 DetailEnhancerLevel level = DETAIL_ENH_LEVEL_HIGH;
1138 void* lib = dlopen("/system/lib64/libvideoprocessingengine.z.so", RTLD_LAZY);
1139 if (lib == nullptr) {
1140 printf("cannot load vpe lib\n");
1141 return;
1142 }
1143
1144 typedef int32_t (*DetailEnhancerCreate)(int32_t*);
1145 typedef int32_t (*DetailEnhancerProcessImage)(int32_t,
1146 OHNativeWindowBuffer*, OHNativeWindowBuffer*, int32_t);
1147 typedef int32_t (*DetailEnhancerDestroy)(int32_t*);
1148
1149 auto detailEnhCreate = reinterpret_cast<DetailEnhancerCreate>(dlsym(lib, "DetailEnhancerCreate"));
1150 auto detailEnhProcessImage =
1151 reinterpret_cast<DetailEnhancerProcessImage>(dlsym(lib, "DetailEnhancerProcessImage"));
1152 auto detailEnhDestroy = reinterpret_cast<DetailEnhancerDestroy>(dlsym(lib, "DetailEnhancerDestroy"));
1153
1154 int32_t instanceSrId = -1;
1155 int32_t res = detailEnhCreate(&instanceSrId);
1156 if (res != 0 || instanceSrId == -1) {
1157 detailEnhDestroy(&instanceSrId);
1158 dlclose(lib);
1159 return;
1160 }
1161 if (input == nullptr || output == nullptr) {
1162 detailEnhDestroy(&instanceSrId);
1163 dlclose(lib);
1164 return;
1165 }
1166 OHNativeWindowBuffer* srIn = OH_NativeWindow_CreateNativeWindowBufferFromSurfaceBuffer(&input);
1167 OHNativeWindowBuffer* srOut = OH_NativeWindow_CreateNativeWindowBufferFromSurfaceBuffer(&output);
1168 res = detailEnhProcessImage(instanceSrId, srIn, srOut, static_cast<int>(level));
1169 if (res != 0) {
1170 detailEnhDestroy(&instanceSrId);
1171 dlclose(lib);
1172 return;
1173 }
1174 res = detailEnhDestroy(&instanceSrId);
1175 if (res != 0) {
1176 dlclose(lib);
1177 return;
1178 }
1179 EXPECT_EQ(res, VPE_ALGO_ERR_OK);
1180 res = detailEnhDestroy(&instanceSrId); // destroy twice
1181 dlclose(lib);
1182 EXPECT_NE(res, VPE_ALGO_ERR_OK);
1183 }
1184
1185 // check extern c interface, create with null instance
1186 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_53, TestSize.Level1)
1187 {
1188 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
1189 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 2048, 1536);
1190 void* lib = dlopen("/system/lib64/libvideoprocessingengine.z.so", RTLD_LAZY);
1191 if (lib == nullptr) {
1192 printf("cannot load vpe lib\n");
1193 return;
1194 }
1195 typedef int32_t (*DetailEnhancerCreate)(int32_t*);
1196 auto detailEnhCreate = reinterpret_cast<DetailEnhancerCreate>(dlsym(lib, "DetailEnhancerCreate"));
1197 int32_t ret = detailEnhCreate(nullptr);
1198 dlclose(lib);
1199 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1200 }
1201
1202 // check extern c interface, process with null output buffer
1203 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_54, TestSize.Level1)
1204 {
1205 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
1206 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 2048, 1536);
1207 DetailEnhancerLevel level = DETAIL_ENH_LEVEL_HIGH;
1208 void* lib = dlopen("/system/lib64/libvideoprocessingengine.z.so", RTLD_LAZY);
1209 if (lib == nullptr) {
1210 printf("cannot load vpe lib\n");
1211 return;
1212 }
1213
1214 typedef int32_t (*DetailEnhancerCreate)(int32_t*);
1215 typedef int32_t (*DetailEnhancerProcessImage)(int32_t,
1216 OHNativeWindowBuffer*, OHNativeWindowBuffer*, int32_t);
1217 typedef int32_t (*DetailEnhancerDestroy)(int32_t*);
1218
1219 auto detailEnhCreate = reinterpret_cast<DetailEnhancerCreate>(dlsym(lib, "DetailEnhancerCreate"));
1220 auto detailEnhProcessImage =
1221 reinterpret_cast<DetailEnhancerProcessImage>(dlsym(lib, "DetailEnhancerProcessImage"));
1222 auto detailEnhDestroy = reinterpret_cast<DetailEnhancerDestroy>(dlsym(lib, "DetailEnhancerDestroy"));
1223
1224 int32_t instanceSrId = -1;
1225 int32_t res = detailEnhCreate(&instanceSrId);
1226 if (res != 0 || instanceSrId == -1) {
1227 detailEnhDestroy(&instanceSrId);
1228 dlclose(lib);
1229 return;
1230 }
1231 if (input == nullptr || output == nullptr) {
1232 detailEnhDestroy(&instanceSrId);
1233 dlclose(lib);
1234 return;
1235 }
1236 OHNativeWindowBuffer* srIn = OH_NativeWindow_CreateNativeWindowBufferFromSurfaceBuffer(&input);
1237 res = detailEnhProcessImage(instanceSrId, srIn, nullptr, static_cast<int>(level));
1238 if (res != 0) {
1239 detailEnhDestroy(&instanceSrId);
1240 dlclose(lib);
1241 return;
1242 }
1243 res = detailEnhDestroy(&instanceSrId);
1244 if (res != 0) {
1245 dlclose(lib);
1246 return;
1247 }
1248 dlclose(lib);
1249 EXPECT_NE(res, VPE_ALGO_ERR_OK);
1250 }
1251
1252 // check extern c interface, destroy nullptr
1253 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_55, TestSize.Level1)
1254 {
1255 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
1256 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 2048, 1536);
1257 DetailEnhancerLevel level = DETAIL_ENH_LEVEL_HIGH;
1258 void* lib = dlopen("/system/lib64/libvideoprocessingengine.z.so", RTLD_LAZY);
1259 if (lib == nullptr) {
1260 printf("cannot load vpe lib\n");
1261 return;
1262 }
1263
1264 typedef int32_t (*DetailEnhancerCreate)(int32_t*);
1265 typedef int32_t (*DetailEnhancerProcessImage)(int32_t,
1266 OHNativeWindowBuffer*, OHNativeWindowBuffer*, int32_t);
1267 typedef int32_t (*DetailEnhancerDestroy)(int32_t*);
1268
1269 auto detailEnhCreate = reinterpret_cast<DetailEnhancerCreate>(dlsym(lib, "DetailEnhancerCreate"));
1270 auto detailEnhProcessImage =
1271 reinterpret_cast<DetailEnhancerProcessImage>(dlsym(lib, "DetailEnhancerProcessImage"));
1272 auto detailEnhDestroy = reinterpret_cast<DetailEnhancerDestroy>(dlsym(lib, "DetailEnhancerDestroy"));
1273
1274 int32_t instanceSrId = -1;
1275 int32_t res = detailEnhCreate(&instanceSrId);
1276 if (res != 0 || instanceSrId == -1) {
1277 detailEnhDestroy(&instanceSrId);
1278 dlclose(lib);
1279 return;
1280 }
1281 if (input == nullptr || output == nullptr) {
1282 detailEnhDestroy(&instanceSrId);
1283 dlclose(lib);
1284 return;
1285 }
1286 OHNativeWindowBuffer* srIn = OH_NativeWindow_CreateNativeWindowBufferFromSurfaceBuffer(&input);
1287 OHNativeWindowBuffer* srOut = OH_NativeWindow_CreateNativeWindowBufferFromSurfaceBuffer(&output);
1288 res = detailEnhProcessImage(instanceSrId, srIn, srOut, static_cast<int>(level));
1289 if (res != 0) {
1290 detailEnhDestroy(&instanceSrId);
1291 dlclose(lib);
1292 return;
1293 }
1294 res = detailEnhDestroy(nullptr);
1295 if (res != 0) {
1296 dlclose(lib);
1297 return;
1298 }
1299 dlclose(lib);
1300 EXPECT_NE(res, VPE_ALGO_ERR_OK);
1301 }
1302
1303 // process BGR to BGR, aisr
1304 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_56, TestSize.Level1)
1305 {
1306 auto detailEnh = DetailEnhancerImage::Create();
1307 DetailEnhancerParameters param {
1308 .uri = "",
1309 .level = DETAIL_ENH_LEVEL_HIGH,
1310 };
1311 detailEnh->SetParameter(param);
1312 int32_t outputWidth = 4096;
1313 int32_t outputHeight = 3072;
1314 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1315 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1316 auto input = CreateSurfaceBuffer(inputFormat, 1024, 768);
1317 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1318 int32_t ret = detailEnh->Process(input, output);
1319 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
1320 }
1321
1322 // process BGR to BGR, high
1323 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_57, TestSize.Level1)
1324 {
1325 auto detailEnh = DetailEnhancerImage::Create();
1326 DetailEnhancerParameters param {
1327 .uri = "",
1328 .level = DETAIL_ENH_LEVEL_HIGH,
1329 };
1330 detailEnh->SetParameter(param);
1331 int32_t outputWidth = 2048;
1332 int32_t outputHeight = 1536;
1333 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1334 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1335 auto input = CreateSurfaceBuffer(inputFormat, 4096, 3072);
1336 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1337 int32_t ret = detailEnh->Process(input, output);
1338 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
1339 }
1340
1341 // process BGR to BGR, medium
1342 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_58, TestSize.Level1)
1343 {
1344 auto detailEnh = DetailEnhancerImage::Create();
1345 DetailEnhancerParameters param {
1346 .uri = "",
1347 .level = DETAIL_ENH_LEVEL_MEDIUM,
1348 };
1349 detailEnh->SetParameter(param);
1350 int32_t outputWidth = 2048;
1351 int32_t outputHeight = 1536;
1352 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1353 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1354 auto input = CreateSurfaceBuffer(inputFormat, 4096, 3072);
1355 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1356 int32_t ret = detailEnh->Process(input, output);
1357 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1358 }
1359
1360 // process BGR to BGR, low
1361 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_59, TestSize.Level1)
1362 {
1363 auto detailEnh = DetailEnhancerImage::Create();
1364 DetailEnhancerParameters param {
1365 .uri = "",
1366 .level = DETAIL_ENH_LEVEL_LOW,
1367 };
1368 detailEnh->SetParameter(param);
1369 int32_t outputWidth = 2048;
1370 int32_t outputHeight = 1536;
1371 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1372 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1373 auto input = CreateSurfaceBuffer(inputFormat, 4096, 3072);
1374 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1375 int32_t ret = detailEnh->Process(input, output);
1376 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1377 }
1378
1379 // process BGR to BGR, none
1380 HWTEST_F(DetailEnhancerUnitTest, detailenhancer_process_60, TestSize.Level1)
1381 {
1382 auto detailEnh = DetailEnhancerImage::Create();
1383 DetailEnhancerParameters param {
1384 .uri = "",
1385 .level = DETAIL_ENH_LEVEL_NONE,
1386 };
1387 detailEnh->SetParameter(param);
1388 int32_t outputWidth = 2048;
1389 int32_t outputHeight = 1536;
1390 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1391 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1392 auto input = CreateSurfaceBuffer(inputFormat, 4096, 3072);
1393 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1394 int32_t ret = detailEnh->Process(input, output);
1395 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1396 }
1397
1398 // check extension extream vision engine, process YCRCB_420_SP, aisr MOVED TO VPE_EXT
1399 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_01, TestSize.Level1)
1400 {
1401 auto detailEnh = DetailEnhancerImage::Create();
1402 DetailEnhancerParameters param {
1403 .uri = "",
1404 .level = DETAIL_ENH_LEVEL_HIGH,
1405 };
1406 detailEnh->SetParameter(param);
1407 int32_t inputWidth = 1024;
1408 int32_t inputHeight = 768;
1409 int32_t outputWidth = 2048;
1410 int32_t outputHeight = 1536;
1411 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
1412 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
1413 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1414 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1415 int32_t ret = detailEnh->Process(input, output);
1416 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
1417 }
1418
1419 // check extension extream vision engine, process YCRCB_420_SP, high
1420 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_02, TestSize.Level1)
1421 {
1422 auto detailEnh = DetailEnhancerImage::Create();
1423 DetailEnhancerParameters param {
1424 .uri = "",
1425 .level = DETAIL_ENH_LEVEL_HIGH,
1426 };
1427 detailEnh->SetParameter(param);
1428 int32_t inputWidth = 4096;
1429 int32_t inputHeight = 3072;
1430 int32_t outputWidth = 2048;
1431 int32_t outputHeight = 1536;
1432 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
1433 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
1434 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1435 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1436 int32_t ret = detailEnh->Process(input, output);
1437 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
1438 }
1439
1440 // check extension extream vision engine, process YCRCB_420_SP, medium
1441 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_03, TestSize.Level1)
1442 {
1443 auto detailEnh = DetailEnhancerImage::Create();
1444 DetailEnhancerParameters param {
1445 .uri = "",
1446 .level = DETAIL_ENH_LEVEL_MEDIUM,
1447 };
1448 detailEnh->SetParameter(param);
1449 int32_t inputWidth = 4096;
1450 int32_t inputHeight = 3072;
1451 int32_t outputWidth = 2048;
1452 int32_t outputHeight = 1536;
1453 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
1454 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
1455 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1456 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1457 int32_t ret = detailEnh->Process(input, output);
1458 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1459 }
1460
1461 // check extension extream vision engine, process YCRCB_420_SP, low
1462 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_04, TestSize.Level1)
1463 {
1464 auto detailEnh = DetailEnhancerImage::Create();
1465 DetailEnhancerParameters param {
1466 .uri = "",
1467 .level = DETAIL_ENH_LEVEL_LOW,
1468 };
1469 detailEnh->SetParameter(param);
1470 int32_t inputWidth = 4096;
1471 int32_t inputHeight = 3072;
1472 int32_t outputWidth = 2048;
1473 int32_t outputHeight = 1536;
1474 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
1475 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
1476 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1477 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1478 int32_t ret = detailEnh->Process(input, output);
1479 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1480 }
1481
1482 // check extension extream vision engine, process YCRCB_420_SP, none
1483 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_05, TestSize.Level1)
1484 {
1485 auto detailEnh = DetailEnhancerImage::Create();
1486 DetailEnhancerParameters param {
1487 .uri = "",
1488 .level = DETAIL_ENH_LEVEL_NONE,
1489 };
1490 detailEnh->SetParameter(param);
1491 int32_t inputWidth = 4096;
1492 int32_t inputHeight = 3072;
1493 int32_t outputWidth = 2048;
1494 int32_t outputHeight = 1536;
1495 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
1496 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
1497 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1498 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1499 int32_t ret = detailEnh->Process(input, output);
1500 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1501 }
1502
1503 // check extension extream vision engine, process YCBCR_420_P, aisr MOVED TO VPE_EXT
1504 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_06, TestSize.Level1)
1505 {
1506 auto detailEnh = DetailEnhancerImage::Create();
1507 DetailEnhancerParameters param {
1508 .uri = "",
1509 .level = DETAIL_ENH_LEVEL_HIGH,
1510 };
1511 detailEnh->SetParameter(param);
1512 int32_t inputWidth = 1024;
1513 int32_t inputHeight = 768;
1514 int32_t outputWidth = 2048;
1515 int32_t outputHeight = 1536;
1516 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCBCR_420_P;
1517 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCBCR_420_P;
1518 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1519 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1520 int32_t ret = detailEnh->Process(input, output);
1521 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
1522 }
1523
1524 // check extension extream vision engine, process YCBCR_420_P, high
1525 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_07, TestSize.Level1)
1526 {
1527 auto detailEnh = DetailEnhancerImage::Create();
1528 DetailEnhancerParameters param {
1529 .uri = "",
1530 .level = DETAIL_ENH_LEVEL_HIGH,
1531 };
1532 detailEnh->SetParameter(param);
1533 int32_t inputWidth = 4096;
1534 int32_t inputHeight = 3072;
1535 int32_t outputWidth = 2048;
1536 int32_t outputHeight = 1536;
1537 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCBCR_420_P;
1538 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCBCR_420_P;
1539 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1540 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1541 int32_t ret = detailEnh->Process(input, output);
1542 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
1543 }
1544
1545 // check extension extream vision engine, process YCBCR_420_P, medium
1546 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_08, TestSize.Level1)
1547 {
1548 auto detailEnh = DetailEnhancerImage::Create();
1549 DetailEnhancerParameters param {
1550 .uri = "",
1551 .level = DETAIL_ENH_LEVEL_MEDIUM,
1552 };
1553 detailEnh->SetParameter(param);
1554 int32_t inputWidth = 4096;
1555 int32_t inputHeight = 3072;
1556 int32_t outputWidth = 2048;
1557 int32_t outputHeight = 1536;
1558 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCBCR_420_P;
1559 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCBCR_420_P;
1560 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1561 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1562 int32_t ret = detailEnh->Process(input, output);
1563 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1564 }
1565
1566 // check extension extream vision engine, process YCBCR_420_P, low
1567 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_09, TestSize.Level1)
1568 {
1569 auto detailEnh = DetailEnhancerImage::Create();
1570 DetailEnhancerParameters param {
1571 .uri = "",
1572 .level = DETAIL_ENH_LEVEL_LOW,
1573 };
1574 detailEnh->SetParameter(param);
1575 int32_t inputWidth = 4096;
1576 int32_t inputHeight = 3072;
1577 int32_t outputWidth = 2048;
1578 int32_t outputHeight = 1536;
1579 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCBCR_420_P;
1580 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCBCR_420_P;
1581 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1582 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1583 int32_t ret = detailEnh->Process(input, output);
1584 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1585 }
1586
1587 // check extension extream vision engine, process YCBCR_420_P, none
1588 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_10, TestSize.Level1)
1589 {
1590 auto detailEnh = DetailEnhancerImage::Create();
1591 DetailEnhancerParameters param {
1592 .uri = "",
1593 .level = DETAIL_ENH_LEVEL_NONE,
1594 };
1595 detailEnh->SetParameter(param);
1596 int32_t inputWidth = 4096;
1597 int32_t inputHeight = 3072;
1598 int32_t outputWidth = 2048;
1599 int32_t outputHeight = 1536;
1600 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCBCR_420_P;
1601 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCBCR_420_P;
1602 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1603 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1604 int32_t ret = detailEnh->Process(input, output);
1605 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1606 }
1607
1608 // check extension extream vision engine, process YCRCB_420_P, aisr MOVED TO VPE_EXT
1609 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_11, TestSize.Level1)
1610 {
1611 auto detailEnh = DetailEnhancerImage::Create();
1612 DetailEnhancerParameters param {
1613 .uri = "",
1614 .level = DETAIL_ENH_LEVEL_HIGH,
1615 };
1616 detailEnh->SetParameter(param);
1617 int32_t inputWidth = 1024;
1618 int32_t inputHeight = 768;
1619 int32_t outputWidth = 2048;
1620 int32_t outputHeight = 1536;
1621 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_P;
1622 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_P;
1623 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1624 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1625 int32_t ret = detailEnh->Process(input, output);
1626 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
1627 }
1628
1629 // check extension extream vision engine, process YCRCB_420_P, high
1630 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_12, TestSize.Level1)
1631 {
1632 auto detailEnh = DetailEnhancerImage::Create();
1633 DetailEnhancerParameters param {
1634 .uri = "",
1635 .level = DETAIL_ENH_LEVEL_HIGH,
1636 };
1637 detailEnh->SetParameter(param);
1638 int32_t inputWidth = 4096;
1639 int32_t inputHeight = 3072;
1640 int32_t outputWidth = 2048;
1641 int32_t outputHeight = 1536;
1642 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_P;
1643 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_P;
1644 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1645 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1646 int32_t ret = detailEnh->Process(input, output);
1647 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
1648 }
1649
1650 // check extension extream vision engine, process YCRCB_420_P, medium
1651 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_13, TestSize.Level1)
1652 {
1653 auto detailEnh = DetailEnhancerImage::Create();
1654 DetailEnhancerParameters param {
1655 .uri = "",
1656 .level = DETAIL_ENH_LEVEL_MEDIUM,
1657 };
1658 detailEnh->SetParameter(param);
1659 int32_t inputWidth = 4096;
1660 int32_t inputHeight = 3072;
1661 int32_t outputWidth = 2048;
1662 int32_t outputHeight = 1536;
1663 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_P;
1664 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_P;
1665 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1666 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1667 int32_t ret = detailEnh->Process(input, output);
1668 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1669 }
1670
1671 // check extension extream vision engine, process YCRCB_420_P, low
1672 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_14, TestSize.Level1)
1673 {
1674 auto detailEnh = DetailEnhancerImage::Create();
1675 DetailEnhancerParameters param {
1676 .uri = "",
1677 .level = DETAIL_ENH_LEVEL_LOW,
1678 };
1679 detailEnh->SetParameter(param);
1680 int32_t inputWidth = 4096;
1681 int32_t inputHeight = 3072;
1682 int32_t outputWidth = 2048;
1683 int32_t outputHeight = 1536;
1684 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_P;
1685 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_P;
1686 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1687 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1688 int32_t ret = detailEnh->Process(input, output);
1689 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1690 }
1691
1692 // check extension extream vision engine, process YCRCB_420_P, none
1693 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_15, TestSize.Level1)
1694 {
1695 auto detailEnh = DetailEnhancerImage::Create();
1696 DetailEnhancerParameters param {
1697 .uri = "",
1698 .level = DETAIL_ENH_LEVEL_NONE,
1699 };
1700 detailEnh->SetParameter(param);
1701 int32_t inputWidth = 4096;
1702 int32_t inputHeight = 3072;
1703 int32_t outputWidth = 2048;
1704 int32_t outputHeight = 1536;
1705 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_P;
1706 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_P;
1707 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1708 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1709 int32_t ret = detailEnh->Process(input, output);
1710 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1711 }
1712
1713 // check extension extream vision engine, process invalid resolution
1714 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_16, TestSize.Level1)
1715 {
1716 auto detailEnh = DetailEnhancerImage::Create();
1717 DetailEnhancerParameters param {
1718 .uri = "",
1719 .level = DETAIL_ENH_LEVEL_HIGH,
1720 };
1721 detailEnh->SetParameter(param);
1722 int32_t inputWidth = 0;
1723 int32_t inputHeight = 0;
1724 int32_t outputWidth = 2048;
1725 int32_t outputHeight = 1536;
1726 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
1727 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
1728 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1729 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1730 int32_t ret = detailEnh->Process(input, output);
1731 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1732 }
1733
1734 // check extension extream vision engine, process invalid resolution
1735 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_17, TestSize.Level1)
1736 {
1737 auto detailEnh = DetailEnhancerImage::Create();
1738 DetailEnhancerParameters param {
1739 .uri = "",
1740 .level = DETAIL_ENH_LEVEL_HIGH,
1741 };
1742 detailEnh->SetParameter(param);
1743 int32_t inputWidth = 1024;
1744 int32_t inputHeight = 768;
1745 int32_t outputWidth = 0;
1746 int32_t outputHeight = 0;
1747 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
1748 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
1749 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1750 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1751 int32_t ret = detailEnh->Process(input, output);
1752 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1753 }
1754
1755 // check extension extream vision engine, process null output buffer
1756 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_18, TestSize.Level1)
1757 {
1758 auto detailEnh = DetailEnhancerImage::Create();
1759 DetailEnhancerParameters param {
1760 .uri = "",
1761 .level = DETAIL_ENH_LEVEL_HIGH,
1762 };
1763 detailEnh->SetParameter(param);
1764 int32_t inputWidth = 4096;
1765 int32_t inputHeight = 3072;
1766 int32_t outputWidth = 2048;
1767 int32_t outputHeight = 1536;
1768 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_P;
1769 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_P;
1770 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1771 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1772 int32_t ret = detailEnh->Process(input, nullptr);
1773 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1774 }
1775
1776 // Exceeds minimum reduction ratio
1777 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_19, TestSize.Level1)
1778 {
1779 auto detailEnh = DetailEnhancerImage::Create();
1780 DetailEnhancerParameters param {
1781 .uri = "",
1782 .level = DETAIL_ENH_LEVEL_HIGH,
1783 };
1784 detailEnh->SetParameter(param);
1785 int32_t inputWidth = 4096;
1786 int32_t inputHeight = 3072;
1787 int32_t outputWidth = 2;
1788 int32_t outputHeight = 1;
1789 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_P;
1790 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_P;
1791 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1792 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1793 int32_t ret = detailEnh->Process(input, nullptr);
1794 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1795 }
1796
1797 // check extension extream vision engine, process BGRA_8888, aisr MOVED TO VPE_EXT
1798 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_20, TestSize.Level1)
1799 {
1800 auto detailEnh = DetailEnhancerImage::Create();
1801 DetailEnhancerParameters param {
1802 .uri = "",
1803 .level = DETAIL_ENH_LEVEL_HIGH,
1804 };
1805 detailEnh->SetParameter(param);
1806 int32_t inputWidth = 1024;
1807 int32_t inputHeight = 768;
1808 int32_t outputWidth = 2048;
1809 int32_t outputHeight = 1536;
1810 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1811 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1812 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1813 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1814 int32_t ret = detailEnh->Process(input, output);
1815 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
1816 }
1817
1818 // check extension extream vision engine, process BGRA_8888, high
1819 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_21, TestSize.Level1)
1820 {
1821 auto detailEnh = DetailEnhancerImage::Create();
1822 DetailEnhancerParameters param {
1823 .uri = "",
1824 .level = DETAIL_ENH_LEVEL_HIGH,
1825 };
1826 detailEnh->SetParameter(param);
1827 int32_t inputWidth = 4096;
1828 int32_t inputHeight = 3072;
1829 int32_t outputWidth = 2048;
1830 int32_t outputHeight = 1536;
1831 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1832 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1833 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1834 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1835 int32_t ret = detailEnh->Process(input, output);
1836 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
1837 }
1838
1839 // check extension extream vision engine, process BGRA_8888, medium
1840 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_22, TestSize.Level1)
1841 {
1842 auto detailEnh = DetailEnhancerImage::Create();
1843 DetailEnhancerParameters param {
1844 .uri = "",
1845 .level = DETAIL_ENH_LEVEL_MEDIUM,
1846 };
1847 detailEnh->SetParameter(param);
1848 int32_t inputWidth = 4096;
1849 int32_t inputHeight = 3072;
1850 int32_t outputWidth = 2048;
1851 int32_t outputHeight = 1536;
1852 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1853 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1854 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1855 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1856 int32_t ret = detailEnh->Process(input, output);
1857 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1858 }
1859
1860 // check extension extream vision engine, process BGRA_8888, low
1861 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_23, TestSize.Level1)
1862 {
1863 auto detailEnh = DetailEnhancerImage::Create();
1864 DetailEnhancerParameters param {
1865 .uri = "",
1866 .level = DETAIL_ENH_LEVEL_LOW,
1867 };
1868 detailEnh->SetParameter(param);
1869 int32_t inputWidth = 4096;
1870 int32_t inputHeight = 3072;
1871 int32_t outputWidth = 2048;
1872 int32_t outputHeight = 1536;
1873 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1874 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1875 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1876 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1877 int32_t ret = detailEnh->Process(input, output);
1878 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1879 }
1880
1881 // check extension extream vision engine, process BGRA_8888, none
1882 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_24, TestSize.Level1)
1883 {
1884 auto detailEnh = DetailEnhancerImage::Create();
1885 DetailEnhancerParameters param {
1886 .uri = "",
1887 .level = DETAIL_ENH_LEVEL_NONE,
1888 };
1889 detailEnh->SetParameter(param);
1890 int32_t inputWidth = 4096;
1891 int32_t inputHeight = 3072;
1892 int32_t outputWidth = 2048;
1893 int32_t outputHeight = 1536;
1894 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1895 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_BGRA_8888;
1896 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1897 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1898 int32_t ret = detailEnh->Process(input, output);
1899 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
1900 }
1901
1902 // check enforce extension extream vision engine, process RGBA1010102, HIGH
1903 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_25, TestSize.Level1)
1904 {
1905 auto detailEnh = DetailEnhancerImage::Create();
1906 DetailEnhancerParameters param {
1907 .uri = "",
1908 .level = DETAIL_ENH_LEVEL_HIGH,
1909 };
1910 detailEnh->SetParameter(param);
1911 int32_t inputWidth = 4096;
1912 int32_t inputHeight = 3072;
1913 int32_t outputWidth = 2048;
1914 int32_t outputHeight = 1536;
1915 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_RGBA_1010102;
1916 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_RGBA_1010102;
1917 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1918 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1919 int32_t ret = detailEnh->Process(input, output);
1920 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
1921 }
1922
1923 // check enforce extension extream vision engine, process RGBA1010102, MEDIUM
1924 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_26, TestSize.Level1)
1925 {
1926 auto detailEnh = DetailEnhancerImage::Create();
1927 DetailEnhancerParameters param {
1928 .uri = "",
1929 .level = DETAIL_ENH_LEVEL_MEDIUM,
1930 };
1931 detailEnh->SetParameter(param);
1932 int32_t inputWidth = 4096;
1933 int32_t inputHeight = 3072;
1934 int32_t outputWidth = 2048;
1935 int32_t outputHeight = 1536;
1936 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_RGBA_1010102;
1937 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_RGBA_1010102;
1938 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1939 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1940 int32_t ret = detailEnh->Process(input, output);
1941 EXPECT_NE(ret, VPE_ALGO_ERR_OK); // medium not support RGB1010102
1942 }
1943
1944 // check enforce extension extream vision engine, process RGBA1010102, LOW
1945 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_27, TestSize.Level1)
1946 {
1947 auto detailEnh = DetailEnhancerImage::Create();
1948 DetailEnhancerParameters param {
1949 .uri = "",
1950 .level = DETAIL_ENH_LEVEL_LOW,
1951 };
1952 detailEnh->SetParameter(param);
1953 int32_t inputWidth = 4096;
1954 int32_t inputHeight = 3072;
1955 int32_t outputWidth = 2048;
1956 int32_t outputHeight = 1536;
1957 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_RGBA_1010102;
1958 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_RGBA_1010102;
1959 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1960 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1961 int32_t ret = detailEnh->Process(input, output);
1962 EXPECT_NE(ret, VPE_ALGO_ERR_OK); // low not support RGB1010102
1963 }
1964
1965 // check enforce extension extream vision engine, process RGBA1010102, NONE
1966 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_28, TestSize.Level1)
1967 {
1968 auto detailEnh = DetailEnhancerImage::Create();
1969 DetailEnhancerParameters param {
1970 .uri = "",
1971 .level = DETAIL_ENH_LEVEL_NONE,
1972 };
1973 detailEnh->SetParameter(param);
1974 int32_t inputWidth = 4096;
1975 int32_t inputHeight = 3072;
1976 int32_t outputWidth = 2048;
1977 int32_t outputHeight = 1536;
1978 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_RGBA_1010102;
1979 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_RGBA_1010102;
1980 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
1981 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
1982 int32_t ret = detailEnh->Process(input, output);
1983 EXPECT_NE(ret, VPE_ALGO_ERR_OK); // none not support RGB1010102
1984 }
1985
1986 // check extension extream vision engine, process RGBA1010102, HIGH
1987 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_29, TestSize.Level1)
1988 {
1989 auto detailEnh = DetailEnhancerImage::Create();
1990 DetailEnhancerParameters param {
1991 .uri = "",
1992 .level = DETAIL_ENH_LEVEL_HIGH,
1993 };
1994 detailEnh->SetParameter(param);
1995 int32_t inputWidth = 4096;
1996 int32_t inputHeight = 3072;
1997 int32_t outputWidth = 2048;
1998 int32_t outputHeight = 1536;
1999 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_RGBA_1010102;
2000 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_RGBA_1010102;
2001 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
2002 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
2003 int32_t ret = detailEnh->Process(input, output);
2004 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
2005 }
2006
2007 // check extension extream vision engine, process RGBA1010102, HIGH, format is not consistent
2008 HWTEST_F(DetailEnhancerUnitTest, extream_vision_engine_process_30, TestSize.Level1)
2009 {
2010 auto detailEnh = DetailEnhancerImage::Create();
2011 DetailEnhancerParameters param {
2012 .uri = "",
2013 .level = DETAIL_ENH_LEVEL_HIGH,
2014 };
2015 detailEnh->SetParameter(param);
2016 int32_t inputWidth = 4096;
2017 int32_t inputHeight = 3072;
2018 int32_t outputWidth = 2048;
2019 int32_t outputHeight = 1536;
2020 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_RGBA_1010102;
2021 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
2022 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, outputWidth, outputHeight);
2023 int32_t ret = detailEnh->Process(input, output);
2024 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
2025 }
2026
2027 // normal process of aisr, AISR MOVED TO VPE_EXT
2028 HWTEST_F(DetailEnhancerUnitTest, aisr_process_9, TestSize.Level1)
2029 {
2030 auto detailEnh = DetailEnhancerImage::Create();
2031 DetailEnhancerParameters param {
2032 .uri = "",
2033 .level = DETAIL_ENH_LEVEL_HIGH,
2034 };
2035 detailEnh->SetParameter(param);
2036 int32_t inputWidth = 1024;
2037 int32_t inputHeight = 768;
2038 int32_t outputWidth = 2048;
2039 int32_t outputHeight = 1536;
2040 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
2041 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
2042 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
2043 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
2044 int32_t ret = detailEnh->Process(input, output);
2045 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
2046 ret = detailEnh->Process(input, output); // try to process twice
2047 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
2048 }
2049
2050 // normal process of aisr, high
2051 HWTEST_F(DetailEnhancerUnitTest, aisr_process_10, TestSize.Level1)
2052 {
2053 auto detailEnh = DetailEnhancerImage::Create();
2054 DetailEnhancerParameters param {
2055 .uri = "",
2056 .level = DETAIL_ENH_LEVEL_HIGH,
2057 };
2058 detailEnh->SetParameter(param);
2059 int32_t inputWidth = 4096;
2060 int32_t inputHeight = 3072;
2061 int32_t outputWidth = 2048;
2062 int32_t outputHeight = 1536;
2063 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
2064 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
2065 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
2066 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
2067 int32_t ret = detailEnh->Process(input, output);
2068 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
2069 ret = detailEnh->Process(input, output); // try to process twice
2070 EXPECT_EQ(ret, VPE_ALGO_ERR_OK);
2071 }
2072
2073 // normal process of aisr, medium
2074 HWTEST_F(DetailEnhancerUnitTest, aisr_process_11, TestSize.Level1)
2075 {
2076 auto detailEnh = DetailEnhancerImage::Create();
2077 DetailEnhancerParameters param {
2078 .uri = "",
2079 .level = DETAIL_ENH_LEVEL_MEDIUM,
2080 };
2081 detailEnh->SetParameter(param);
2082 int32_t inputWidth = 4096;
2083 int32_t inputHeight = 3072;
2084 int32_t outputWidth = 2048;
2085 int32_t outputHeight = 1536;
2086 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
2087 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
2088 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
2089 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
2090 int32_t ret = detailEnh->Process(input, output);
2091 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
2092 ret = detailEnh->Process(input, output); // try to process twice
2093 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
2094 }
2095
2096 // normal process of aisr, low
2097 HWTEST_F(DetailEnhancerUnitTest, aisr_process_12, TestSize.Level1)
2098 {
2099 auto detailEnh = DetailEnhancerImage::Create();
2100 DetailEnhancerParameters param {
2101 .uri = "",
2102 .level = DETAIL_ENH_LEVEL_LOW,
2103 };
2104 detailEnh->SetParameter(param);
2105 int32_t inputWidth = 4096;
2106 int32_t inputHeight = 3072;
2107 int32_t outputWidth = 2048;
2108 int32_t outputHeight = 1536;
2109 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
2110 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
2111 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
2112 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
2113 int32_t ret = detailEnh->Process(input, output);
2114 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
2115 ret = detailEnh->Process(input, output); // try to process twice
2116 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
2117 }
2118
2119 // normal process of aisr, none
2120 HWTEST_F(DetailEnhancerUnitTest, aisr_process_13, TestSize.Level1)
2121 {
2122 auto detailEnh = DetailEnhancerImage::Create();
2123 DetailEnhancerParameters param {
2124 .uri = "",
2125 .level = DETAIL_ENH_LEVEL_NONE,
2126 };
2127 detailEnh->SetParameter(param);
2128 int32_t inputWidth = 4096;
2129 int32_t inputHeight = 3072;
2130 int32_t outputWidth = 2048;
2131 int32_t outputHeight = 1536;
2132 int32_t inputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
2133 int32_t outputFormat = OHOS::GRAPHIC_PIXEL_FMT_YCRCB_420_SP;
2134 auto input = CreateSurfaceBuffer(inputFormat, inputWidth, inputHeight);
2135 auto output = CreateSurfaceBuffer(outputFormat, outputWidth, outputHeight);
2136 int32_t ret = detailEnh->Process(input, output);
2137 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
2138 ret = detailEnh->Process(input, output); // try to process twice
2139 EXPECT_NE(ret, VPE_ALGO_ERR_OK);
2140 }
2141
2142 // destroy twice
2143 HWTEST_F(DetailEnhancerUnitTest, aisr_process_1, TestSize.Level1)
2144 {
2145 auto input = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 4096, 3072);
2146 auto output = CreateSurfaceBuffer(DEFAULT_FORMAT_RGBAEIGHT, 2048, 1536);
2147 DetailEnhancerLevel level = DETAIL_ENH_LEVEL_HIGH;
2148 void* lib = dlopen("/system/lib64/libvideoprocessingengine.z.so", RTLD_LAZY);
2149 if (lib == nullptr) {
2150 printf("cannot load vpe lib\n");
2151 return;
2152 }
2153
2154 typedef int32_t (*DetailEnhancerCreate)(int32_t*);
2155 typedef int32_t (*DetailEnhancerProcessImage)(int32_t,
2156 OHNativeWindowBuffer*, OHNativeWindowBuffer*, int32_t);
2157 typedef int32_t (*DetailEnhancerDestroy)(int32_t*);
2158
2159 auto detailEnhCreate = reinterpret_cast<DetailEnhancerCreate>(dlsym(lib, "DetailEnhancerCreate"));
2160 auto detailEnhProcessImage =
2161 reinterpret_cast<DetailEnhancerProcessImage>(dlsym(lib, "DetailEnhancerProcessImage"));
2162 auto detailEnhDestroy = reinterpret_cast<DetailEnhancerDestroy>(dlsym(lib, "DetailEnhancerDestroy"));
2163
2164 int32_t instanceSrId = -1;
2165 int32_t res = detailEnhCreate(&instanceSrId);
2166 if (res != 0 || instanceSrId == -1) {
2167 detailEnhDestroy(&instanceSrId);
2168 dlclose(lib);
2169 return;
2170 }
2171 if (input == nullptr || output == nullptr) {
2172 detailEnhDestroy(&instanceSrId);
2173 dlclose(lib);
2174 return;
2175 }
2176 OHNativeWindowBuffer* srIn = OH_NativeWindow_CreateNativeWindowBufferFromSurfaceBuffer(&input);
2177 OHNativeWindowBuffer* srOut = OH_NativeWindow_CreateNativeWindowBufferFromSurfaceBuffer(&output);
2178 res = detailEnhProcessImage(instanceSrId, srIn, srOut, static_cast<int>(level));
2179 if (res != 0) {
2180 detailEnhDestroy(&instanceSrId);
2181 dlclose(lib);
2182 return;
2183 }
2184 res = detailEnhDestroy(&instanceSrId);
2185 if (res != 0) {
2186 EXPECT_EQ(res, VPE_ALGO_ERR_OK);
2187 dlclose(lib);
2188 return;
2189 }
2190 EXPECT_EQ(res, VPE_ALGO_ERR_OK);
2191 res = detailEnhDestroy(&instanceSrId); // destroy twice
2192 dlclose(lib);
2193 EXPECT_NE(res, VPE_ALGO_ERR_OK);
2194 }
2195
2196 } // namespace VideoProcessingEngine
2197 } // namespace Media
2198 } // namespace OHOS
2199