接口设计
28 Nov 2024
Read time: 6 minute(s)
Luban-Lite SDK 通过 MPP 中间件,对外提供一套统一的接口来控制显示驱动,屏蔽操作系统内核和裸机方案的差异。
以下是 Luban-Lite SDK 的主要功能和接口说明:
-
获取图层个数
-
获取图层能力
-
获取图层配置数据
-
更新图层配置数据
-
支持同时更新多图层配置数据
-
支持图层 scaler 设置
-
支持 alpha blending 设置
-
支持 color key 设置
-
支持 disp prop 色彩设置
-
支持 CCM 色彩矩阵设置
-
支持 Gamma 设置
MPP 接口
函数原型 | struct mpp_fb *mpp_fb_open(void); |
---|---|
功能说明 | 获取一个 mpp_fb 句柄 |
参数定义 | void |
返回值 |
非空:成功 NULL:失败 |
注意事项 | 无 |
函数原型 | void mpp_fb_close(struct mpp_fb *fb); |
---|---|
功能说明 | 释放 mpp_fb 句柄 |
参数定义 | fb: mpp_fb 句柄 |
返回值 | void |
注意事项 | 无 |
函数原型 | int mpp_fb_probe(void); |
---|---|
功能说明 | probe fb |
参数定义 | void |
返回值 |
0:成功 <0:失败 |
注意事项 | 多次调用也只会 probe 一次,需要在 mpp_fb_open() 操作前调用 |
函数原型 | int mpp_fb_ioctl(struct mpp_fb *fb, int cmd, void *args); |
---|---|
功能说明 | ioctl 调用,控制显示驱动 |
参数定义 |
fb: MPP FB 文件句柄 CMD: 操作命名 args: ioctl 调用私有数据 |
返回值 |
0:成功 <0:失败 |
注意事项 | 无 |
ioctl CMD
函数原型 | int mpp_fb_ioctl(int fd, unsigned long cmd, unsigned int *pvalue); |
---|---|
功能说明 | 等待 Vsync 信号 |
参数定义 | CMD: AICFB_WAIT_FOR_VSYNC pvalue:该值无意义,可为 NULL |
返回值 | 0:成功 -1:失败 |
注意事项 | 无 |
函数原型 | int mpp_fb_ioctl(int fd, unsigned long cmd, struct aicfb_layer_num *pvalue); |
---|---|
功能说明 | 获取显示图层的个数, 包括 UI 图层个数和 Video 图层 |
参数定义 | CMD: AICFB_GET_LAYER_NUM player_num: 参考结构体struct aicfb_layer_num 定义 |
返回值 | 0:成功 -1:失败 |
注意事项 | 无 |
函数原型 | int mpp_fb_ioctl(int fd, unsigned long cmd, struct aicfb_layer_capability *player_cap); |
---|---|
功能说明 | 获取当前图层的能力 |
参数定义 | CMD: AICFB_GET_LAYER_CAPABILITY player_cap: 参考结构体 struct aicfb_layer_capability 定义 |
返回值 | 0:成功 -1:失败 |
注意事项 | 调用接口前要先填写结构体中的 layer_id |
函数原型 | int mpp_fb_ioctl(int fd, unsigned long cmd, struct aicfb_layer_data *player_conf); |
---|---|
功能说明 | 获取图层配置信息 |
参数定义 | CMD: AICFB_GET_LAYER_CONFIG player_conf: 参考结构体 struct aicfb_layer_data 定义 |
返回值 | 0:成功 -1:失败 |
注意事项 | 调用接口前要先填写结构体中的 layer_id,如果是多矩形窗口要同时填写 rect_win_id |
函数原型 | int mpp_fb_ioctl(int fd, unsigned long cmd, struct aicfb_layer_data *player_conf) |
---|---|
功能说明 | 更新图层配置信息 |
参数定义 | CMD: AICFB_UPDATE_LAYER_CONFIG player_ocnf:参考结构体 struct aicfb_layer_data 定义 |
返回值 | 0: 成功 -1:失败 |
注意事项 |
如果是仅更新图层的部分 config data 信息, 可以先调用接口 AICFB_GET_LAYER_CONFIG,获取当前图层信息, 然后再修改要更新的图像信息,最后再调用此接口更新图层信息 |
函数原型 | int mpp_fb_ioctl(int fd, unsigned long cmd, struct aicfb_config_lists *player_lists); |
---|---|
功能说明 | 更新图层配置数据列表 |
参数定义 | CMD: AICFB_UPDATE_LAYER_CONFIG_LISTS aicfb_config_lists player_lists: 参考结构体 struct aicfb_config_lists 定义 |
返回值 | 0:成功 -1:失败 |
注意事项 |
通过此接口可以同时更新多个图层或者多个窗口的配置信息 通过此接口调用的好处是相关图层配置的更新可以同时生效 |
函数原型 | int mpp_fb_ioctl(int fd, unsigned long cmd, struct aicfb_alpha_config *alpha); |
---|---|
功能说明 | 获取当前图层的 Alpha 配置 |
参数定义 | CMD: AICFB_GET_ALPHA_CONFIG alpha: 参结考构体 struct aicfb_alpha_config 定义 |
返回值 | 0:成功 -1:失败 |
注意事项 | 无 |
函数原型 | int mpp_fb_ioctl(int fd, unsigned long cmd, struct aicfb_alpha_config *alpha); |
---|---|
功能说明 | 更新当前图层的 Alpha 配置 |
参数定义 | CMD: AICFB_UPDATE_ALPHA_CONFIG alpha: 参结考构体 struct aicfb_alpha_config 定义 |
返回值 | 0:成功 -1:失败 |
注意事项 | 无 |
函数原型 | int mpp_fb_ioctl(int fd, unsigned long cmd, struct aicfb_ck_config *player_ck); |
---|---|
功能说明 | 获取当前图层的 CK 配置 |
参数定义 | CMD: AICFB_GET_CK_CONFIG player_ck: 参考结构体 >struct aicfb_ck_config 定义 |
返回值 | 0:成功 -1:当前图层不支持 color key |
注意事项 | 无 |
函数原型 | int mpp_fb_ioctl(int fd, unsigned long cmd, struct aicfb_ck_config *player_ck); |
---|---|
功能说明 | 更新当前图层的 CK 配置 |
参数定义 | CMD: AICFB_SET_CK_CONFIG player_ck: 参考结构体 struct aicfb_ck_config 定义 |
返回值 | 0: 成功 -1:当前图层不支持 color key |
注意事项 | 无 |
函数原型 | int mpp_fb_ioctl(int fd, unsigned long cmd, struct aicfb_ccm_config *ccm); |
---|---|
功能说明 | 获取 DE 当前的 CCM 色彩矩阵配置 |
参数定义 | CMD: AICFB_GET_CCM_CONFIG ccm: 参考结构体 struct aicfb_ccm_config 定义 |
返回值 | 0: 成功 -1:失败 |
注意事项 | 支持 D13x/D12x 系列 |
函数原型 | int mpp_fb_ioctl(int fd, unsigned long cmd, struct aicfb_ccm_config *ccm); |
---|---|
功能说明 | 更新 DE 的 CCM 色彩矩阵配置 |
参数定义 | CMD: AICFB_UPDATE_CCM_CONFIG ccm: 参考结构体 >struct aicfb_ccm_config 定义 |
返回值 | 0: 成功 -1:失败 |
注意事项 | 支持 D13x/D12x 系列 |
函数原型 | int mpp_fb_ioctl(int fd, unsigned long cmd, struct aicfb_gamma_config *gamma); |
---|---|
功能说明 | 获取 DE 当前的 Gamma 配置 |
参数定义 | CMD: AICFB_GET_GAMMA_CONFIG gamma: 参考结构体 struct aicfb_gamma_config 定义 |
返回值 | 0: 成功 -1:失败 |
注意事项 | 支持 D13x/D12x 系列 |
函数原型 | int mpp_fb_ioctl(int fd, unsigned long cmd, struct aicfb_gamma_config *gamma); |
---|---|
功能说明 | 更新 DE 的 Gamma 配置 |
参数定义 | CMD: AICFB_UPDATE_GAMMA_CONFIG gamma: 参考结构体 struct aicfb_gamma_config 定义 |
返回值 | 0: 成功 -1:失败 |
注意事项 | 支持 D13x/D12x 系列 |
函数原型 | int mpp_fb_ioctl(int fd, unsigned long cmd, struct aicfb_screeninfo *pscreen_size); |
---|---|
功能说明 | 获取当前 LCD 外设 和 framebuffer 信息 |
参数定义 | CMD: AICFB_GET_SCREEN_SIZE pscreen_size: 结构体 struct aicfb_screeninfo |
返回值 | 0:成功 -1:失败 |
注意事项 | 无 |
函数原型 | int mpp_fb_ioctl(int fd, unsigned long cmd, unsigned int zero); |
---|---|
功能说明 | enable LCD 外设 |
参数定义 | CMD: AICFB_POWERON zero: NULL |
返回值 | 0:成功 -1:失败 |
注意事项 | 多次调用只会 enable 一次 |
函数原型 | int mpp_fb_ioctl(int fd, unsigned long cmd, unsigned int zero); |
---|---|
功能说明 | disable LCD 外设 |
参数定义 | CMD: AICFB_POWEROFF zero: NULL |
返回值 | 0:成功 -1:失败 |
注意事项 | 无 |