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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 auto image = Image::MakeFromYUVAPixmaps(gpuContext, info, nullptr);
568 EXPECT_TRUE(image == nullptr);
569 }
570
571 /**
572 * @tc.name: MakeFromYUVAPixmapsTest002
573 * @tc.desc: test for MakeFromYUVAPixmapsTest failed with nullptr memory.
574 * @tc.type: FUNC
575 * @tc.require: I782P9
576 */
577 HWTEST_F(ImageTest, MakeFromYUVAPixmapsTest002, TestSize.Level1)
578 {
579 auto renderContext = std::make_shared<RenderContext>();
580 renderContext->InitializeEglContext();
581 renderContext->SetUpGpuContext();
582 auto gpuContext = renderContext->GetSharedDrGPUContext();
583 ASSERT_NE(gpuContext, nullptr);
584
585 YUVInfo info(100, 100, YUVInfo::PlaneConfig::Y_UV, YUVInfo::SubSampling::K420,
586 YUVInfo::YUVColorSpace::JPEG_FULL_YUVCOLORSPACE);
587 auto image = Image::MakeFromYUVAPixmaps(*gpuContext, info, nullptr);
588 EXPECT_TRUE(image == nullptr);
589 gpuContext = nullptr;
590 }
591
592 /**
593 * @tc.name: MakeFromYUVAPixmapsTest003
594 * @tc.desc: test for MakeFromYUVAPixmapsTest success for YUV NV21.
595 * @tc.type: FUNC
596 * @tc.require: I782P9
597 */
598 HWTEST_F(ImageTest, MakeFromYUVAPixmapsTest003, TestSize.Level1)
599 {
600 auto renderContext = std::make_shared<RenderContext>();
601 renderContext->InitializeEglContext();
602 renderContext->SetUpGpuContext();
603 auto gpuContext = renderContext->GetSharedDrGPUContext();
604 ASSERT_NE(gpuContext, nullptr);
605
606 size_t bufferSize = g_testJpgLength;
607 uint8_t *buffer = g_testJpgBuffer;
608 uint32_t errorCode = 0;
609 Media::SourceOptions opts;
610 opts.formatHint = "image/jpeg";
611 std::unique_ptr<Media::ImageSource> imageSource = Media::ImageSource::CreateImageSource(buffer,
612 bufferSize, opts, errorCode);
613 ASSERT_NE(imageSource.get(), nullptr);
614 Media::DecodeOptions decodeOpts;
615 decodeOpts.desiredPixelFormat = Media::PixelFormat::NV21;
616 std::unique_ptr<Media::PixelMap> pixelMap = imageSource->CreatePixelMap(decodeOpts, errorCode);
617 ASSERT_NE(pixelMap.get(), nullptr);
618
619 YUVInfo info(300, 300, YUVInfo::PlaneConfig::Y_VU, YUVInfo::SubSampling::K420,
620 YUVInfo::YUVColorSpace::JPEG_FULL_YUVCOLORSPACE);
621 auto image = Image::MakeFromYUVAPixmaps(*gpuContext, info,
622 const_cast<void *>(reinterpret_cast<const void*>(pixelMap->GetPixels())));
623 EXPECT_TRUE(image != nullptr);
624 gpuContext = nullptr;
625 }
626
627 /**
628 * @tc.name: MakeFromYUVAPixmapsTest004
629 * @tc.desc: test for MakeFromYUVAPixmapsTest success for YUV NV12.
630 * @tc.type: FUNC
631 * @tc.require: I782P9
632 */
633 HWTEST_F(ImageTest, MakeFromYUVAPixmapsTest004, TestSize.Level1)
634 {
635 auto renderContext = std::make_shared<RenderContext>();
636 renderContext->InitializeEglContext();
637 renderContext->SetUpGpuContext();
638 auto gpuContext = renderContext->GetSharedDrGPUContext();
639 ASSERT_NE(gpuContext, nullptr);
640
641 size_t bufferSize = g_testJpgLength;
642 uint8_t *buffer = g_testJpgBuffer;
643 uint32_t errorCode = 0;
644 Media::SourceOptions opts;
645 opts.formatHint = "image/jpeg";
646 std::unique_ptr<Media::ImageSource> imageSource = Media::ImageSource::CreateImageSource(buffer,
647 bufferSize, opts, errorCode);
648 ASSERT_NE(imageSource.get(), nullptr);
649 Media::DecodeOptions decodeOpts;
650 decodeOpts.desiredPixelFormat = Media::PixelFormat::NV12;
651 std::unique_ptr<Media::PixelMap> pixelMap = imageSource->CreatePixelMap(decodeOpts, errorCode);
652 ASSERT_NE(pixelMap.get(), nullptr);
653
654 YUVInfo info(300, 300, YUVInfo::PlaneConfig::Y_UV, YUVInfo::SubSampling::K420,
655 YUVInfo::YUVColorSpace::JPEG_FULL_YUVCOLORSPACE);
656 auto image = Image::MakeFromYUVAPixmaps(*gpuContext, info,
657 const_cast<void *>(reinterpret_cast<const void*>(pixelMap->GetPixels())));
658 EXPECT_TRUE(image != nullptr);
659 gpuContext = nullptr;
660 }
661 #endif
662 } // namespace Drawing
663 } // namespace Rosen
664 } // namespace OHOS