Edit online

接口设计

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:失败

注意事项