MI IQSERVER API
1. 概述¶
1.1. 模块说明¶
IQSERVER(Image Quality tuning Server)图像质量调校服务,用来完成调校工具(IQTool)和开发板之间的数据通信,包括ISP参数设置,获取图像,上传/下载相关文件等功能。
1.2. 流程框图¶
图1-1
1.3. 关键字说明¶
-
ISP
Image Signal Processing 图像信号处理单元,负责图像降噪/颜色渲染/亮度调整等功能。
-
SCL
Scale(缩放)。
-
VENC
Video Encoder 视频编码器,负责将YUV序列编码成H264/H265/Jpeg等格式的视频流。
2. API 参考¶
2.1. 功能模块API¶
该功能模块提供以下 API:
API名 | 功能 |
---|---|
MI_IQSERVER_Open | 启动IQ server |
MI_IQSERVER_Close | 关闭IQ server |
MI_IQSERVER_SetDataPath | 设置IQ server数据存储路径 |
MI_IQSERVER_SetCustFunc | 设置IQ server的可执行自定义函数 |
2.2. MI_IQSERVER_Open¶
-
功能
调用此接口启动IQ server。
-
语法
MI_S32 MI_IQSERVER_Open();
-
返回值
-
MI_IQSERVER_OK, 启动IQ server成功。
-
其它, 启动失败,详情参照错误码。
-
-
依赖
-
头文件:mi_iqserver.h
-
库文件:libmi_iqserver.a
-
-
注意
IQ server目前只能创建一个。创建之后,即可以用IQ Tool连接调试。
-
举例
/*declaration*/ MI_S32 s32Ret = 0; /* open IQSERVER*/ s32Ret = MI_IQSERVER_Open(); if (MI_IQSERVER_OK != s32Ret) { Printf(“open iqserver error:%x\n”, s32Ret); return s32Ret; }
-
相关主题
2.3. MI_IQSERVER_Close¶
-
功能
调用此接口关闭IQ server。
-
语法
MI_ S32 MI_IQSERVER_Close();
-
返回值
-
MI_IQSERVER_OK,成功关闭IQ server。
-
其它, 关闭IQ server失败,详情参照错误码。
-
-
依赖
-
头文件:mi_iqserver.h
-
库文件:libmi_iqserver.a
-
-
注意
调用MI_IQSERVER_Open 与 MI_IQSERVER_Close 需要对应。
-
举例
/*declaration*/ MI_S32 s32Ret = 0; /* close IQSERVER*/ s32Ret = MI_IQSERVER_Close(); if (MI_IQSERVER_OK != s32Ret) { Printf(“close iqserver error:%x\n”, s32Ret); return s32Ret; }
-
相关主题
2.4. MI_IQSERVER_SetDataPath¶
-
功能
设置IQ server的数据存储路径。
-
语法
MI_S32 MI_IQSERVER_SetDataPath(char* path);
-
形参
参数名称 描述 输入/输出 path 路径字符串指针,末尾是\0。 输入 -
返回值
MI_IQSERVER_OK,成功。
返回值
其它, 设置失败,详情参照错误码。
-
依赖
-
头文件:mi_iqserver.h
-
库文件:libmi_iqserver.a
-
-
注意
-
可以在MI_IQSERVER_Open 之前调用。
-
调用前,请确认路径是否可访问,路径内是否有IQ server需要的数据资料。
-
IQ server通常需要读取的资料有:isp_api.xml(用于IQ Tool使用)。
-
-
举例
/*declaration*/ MI_S32 s32Ret = 0; char *data_path = “/customer/iqconfig/”; /* set IQSERVER data path*/ s32Ret = MI_IQSERVER_SetDataPath(data_path); if (MI_IQSERVER_OK != s32Ret) { Printf(“set iqserver data path error:%x\n”, s32Ret); return s32Ret; }
-
相关主题
无。
2.5. MI_IQSERVER_SetCustFunc¶
-
功能
设置IQ server的可执行的自定义函数,满足用户通过IQ Server调用自定义接口函数的目的。
-
语法
MI_S32 MI_IQSERVER_SetCustFunc(MI_S32(* func)(MI_U16 data_type, MI_U32 length, MI_U8 * data));
-
形参
参数名称 描述 输入/输出 func 用户自定义的函数指针 输入 -
返回值
MI_IQSERVER_OK,成功。
返回值
其它, 设置失败,详情参照错误码。
-
依赖
-
头文件:mi_iqserver.h
-
库文件:libmi_iqserver.a
-
-
注意
-
使用前,需要用户先实现自定义的func函数。函数参数如下:
-
datatype: 表示data的类型,用户自定义,用来区分不同的data。
-
length: 表示data的长度,IQ Tool会识别并自动填入该值。
-
data: 表示data地址。
在func内部可根据上述参数,做相关处理。
-
-
可以添加用户自定义的函数功能实现, IQ server内部获取IQ Tool传入的数据,再调用用户传进来的函数func,这样在func里面就可以获取到IQ Tool的数据,实现客制化的功能。
比如下面两项自定义功能:
-
通过IQ Tool传入固件,在func里面获取固件,然后烧写flash。
-
通过IQ Tool传入IR开关选项,在func里面切换IR。
-
-
调用前,请确认函数指针func是否可执行。
-
Data_type和data数据通过IQ tool传入,length表示data的长度。
-
Data_type可以用来区分data的类型,这样func可以针对不同的类型实现不同的功能。
-
-
举例
/*declaration*/ MI_S32 s32Ret = 0; MI_S32 sample_func(MI_U16 data_type, MI_U32 length, MI_U8 *data) { printf("call MI_IQSERVER_SetCustFunc() success\n"); printf(“data_type is %d, length:%u, data addr:%p\n”, data_type, length, data); //do something return MI_IQSERVER_OK; } /* set IQSERVER custom function*/ s32Ret = MI_IQSERVER_SetCustFunc(sample_func); if (MI_IQSERVER_OK != s32Ret) { Printf(“set iqserver cust func error:%x\n”, s32Ret); return s32Ret; }
-
相关主题
无。
3. 错误码¶
IQSERVER API 错误码如下所示。
错误代码 | 宏定义 | 描述 |
---|---|---|
0x0 | MI_IQSERVER_OK | 成功 |
0x1 | MI_ERR_IQSERVER_FAIL | 失败 |
0x2 | MI_ERR_IQSERVER_NULL_PTR | 空指针异常 |
0x3 | MI_ERR_IQSERVER_NO_BUFF | Buff不够 |