【发布时间】:2013-09-15 11:08:14
【问题描述】:
这是documentation中的代码:
int myEmboss(void *inData,
unsigned int inRowBytes,
void *outData,
unsigned int outRowBytes,
unsigned int height,
unsigned int width,
void *kernel,
unsigned int kernel_height,
unsigned int kernel_width,
int divisor ,
vImage_Flags flags ) {
uint_8 kernel = {-2, -2, 0, -2, 6, 0, 0, 0, 0}; // 1
vImage_Buffer src = { inData, height, width, inRowBytes }; // 2
vImage_Buffer dest = { outData, height, width, outRowBytes }; // 3
unsigned char bgColor[4] = { 0, 0, 0, 0 }; // 4
vImage_Error err; // 5
err = vImageConvolve_ARGB8888( &src, //const vImage_Buffer *src
&dest, //const vImage_Buffer *dest,
NULL,
0, //unsigned int srcOffsetToROI_X,
0, //unsigned int srcOffsetToROI_Y,
kernel, //const signed int *kernel,
kernel_height, //unsigned int
kernel_width, //unsigned int
divisor, //int
bgColor,
flags | kvImageBackgroundColorFill
//vImage_Flags flags
);
return err;
}
问题来了:内核变量似乎指的是三种不同的类型:
- 形参列表中的void * kernel
- 一个未定义的 unsigned int uint_8 内核,作为一个可能会影响形参的新变量
- 调用 vImageConvolve_ARGB8888 时为 const signed int *kernel。
这是实际代码吗?我该如何编译这个函数?
【问题讨论】:
标签: ios objective-c accelerate-framework vimage