1 /*
2 * Copyright (c) 2022-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, Hardware
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 "gtest/gtest.h"
17
18 #ifdef RS_ENABLE_GPU
19 #include "image_source.h"
20 #include "pixel_map.h"
21 #endif
22
23 #include "draw/brush.h"
24 #include "effect/color_space.h"
25 #include "drawing/engine_adapter/impl_factory.h"
26 #include "image/bitmap.h"
27 #include "image/gpu_context.h"
28 #include "image/image.h"
29 #include "image/yuv_info.h"
30 #include "image/picture.h"
31 #include "render_context/render_context.h"
32 #include "utils/matrix.h"
33 #include "utils/size.h"
34
35 using namespace testing;
36 using namespace testing::ext;
37
38 namespace OHOS {
39 namespace Rosen {
40 namespace Drawing {
41 class ImageTest : public testing::Test {
42 public:
43 static void SetUpTestCase();
44 static void TearDownTestCase();
45 void SetUp() override;
46 void TearDown() override;
47 };
48
SetUpTestCase()49 void ImageTest::SetUpTestCase() {}
TearDownTestCase()50 void ImageTest::TearDownTestCase() {}
SetUp()51 void ImageTest::SetUp() {}
TearDown()52 void ImageTest::TearDown() {}
53
54 // jpg
55 static unsigned char g_testJpgBuffer[] = {
56 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01,
57 0x01, 0x01, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0xff, 0xdb, 0x00, 0x43,
58 0x00, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02,
59 0x02, 0x02, 0x02, 0x03, 0x05, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, 0x04,
60 0x04, 0x03, 0x05, 0x07, 0x06, 0x07, 0x07, 0x07, 0x06, 0x07, 0x07, 0x08,
61 0x09, 0x0b, 0x09, 0x08, 0x08, 0x0a, 0x08, 0x07, 0x07, 0x0a, 0x0d, 0x0a,
62 0x0a, 0x0b, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x09, 0x0e, 0x0f, 0x0d, 0x0c,
63 0x0e, 0x0b, 0x0c, 0x0c, 0x0c, 0xff, 0xdb, 0x00, 0x43, 0x01, 0x02, 0x02,
64 0x02, 0x03, 0x03, 0x03, 0x06, 0x03, 0x03, 0x06, 0x0c, 0x08, 0x07, 0x08,
65 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
66 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
67 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
68 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
69 0x0c, 0x0c, 0xff, 0xc0, 0x00, 0x11, 0x08, 0x00, 0xe2, 0x01, 0xd8, 0x03,
70 0x01, 0x22, 0x00, 0x02, 0x11, 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x00,
71 0x1f, 0x00, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
72 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
73 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0xff, 0xc4, 0x00, 0xb5, 0x10, 0x00,
74 0x02, 0x01, 0x03, 0x03, 0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x04, 0x00,
75 0x00, 0x01, 0x7d, 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21,
76 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81,
77 0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0, 0x24,
78 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25,
79 0x26, 0x27, 0x28, 0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a,
80 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56,
81 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a,
82 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x83, 0x84, 0x85, 0x86,
83 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99,
84 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3,
85 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6,
86 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9,
87 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf1,
88 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 0x00,
89 0x1f, 0x01, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
90 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
91 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0xff, 0xc4, 0x00, 0xb5, 0x11, 0x00,
92 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05, 0x04, 0x04, 0x00,
93 0x01, 0x02, 0x77, 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31,
94 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x08,
95 0x14, 0x42, 0x91, 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, 0x15,
96 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, 0x17, 0x18,
97 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38, 0x39,
98 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55,
99 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
100 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84,
101 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
102 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa,
103 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4,
104 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
105 0xd8, 0xd9, 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
106 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, 0xda, 0x00,
107 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00, 0xfd,
108 0x10, 0xa2, 0x8a, 0x2b, 0xfc, 0x63, 0x3f, 0xaa, 0x02, 0x8a, 0x28, 0xa0,
109 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
110 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
111 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
112 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
113 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
114 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
115 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
116 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
117 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
118 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
119 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
120 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
121 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
122 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
123 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
124 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
125 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
126 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
127 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
128 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
129 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
130 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
131 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
132 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
133 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
134 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
135 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
136 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
137 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
138 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
139 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
140 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
141 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
142 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
143 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
144 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
145 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
146 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
147 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
148 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
149 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
150 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
151 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
152 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
153 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
154 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
155 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
156 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
157 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
158 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
159 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
160 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
161 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
162 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
163 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
164 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
165 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
166 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
167 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
168 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
169 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
170 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
171 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
172 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
173 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
174 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
175 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
176 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
177 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
178 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
179 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
180 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
181 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
182 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
183 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
184 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
185 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
186 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
187 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
188 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
189 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
190 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
191 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
192 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
193 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
194 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
195 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
196 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
197 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
198 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
199 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
200 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
201 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
202 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
203 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
204 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
205 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
206 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
207 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
208 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
209 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
210 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
211 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
212 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
213 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
214 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
215 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
216 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
217 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
218 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
219 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
220 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
221 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
222 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
223 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
224 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
225 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
226 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
227 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
228 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
229 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
230 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
231 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
232 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
233 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
234 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
235 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
236 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
237 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
238 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
239 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
240 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
241 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
242 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
243 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
244 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
245 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
246 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
247 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
248 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
249 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
250 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
251 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
252 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
253 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
254 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
255 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
256 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
257 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0,
258 0x02, 0x8a, 0x28, 0xa0, 0x0f, 0xff, 0xd9
259 };
260
261 static unsigned int g_testJpgLength = 2431;
262
263 /**
264 * @tc.name: CreateAndDestroy001
265 * @tc.desc:
266 * @tc.type: FUNC
267 * @tc.require:AR000GGNV3
268 * @tc.author:
269 */
HWTEST_F(ImageTest, CreateAndDestroy001, TestSize.Level1)270 HWTEST_F(ImageTest, CreateAndDestroy001, TestSize.Level1)
271 {
272 // The best way to create Image.
273 std::unique_ptr<Image> image = std::make_unique<Image>();
274 ASSERT_TRUE(image != nullptr);
275 }
276
277 /**
278 * @tc.name: BuildFromBitmap001
279 * @tc.desc:
280 * @tc.type: FUNC
281 * @tc.require:AR000GGNV3
282 * @tc.author:
283 */
HWTEST_F(ImageTest, BuildFromBitmap001, TestSize.Level1)284 HWTEST_F(ImageTest, BuildFromBitmap001, TestSize.Level1)
285 {
286 std::unique_ptr<Image> image = std::make_unique<Image>();
287 ASSERT_TRUE(image != nullptr);
288 Bitmap bitmap;
289 image->BuildFromBitmap(bitmap);
290 }
291
292 /**
293 * @tc.name: ImageGetWidthTest001
294 * @tc.desc:
295 * @tc.type: FUNC
296 * @tc.require:AR000GGNV3
297 * @tc.author:
298 */
HWTEST_F(ImageTest, ImageGetWidthTest001, TestSize.Level1)299 HWTEST_F(ImageTest, ImageGetWidthTest001, TestSize.Level1)
300 {
301 Bitmap bitmap;
302 BitmapFormat bitmapFormat { COLORTYPE_RGBA_8888, ALPHATYPE_OPAQUE };
303 bitmap.Build(10, 10, bitmapFormat);
304 Image image;
305 ASSERT_EQ(0, image.GetWidth());
306 image.BuildFromBitmap(bitmap);
307 ASSERT_EQ(10, image.GetWidth());
308 }
309
310 /**
311 * @tc.name: ImageGetWidthTest002
312 * @tc.desc:
313 * @tc.type: FUNC
314 * @tc.require:AR000GGNV3
315 * @tc.author:
316 */
HWTEST_F(ImageTest, ImageGetWidthTest002, TestSize.Level1)317 HWTEST_F(ImageTest, ImageGetWidthTest002, TestSize.Level1)
318 {
319 Bitmap bitmap;
320 BitmapFormat bitmapFormat { COLORTYPE_RGBA_8888, ALPHATYPE_OPAQUE };
321 bitmap.Build(15, 15, bitmapFormat);
322 Image image;
323 ASSERT_EQ(0, image.GetWidth());
324 image.BuildFromBitmap(bitmap);
325 ASSERT_EQ(15, image.GetWidth());
326 }
327
328 /**
329 * @tc.name: ImageGetHeightTest001
330 * @tc.desc:
331 * @tc.type: FUNC
332 * @tc.require:AR000GGNV3
333 * @tc.author:
334 */
HWTEST_F(ImageTest, ImageGetHeightTest001, TestSize.Level1)335 HWTEST_F(ImageTest, ImageGetHeightTest001, TestSize.Level1)
336 {
337 Bitmap bitmap;
338 BitmapFormat bitmapFormat { COLORTYPE_RGBA_8888, ALPHATYPE_OPAQUE };
339 bitmap.Build(10, 10, bitmapFormat);
340 Image image;
341 image.BuildFromBitmap(bitmap);
342 ASSERT_EQ(10, image.GetHeight());
343 }
344
345 /**
346 * @tc.name: ImageGetHeightTest002
347 * @tc.desc:
348 * @tc.type: FUNC
349 * @tc.require:AR000GGNV3
350 * @tc.author:
351 */
HWTEST_F(ImageTest, ImageGetHeightTest002, TestSize.Level1)352 HWTEST_F(ImageTest, ImageGetHeightTest002, TestSize.Level1)
353 {
354 Bitmap bitmap;
355 BitmapFormat bitmapFormat { COLORTYPE_RGBA_8888, ALPHATYPE_OPAQUE };
356 bitmap.Build(15, 15, bitmapFormat);
357 Image image;
358 image.BuildFromBitmap(bitmap);
359 ASSERT_EQ(15, image.GetHeight());
360 }
361
362 /**
363 * @tc.name: ImageGetUniqueIDTest001
364 * @tc.desc: test for geting the unique Id of Image.
365 * @tc.type: FUNC
366 * @tc.require: I70OWN
367 */
HWTEST_F(ImageTest, ImageGetUniqueIDTest001, TestSize.Level1)368 HWTEST_F(ImageTest, ImageGetUniqueIDTest001, TestSize.Level1)
369 {
370 // GetUniqueID will change all the time
371 Image image;
372 ASSERT_EQ(0, image.GetUniqueID());
373 }
374
375 /**
376 * @tc.name: ReadPixelsTest001
377 * @tc.desc: test for Coping a Rect of pixels from Image to Bitmap.
378 * @tc.type: FUNC
379 * @tc.require: I70OWN
380 */
HWTEST_F(ImageTest, ReadPixelsTest001, TestSize.Level1)381 HWTEST_F(ImageTest, ReadPixelsTest001, TestSize.Level1)
382 {
383 Bitmap bitmap;
384 Image image;
385 int x = 0;
386 int y = 0;
387 EXPECT_FALSE(image.ReadPixels(bitmap, x, y));
388 }
389
390 /**
391 * @tc.name: ReadPixelsTest002
392 * @tc.desc: test for Coping a Rect of pixels from Image to Bitmap.
393 * @tc.type: FUNC
394 * @tc.require: I70OWN
395 */
HWTEST_F(ImageTest, ReadPixelsTest002, TestSize.Level1)396 HWTEST_F(ImageTest, ReadPixelsTest002, TestSize.Level1)
397 {
398 Bitmap bitmap;
399 BitmapFormat bitmapFormat { COLORTYPE_RGBA_8888, ALPHATYPE_OPAQUE };
400 bitmap.Build(15, 15, bitmapFormat);
401 Image image;
402 image.BuildFromBitmap(bitmap);
403 int x = 0;
404 int y = 0;
405 EXPECT_TRUE(image.ReadPixels(bitmap, x, y));
406 }
407
408 /**
409 * @tc.name: IsTextureBackedTest001
410 * @tc.desc: test for IsTextureBacked function.
411 * @tc.type: FUNC
412 * @tc.require: I70OWN
413 */
HWTEST_F(ImageTest, IsTextureBackedTest001, TestSize.Level1)414 HWTEST_F(ImageTest, IsTextureBackedTest001, TestSize.Level1)
415 {
416 Bitmap bitmap;
417 BitmapFormat bitmapFormat { COLORTYPE_RGBA_8888, ALPHATYPE_OPAQUE };
418 bitmap.Build(15, 15, bitmapFormat);
419 Image image;
420 image.BuildFromBitmap(bitmap);
421 EXPECT_FALSE(image.IsTextureBacked());
422 }
423
424 #ifdef RS_ENABLE_GPU
425 /**
426 * @tc.name: BuildFromCompressedTest001
427 * @tc.desc: test for creating a GPU-backed Image from compressed data.
428 * @tc.type: FUNC
429 * @tc.require: I70OWN
430 */
HWTEST_F(ImageTest, BuildFromCompressedTest001, TestSize.Level1)431 HWTEST_F(ImageTest, BuildFromCompressedTest001, TestSize.Level1)
432 {
433 GPUContext gpuContext;
434 const std::shared_ptr<Data> data = nullptr;
435 std::unique_ptr<Image> image = std::make_unique<Image>();
436 ASSERT_TRUE(image != nullptr);
437 image->BuildFromCompressed(gpuContext, data, 15, 15, CompressedType::ASTC_RGBA8_4x4);
438 }
439
440 /**
441 * @tc.name: BuildFromCompressedTest002
442 * @tc.desc: test for creating a GPU-backed Image from compressed data.
443 * @tc.type: FUNC
444 * @tc.require: I70OWN
445 */
HWTEST_F(ImageTest, BuildFromCompressedTest002, TestSize.Level1)446 HWTEST_F(ImageTest, BuildFromCompressedTest002, TestSize.Level1)
447 {
448 GPUContext gpuContext;
449 std::shared_ptr<Data> data = std::make_shared<Data>();
450 ASSERT_TRUE(data != nullptr);
451 std::unique_ptr<Image> image = std::make_unique<Image>();
452 ASSERT_TRUE(image != nullptr);
453 image->BuildFromCompressed(gpuContext, data, 15, 15, CompressedType::ASTC_RGBA8_4x4);
454 }
455
456 /**
457 * @tc.name: BuildFromCompressedTest003
458 * @tc.desc: test for creating a GPU-backed Image from compressed data.
459 * @tc.type: FUNC
460 * @tc.require: I70OWN
461 */
HWTEST_F(ImageTest, BuildFromCompressedTest003, TestSize.Level1)462 HWTEST_F(ImageTest, BuildFromCompressedTest003, TestSize.Level1)
463 {
464 GPUContext gpuContext;
465 std::shared_ptr<Data> data = std::make_shared<Data>();
466 ASSERT_TRUE(data != nullptr);
467 std::unique_ptr<Image> image = std::make_unique<Image>();
468 ASSERT_TRUE(image != nullptr);
469 image->BuildFromCompressed(gpuContext, data, 15, 15, CompressedType::ETC2_RGB8_UNORM);
470 }
471
472 /**
473 * @tc.name: BuildFromBitmapTest001
474 * @tc.desc: test for creating Image from Bitmap. Image is uploaded to GPU back-end using context.
475 * @tc.type: FUNC
476 * @tc.require: I70OWN
477 */
HWTEST_F(ImageTest, BuildFromBitmapTest001, TestSize.Level1)478 HWTEST_F(ImageTest, BuildFromBitmapTest001, TestSize.Level1)
479 {
480 GPUContext gpuContext;
481 Bitmap bitmap;
482 BitmapFormat bitmapFormat { COLORTYPE_RGBA_8888, ALPHATYPE_OPAQUE };
483 bitmap.Build(15, 15, bitmapFormat);
484 std::unique_ptr<Image> image = std::make_unique<Image>();
485 ASSERT_TRUE(image != nullptr);
486 image->BuildFromBitmap(gpuContext, bitmap);
487 }
488
489 /**
490 * @tc.name: BuildFromTextureTest001
491 * @tc.desc: test for creating Image from GPU texture associated with context.
492 * @tc.type: FUNC
493 * @tc.require: I70OWN
494 */
HWTEST_F(ImageTest, BuildFromTextureTest001, TestSize.Level1)495 HWTEST_F(ImageTest, BuildFromTextureTest001, TestSize.Level1)
496 {
497 GPUContext gpuContext;
498 TextureInfo info;
499 info.SetWidth(10);
500 BitmapFormat bitmapFormat { COLORTYPE_UNKNOWN, ALPHATYPE_UNKNOWN };
501 auto colorSpace = std::make_shared<ColorSpace>(ColorSpace::ColorSpaceType::NO_TYPE);
502 std::unique_ptr<Image> image = std::make_unique<Image>();
503 ASSERT_TRUE(image != nullptr);
504 image->BuildFromTexture(gpuContext, info, TextureOrigin::TOP_LEFT, bitmapFormat, nullptr);
505
506 bitmapFormat = { COLORTYPE_ALPHA_8, ALPHATYPE_OPAQUE };
507 image->BuildFromTexture(gpuContext, info, TextureOrigin::TOP_LEFT, bitmapFormat, colorSpace);
508
509 bitmapFormat = { COLORTYPE_RGB_565, ALPHATYPE_PREMUL };
510 image->BuildFromTexture(gpuContext, info, TextureOrigin::BOTTOM_LEFT, bitmapFormat, colorSpace);
511
512 bitmapFormat = { COLORTYPE_ARGB_4444, ALPHATYPE_UNPREMUL };
513 image->BuildFromTexture(gpuContext, info, TextureOrigin::BOTTOM_LEFT, bitmapFormat, colorSpace);
514
515 bitmapFormat.colorType = COLORTYPE_RGBA_8888;
516 bitmapFormat.alphaType = static_cast<AlphaType>(-1);
517 image->BuildFromTexture(gpuContext, info, TextureOrigin::BOTTOM_LEFT, bitmapFormat, colorSpace);
518
519 bitmapFormat.colorType = COLORTYPE_BGRA_8888;
520 image->BuildFromTexture(gpuContext, info, TextureOrigin::BOTTOM_LEFT, bitmapFormat, colorSpace);
521
522 bitmapFormat.colorType = COLORTYPE_N32;
523 image->BuildFromTexture(gpuContext, info, TextureOrigin::BOTTOM_LEFT, bitmapFormat, colorSpace);
524
525 bitmapFormat.colorType = static_cast<ColorType>(-1);
526 image->BuildFromTexture(gpuContext, info, static_cast<TextureOrigin>(-1), bitmapFormat, colorSpace);
527 }
528
529 /**
530 * @tc.name: SerializeAndDeserializeTest001
531 * @tc.desc: test for serialize and deserialize Image.
532 * @tc.type: FUNC
533 * @tc.require: I782P9
534 */
HWTEST_F(ImageTest, SerializeAndDeserializeTest001, TestSize.Level1)535 HWTEST_F(ImageTest, SerializeAndDeserializeTest001, TestSize.Level1)
536 {
537 auto image = std::make_shared<Image>();
538 auto data = image->Serialize();
539 #ifdef ROSEN_OHOS
540 ASSERT_TRUE(data == nullptr);
541 EXPECT_FALSE(image->Deserialize(data));
542
543 BitmapFormat bitmapFormat { COLORTYPE_RGBA_8888, ALPHATYPE_OPAQUE };
544 auto bitmap = std::make_shared<Bitmap>();
545 EXPECT_TRUE(bitmap->Build(10, 10, bitmapFormat));
546 image->BuildFromBitmap(*bitmap);
547 data = image->Serialize();
548 ASSERT_TRUE(data != nullptr);
549 EXPECT_TRUE(image->Deserialize(data));
550 #else
551 ASSERT_TRUE(data == nullptr);
552 EXPECT_FALSE(image->Deserialize(data));
553 #endif
554 }
555
556 /**
557 * @tc.name: MakeFromYUVAPixmapsTest001
558 * @tc.desc: test for MakeFromYUVAPixmapsTest failed with nullptr gpuContext.
559 * @tc.type: FUNC
560 * @tc.require: I782P9
561 */
HWTEST_F(ImageTest, MakeFromYUVAPixmapsTest001, TestSize.Level1)562 HWTEST_F(ImageTest, MakeFromYUVAPixmapsTest001, TestSize.Level1)
563 {
564 GPUContext gpuContext;
565 YUVInfo info(100, 100, YUVInfo::PlaneConfig::Y_UV, YUVInfo::SubSampling::K420,
566 YUVInfo::YUVColorSpace::JPEG_FULL_YUVCOLORSPACE,
567 YUVInfo::YUVDataType::UNORM_8);
568 auto image = Image::MakeFromYUVAPixmaps(gpuContext, info, nullptr);
569 EXPECT_TRUE(image == nullptr);
570 }
571
572 /**
573 * @tc.name: MakeFromYUVAPixmapsTest002
574 * @tc.desc: test for MakeFromYUVAPixmapsTest failed with nullptr memory.
575 * @tc.type: FUNC
576 * @tc.require: I782P9
577 */
HWTEST_F(ImageTest, MakeFromYUVAPixmapsTest002, TestSize.Level1)578 HWTEST_F(ImageTest, MakeFromYUVAPixmapsTest002, TestSize.Level1)
579 {
580 auto renderContext = std::make_shared<RenderContext>();
581 renderContext->InitializeEglContext();
582 renderContext->SetUpGpuContext();
583 auto gpuContext = renderContext->GetSharedDrGPUContext();
584 ASSERT_NE(gpuContext, nullptr);
585
586 YUVInfo info(100, 100, YUVInfo::PlaneConfig::Y_UV, YUVInfo::SubSampling::K420,
587 YUVInfo::YUVColorSpace::JPEG_FULL_YUVCOLORSPACE,
588 YUVInfo::YUVDataType::UNORM_8);
589 auto image = Image::MakeFromYUVAPixmaps(*gpuContext, info, nullptr);
590 EXPECT_TRUE(image == nullptr);
591 gpuContext = nullptr;
592 }
593
594 /**
595 * @tc.name: MakeFromYUVAPixmapsTest003
596 * @tc.desc: test for MakeFromYUVAPixmapsTest success for YUV NV21.
597 * @tc.type: FUNC
598 * @tc.require: I782P9
599 */
HWTEST_F(ImageTest, MakeFromYUVAPixmapsTest003, TestSize.Level1)600 HWTEST_F(ImageTest, MakeFromYUVAPixmapsTest003, TestSize.Level1)
601 {
602 auto renderContext = std::make_shared<RenderContext>();
603 renderContext->InitializeEglContext();
604 renderContext->SetUpGpuContext();
605 auto gpuContext = renderContext->GetSharedDrGPUContext();
606 ASSERT_NE(gpuContext, nullptr);
607
608 size_t bufferSize = g_testJpgLength;
609 uint8_t *buffer = g_testJpgBuffer;
610 uint32_t errorCode = 0;
611 Media::SourceOptions opts;
612 opts.formatHint = "image/jpeg";
613 std::unique_ptr<Media::ImageSource> imageSource = Media::ImageSource::CreateImageSource(buffer,
614 bufferSize, opts, errorCode);
615 ASSERT_NE(imageSource.get(), nullptr);
616 Media::DecodeOptions decodeOpts;
617 decodeOpts.desiredPixelFormat = Media::PixelFormat::NV21;
618 std::unique_ptr<Media::PixelMap> pixelMap = imageSource->CreatePixelMap(decodeOpts, errorCode);
619 ASSERT_NE(pixelMap.get(), nullptr);
620
621 YUVInfo info(300, 300, YUVInfo::PlaneConfig::Y_VU, YUVInfo::SubSampling::K420,
622 YUVInfo::YUVColorSpace::JPEG_FULL_YUVCOLORSPACE,
623 YUVInfo::YUVDataType::UNORM_8);
624 auto image = Image::MakeFromYUVAPixmaps(*gpuContext, info,
625 const_cast<void *>(reinterpret_cast<const void*>(pixelMap->GetPixels())));
626 EXPECT_TRUE(image != nullptr);
627 gpuContext = nullptr;
628 }
629
630 /**
631 * @tc.name: MakeFromYUVAPixmapsTest004
632 * @tc.desc: test for MakeFromYUVAPixmapsTest success for YUV NV12.
633 * @tc.type: FUNC
634 * @tc.require: I782P9
635 */
HWTEST_F(ImageTest, MakeFromYUVAPixmapsTest004, TestSize.Level1)636 HWTEST_F(ImageTest, MakeFromYUVAPixmapsTest004, TestSize.Level1)
637 {
638 auto renderContext = std::make_shared<RenderContext>();
639 renderContext->InitializeEglContext();
640 renderContext->SetUpGpuContext();
641 auto gpuContext = renderContext->GetSharedDrGPUContext();
642 ASSERT_NE(gpuContext, nullptr);
643
644 size_t bufferSize = g_testJpgLength;
645 uint8_t *buffer = g_testJpgBuffer;
646 uint32_t errorCode = 0;
647 Media::SourceOptions opts;
648 opts.formatHint = "image/jpeg";
649 std::unique_ptr<Media::ImageSource> imageSource = Media::ImageSource::CreateImageSource(buffer,
650 bufferSize, opts, errorCode);
651 ASSERT_NE(imageSource.get(), nullptr);
652 Media::DecodeOptions decodeOpts;
653 decodeOpts.desiredPixelFormat = Media::PixelFormat::NV12;
654 std::unique_ptr<Media::PixelMap> pixelMap = imageSource->CreatePixelMap(decodeOpts, errorCode);
655 ASSERT_NE(pixelMap.get(), nullptr);
656
657 YUVInfo info(300, 300, YUVInfo::PlaneConfig::Y_UV, YUVInfo::SubSampling::K420,
658 YUVInfo::YUVColorSpace::JPEG_FULL_YUVCOLORSPACE,
659 YUVInfo::YUVDataType::UNORM_8);
660 auto image = Image::MakeFromYUVAPixmaps(*gpuContext, info,
661 const_cast<void *>(reinterpret_cast<const void*>(pixelMap->GetPixels())));
662 EXPECT_TRUE(image != nullptr);
663 gpuContext = nullptr;
664 }
665
666 /**
667 * @tc.name: MakeFromYUVAPixmapsTest005
668 * @tc.desc: test for MakeFromYUVAPixmapsTest success for YUV YCBCR_P010.
669 * @tc.type: FUNC
670 * @tc.require: I782P9
671 */
HWTEST_F(ImageTest, MakeFromYUVAPixmapsTest005, TestSize.Level1)672 HWTEST_F(ImageTest, MakeFromYUVAPixmapsTest005, TestSize.Level1)
673 {
674 auto renderContext = std::make_shared<RenderContext>();
675 renderContext->InitializeEglContext();
676 renderContext->SetUpGpuContext();
677 auto gpuContext = renderContext->GetSharedDrGPUContext();
678 ASSERT_NE(gpuContext, nullptr);
679
680 size_t bufferSize = g_testJpgLength;
681 uint8_t *buffer = g_testJpgBuffer;
682 uint32_t errorCode = 0;
683 Media::SourceOptions opts;
684 opts.formatHint = "image/jpeg";
685 std::unique_ptr<Media::ImageSource> imageSource = Media::ImageSource::CreateImageSource(buffer,
686 bufferSize, opts, errorCode);
687 ASSERT_NE(imageSource.get(), nullptr);
688 Media::DecodeOptions decodeOpts;
689 decodeOpts.desiredPixelFormat = Media::PixelFormat::YCBCR_P010;
690 std::unique_ptr<Media::PixelMap> pixelMap = imageSource->CreatePixelMap(decodeOpts, errorCode);
691 ASSERT_NE(pixelMap.get(), nullptr);
692
693 YUVInfo info(300, 300, YUVInfo::PlaneConfig::Y_UV, YUVInfo::SubSampling::K420,
694 YUVInfo::YUVColorSpace::BT2020_10BIT_LIMITED_YUVCOLORSPACE,
695 YUVInfo::YUVDataType::UNORM_16);
696 auto image = Image::MakeFromYUVAPixmaps(*gpuContext, info,
697 const_cast<void *>(reinterpret_cast<const void*>(pixelMap->GetPixels())));
698 EXPECT_TRUE(image != nullptr);
699 gpuContext = nullptr;
700 }
701
702 /**
703 * @tc.name: MakeFromYUVAPixmapsTest006
704 * @tc.desc: test for MakeFromYUVAPixmapsTest success for YUV YCRCB_P010.
705 * @tc.type: FUNC
706 * @tc.require: I782P9
707 */
HWTEST_F(ImageTest, MakeFromYUVAPixmapsTest006, TestSize.Level1)708 HWTEST_F(ImageTest, MakeFromYUVAPixmapsTest006, TestSize.Level1)
709 {
710 auto renderContext = std::make_shared<RenderContext>();
711 renderContext->InitializeEglContext();
712 renderContext->SetUpGpuContext();
713 auto gpuContext = renderContext->GetSharedDrGPUContext();
714 ASSERT_NE(gpuContext, nullptr);
715
716 size_t bufferSize = g_testJpgLength;
717 uint8_t *buffer = g_testJpgBuffer;
718 uint32_t errorCode = 0;
719 Media::SourceOptions opts;
720 opts.formatHint = "image/jpeg";
721 std::unique_ptr<Media::ImageSource> imageSource = Media::ImageSource::CreateImageSource(buffer,
722 bufferSize, opts, errorCode);
723 ASSERT_NE(imageSource.get(), nullptr);
724 Media::DecodeOptions decodeOpts;
725 decodeOpts.desiredPixelFormat = Media::PixelFormat::YCRCB_P010;
726 std::unique_ptr<Media::PixelMap> pixelMap = imageSource->CreatePixelMap(decodeOpts, errorCode);
727 ASSERT_NE(pixelMap.get(), nullptr);
728
729 YUVInfo info(300, 300, YUVInfo::PlaneConfig::Y_VU, YUVInfo::SubSampling::K420,
730 YUVInfo::YUVColorSpace::BT2020_10BIT_LIMITED_YUVCOLORSPACE,
731 YUVInfo::YUVDataType::UNORM_16);
732 auto image = Image::MakeFromYUVAPixmaps(*gpuContext, info,
733 const_cast<void *>(reinterpret_cast<const void*>(pixelMap->GetPixels())));
734 EXPECT_TRUE(image != nullptr);
735 gpuContext = nullptr;
736 }
737 #endif
738 } // namespace Drawing
739 } // namespace Rosen
740 } // namespace OHOS