equal
deleted
inserted
replaced
158 } |
158 } |
159 |
159 |
160 /* Check if stride == width |
160 /* Check if stride == width |
161 * If it is then image can be treated as a 1-D vector |
161 * If it is then image can be treated as a 1-D vector |
162 */ |
162 */ |
|
163 |
|
164 if (!SAFE_TO_MULT(width, channels)) { |
|
165 return NULL; |
|
166 } |
|
167 |
|
168 wb = width * channels; |
|
169 |
163 switch (type) { |
170 switch (type) { |
164 case MLIB_DOUBLE: |
171 case MLIB_DOUBLE: |
165 wb = width * channels * 8; |
172 if (!SAFE_TO_MULT(wb, 8)) { |
|
173 return NULL; |
|
174 } |
|
175 wb *= 8; |
166 mask = 7; |
176 mask = 7; |
167 break; |
177 break; |
168 case MLIB_FLOAT: |
178 case MLIB_FLOAT: |
169 case MLIB_INT: |
179 case MLIB_INT: |
170 wb = width * channels * 4; |
180 if (!SAFE_TO_MULT(wb, 4)) { |
|
181 return NULL; |
|
182 } |
|
183 wb *= 4; |
171 mask = 3; |
184 mask = 3; |
172 break; |
185 break; |
173 case MLIB_USHORT: |
186 case MLIB_USHORT: |
174 case MLIB_SHORT: |
187 case MLIB_SHORT: |
175 wb = width * channels * 2; |
188 if (!SAFE_TO_MULT(wb, 2)) { |
|
189 return NULL; |
|
190 } |
|
191 wb *= 2; |
176 mask = 1; |
192 mask = 1; |
177 break; |
193 break; |
178 case MLIB_BYTE: |
194 case MLIB_BYTE: |
179 wb = width * channels; |
195 // wb is ready |
180 mask = 0; |
196 mask = 0; |
181 break; |
197 break; |
182 case MLIB_BIT: |
198 case MLIB_BIT: |
183 wb = (width * channels + 7) / 8; |
199 if (!SAFE_TO_ADD(7, wb)) { |
|
200 return NULL; |
|
201 } |
|
202 wb = (wb + 7) / 8; |
184 mask = 0; |
203 mask = 0; |
185 break; |
204 break; |
186 default: |
205 default: |
187 return NULL; |
206 return NULL; |
188 } |
207 } |
268 } |
287 } |
269 wb *= 4; |
288 wb *= 4; |
270 break; |
289 break; |
271 case MLIB_USHORT: |
290 case MLIB_USHORT: |
272 case MLIB_SHORT: |
291 case MLIB_SHORT: |
273 if (!SAFE_TO_MULT(wb, 4)) { |
292 if (!SAFE_TO_MULT(wb, 2)) { |
274 return NULL; |
293 return NULL; |
275 } |
294 } |
276 wb *= 2; |
295 wb *= 2; |
277 break; |
296 break; |
278 case MLIB_BYTE: |
297 case MLIB_BYTE: |