1 /*
2  * Copyright (c) 2024 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 #ifndef IMAGE_EFFECT_ERROR_CODE_H
17 #define IMAGE_EFFECT_ERROR_CODE_H
18 
19 #include <stdint.h>
20 #include <string>
21 
22 namespace OHOS {
23 namespace Media {
24 namespace Effect {
25 enum struct ErrorCode : int32_t {
26     SUCCESS = 0,
27     ERR_PARAM_INVALID = 401,
28     ERR_UNKNOWN = INT32_MIN + 0,
29     ERR_INPUT_NULL = ERR_UNKNOWN + 1,
30     ERR_NO_VALUE = ERR_UNKNOWN + 2,
31     ERR_UNSUPPORTED_IPTYPE_FOR_EFFECT = ERR_UNKNOWN + 3,
32     ERR_UNSUPPORTED_FORMAT_TYPE = ERR_UNKNOWN + 4,
33     ERR_ANY_CAST_TYPE_NOT_IPTYPE = ERR_UNKNOWN + 5,
34     ERR_UNSUPPORTED_CONFIG_TYPE = ERR_UNKNOWN + 6,
35     ERR_INVALID_SRC_PIXELMAP = ERR_UNKNOWN + 7,
36     ERR_INVALID_DST_PIXELMAP = ERR_UNKNOWN + 8,
37     ERR_UNSUPPORTED_PIXEL_FORMAT = ERR_UNKNOWN + 9,
38     ERR_UNSUPPORTED_DATA_TYPE = ERR_UNKNOWN + 10,
39     ERR_NO_DATA = ERR_UNKNOWN + 11,
40     ERR_PIXELMAP_GETIMAGEINFO_FAIL = ERR_UNKNOWN + 12,
41     ERR_PIXELMAP_ACCESSPIXELS_FAIL = ERR_UNKNOWN + 13,
42     ERR_UNSUPPORTED_INPUT_ANYTYPE = ERR_UNKNOWN + 14,
43     ERR_UNSUPPORTED_VALUE_KEY = ERR_UNKNOWN + 15,
44     ERR_ANY_CAST_TYPE_NOT_FLOAT = ERR_UNKNOWN + 16,
45     ERR_VALUE_OUT_OF_RANGE = ERR_UNKNOWN + 17,
46     ERR_NO_VALUE_KEY = ERR_UNKNOWN + 18,
47     ERR_ANY_CAST_TYPE_NOT_MATCH = ERR_UNKNOWN + 19,
48     ERR_NOT_SUPPORT_SWITCH_TO_OHANY = ERR_UNKNOWN + 20,
49     ERR_JSON_DATA_TYPE = ERR_UNKNOWN + 21,
50     ERR_JSON_NO_TARGET = ERR_UNKNOWN + 22,
51     ERR_NO_FILTER_OPERATOR_LEVEL = ERR_UNKNOWN + 23,
52     ERR_PIPELINE_INVALID_FILTER = ERR_UNKNOWN + 24,
53     ERR_PIPELINE_INVALID_FILTER_PORT = ERR_UNKNOWN + 25,
54     ERR_PIPELINE_INVALID_FILTER_CALLBACK = ERR_UNKNOWN + 26,
55     ERR_CUSTOM_EFILTER_APPLY_FAIL = ERR_UNKNOWN + 27,
56     ERR_CUSTOM_EFILTER_SETVALUE_FAIL = ERR_UNKNOWN + 28,
57     ERR_CUSTOM_EFILTER_SAVE_FAIL = ERR_UNKNOWN + 29,
58     ERR_CUSTOM_EFILTER_RESTORE_FAIL = ERR_UNKNOWN + 30,
59     ERR_ALLOC_MEMORY_SIZE_OUT_OF_RANGE = ERR_UNKNOWN + 31,
60     ERR_ALLOC_MEMORY_FAIL = ERR_UNKNOWN + 32,
61     ERR_FREE_MEMORY_ADDR_ABNORMAL = ERR_UNKNOWN + 33,
62     ERR_MEMCPY_FAIL = ERR_UNKNOWN + 34,
63     ERR_UNSUPPORTED_RUNNINGTYPE = ERR_UNKNOWN + 35,
64     ERR_INVALID_SRC_SURFACEBUFFER = ERR_UNKNOWN + 36,
65     ERR_INVALID_DST_SURFACEBUFFER = ERR_UNKNOWN + 37,
66     ERR_PARSE_FOR_EFFECT_BUFFER_FAIL = ERR_UNKNOWN + 38,
67     ERR_NOT_SUPPORT_DIFF_DATATYPE = ERR_UNKNOWN + 39,
68     ERR_CREATE_IMAGESOURCE_FAIL = ERR_UNKNOWN + 40,
69     ERR_CREATE_PIXELMAP_FAIL = ERR_UNKNOWN + 41,
70     ERR_EXTRA_INFO_NULL = ERR_UNKNOWN + 42,
71     ERR_BUFFER_INFO_NULL = ERR_UNKNOWN + 43,
72     ERR_NOT_SUPPORT_DIFF_FORMAT = ERR_UNKNOWN + 44,
73     ERR_IMAGE_PACKER_EXEC_FAIL = ERR_UNKNOWN + 45,
74     ERR_SET_IMAGE_INFO_EXEC_FAIL = ERR_UNKNOWN + 46,
75     ERR_FILE_TYPE_NOT_SUPPORT = ERR_UNKNOWN + 47,
76     ERR_INVALID_INDEX = ERR_UNKNOWN + 48,
77     ERR_BUFFER_NOT_ALLOW_CHANGE = ERR_UNKNOWN + 49,
78     ERR_CREATE_MEMORY_FAIL = ERR_UNKNOWN + 50,
79     ERR_SET_IMAGE_INFO_FAIL = ERR_UNKNOWN + 51,
80     ERR_MEMORY_DATA_ABNORMAL = ERR_UNKNOWN + 52,
81     ERR_NOT_FILTERS_WITH_RENDER = ERR_UNKNOWN + 53,
82     ERR_NOT_SET_INPUT_DATA = ERR_UNKNOWN + 54,
83     ERR_UNSUPPORTED_INOUT_WITH_DIFF_BUFFER = ERR_UNKNOWN + 55,
84     ERR_UNSUPPORTED_BUFFER_TYPE = ERR_UNKNOWN + 56,
85     ERR_INVALID_SURFACE_BUFFER = ERR_UNKNOWN + 57,
86     ERR_INVALID_FD = ERR_UNKNOWN + 58,
87     ERR_SRC_EFFECT_BUFFER_NULL = ERR_UNKNOWN + 59,
88     ERR_VPE_COMPOSE_IMAGE_FAIL = ERR_UNKNOWN + 60,
89     ERR_VPE_DECOMPOSE_IMAGE_FAIL = ERR_UNKNOWN + 61,
90     ERR_VPE_PROCESS_IMAGE_FAIL = ERR_UNKNOWN + 62,
91     ERR_VPE_METADATA_PROCESS_IMAGE_FAIL = ERR_UNKNOWN + 63,
92     ERR_INVALID_VPE_INSTANCE = ERR_UNKNOWN + 64,
93     ERR_SET_METADATA_FAIL = ERR_UNKNOWN + 65,
94     ERR_GET_METADATA_FAIL = ERR_UNKNOWN + 66,
95     ERR_SET_COLORSPACETYPE_FAIL = ERR_UNKNOWN + 67,
96     ERR_GET_COLORSPACETYPE_FAIL = ERR_UNKNOWN + 68,
97     ERR_INVALID_COLORSPACE = ERR_UNKNOWN + 69,
98     ERR_APPLYCOLORSPACE_FAIL = ERR_UNKNOWN + 70,
99     ERR_NOT_SUPPORT_INPUT_OUTPUT_COLORSPACE = ERR_UNKNOWN + 71,
100     ERR_FILTER_NOT_SUPPORT_INPUT_OUTPUT_COLORSPACE = ERR_UNKNOWN + 72,
101     ERR_COLORSPACE_NOT_SUPPORT_CONVERT = ERR_UNKNOWN + 73,
102     ERR_NOT_SUPPORT_CONVERT_FORMAT = ERR_UNKNOWN + 74,
103     ERR_CREATE_PICTURE_FAIL = ERR_UNKNOWN + 75,
104     ERR_IMAGE_DATA = ERR_UNKNOWN + 76,
105     ERR_INVALID_PARAMETER_VALUE = ERR_UNKNOWN + 100,
106     ERR_INVALID_PARAMETER_TYPE = ERR_UNKNOWN + 101,
107     ERR_INVALID_OPERATION = ERR_UNKNOWN + 102,
108     ERR_UNIMPLEMENTED = ERR_UNKNOWN + 103,
109     ERR_TIMED_OUT = ERR_UNKNOWN + 104,
110     ERR_NO_MEMORY = ERR_UNKNOWN + 105,
111     ERR_PERMISSION_DENIED = ERR_UNKNOWN + 106,
112     ERR_IMAGE_EFFECT_RECEIVER_INIT_FAILED = ERR_UNKNOWN + 107,
113     ERR_GL_FRAMEBUFFER_NOT_COMPLETE = ERR_UNKNOWN + 200,
114     ERR_GL_CREATE_TEXTURE_FAILED = ERR_UNKNOWN + 201,
115     ERR_GL_CREATE_PROGRAM_FAILED = ERR_UNKNOWN + 202,
116     ERR_GL_INIT_MESH_FAILED = ERR_UNKNOWN + 203,
117     ERR_GL_PRE_DRAW_FAILED = ERR_UNKNOWN + 204,
118     ERR_GL_DRAW_FAILED = ERR_UNKNOWN + 205,
119     ERR_GL_COPY_PIXELS_FAILED = ERR_UNKNOWN + 206,
120 };
121 
122 std::string GetErrorName(ErrorCode code);
123 
124 #ifndef FALSE_RETURN_MSG_W
125 #define FALSE_RETURN_MSG_W(exec, ret, fmt, args...) \
126     do {                                            \
127         bool returnValue = (exec);                  \
128         if (!returnValue) {                         \
129             EFFECT_LOGW(fmt, ##args);               \
130             return ret;                             \
131         }                                           \
132     } while (0)
133 #endif
134 
135 #ifndef FALSE_RETURN_E
136 #define FALSE_RETURN_E(exec, ret)               \
137     do {                                        \
138         bool returnValue = (exec);              \
139         if (!returnValue) {                     \
140             EFFECT_LOGE("FALSE_RETURN " #exec); \
141             return ret;                         \
142         }                                       \
143     } while (0)
144 #endif
145 
146 #ifndef FALSE_RETURN_MSG_E
147 #define FALSE_RETURN_MSG_E(exec, ret, fmt, args...) \
148     do {                                            \
149         bool returnValue = (exec);                  \
150         if (!returnValue) {                         \
151             EFFECT_LOGE(fmt, ##args);               \
152             return ret;                             \
153         }                                           \
154     } while (0)
155 #endif
156 
157 #ifndef FAIL_RETURN
158 #define FAIL_RETURN(exec)                                                                            \
159     do {                                                                                             \
160         ErrorCode returnValue = (exec);                                                              \
161         if (returnValue != ErrorCode::SUCCESS) {                                                     \
162             EFFECT_LOGE("FAIL_RETURN on ErrorCode(%{public}s).", GetErrorName(returnValue).c_str()); \
163             return returnValue;                                                                      \
164         }                                                                                            \
165     } while (0)
166 #endif
167 } // namespace Effect
168 } // namespace Media
169 } // namespace OHOS
170 #endif // IMAGE_EFFECT_ERROR_CODE_H
171