Edit online

接口设计

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

接口功能:
  1. 获取图层个数

  2. 获取图层能力

  3. 获取图层配置数据

  4. 更新图层配置数据

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

  6. 支持图层 scaler 设置

  7. 支持 alpha blending 设置

  8. 支持 color key

  9. 支持 disp prop 色彩设置

mpp 接口

struct mpp_fb;

struct mpp_fb *mpp_fb_open(void);

void mpp_fb_close(struct mpp_fb *fb);

int mpp_fb_probe(void);

int ioctl(struct mpp_fb *fb, int cmd, void *args);
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 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 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 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 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 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:失败

注意事项 调用接口前要先填写结构体中的 id,如果是多矩形窗口要同时填写 rect_win_id
9. AICFB_UPDATE_LAYER_CONFIG
接口定义 int 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:失败

注意事项

如果是仅更新图层的部分 data 信息,

可以先调用接口 CONFIG,获取当前图层信息,

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

10. AICFB_UPDATE_LAYER_CONFIG_LISTS
接口定义 int 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 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 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 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 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_SCREENINFO
接口定义 int 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:失败
注意事项
16. AICFB_POWERON
接口定义 int ioctl(int fd, unsigned long cmd, unsigned int zero);
功能说明 enable LCD 外设
参数定义 CMD: AICFB_POWERON zero: NULL
返回值 0:成功 -1:失败
注意事项 多次调用只会 enable 一次
17. AICFB_POWEROFF
接口定义 int ioctl(int fd, unsigned long cmd, unsigned int zero);
功能说明 disable LCD 外设
参数定义 CMD: AICFB_POWEROFF

zero: NULL

返回值 0:成功;-1:失败
注意事项