24 #include <core/exceptions/software.h>
25 #include <fvfilters/filter.h>
32 namespace firevision {
51 Filter::Filter(
const char *name,
unsigned int max_num_buffers)
53 if (max_num_buffers == 0) {
58 _max_num_buffers = max_num_buffers;
60 src = (
unsigned char **)malloc(_max_num_buffers *
sizeof(
unsigned char *));
61 memset(src, 0, _max_num_buffers *
sizeof(
unsigned char *));
63 src_roi = (
ROI **)malloc(_max_num_buffers *
sizeof(
ROI *));
64 memset(src_roi, 0, _max_num_buffers *
sizeof(
ROI *));
66 ori = (orientation_t *)malloc(_max_num_buffers *
sizeof(orientation_t));
67 memset(ori, 0, _max_num_buffers *
sizeof(orientation_t));
89 Filter::set_src_buffer(
unsigned char *buf,
ROI *roi, orientation_t ori,
unsigned int buffer_num)
91 if (buffer_num >= _max_num_buffers) {
95 src[buffer_num] = buf;
96 src_roi[buffer_num] = roi;
97 this->ori[buffer_num] = ori;
107 Filter::set_src_buffer(
unsigned char *buf,
ROI *roi,
unsigned int buffer_num)
109 if (buffer_num >= _max_num_buffers) {
113 src[buffer_num] = buf;
114 src_roi[buffer_num] = roi;
115 ori[buffer_num] = ORI_HORIZONTAL;
123 Filter::set_dst_buffer(
unsigned char *buf,
ROI *roi)
135 Filter::set_orientation(orientation_t ori,
unsigned int buffer_num)
137 if (buffer_num >= _max_num_buffers) {
141 this->ori[buffer_num] = ORI_HORIZONTAL;
158 Filter::shrink_region(
ROI *r,
unsigned int n)
160 if (r->
start.
x < (n / 2)) {
163 if (r->
start.
y < (n / 2)) {