我正在尝试实现图像处理功能。这里是:
typedef void (*AgFilter)(int*, int*, int*, float*);
static void filter(AndroidBitmapInfo* info, void* pixels, AgFilter func, void* params){
for(y = 0; y < height; y++){
for(x = 0; x < width; x++){
//initizalie r, g, b
func(&r, &g, &b, params); //here is the problem
}
}
}
我将这个函数传递为func
:
static inline void brightness(int *r, int *g, int *b, float* param){
float add = param[0];
*r += add;
*g += add;
*b += add;
}
问题是它的工作速度非常慢。嗯,我可以理解。但是,如果不是通过引用传递函数,而是直接在filter
(func
调用的入口)内编写函数,它的工作速度会快得多。哪里有问题?
PS注意不是c++
编辑
这个工作很快:
static void filter(AndroidBitmapInfo* info, void* pixels, int add){
for(y = 0; y < height; y++){
for(x = 0; x < width; x++){
//initizalie r, g, b
r += add;
g += add;
b += add;
}
}
}