Edit online

接口设计

28 Nov 2024
Read time: 6 minute(s)

Luban-Lite SDK 通过 MPP 中间件,对外提供一套统一的接口来控制显示驱动,屏蔽操作系统内核和裸机方案的差异。

以下是 Luban-Lite SDK 的主要功能和接口说明:
  1. 获取图层个数

  2. 获取图层能力

  3. 获取图层配置数据

  4. 更新图层配置数据

  5. 支持同时更新多图层配置数据

  6. 支持图层 scaler 设置

  7. 支持 alpha blending 设置

  8. 支持 color key 设置

  9. 支持 disp prop 色彩设置

  10. 支持 CCM 色彩矩阵设置

  11. 支持 Gamma 设置

MPP 接口

1. mpp_fb_open
函数原型 struct mpp_fb *mpp_fb_open(void);
功能说明 获取一个 mpp_fb 句柄
参数定义 void
返回值

非空:成功

NULL:失败

注意事项
2. mpp_fb_close
函数原型 void mpp_fb_close(struct mpp_fb *fb);
功能说明 释放 mpp_fb 句柄
参数定义 fb: mpp_fb 句柄
返回值 void
注意事项
3. mpp_fb_probe
函数原型 int mpp_fb_probe(void);
功能说明 probe fb
参数定义 void
返回值

0:成功

<0:失败

注意事项 多次调用也只会 probe 一次,需要在 mpp_fb_open() 操作前调用
4. mpp_fb_ioctl
函数原型 int mpp_fb_ioctl(struct mpp_fb *fb, int cmd, void *args);
功能说明 ioctl 调用,控制显示驱动
参数定义

fb: MPP FB 文件句柄

CMD: 操作命名

args: ioctl 调用私有数据

返回值

0:成功

<0:失败

注意事项

ioctl CMD

5. AICFB_WAIT_FOR_VSYNC
函数原型 int mpp_fb_ioctl(int fd, unsigned long cmd, unsigned int *pvalue);
功能说明 等待 Vsync 信号
参数定义 CMD: AICFB_WAIT_FOR_VSYNC pvalue:该值无意义,可为 NULL
返回值 0:成功 -1:失败
注意事项
6. AICFB_GET_LAYER_NUM
函数原型 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:失败
注意事项
7. AICFB_GET_LAYER_CAPABILITY
函数原型 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
8. AICFB_GET_LAYER_CONFIG
函数原型 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
9. AICFB_UPDATE_LAYER_CONFIG
函数原型 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,获取当前图层信息,

然后再修改要更新的图像信息,最后再调用此接口更新图层信息

10. AICFB_UPDATE_LAYER_CONFIG_LISTS
函数原型 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:失败
注意事项

通过此接口可以同时更新多个图层或者多个窗口的配置信息

通过此接口调用的好处是相关图层配置的更新可以同时生效

11. AICFB_GET_ALPHA_CONFIG
函数原型 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:失败
注意事项
12. AICFB_UPDATE_ALPHA_CONFIG
函数原型 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:失败
注意事项
13. AICFB_GET_CK_CONFIG
函数原型 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
注意事项
14. AICFB_UPDATE_CK_CONFIG
函数原型 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
注意事项
15. AICFB_GET_CCM_CONFIG
函数原型 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 系列
16. AICFB_UPDATE_CCM_CONFIG
函数原型 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 系列
17. AICFB_GET_GAMMA_CONFIG
函数原型 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 系列
18. AICFB_UPDATE_GAMMA_CONFIG
函数原型 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 系列
19. AICFB_GET_SCREENINFO
函数原型 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:失败
注意事项
20. AICFB_POWERON
函数原型 int mpp_fb_ioctl(int fd, unsigned long cmd, unsigned int zero);
功能说明 enable LCD 外设
参数定义 CMD: AICFB_POWERON zero: NULL
返回值 0:成功 -1:失败
注意事项 多次调用只会 enable 一次
21. AICFB_POWEROFF
函数原型 int mpp_fb_ioctl(int fd, unsigned long cmd, unsigned int zero);
功能说明 disable LCD 外设
参数定义 CMD: AICFB_POWEROFF zero: NULL
返回值 0:成功

-1:失败

注意事项