Skip to main content

singe_npp/image/
filtering_basic.rs

1use super::*;
2
3impl_filter_box!(filter_box_u8_c1, u8, C1, nppiFilterBox_8u_C1R_Ctx);
4impl_filter_box!(filter_box_u8_c3, u8, C3, nppiFilterBox_8u_C3R_Ctx);
5impl_filter_box!(filter_box_u8_c4, u8, C4, nppiFilterBox_8u_C4R_Ctx);
6impl_filter_box!(filter_box_u8_ac4, u8, AC4, nppiFilterBox_8u_AC4R_Ctx);
7impl_filter_box!(filter_box_u16_c1, u16, C1, nppiFilterBox_16u_C1R_Ctx);
8impl_filter_box!(filter_box_u16_c3, u16, C3, nppiFilterBox_16u_C3R_Ctx);
9impl_filter_box!(filter_box_u16_c4, u16, C4, nppiFilterBox_16u_C4R_Ctx);
10impl_filter_box!(filter_box_u16_ac4, u16, AC4, nppiFilterBox_16u_AC4R_Ctx);
11impl_filter_box!(filter_box_i16_c1, i16, C1, nppiFilterBox_16s_C1R_Ctx);
12impl_filter_box!(filter_box_i16_c3, i16, C3, nppiFilterBox_16s_C3R_Ctx);
13impl_filter_box!(filter_box_i16_c4, i16, C4, nppiFilterBox_16s_C4R_Ctx);
14impl_filter_box!(filter_box_i16_ac4, i16, AC4, nppiFilterBox_16s_AC4R_Ctx);
15impl_filter_box!(filter_box_f32_c1, f32, C1, nppiFilterBox_32f_C1R_Ctx);
16impl_filter_box!(filter_box_f32_c3, f32, C3, nppiFilterBox_32f_C3R_Ctx);
17impl_filter_box!(filter_box_f32_c4, f32, C4, nppiFilterBox_32f_C4R_Ctx);
18impl_filter_box!(filter_box_f32_ac4, f32, AC4, nppiFilterBox_32f_AC4R_Ctx);
19impl_filter_box!(filter_box_f64_c1, f64, C1, nppiFilterBox_64f_C1R_Ctx);
20
21impl_filter_box_border!(
22    filter_box_border_u8_c1,
23    u8,
24    C1,
25    nppiFilterBoxBorder_8u_C1R_Ctx
26);
27impl_filter_box_border!(
28    filter_box_border_u8_c3,
29    u8,
30    C3,
31    nppiFilterBoxBorder_8u_C3R_Ctx
32);
33impl_filter_box_border!(
34    filter_box_border_u8_c4,
35    u8,
36    C4,
37    nppiFilterBoxBorder_8u_C4R_Ctx
38);
39impl_filter_box_border!(
40    filter_box_border_u8_ac4,
41    u8,
42    AC4,
43    nppiFilterBoxBorder_8u_AC4R_Ctx
44);
45impl_filter_box_border!(
46    filter_box_border_u16_c1,
47    u16,
48    C1,
49    nppiFilterBoxBorder_16u_C1R_Ctx
50);
51impl_filter_box_border!(
52    filter_box_border_u16_c3,
53    u16,
54    C3,
55    nppiFilterBoxBorder_16u_C3R_Ctx
56);
57impl_filter_box_border!(
58    filter_box_border_u16_c4,
59    u16,
60    C4,
61    nppiFilterBoxBorder_16u_C4R_Ctx
62);
63impl_filter_box_border!(
64    filter_box_border_u16_ac4,
65    u16,
66    AC4,
67    nppiFilterBoxBorder_16u_AC4R_Ctx
68);
69impl_filter_box_border!(
70    filter_box_border_i16_c1,
71    i16,
72    C1,
73    nppiFilterBoxBorder_16s_C1R_Ctx
74);
75impl_filter_box_border!(
76    filter_box_border_i16_c3,
77    i16,
78    C3,
79    nppiFilterBoxBorder_16s_C3R_Ctx
80);
81impl_filter_box_border!(
82    filter_box_border_i16_c4,
83    i16,
84    C4,
85    nppiFilterBoxBorder_16s_C4R_Ctx
86);
87impl_filter_box_border!(
88    filter_box_border_i16_ac4,
89    i16,
90    AC4,
91    nppiFilterBoxBorder_16s_AC4R_Ctx
92);
93impl_filter_box_border!(
94    filter_box_border_f32_c1,
95    f32,
96    C1,
97    nppiFilterBoxBorder_32f_C1R_Ctx
98);
99impl_filter_box_border!(
100    filter_box_border_f32_c3,
101    f32,
102    C3,
103    nppiFilterBoxBorder_32f_C3R_Ctx
104);
105impl_filter_box_border!(
106    filter_box_border_f32_c4,
107    f32,
108    C4,
109    nppiFilterBoxBorder_32f_C4R_Ctx
110);
111impl_filter_box_border!(
112    filter_box_border_f32_ac4,
113    f32,
114    AC4,
115    nppiFilterBoxBorder_32f_AC4R_Ctx
116);
117impl_filter_box_border_advanced!(
118    filter_box_border_advanced_u8_c1_buffer_size,
119    filter_box_border_advanced_u8_c1,
120    u8,
121    C1,
122    nppiFilterBoxBorderAdvanced_8u_C1R_Ctx,
123    nppiFilterBoxBorderAdvancedGetDeviceBufferSize,
124    1
125);
126impl_filter_box_border_advanced!(
127    filter_box_border_advanced_u8_c3_buffer_size,
128    filter_box_border_advanced_u8_c3,
129    u8,
130    C3,
131    nppiFilterBoxBorderAdvanced_8u_C3R_Ctx,
132    nppiFilterBoxBorderAdvancedGetDeviceBufferSize,
133    3
134);
135impl_filter_box_border_advanced!(
136    filter_box_border_advanced_u8_c4_buffer_size,
137    filter_box_border_advanced_u8_c4,
138    u8,
139    C4,
140    nppiFilterBoxBorderAdvanced_8u_C4R_Ctx,
141    nppiFilterBoxBorderAdvancedGetDeviceBufferSize,
142    4
143);
144impl_filter_box_border_advanced!(
145    filter_box_border_advanced_u16_c1_buffer_size,
146    filter_box_border_advanced_u16_c1,
147    u16,
148    C1,
149    nppiFilterBoxBorderAdvanced_16u_C1R_Ctx,
150    nppiFilterBoxBorderAdvancedGetDeviceBufferSize,
151    1
152);
153impl_filter_box_border_advanced!(
154    filter_box_border_advanced_u16_c3_buffer_size,
155    filter_box_border_advanced_u16_c3,
156    u16,
157    C3,
158    nppiFilterBoxBorderAdvanced_16u_C3R_Ctx,
159    nppiFilterBoxBorderAdvancedGetDeviceBufferSize,
160    3
161);
162impl_filter_box_border_advanced!(
163    filter_box_border_advanced_u16_c4_buffer_size,
164    filter_box_border_advanced_u16_c4,
165    u16,
166    C4,
167    nppiFilterBoxBorderAdvanced_16u_C4R_Ctx,
168    nppiFilterBoxBorderAdvancedGetDeviceBufferSize,
169    4
170);
171impl_filter_box_border_advanced!(
172    filter_box_border_advanced_i16_c1_buffer_size,
173    filter_box_border_advanced_i16_c1,
174    i16,
175    C1,
176    nppiFilterBoxBorderAdvanced_16s_C1R_Ctx,
177    nppiFilterBoxBorderAdvancedGetDeviceBufferSize,
178    1
179);
180impl_filter_box_border_advanced!(
181    filter_box_border_advanced_i16_c3_buffer_size,
182    filter_box_border_advanced_i16_c3,
183    i16,
184    C3,
185    nppiFilterBoxBorderAdvanced_16s_C3R_Ctx,
186    nppiFilterBoxBorderAdvancedGetDeviceBufferSize,
187    3
188);
189impl_filter_box_border_advanced!(
190    filter_box_border_advanced_i16_c4_buffer_size,
191    filter_box_border_advanced_i16_c4,
192    i16,
193    C4,
194    nppiFilterBoxBorderAdvanced_16s_C4R_Ctx,
195    nppiFilterBoxBorderAdvancedGetDeviceBufferSize,
196    4
197);
198impl_filter_box_border_advanced!(
199    filter_box_border_advanced_f32_c1_buffer_size,
200    filter_box_border_advanced_f32_c1,
201    f32,
202    C1,
203    nppiFilterBoxBorderAdvanced_32f_C1R_Ctx,
204    nppiFilterBoxBorderAdvancedGetDeviceBufferSize,
205    1
206);
207impl_filter_box_border_advanced!(
208    filter_box_border_advanced_f32_c3_buffer_size,
209    filter_box_border_advanced_f32_c3,
210    f32,
211    C3,
212    nppiFilterBoxBorderAdvanced_32f_C3R_Ctx,
213    nppiFilterBoxBorderAdvancedGetDeviceBufferSize,
214    3
215);
216impl_filter_box_border_advanced!(
217    filter_box_border_advanced_f32_c4_buffer_size,
218    filter_box_border_advanced_f32_c4,
219    f32,
220    C4,
221    nppiFilterBoxBorderAdvanced_32f_C4R_Ctx,
222    nppiFilterBoxBorderAdvancedGetDeviceBufferSize,
223    4
224);
225impl_filter_box_border_advanced!(
226    filter_box_border_advanced_f64_c1_buffer_size,
227    filter_box_border_advanced_f64_c1,
228    f64,
229    C1,
230    nppiFilterBoxBorderAdvanced_64f_C1R_Ctx,
231    nppiFilterBoxBorderAdvancedGetDeviceBufferSize_64,
232    1
233);
234
235impl_filter_neighborhood!(filter_max_u8_c1, u8, C1, nppiFilterMax_8u_C1R_Ctx);
236impl_filter_neighborhood!(filter_max_u8_c3, u8, C3, nppiFilterMax_8u_C3R_Ctx);
237impl_filter_neighborhood!(filter_max_u8_c4, u8, C4, nppiFilterMax_8u_C4R_Ctx);
238impl_filter_neighborhood!(filter_max_u8_ac4, u8, AC4, nppiFilterMax_8u_AC4R_Ctx);
239impl_filter_neighborhood!(filter_max_u16_c1, u16, C1, nppiFilterMax_16u_C1R_Ctx);
240impl_filter_neighborhood!(filter_max_u16_c3, u16, C3, nppiFilterMax_16u_C3R_Ctx);
241impl_filter_neighborhood!(filter_max_u16_c4, u16, C4, nppiFilterMax_16u_C4R_Ctx);
242impl_filter_neighborhood!(filter_max_u16_ac4, u16, AC4, nppiFilterMax_16u_AC4R_Ctx);
243impl_filter_neighborhood!(filter_max_i16_c1, i16, C1, nppiFilterMax_16s_C1R_Ctx);
244impl_filter_neighborhood!(filter_max_i16_c3, i16, C3, nppiFilterMax_16s_C3R_Ctx);
245impl_filter_neighborhood!(filter_max_i16_c4, i16, C4, nppiFilterMax_16s_C4R_Ctx);
246impl_filter_neighborhood!(filter_max_i16_ac4, i16, AC4, nppiFilterMax_16s_AC4R_Ctx);
247impl_filter_neighborhood!(filter_max_f32_c1, f32, C1, nppiFilterMax_32f_C1R_Ctx);
248impl_filter_neighborhood!(filter_max_f32_c3, f32, C3, nppiFilterMax_32f_C3R_Ctx);
249impl_filter_neighborhood!(filter_max_f32_c4, f32, C4, nppiFilterMax_32f_C4R_Ctx);
250impl_filter_neighborhood!(filter_max_f32_ac4, f32, AC4, nppiFilterMax_32f_AC4R_Ctx);
251
252impl_filter_neighborhood_border!(
253    filter_max_border_u8_c1,
254    u8,
255    C1,
256    nppiFilterMaxBorder_8u_C1R_Ctx
257);
258impl_filter_neighborhood_border!(
259    filter_max_border_u8_c3,
260    u8,
261    C3,
262    nppiFilterMaxBorder_8u_C3R_Ctx
263);
264impl_filter_neighborhood_border!(
265    filter_max_border_u8_c4,
266    u8,
267    C4,
268    nppiFilterMaxBorder_8u_C4R_Ctx
269);
270impl_filter_neighborhood_border!(
271    filter_max_border_u8_ac4,
272    u8,
273    AC4,
274    nppiFilterMaxBorder_8u_AC4R_Ctx
275);
276impl_filter_neighborhood_border!(
277    filter_max_border_u16_c1,
278    u16,
279    C1,
280    nppiFilterMaxBorder_16u_C1R_Ctx
281);
282impl_filter_neighborhood_border!(
283    filter_max_border_u16_c3,
284    u16,
285    C3,
286    nppiFilterMaxBorder_16u_C3R_Ctx
287);
288impl_filter_neighborhood_border!(
289    filter_max_border_u16_c4,
290    u16,
291    C4,
292    nppiFilterMaxBorder_16u_C4R_Ctx
293);
294impl_filter_neighborhood_border!(
295    filter_max_border_u16_ac4,
296    u16,
297    AC4,
298    nppiFilterMaxBorder_16u_AC4R_Ctx
299);
300impl_filter_neighborhood_border!(
301    filter_max_border_i16_c1,
302    i16,
303    C1,
304    nppiFilterMaxBorder_16s_C1R_Ctx
305);
306impl_filter_neighborhood_border!(
307    filter_max_border_i16_c3,
308    i16,
309    C3,
310    nppiFilterMaxBorder_16s_C3R_Ctx
311);
312impl_filter_neighborhood_border!(
313    filter_max_border_i16_c4,
314    i16,
315    C4,
316    nppiFilterMaxBorder_16s_C4R_Ctx
317);
318impl_filter_neighborhood_border!(
319    filter_max_border_i16_ac4,
320    i16,
321    AC4,
322    nppiFilterMaxBorder_16s_AC4R_Ctx
323);
324impl_filter_neighborhood_border!(
325    filter_max_border_f32_c1,
326    f32,
327    C1,
328    nppiFilterMaxBorder_32f_C1R_Ctx
329);
330impl_filter_neighborhood_border!(
331    filter_max_border_f32_c3,
332    f32,
333    C3,
334    nppiFilterMaxBorder_32f_C3R_Ctx
335);
336impl_filter_neighborhood_border!(
337    filter_max_border_f32_c4,
338    f32,
339    C4,
340    nppiFilterMaxBorder_32f_C4R_Ctx
341);
342impl_filter_neighborhood_border!(
343    filter_max_border_f32_ac4,
344    f32,
345    AC4,
346    nppiFilterMaxBorder_32f_AC4R_Ctx
347);
348
349impl_filter_neighborhood!(filter_min_u8_c1, u8, C1, nppiFilterMin_8u_C1R_Ctx);
350impl_filter_neighborhood!(filter_min_u8_c3, u8, C3, nppiFilterMin_8u_C3R_Ctx);
351impl_filter_neighborhood!(filter_min_u8_c4, u8, C4, nppiFilterMin_8u_C4R_Ctx);
352impl_filter_neighborhood!(filter_min_u8_ac4, u8, AC4, nppiFilterMin_8u_AC4R_Ctx);
353impl_filter_neighborhood!(filter_min_u16_c1, u16, C1, nppiFilterMin_16u_C1R_Ctx);
354impl_filter_neighborhood!(filter_min_u16_c3, u16, C3, nppiFilterMin_16u_C3R_Ctx);
355impl_filter_neighborhood!(filter_min_u16_c4, u16, C4, nppiFilterMin_16u_C4R_Ctx);
356impl_filter_neighborhood!(filter_min_u16_ac4, u16, AC4, nppiFilterMin_16u_AC4R_Ctx);
357impl_filter_neighborhood!(filter_min_i16_c1, i16, C1, nppiFilterMin_16s_C1R_Ctx);
358impl_filter_neighborhood!(filter_min_i16_c3, i16, C3, nppiFilterMin_16s_C3R_Ctx);
359impl_filter_neighborhood!(filter_min_i16_c4, i16, C4, nppiFilterMin_16s_C4R_Ctx);
360impl_filter_neighborhood!(filter_min_i16_ac4, i16, AC4, nppiFilterMin_16s_AC4R_Ctx);
361impl_filter_neighborhood!(filter_min_f32_c1, f32, C1, nppiFilterMin_32f_C1R_Ctx);
362impl_filter_neighborhood!(filter_min_f32_c3, f32, C3, nppiFilterMin_32f_C3R_Ctx);
363impl_filter_neighborhood!(filter_min_f32_c4, f32, C4, nppiFilterMin_32f_C4R_Ctx);
364impl_filter_neighborhood!(filter_min_f32_ac4, f32, AC4, nppiFilterMin_32f_AC4R_Ctx);
365
366impl_filter_neighborhood_border!(
367    filter_min_border_u8_c1,
368    u8,
369    C1,
370    nppiFilterMinBorder_8u_C1R_Ctx
371);
372impl_filter_neighborhood_border!(
373    filter_min_border_u8_c3,
374    u8,
375    C3,
376    nppiFilterMinBorder_8u_C3R_Ctx
377);
378impl_filter_neighborhood_border!(
379    filter_min_border_u8_c4,
380    u8,
381    C4,
382    nppiFilterMinBorder_8u_C4R_Ctx
383);
384impl_filter_neighborhood_border!(
385    filter_min_border_u8_ac4,
386    u8,
387    AC4,
388    nppiFilterMinBorder_8u_AC4R_Ctx
389);
390impl_filter_neighborhood_border!(
391    filter_min_border_u16_c1,
392    u16,
393    C1,
394    nppiFilterMinBorder_16u_C1R_Ctx
395);
396impl_filter_neighborhood_border!(
397    filter_min_border_u16_c3,
398    u16,
399    C3,
400    nppiFilterMinBorder_16u_C3R_Ctx
401);
402impl_filter_neighborhood_border!(
403    filter_min_border_u16_c4,
404    u16,
405    C4,
406    nppiFilterMinBorder_16u_C4R_Ctx
407);
408impl_filter_neighborhood_border!(
409    filter_min_border_u16_ac4,
410    u16,
411    AC4,
412    nppiFilterMinBorder_16u_AC4R_Ctx
413);
414impl_filter_neighborhood_border!(
415    filter_min_border_i16_c1,
416    i16,
417    C1,
418    nppiFilterMinBorder_16s_C1R_Ctx
419);
420impl_filter_neighborhood_border!(
421    filter_min_border_i16_c3,
422    i16,
423    C3,
424    nppiFilterMinBorder_16s_C3R_Ctx
425);
426impl_filter_neighborhood_border!(
427    filter_min_border_i16_c4,
428    i16,
429    C4,
430    nppiFilterMinBorder_16s_C4R_Ctx
431);
432impl_filter_neighborhood_border!(
433    filter_min_border_i16_ac4,
434    i16,
435    AC4,
436    nppiFilterMinBorder_16s_AC4R_Ctx
437);
438impl_filter_neighborhood_border!(
439    filter_min_border_f32_c1,
440    f32,
441    C1,
442    nppiFilterMinBorder_32f_C1R_Ctx
443);
444impl_filter_neighborhood_border!(
445    filter_min_border_f32_c3,
446    f32,
447    C3,
448    nppiFilterMinBorder_32f_C3R_Ctx
449);
450impl_filter_neighborhood_border!(
451    filter_min_border_f32_c4,
452    f32,
453    C4,
454    nppiFilterMinBorder_32f_C4R_Ctx
455);
456impl_filter_neighborhood_border!(
457    filter_min_border_f32_ac4,
458    f32,
459    AC4,
460    nppiFilterMinBorder_32f_AC4R_Ctx
461);
462
463impl_generic_filter_mask!(FilterBoxC1, filter_box, filter_box_c1, C1, [
464    u8 => filter_box_u8_c1,
465    u16 => filter_box_u16_c1,
466    i16 => filter_box_i16_c1,
467    f32 => filter_box_f32_c1,
468    f64 => filter_box_f64_c1,
469]);
470impl_generic_filter_mask!(FilterBoxC3, filter_box, filter_box_c3, C3, [
471    u8 => filter_box_u8_c3,
472    u16 => filter_box_u16_c3,
473    i16 => filter_box_i16_c3,
474    f32 => filter_box_f32_c3,
475]);
476impl_generic_filter_mask!(FilterBoxC4, filter_box, filter_box_c4, C4, [
477    u8 => filter_box_u8_c4,
478    u16 => filter_box_u16_c4,
479    i16 => filter_box_i16_c4,
480    f32 => filter_box_f32_c4,
481]);
482impl_generic_filter_mask!(FilterBoxAc4, filter_box, filter_box_ac4, AC4, [
483    u8 => filter_box_u8_ac4,
484    u16 => filter_box_u16_ac4,
485    i16 => filter_box_i16_ac4,
486    f32 => filter_box_f32_ac4,
487]);
488impl_generic_filter_mask_border!(
489    FilterBoxBorderC1,
490    filter_box_border,
491    filter_box_border_c1,
492    C1,
493    [
494        u8 => filter_box_border_u8_c1,
495        u16 => filter_box_border_u16_c1,
496        i16 => filter_box_border_i16_c1,
497        f32 => filter_box_border_f32_c1,
498    ]
499);
500impl_generic_filter_mask_border!(
501    FilterBoxBorderC3,
502    filter_box_border,
503    filter_box_border_c3,
504    C3,
505    [
506        u8 => filter_box_border_u8_c3,
507        u16 => filter_box_border_u16_c3,
508        i16 => filter_box_border_i16_c3,
509        f32 => filter_box_border_f32_c3,
510    ]
511);
512impl_generic_filter_mask_border!(
513    FilterBoxBorderC4,
514    filter_box_border,
515    filter_box_border_c4,
516    C4,
517    [
518        u8 => filter_box_border_u8_c4,
519        u16 => filter_box_border_u16_c4,
520        i16 => filter_box_border_i16_c4,
521        f32 => filter_box_border_f32_c4,
522    ]
523);
524impl_generic_filter_mask_border!(
525    FilterBoxBorderAc4,
526    filter_box_border,
527    filter_box_border_ac4,
528    AC4,
529    [
530        u8 => filter_box_border_u8_ac4,
531        u16 => filter_box_border_u16_ac4,
532        i16 => filter_box_border_i16_ac4,
533        f32 => filter_box_border_f32_ac4,
534    ]
535);
536impl_generic_filter_mask!(FilterMaxC1, filter_max, filter_max_c1, C1, [
537    u8 => filter_max_u8_c1,
538    u16 => filter_max_u16_c1,
539    i16 => filter_max_i16_c1,
540    f32 => filter_max_f32_c1,
541]);
542impl_generic_filter_mask!(FilterMaxC3, filter_max, filter_max_c3, C3, [
543    u8 => filter_max_u8_c3,
544    u16 => filter_max_u16_c3,
545    i16 => filter_max_i16_c3,
546    f32 => filter_max_f32_c3,
547]);
548impl_generic_filter_mask!(FilterMaxC4, filter_max, filter_max_c4, C4, [
549    u8 => filter_max_u8_c4,
550    u16 => filter_max_u16_c4,
551    i16 => filter_max_i16_c4,
552    f32 => filter_max_f32_c4,
553]);
554impl_generic_filter_mask!(FilterMaxAc4, filter_max, filter_max_ac4, AC4, [
555    u8 => filter_max_u8_ac4,
556    u16 => filter_max_u16_ac4,
557    i16 => filter_max_i16_ac4,
558    f32 => filter_max_f32_ac4,
559]);
560impl_generic_filter_mask!(FilterMinC1, filter_min, filter_min_c1, C1, [
561    u8 => filter_min_u8_c1,
562    u16 => filter_min_u16_c1,
563    i16 => filter_min_i16_c1,
564    f32 => filter_min_f32_c1,
565]);
566impl_generic_filter_mask!(FilterMinC3, filter_min, filter_min_c3, C3, [
567    u8 => filter_min_u8_c3,
568    u16 => filter_min_u16_c3,
569    i16 => filter_min_i16_c3,
570    f32 => filter_min_f32_c3,
571]);
572impl_generic_filter_mask!(FilterMinC4, filter_min, filter_min_c4, C4, [
573    u8 => filter_min_u8_c4,
574    u16 => filter_min_u16_c4,
575    i16 => filter_min_i16_c4,
576    f32 => filter_min_f32_c4,
577]);
578impl_generic_filter_mask!(FilterMinAc4, filter_min, filter_min_ac4, AC4, [
579    u8 => filter_min_u8_ac4,
580    u16 => filter_min_u16_ac4,
581    i16 => filter_min_i16_ac4,
582    f32 => filter_min_f32_ac4,
583]);