| 147 | } |
| 148 | |
| 149 | af_err af_minfilt(af_array *out, const af_array in, const dim_t wind_length, |
| 150 | const dim_t wind_width, const af_border_type edge_pad) { |
| 151 | try { |
| 152 | ARG_ASSERT(2, (wind_length == wind_width)); |
| 153 | ARG_ASSERT(2, (wind_length > 0)); |
| 154 | ARG_ASSERT(3, (wind_width > 0)); |
| 155 | ARG_ASSERT(4, (edge_pad == AF_PAD_ZERO)); |
| 156 | |
| 157 | const ArrayInfo &info = getInfo(in); |
| 158 | af::dim4 dims = info.dims(); |
| 159 | |
| 160 | dim_t input_ndims = dims.ndims(); |
| 161 | DIM_ASSERT(1, (input_ndims >= 2)); |
| 162 | |
| 163 | af_array mask; |
| 164 | dim_t wdims[] = {wind_length, wind_width}; |
| 165 | AF_CHECK(af_constant(&mask, 1, 2, wdims, info.getType())); |
| 166 | |
| 167 | AF_CHECK(af_erode(out, in, mask)); |
| 168 | |
| 169 | AF_CHECK(af_release_array(mask)); |
| 170 | } |
| 171 | CATCHALL; |
| 172 | |
| 173 | return AF_SUCCESS; |
| 174 | } |
| 175 | |
| 176 | af_err af_maxfilt(af_array *out, const af_array in, const dim_t wind_length, |
| 177 | const dim_t wind_width, const af_border_type edge_pad) { |
no test coverage detected