DISP(显示输出)接口说明文档
| 文档版本 | V1.1 |
|---|---|
| 修订日期 | 2026-08-21 |
| 代码基线 | hi_aiot_solution 8.18 |
| 对应头文件 | components/media/pipeline/include/hi_mapi_disp.h |
| 类型定义 | components/media/pipeline/include/hi_mapi_disp_define.h、include/adapt/*_adapt_define.h |
| 适用模块 | DISP / HI3516CV610 |
1 概述
DISP 模块负责将视频图像输出到显示设备(如 MIPI-DSI 屏、HDMI、LCD 等)。HI3516CV610 平台上仅支持 1 路显示设备(disp_hdl = 0),该设备下仅支持 1 个视频窗口(wnd_hdl = 0)。典型调用顺序为:hi_mapi_disp_init → hi_mapi_disp_start → hi_mapi_disp_start_window → hi_mapi_disp_send_frame → hi_mapi_disp_stop_window → hi_mapi_disp_stop → hi_mapi_disp_deinit。所有接口在调用前均要求该 disp_hdl 已经 init,否则返回 HI_MAPI_DISP_ENOTREADY。
2 接口总览
| 编号 | 接口 | 功能概述 |
|---|---|---|
| 1 | hi_mapi_disp_init |
初始化显示设备,将显示属性(接口类型、时序、CSC 等)下发到 HAL。 |
| 2 | hi_mapi_disp_deinit |
去初始化显示设备,释放 HAL 资源。 |
| 3 | hi_mapi_disp_start |
启动显示设备的视频层(Video Layer),根据视频层属性配置显示分辨率、帧率、缓冲长度等。 |
| 4 | hi_mapi_disp_stop |
停止显示设备的视频层。 |
| 5 | hi_mapi_disp_set_attr_ex |
设置显示设备扩展属性(当前支持视频层 / 图形层 CSC)。 |
| 6 | hi_mapi_disp_get_attr_ex |
获取显示设备扩展属性(当前支持视频层 / 图形层 CSC)。 |
| 7 | hi_mapi_disp_set_window_attr |
设置窗口属性(窗口位置、大小、优先级)。 |
| 8 | hi_mapi_disp_get_window_attr |
获取窗口属性。 |
| 9 | hi_mapi_disp_set_window_attr_ex |
设置窗口扩展属性(旋转、宽高比)。 |
| 10 | hi_mapi_disp_get_window_attr_ex |
获取窗口扩展属性(旋转、宽高比)。 |
| 11 | hi_mapi_disp_start_window |
启动指定窗口,使其可以接收视频帧。 |
| 12 | hi_mapi_disp_stop_window |
停止指定窗口。 |
| 13 | hi_mapi_disp_clear_window |
清空指定窗口缓冲中尚未显示的帧。 |
| 14 | hi_mapi_disp_send_frame |
向指定窗口发送一帧 YUV 图像数据用于显示。 |
| 15 | hi_mapi_disp_get_screen_resolution |
获取当前显示设备的屏幕物理分辨率(单位:像素)。 |
| 16 | hi_mapi_disp_get_video_screen |
获取 LVGL 视频屏幕对象指针,并将对象的引用计数加一;调用方使用后需通过 hi_mapi_disp_release_video_screen 释放。 |
| 17 | hi_mapi_disp_release_video_screen |
释放由 hi_mapi_disp_get_video_screen 获取的视频屏幕对象,并将引用计数减一。 |
3 API 参考
1 hi_mapi_disp_init
【描述】 初始化显示设备,将显示属性(接口类型、时序、CSC 等)下发到 HAL。
【语法】
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
disp_hdl |
输入 | td_handle |
显示设备句柄。HI3516CV610 仅支持 0。 |
disp_attr |
输入 | const hi_mapi_disp_attr * |
显示设备属性,不能为 NULL。 |
hi_mapi_disp_attr成员:
| 成员名称 | 描述 |
|---|---|
pub_attr |
显示设备公共属性(背景色、接口类型、接口时序、同步信息)。 |
user_info_attr |
用户自定义显示信息(包含 user_info 用户同步信息、dev_frame_rate 设备帧率)。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_DISP_EINVALID_DEVID |
disp_hdl 越界(HI3516CV610 仅支持 0)。 |
HI_MAPI_DISP_ENULL_PTR |
disp_attr 为空指针。 |
【需求】
- 头文件:
hi_mapi_disp.h - 库文件:
libhi_mapi.so
【注意】
- 重复调用:若该设备已经
init,接口直接返回成功(幂等)。 - 调用前必须保证 MAPI 系统已经
init。
【举例】 无
【相关主题】
hi_mapi_disp_deinit、hi_mapi_disp_start
2 hi_mapi_disp_deinit
【描述】 去初始化显示设备,释放 HAL 资源。
【语法】
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
disp_hdl |
输入 | td_handle |
显示设备句柄,HI3516CV610 仅支持 0。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_DISP_EINVALID_DEVID |
disp_hdl 越界。 |
HI_MAPI_DISP_ENOTREADY |
设备未初始化。 |
HI_MAPI_DISP_EBUSY |
设备仍处于 started 状态,需先调用 hi_mapi_disp_stop。 |
【需求】
- 头文件:
hi_mapi_disp.h - 库文件:
libhi_mapi.so
【注意】 无
【举例】 无
【相关主题】
hi_mapi_disp_init
3 hi_mapi_disp_start
【描述】 启动显示设备的视频层(Video Layer),根据视频层属性配置显示分辨率、帧率、缓冲长度等。
【语法】
td_s32 hi_mapi_disp_start(td_handle disp_hdl, const hi_mapi_disp_video_layer_attr *video_layer_attr);
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
disp_hdl |
输入 | td_handle |
显示设备句柄,HI3516CV610 仅支持 0。 |
video_layer_attr |
输入 | const hi_mapi_disp_video_layer_attr * |
视频层属性,不能为 NULL。 |
hi_mapi_disp_video_layer_attr成员:
| 成员名称 | 描述 |
|---|---|
image_size |
视频层图像宽高(单位:像素)。宽度范围 (0, 16384],高度范围 (0, 8192]。 |
frame_rate |
视频层帧率(单位:fps)。 |
buf_len |
视频层缓冲帧数。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_DISP_EINVALID_DEVID |
disp_hdl 越界。 |
HI_MAPI_DISP_ENULL_PTR |
video_layer_attr 为空指针。 |
HI_MAPI_DISP_ENOTREADY |
设备未初始化。 |
【需求】
- 头文件:
hi_mapi_disp.h - 库文件:
libhi_mapi.so
【注意】
- 重复调用:若该设备已经
started,接口直接返回成功。 - 视频层宽高不能超过显示设备最大分辨率(16384 × 8192)。
【举例】 无
【相关主题】
hi_mapi_disp_stop、hi_mapi_disp_init
4 hi_mapi_disp_stop
【描述】 停止显示设备的视频层。
【语法】
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
disp_hdl |
输入 | td_handle |
显示设备句柄,HI3516CV610 仅支持 0。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_DISP_EINVALID_DEVID |
disp_hdl 越界。 |
HI_MAPI_DISP_ENOTREADY |
设备未初始化。 |
【需求】
- 头文件:
hi_mapi_disp.h - 库文件:
libhi_mapi.so
【注意】 无
【举例】 无
【相关主题】
hi_mapi_disp_start
5 hi_mapi_disp_set_attr_ex
【描述】 设置显示设备扩展属性(当前支持视频层 / 图形层 CSC)。
【语法】
td_s32 hi_mapi_disp_set_attr_ex(td_handle disp_hdl, hi_mapi_disp_cmd cmd, const td_void *attr, td_u32 attr_len);
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
disp_hdl |
输入 | td_handle |
显示设备句柄,HI3516CV610 仅支持 0。 |
cmd |
输入 | hi_mapi_disp_cmd |
扩展命令。HI_MAPI_DISP_CMD_VIDEO_CSC:设置视频层 CSC;HI_MAPI_DISP_CMD_GRAPHIC_CSC:设置图形层 CSC。 |
attr |
输入 | const td_void * |
扩展属性指针,实际类型为 hi_mapi_disp_csc_attr_ex *,不能为 NULL。 |
attr_len |
输入 | td_u32 |
attr 指向结构体的字节长度,必须等于 sizeof(hi_mapi_disp_csc_attr_ex)。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_DISP_EINVALID_DEVID |
disp_hdl 越界。 |
HI_MAPI_DISP_ENULL_PTR |
attr 为空指针。 |
HI_MAPI_DISP_ENOTREADY |
设备未初始化。 |
HI_MAPI_DISP_EILLEGAL_PARAM |
cmd 不支持,或 attr_len 不等于结构体大小。 |
【需求】
- 头文件:
hi_mapi_disp.h - 库文件:
libhi_mapi.so
【注意】 无
【举例】 无
【相关主题】
hi_mapi_disp_get_attr_ex
6 hi_mapi_disp_get_attr_ex
【描述】 获取显示设备扩展属性(当前支持视频层 / 图形层 CSC)。
【语法】
td_s32 hi_mapi_disp_get_attr_ex(td_handle disp_hdl, hi_mapi_disp_cmd cmd, td_void *attr, td_u32 attr_len);
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
disp_hdl |
输入 | td_handle |
显示设备句柄,HI3516CV610 仅支持 0。 |
cmd |
输入 | hi_mapi_disp_cmd |
扩展命令,取值同 hi_mapi_disp_set_attr_ex。 |
attr |
输出 | td_void * |
接收扩展属性,实际类型为 hi_mapi_disp_csc_attr_ex *,不能为 NULL。 |
attr_len |
输入 | td_u32 |
attr 缓冲区字节长度,必须等于 sizeof(hi_mapi_disp_csc_attr_ex)。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_DISP_EINVALID_DEVID |
disp_hdl 越界。 |
HI_MAPI_DISP_ENULL_PTR |
attr 为空指针。 |
HI_MAPI_DISP_ENOTREADY |
设备未初始化。 |
HI_MAPI_DISP_EILLEGAL_PARAM |
cmd 不支持或 attr_len 错误。 |
【需求】
- 头文件:
hi_mapi_disp.h - 库文件:
libhi_mapi.so
【注意】 无
【举例】 无
【相关主题】
hi_mapi_disp_set_attr_ex
7 hi_mapi_disp_set_window_attr
【描述】 设置窗口属性(窗口位置、大小、优先级)。
【语法】
td_s32 hi_mapi_disp_set_window_attr(td_handle disp_hdl, td_handle wnd_hdl,
const hi_mapi_disp_window_attr *wnd_attr);
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
disp_hdl |
输入 | td_handle |
显示设备句柄,HI3516CV610 仅支持 0。 |
wnd_hdl |
输入 | td_handle |
窗口句柄,HI3516CV610 仅支持 0。 |
wnd_attr |
输入 | const hi_mapi_disp_window_attr * |
窗口属性,不能为 NULL。 |
hi_mapi_disp_window_attr成员:
| 成员名称 | 描述 |
|---|---|
rect |
窗口在屏幕上的位置与尺寸(x、y、width、height,单位:像素)。 |
priority |
窗口优先级,值越大显示越靠上。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_DISP_EINVALID_DEVID |
disp_hdl 越界。 |
HI_MAPI_DISP_EINVALID_CHNID |
wnd_hdl 越界。 |
HI_MAPI_DISP_ENULL_PTR |
wnd_attr 为空指针。 |
HI_MAPI_DISP_ENOTREADY |
设备未初始化或尚未 start。 |
【需求】
- 头文件:
hi_mapi_disp.h - 库文件:
libhi_mapi.so
【注意】
- 调用前必须已经调用过
hi_mapi_disp_start。
【举例】 无
【相关主题】
hi_mapi_disp_get_window_attr
8 hi_mapi_disp_get_window_attr
【描述】 获取窗口属性。
【语法】
td_s32 hi_mapi_disp_get_window_attr(td_handle disp_hdl, td_handle wnd_hdl, hi_mapi_disp_window_attr *wnd_attr);
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
disp_hdl |
输入 | td_handle |
显示设备句柄,HI3516CV610 仅支持 0。 |
wnd_hdl |
输入 | td_handle |
窗口句柄,HI3516CV610 仅支持 0。 |
wnd_attr |
输出 | hi_mapi_disp_window_attr * |
接收窗口属性,不能为 NULL。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_DISP_EINVALID_DEVID |
disp_hdl 越界。 |
HI_MAPI_DISP_EINVALID_CHNID |
wnd_hdl 越界。 |
HI_MAPI_DISP_ENULL_PTR |
wnd_attr 为空指针。 |
HI_MAPI_DISP_ENOTREADY |
设备未初始化或尚未 start。 |
【需求】
- 头文件:
hi_mapi_disp.h - 库文件:
libhi_mapi.so
【注意】 无
【举例】 无
【相关主题】
hi_mapi_disp_set_window_attr
9 hi_mapi_disp_set_window_attr_ex
【描述】 设置窗口扩展属性(旋转、宽高比)。
【语法】
td_s32 hi_mapi_disp_set_window_attr_ex(td_handle disp_hdl, td_handle wnd_hdl, hi_mapi_disp_window_cmd cmd,
const td_void *attr, td_u32 attr_len);
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
disp_hdl |
输入 | td_handle |
显示设备句柄,HI3516CV610 仅支持 0。 |
wnd_hdl |
输入 | td_handle |
窗口句柄,HI3516CV610 仅支持 0。 |
cmd |
输入 | hi_mapi_disp_window_cmd |
HI_MAPI_DISP_WINDOW_CMD_ROTATE:旋转;HI_MAPI_DISP_WINDOW_CMD_ASPECTRATIO:宽高比。 |
attr |
输入 | const td_void * |
扩展属性指针,按 cmd 为 hi_mapi_disp_window_rotate * 或 hi_mapi_disp_window_aspect_ratio *,不能为 NULL。 |
attr_len |
输入 | td_u32 |
attr 结构体字节长度,必须与 cmd 对应结构体大小一致。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_DISP_EINVALID_DEVID |
disp_hdl 越界。 |
HI_MAPI_DISP_EINVALID_CHNID |
wnd_hdl 越界。 |
HI_MAPI_DISP_ENULL_PTR |
attr 为空指针。 |
HI_MAPI_DISP_ENOTREADY |
设备未初始化。 |
HI_MAPI_DISP_EILLEGAL_PARAM |
cmd 不支持或 attr_len 错误。 |
【需求】
- 头文件:
hi_mapi_disp.h - 库文件:
libhi_mapi.so
【注意】 无
【举例】 无
【相关主题】
hi_mapi_disp_get_window_attr_ex
10 hi_mapi_disp_get_window_attr_ex
【描述】 获取窗口扩展属性(旋转、宽高比)。
【语法】
td_s32 hi_mapi_disp_get_window_attr_ex(td_handle disp_hdl, td_handle wnd_hdl, hi_mapi_disp_window_cmd cmd,
td_void *attr, td_u32 attr_len);
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
disp_hdl |
输入 | td_handle |
显示设备句柄,HI3516CV610 仅支持 0。 |
wnd_hdl |
输入 | td_handle |
窗口句柄,HI3516CV610 仅支持 0。 |
cmd |
输入 | hi_mapi_disp_window_cmd |
扩展命令,取值同 hi_mapi_disp_set_window_attr_ex。 |
attr |
输出 | td_void * |
接收扩展属性,不能为 NULL。 |
attr_len |
输入 | td_u32 |
attr 缓冲区字节长度,必须与 cmd 对应结构体大小一致。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_DISP_EINVALID_DEVID |
disp_hdl 越界。 |
HI_MAPI_DISP_EINVALID_CHNID |
wnd_hdl 越界。 |
HI_MAPI_DISP_ENULL_PTR |
attr 为空指针。 |
HI_MAPI_DISP_ENOTREADY |
设备未初始化。 |
HI_MAPI_DISP_EILLEGAL_PARAM |
cmd 不支持或 attr_len 错误。 |
【需求】
- 头文件:
hi_mapi_disp.h - 库文件:
libhi_mapi.so
【注意】 无
【举例】 无
【相关主题】
hi_mapi_disp_set_window_attr_ex
11 hi_mapi_disp_start_window
【描述】 启动指定窗口,使其可以接收视频帧。
【语法】
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
disp_hdl |
输入 | td_handle |
显示设备句柄,HI3516CV610 仅支持 0。 |
wnd_hdl |
输入 | td_handle |
窗口句柄,HI3516CV610 仅支持 0。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_DISP_EINVALID_DEVID |
disp_hdl 越界。 |
HI_MAPI_DISP_EINVALID_CHNID |
wnd_hdl 越界。 |
HI_MAPI_DISP_ENOTREADY |
设备未初始化或尚未 start。 |
【需求】
- 头文件:
hi_mapi_disp.h - 库文件:
libhi_mapi.so
【注意】
- 重复启动已启动的窗口会直接返回成功。
【举例】 无
【相关主题】
hi_mapi_disp_stop_window
12 hi_mapi_disp_stop_window
【描述】 停止指定窗口。
【语法】
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
disp_hdl |
输入 | td_handle |
显示设备句柄,HI3516CV610 仅支持 0。 |
wnd_hdl |
输入 | td_handle |
窗口句柄,HI3516CV610 仅支持 0。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_DISP_EINVALID_DEVID |
disp_hdl 越界。 |
HI_MAPI_DISP_EINVALID_CHNID |
wnd_hdl 越界。 |
HI_MAPI_DISP_ENOTREADY |
设备未初始化或尚未 start。 |
【需求】
- 头文件:
hi_mapi_disp.h - 库文件:
libhi_mapi.so
【注意】
- 若窗口已处于停止状态,直接返回成功。
【举例】 无
【相关主题】
hi_mapi_disp_start_window
13 hi_mapi_disp_clear_window
【描述】 清空指定窗口缓冲中尚未显示的帧。
【语法】
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
disp_hdl |
输入 | td_handle |
显示设备句柄,HI3516CV610 仅支持 0。 |
wnd_hdl |
输入 | td_handle |
窗口句柄,HI3516CV610 仅支持 0。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_DISP_EINVALID_DEVID |
disp_hdl 越界。 |
HI_MAPI_DISP_EINVALID_CHNID |
wnd_hdl 越界。 |
HI_MAPI_DISP_ENOTREADY |
设备未初始化。 |
【需求】
- 头文件:
hi_mapi_disp.h - 库文件:
libhi_mapi.so
【注意】 无
【举例】 无
【相关主题】
hi_mapi_disp_send_frame
14 hi_mapi_disp_send_frame
【描述】 向指定窗口发送一帧 YUV 图像数据用于显示。
【语法】
td_s32 hi_mapi_disp_send_frame(td_handle disp_hdl, td_handle wnd_hdl, const hi_mapi_frame_data *framedata);
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
disp_hdl |
输入 | td_handle |
显示设备句柄,HI3516CV610 仅支持 0。 |
wnd_hdl |
输入 | td_handle |
窗口句柄,HI3516CV610 仅支持 0。 |
framedata |
输入 | const hi_mapi_frame_data * |
帧数据,不能为 NULL;其 frame_data_type 必须为 HI_MAPI_FRAME_DATA_TYPE_YUV。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_DISP_EINVALID_DEVID |
disp_hdl 越界。 |
HI_MAPI_DISP_EINVALID_CHNID |
wnd_hdl 越界。 |
HI_MAPI_DISP_ENULL_PTR |
framedata 为空指针。 |
HI_MAPI_DISP_ENOTREADY |
设备未初始化。 |
HI_MAPI_DISP_EILLEGAL_PARAM |
frame_data_type 不是 YUV。 |
【需求】
- 头文件:
hi_mapi_disp.h - 库文件:
libhi_mapi.so
【注意】
- 只支持 YUV 帧数据,不支持 RAW。
【举例】 无
【相关主题】
hi_mapi_disp_clear_window
15 hi_mapi_disp_get_screen_resolution
【描述】 获取当前显示设备的屏幕物理分辨率(单位:像素)。
【语法】
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
disp_hdl |
输入 | td_handle |
显示设备句柄,HI3516CV610 仅支持 0。 |
width |
输出 | td_u32 * |
屏幕宽度,不能为 NULL。 |
hight |
输出 | td_u32 * |
屏幕高度,不能为 NULL。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_DISP_EINVALID_DEVID |
disp_hdl 越界。 |
HI_MAPI_DISP_ENULL_PTR |
width 或 hight 为空指针。 |
HI_MAPI_DISP_ENOTREADY |
设备未初始化。 |
【需求】
- 头文件:
hi_mapi_disp.h - 库文件:
libhi_mapi.so
【注意】 无
【举例】 无
【相关主题】 无
16 hi_mapi_disp_get_video_screen
【描述】
获取 LVGL 视频屏幕对象指针,并将对象的引用计数加一;调用方使用后需通过 hi_mapi_disp_release_video_screen 释放。
【语法】
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
disp_hdl |
输入 | td_handle |
显示设备句柄,HI3516CV610 仅支持 0。 |
【返回值】
| 返回值 | 描述 |
|---|---|
非NULL |
LVGL 视频屏幕对象指针,成功。 |
NULL |
失败:disp_hdl 越界,或显示设备尚未 start。 |
【需求】
- 头文件:
hi_mapi_disp.h - 库文件:
libhi_mapi.so
【注意】
- 仅在编译时启用
SUPPORT_LVGL时可用。 - 与
hi_mapi_disp_release_video_screen必须成对使用,避免泄漏。
【举例】 无
【相关主题】
hi_mapi_disp_release_video_screen
17 hi_mapi_disp_release_video_screen
【描述】
释放由 hi_mapi_disp_get_video_screen 获取的视频屏幕对象,并将引用计数减一。
【语法】
【参数】
| 参数名称 | 输入/输出 | 类型 | 描述 |
|---|---|---|---|
disp_hdl |
输入 | td_handle |
显示设备句柄,HI3516CV610 仅支持 0。 |
video_screen |
输入 | void * |
hi_mapi_disp_get_video_screen 返回的屏幕指针,不能为 NULL。 |
【返回值】
| 返回值 | 描述 |
|---|---|
0 |
成功。 |
非0 |
失败,其值为错误码。 |
HI_MAPI_DISP_EINVALID_DEVID |
disp_hdl 越界。 |
HI_MAPI_DISP_ENULL_PTR |
video_screen 为空指针。 |
HI_MAPI_DISP_ENOTREADY |
设备未初始化。 |
【需求】
- 头文件:
hi_mapi_disp.h - 库文件:
libhi_mapi.so
【注意】 无
【举例】 无
【相关主题】
hi_mapi_disp_get_video_screen
4 数据类型
1 hi_mapi_disp_intf_type
【说明】
定义显示接口类型的位掩码(td_s32),每个 bit 代表一种接口类型,可组合使用。
【定义】
typedef td_s32 hi_mapi_disp_intf_type;
#define HI_MAPI_DISP_INTF_CVBS (0x01L << 0)
#define HI_MAPI_DISP_INTF_VGA (0x01L << 1)
#define HI_MAPI_DISP_INTF_BT656 (0x01L << 2)
#define HI_MAPI_DISP_INTF_BT1120 (0x01L << 3)
#define HI_MAPI_DISP_INTF_HDMI (0x01L << 4)
#define HI_MAPI_DISP_INTF_RGB_6BIT (0x01L << 5)
#define HI_MAPI_DISP_INTF_RGB_8BIT (0x01L << 6)
#define HI_MAPI_DISP_INTF_RGB_16BIT (0x01L << 7)
#define HI_MAPI_DISP_INTF_RGB_18BIT (0x01L << 8)
#define HI_MAPI_DISP_INTF_RGB_24BIT (0x01L << 9)
#define HI_MAPI_DISP_INTF_MIPI (0x01L << 10)
#define HI_MAPI_DISP_INTF_MIPI_SLAVE (0x01L << 11)
#define HI_MAPI_DISP_INTF_HDMI1 (0x01L << 12)
#define HI_MAPI_DISP_INTF_LCD (0x01L << 13)
【成员】
| 成员名称 | 描述 |
|---|---|
HI_MAPI_DISP_INTF_CVBS |
CVBS 复合视频接口(bit 0)。 |
HI_MAPI_DISP_INTF_VGA |
VGA 接口(bit 1)。 |
HI_MAPI_DISP_INTF_BT656 |
BT.656 接口(bit 2)。 |
HI_MAPI_DISP_INTF_BT1120 |
BT.1120 接口(bit 3)。 |
HI_MAPI_DISP_INTF_HDMI |
HDMI 接口(bit 4)。 |
HI_MAPI_DISP_INTF_RGB_6BIT |
6-bit RGB 接口(bit 5)。 |
HI_MAPI_DISP_INTF_RGB_8BIT |
8-bit RGB 接口(bit 6)。 |
HI_MAPI_DISP_INTF_RGB_16BIT |
16-bit RGB 接口(bit 7)。 |
HI_MAPI_DISP_INTF_RGB_18BIT |
18-bit RGB 接口(bit 8)。 |
HI_MAPI_DISP_INTF_RGB_24BIT |
24-bit RGB 接口(bit 9)。 |
HI_MAPI_DISP_INTF_MIPI |
MIPI DSI 接口(bit 10)。 |
HI_MAPI_DISP_INTF_MIPI_SLAVE |
MIPI DSI Slave 接口(bit 11)。 |
HI_MAPI_DISP_INTF_HDMI1 |
HDMI1 接口(bit 12)。 |
HI_MAPI_DISP_INTF_LCD |
LCD 接口(bit 13)。 |
【注意事项】
- 该类型为位掩码,可组合多个接口类型。
- 实际使用时通常只设置一种接口类型。
【相关数据类型及接口】
hi_mapi_disp_pub_attr;hi_mapi_disp_init。
2 hi_mapi_disp_intf_sync
【说明】 定义显示接口时序标准枚举,涵盖模拟标清、VESA、HDTV 及自定义时序。
【定义】
typedef enum {
HI_MAPI_DISP_OUTPUT_PAL = 0,
HI_MAPI_DISP_OUTPUT_NTSC = 1,
HI_MAPI_DISP_OUTPUT_960H_PAL = 2,
HI_MAPI_DISP_OUTPUT_960H_NTSC = 3,
HI_MAPI_DISP_OUTPUT_640x480_60 = 4,
HI_MAPI_DISP_OUTPUT_480P60 = 5,
HI_MAPI_DISP_OUTPUT_576P50 = 6,
HI_MAPI_DISP_OUTPUT_800x600_60 = 7,
HI_MAPI_DISP_OUTPUT_1024x768_60 = 8,
HI_MAPI_DISP_OUTPUT_720P50 = 9,
HI_MAPI_DISP_OUTPUT_720P60 = 10,
HI_MAPI_DISP_OUTPUT_1280x800_60 = 11,
HI_MAPI_DISP_OUTPUT_1280x1024_60 = 12,
HI_MAPI_DISP_OUTPUT_1366x768_60 = 13,
HI_MAPI_DISP_OUTPUT_1400x1050_60 = 14,
HI_MAPI_DISP_OUTPUT_1440x900_60 = 15,
HI_MAPI_DISP_OUTPUT_1680x1050_60 = 16,
HI_MAPI_DISP_OUTPUT_1080P24 = 17,
HI_MAPI_DISP_OUTPUT_1080P25 = 18,
HI_MAPI_DISP_OUTPUT_1080P30 = 19,
HI_MAPI_DISP_OUTPUT_1080I50 = 20,
HI_MAPI_DISP_OUTPUT_1080I60 = 21,
HI_MAPI_DISP_OUTPUT_1080P50 = 22,
HI_MAPI_DISP_OUTPUT_1080P60 = 23,
HI_MAPI_DISP_OUTPUT_1600x1200_60 = 24,
HI_MAPI_DISP_OUTPUT_1920x1200_60 = 25,
HI_MAPI_DISP_OUTPUT_1920x2160_30 = 26,
HI_MAPI_DISP_OUTPUT_2560x1440_30 = 27,
HI_MAPI_DISP_OUTPUT_2560x1440_60 = 28,
HI_MAPI_DISP_OUTPUT_2560x1600_60 = 29,
HI_MAPI_DISP_OUTPUT_3840x2160_24 = 30,
HI_MAPI_DISP_OUTPUT_3840x2160_25 = 31,
HI_MAPI_DISP_OUTPUT_3840x2160_30 = 32,
HI_MAPI_DISP_OUTPUT_3840x2160_50 = 33,
HI_MAPI_DISP_OUTPUT_3840x2160_60 = 34,
HI_MAPI_DISP_OUTPUT_4096x2160_24 = 35,
HI_MAPI_DISP_OUTPUT_4096x2160_25 = 36,
HI_MAPI_DISP_OUTPUT_4096x2160_30 = 37,
HI_MAPI_DISP_OUTPUT_4096x2160_50 = 38,
HI_MAPI_DISP_OUTPUT_4096x2160_60 = 39,
HI_MAPI_DISP_OUTPUT_7680x4320_30 = 40,
HI_MAPI_DISP_OUTPUT_240x320_50 = 41,
HI_MAPI_DISP_OUTPUT_320x240_50 = 42,
HI_MAPI_DISP_OUTPUT_240x320_60 = 43,
HI_MAPI_DISP_OUTPUT_320x240_60 = 44,
HI_MAPI_DISP_OUTPUT_800x600_50 = 45,
HI_MAPI_DISP_OUTPUT_720x1280_60 = 46,
HI_MAPI_DISP_OUTPUT_1080x1920_60 = 47,
HI_MAPI_DISP_OUTPUT_USER = 48,
HI_MAPI_DISP_OUTPUT_BUTT
} hi_mapi_disp_intf_sync;
【成员】
| 成员名称 | 描述 |
|---|---|
HI_MAPI_DISP_OUTPUT_PAL |
PAL 标清(值为 0)。 |
HI_MAPI_DISP_OUTPUT_NTSC |
NTSC 标清(值为 1)。 |
HI_MAPI_DISP_OUTPUT_960H_PAL |
960×576@50Hz 隔行(值为 2)。 |
HI_MAPI_DISP_OUTPUT_960H_NTSC |
960×480@60Hz 隔行(值为 3)。 |
HI_MAPI_DISP_OUTPUT_640x480_60 |
VESA 640×480@60Hz(值为 4)。 |
HI_MAPI_DISP_OUTPUT_480P60 |
720×480@60Hz(值为 5)。 |
HI_MAPI_DISP_OUTPUT_576P50 |
720×576@50Hz(值为 6)。 |
HI_MAPI_DISP_OUTPUT_800x600_60 |
VESA 800×600@60Hz(值为 7)。 |
HI_MAPI_DISP_OUTPUT_1024x768_60 |
VESA 1024×768@60Hz(值为 8)。 |
HI_MAPI_DISP_OUTPUT_720P50 |
1280×720@50Hz(值为 9)。 |
HI_MAPI_DISP_OUTPUT_720P60 |
1280×720@60Hz(值为 10)。 |
HI_MAPI_DISP_OUTPUT_1280x800_60 |
1280×800@60Hz(值为 11)。 |
HI_MAPI_DISP_OUTPUT_1280x1024_60 |
VESA 1280×1024@60Hz(值为 12)。 |
HI_MAPI_DISP_OUTPUT_1366x768_60 |
VESA 1366×768@60Hz(值为 13)。 |
HI_MAPI_DISP_OUTPUT_1400x1050_60 |
VESA 1400×1050@60Hz(值为 14)。 |
HI_MAPI_DISP_OUTPUT_1440x900_60 |
VESA 1440×900@60Hz(值为 15)。 |
HI_MAPI_DISP_OUTPUT_1680x1050_60 |
VESA 1680×1050@60Hz(值为 16)。 |
HI_MAPI_DISP_OUTPUT_1080P24 |
1920×1080@24Hz(值为 17)。 |
HI_MAPI_DISP_OUTPUT_1080P25 |
1920×1080@25Hz(值为 18)。 |
HI_MAPI_DISP_OUTPUT_1080P30 |
1920×1080@30Hz(值为 19)。 |
HI_MAPI_DISP_OUTPUT_1080I50 |
1920×1080@50Hz 隔行(值为 20)。 |
HI_MAPI_DISP_OUTPUT_1080I60 |
1920×1080@60Hz 隔行(值为 21)。 |
HI_MAPI_DISP_OUTPUT_1080P50 |
1920×1080@50Hz(值为 22)。 |
HI_MAPI_DISP_OUTPUT_1080P60 |
1920×1080@60Hz(值为 23)。 |
HI_MAPI_DISP_OUTPUT_1600x1200_60 |
VESA 1600×1200@60Hz(值为 24)。 |
HI_MAPI_DISP_OUTPUT_1920x1200_60 |
VESA 1920×1200@60Hz(值为 25)。 |
HI_MAPI_DISP_OUTPUT_1920x2160_30 |
1920×2160@30Hz(值为 26)。 |
HI_MAPI_DISP_OUTPUT_2560x1440_30 |
2560×1440@30Hz(值为 27)。 |
HI_MAPI_DISP_OUTPUT_2560x1440_60 |
2560×1440@60Hz(值为 28)。 |
HI_MAPI_DISP_OUTPUT_2560x1600_60 |
2560×1600@60Hz(值为 29)。 |
HI_MAPI_DISP_OUTPUT_3840x2160_24 |
3840×2160@24Hz(值为 30)。 |
HI_MAPI_DISP_OUTPUT_3840x2160_25 |
3840×2160@25Hz(值为 31)。 |
HI_MAPI_DISP_OUTPUT_3840x2160_30 |
3840×2160@30Hz(值为 32)。 |
HI_MAPI_DISP_OUTPUT_3840x2160_50 |
3840×2160@50Hz(值为 33)。 |
HI_MAPI_DISP_OUTPUT_3840x2160_60 |
3840×2160@60Hz(值为 34)。 |
HI_MAPI_DISP_OUTPUT_4096x2160_24 |
4096×2160@24Hz(值为 35)。 |
HI_MAPI_DISP_OUTPUT_4096x2160_25 |
4096×2160@25Hz(值为 36)。 |
HI_MAPI_DISP_OUTPUT_4096x2160_30 |
4096×2160@30Hz(值为 37)。 |
HI_MAPI_DISP_OUTPUT_4096x2160_50 |
4096×2160@50Hz(值为 38)。 |
HI_MAPI_DISP_OUTPUT_4096x2160_60 |
4096×2160@60Hz(值为 39)。 |
HI_MAPI_DISP_OUTPUT_7680x4320_30 |
7680×4320@30Hz(值为 40)。 |
HI_MAPI_DISP_OUTPUT_240x320_50 |
240×320@50Hz(值为 41)。 |
HI_MAPI_DISP_OUTPUT_320x240_50 |
320×240@50Hz(值为 42)。 |
HI_MAPI_DISP_OUTPUT_240x320_60 |
240×320@60Hz(值为 43)。 |
HI_MAPI_DISP_OUTPUT_320x240_60 |
320×240@60Hz(值为 44)。 |
HI_MAPI_DISP_OUTPUT_800x600_50 |
800×600@50Hz(值为 45)。 |
HI_MAPI_DISP_OUTPUT_720x1280_60 |
720×1280@60Hz,MIPI DSI Tx 竖屏(值为 46)。 |
HI_MAPI_DISP_OUTPUT_1080x1920_60 |
1080×1920@60Hz,MIPI DSI Tx 竖屏(值为 47)。 |
HI_MAPI_DISP_OUTPUT_USER |
用户自定义时序(值为 48),需配合 hi_mapi_disp_user_intf_sync_info 使用。 |
HI_MAPI_DISP_OUTPUT_BUTT |
枚举上界哨兵,不可使用。 |
【注意事项】
HI_MAPI_DISP_OUTPUT_USER须配合hi_mapi_disp_user_intf_sync_info提供自定义时序参数。- 部分时序是否可用取决于具体硬件接口及屏幕能力。
【相关数据类型及接口】
hi_mapi_disp_pub_attr、hi_mapi_disp_user_intf_sync_info;hi_mapi_disp_init。
3 hi_mapi_disp_clk_source
【说明】 定义显示设备时钟源类型枚举。
【定义】
typedef enum {
HI_MAPI_DISP_CLK_SOURCE_PLL = 0,
HI_MAPI_DISP_CLK_SOURCE_LCDMCLK = 1,
HI_MAPI_DISP_CLK_SRC_PLL_FOUT4 = 2,
HI_MAPI_DISP_CLK_SRC_FIXED = 3,
HI_MAPI_DISP_CLK_SOURCE_BUTT
} hi_mapi_disp_clk_source;
【成员】
| 成员名称 | 描述 |
|---|---|
HI_MAPI_DISP_CLK_SOURCE_PLL |
PLL 时钟源(值为 0),需配合 hi_mapi_disp_user_intf_sync_pll 配置。 |
HI_MAPI_DISP_CLK_SOURCE_LCDMCLK |
LCDMCLK 时钟源(值为 1),需配置 lcd_mclk_div。 |
HI_MAPI_DISP_CLK_SRC_PLL_FOUT4 |
PLL FOUT4 时钟源(值为 2)。 |
HI_MAPI_DISP_CLK_SRC_FIXED |
固定时钟源(值为 3),需配合 hi_mapi_disp_fixed_clk 选择具体频率。 |
HI_MAPI_DISP_CLK_SOURCE_BUTT |
枚举上界哨兵,不可使用。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_disp_user_intf_sync_attr;hi_mapi_disp_init。
4 hi_mapi_disp_fixed_clk
【说明】
定义固定时钟源(HI_MAPI_DISP_CLK_SRC_FIXED)可选的频率枚举。
【定义】
typedef enum {
HI_MAPI_DISP_FIXED_CLK_148_5M = 0,
HI_MAPI_DISP_FIXED_CLK_134_4M = 1,
HI_MAPI_DISP_FIXED_CLK_108M = 2,
HI_MAPI_DISP_FIXED_CLK_74_25M = 3,
HI_MAPI_DISP_FIXED_CLK_64M = 4,
HI_MAPI_DISP_FIXED_CLK_54M = 5,
HI_MAPI_DISP_FIXED_CLK_37_125M = 6,
HI_MAPI_DISP_FIXED_CLK_13_5M = 7,
HI_MAPI_DISP_FIXED_CLK_BUTT
} hi_mapi_disp_fixed_clk;
【成员】
| 成员名称 | 描述 |
|---|---|
HI_MAPI_DISP_FIXED_CLK_148_5M |
148.5 MHz(值为 0)。 |
HI_MAPI_DISP_FIXED_CLK_134_4M |
134.4 MHz(值为 1)。 |
HI_MAPI_DISP_FIXED_CLK_108M |
108 MHz(值为 2)。 |
HI_MAPI_DISP_FIXED_CLK_74_25M |
74.25 MHz(值为 3)。 |
HI_MAPI_DISP_FIXED_CLK_64M |
64 MHz(值为 4)。 |
HI_MAPI_DISP_FIXED_CLK_54M |
54 MHz(值为 5)。 |
HI_MAPI_DISP_FIXED_CLK_37_125M |
37.125 MHz(值为 6)。 |
HI_MAPI_DISP_FIXED_CLK_13_5M |
13.5 MHz(值为 7)。 |
HI_MAPI_DISP_FIXED_CLK_BUTT |
枚举上界哨兵,不可使用。 |
【注意事项】
仅在 hi_mapi_disp_user_intf_sync_attr.clk_source 为 HI_MAPI_DISP_CLK_SRC_FIXED 时使用。
【相关数据类型及接口】
hi_mapi_disp_user_intf_sync_attr、hi_mapi_disp_clk_source;hi_mapi_disp_init。
5 hi_mapi_disp_user_intf_sync_pll
【说明】
定义 PLL 时钟源的分频参数,用于 HI_MAPI_DISP_CLK_SOURCE_PLL 时钟源模式。
【定义】
typedef struct {
td_u32 fbdiv;
td_u32 frac;
td_u32 refdiv;
td_u32 postdiv1;
td_u32 postdiv2;
} hi_mapi_disp_user_intf_sync_pll;
【成员】
| 成员名称 | 描述 |
|---|---|
fbdiv |
PLL 反馈分频值。 |
frac |
PLL 小数分频值。 |
refdiv |
PLL 参考分频值。 |
postdiv1 |
PLL 后级分频 1。 |
postdiv2 |
PLL 后级分频 2。 |
【注意事项】
仅在 clk_source 为 HI_MAPI_DISP_CLK_SOURCE_PLL 时有效。具体取值须根据目标像素时钟计算。
【相关数据类型及接口】
hi_mapi_disp_user_intf_sync_attr、hi_mapi_disp_clk_source;hi_mapi_disp_init。
6 hi_mapi_disp_csc_matrix
【说明】 定义显示 CSC(色彩空间转换)矩阵枚举,描述从源色彩空间到目标色彩空间的转换。
【定义】
typedef enum {
HI_MAPI_DISP_CSC_MATRIX_BT601LIMIT_TO_BT601LIMIT = 0,
HI_MAPI_DISP_CSC_MATRIX_BT601FULL_TO_BT601LIMIT = 1,
HI_MAPI_DISP_CSC_MATRIX_BT709LIMIT_TO_BT601LIMIT = 2,
HI_MAPI_DISP_CSC_MATRIX_BT709FULL_TO_BT601LIMIT = 3,
HI_MAPI_DISP_CSC_MATRIX_BT601LIMIT_TO_BT709LIMIT = 4,
HI_MAPI_DISP_CSC_MATRIX_BT601FULL_TO_BT709LIMIT = 5,
HI_MAPI_DISP_CSC_MATRIX_BT709LIMIT_TO_BT709LIMIT = 6,
HI_MAPI_DISP_CSC_MATRIX_BT709FULL_TO_BT709LIMIT = 7,
HI_MAPI_DISP_CSC_MATRIX_BT601LIMIT_TO_BT601FULL = 8,
HI_MAPI_DISP_CSC_MATRIX_BT601FULL_TO_BT601FULL = 9,
HI_MAPI_DISP_CSC_MATRIX_BT709LIMIT_TO_BT601FULL = 10,
HI_MAPI_DISP_CSC_MATRIX_BT709FULL_TO_BT601FULL = 11,
HI_MAPI_DISP_CSC_MATRIX_BT601LIMIT_TO_BT709FULL = 12,
HI_MAPI_DISP_CSC_MATRIX_BT601FULL_TO_BT709FULL = 13,
HI_MAPI_DISP_CSC_MATRIX_BT709LIMIT_TO_BT709FULL = 14,
HI_MAPI_DISP_CSC_MATRIX_BT709FULL_TO_BT709FULL = 15,
HI_MAPI_DISP_CSC_MATRIX_BT601LIMIT_TO_RGBFULL = 16,
HI_MAPI_DISP_CSC_MATRIX_BT601FULL_TO_RGBFULL = 17,
HI_MAPI_DISP_CSC_MATRIX_BT709LIMIT_TO_RGBFULL = 18,
HI_MAPI_DISP_CSC_MATRIX_BT709FULL_TO_RGBFULL = 19,
HI_MAPI_DISP_CSC_MATRIX_BT601LIMIT_TO_RGBLIMIT = 20,
HI_MAPI_DISP_CSC_MATRIX_BT601FULL_TO_RGBLIMIT = 21,
HI_MAPI_DISP_CSC_MATRIX_BT709LIMIT_TO_RGBLIMIT = 22,
HI_MAPI_DISP_CSC_MATRIX_BT709FULL_TO_RGBLIMIT = 23,
HI_MAPI_DISP_CSC_MATRIX_RGBFULL_TO_BT601LIMIT = 24,
HI_MAPI_DISP_CSC_MATRIX_RGBFULL_TO_BT601FULL = 25,
HI_MAPI_DISP_CSC_MATRIX_RGBFULL_TO_BT709LIMIT = 26,
HI_MAPI_DISP_CSC_MATRIX_RGBFULL_TO_BT709FULL = 27,
HI_MAPI_DISP_CSC_MATRIX_BUTT
} hi_mapi_disp_csc_matrix;
【成员】
| 成员名称 | 描述 |
|---|---|
HI_MAPI_DISP_CSC_MATRIX_BT601LIMIT_TO_BT601LIMIT |
BT.601 limit → BT.601 limit(单位矩阵,值为 0)。 |
HI_MAPI_DISP_CSC_MATRIX_BT601FULL_TO_BT601LIMIT |
BT.601 full → BT.601 limit(值为 1)。 |
HI_MAPI_DISP_CSC_MATRIX_BT709LIMIT_TO_BT601LIMIT |
BT.709 limit → BT.601 limit(值为 2)。 |
HI_MAPI_DISP_CSC_MATRIX_BT709FULL_TO_BT601LIMIT |
BT.709 full → BT.601 limit(值为 3)。 |
HI_MAPI_DISP_CSC_MATRIX_BT601LIMIT_TO_BT709LIMIT |
BT.601 limit → BT.709 limit(值为 4)。 |
HI_MAPI_DISP_CSC_MATRIX_BT601FULL_TO_BT709LIMIT |
BT.601 full → BT.709 limit(值为 5)。 |
HI_MAPI_DISP_CSC_MATRIX_BT709LIMIT_TO_BT709LIMIT |
BT.709 limit → BT.709 limit(单位矩阵,值为 6)。 |
HI_MAPI_DISP_CSC_MATRIX_BT709FULL_TO_BT709LIMIT |
BT.709 full → BT.709 limit(值为 7)。 |
HI_MAPI_DISP_CSC_MATRIX_BT601LIMIT_TO_BT601FULL |
BT.601 limit → BT.601 full(值为 8)。 |
HI_MAPI_DISP_CSC_MATRIX_BT601FULL_TO_BT601FULL |
BT.601 full → BT.601 full(单位矩阵,值为 9)。 |
HI_MAPI_DISP_CSC_MATRIX_BT709LIMIT_TO_BT601FULL |
BT.709 limit → BT.601 full(值为 10)。 |
HI_MAPI_DISP_CSC_MATRIX_BT709FULL_TO_BT601FULL |
BT.709 full → BT.601 full(值为 11)。 |
HI_MAPI_DISP_CSC_MATRIX_BT601LIMIT_TO_BT709FULL |
BT.601 limit → BT.709 full(值为 12)。 |
HI_MAPI_DISP_CSC_MATRIX_BT601FULL_TO_BT709FULL |
BT.601 full → BT.709 full(值为 13)。 |
HI_MAPI_DISP_CSC_MATRIX_BT709LIMIT_TO_BT709FULL |
BT.709 limit → BT.709 full(值为 14)。 |
HI_MAPI_DISP_CSC_MATRIX_BT709FULL_TO_BT709FULL |
BT.709 full → BT.709 full(单位矩阵,值为 15)。 |
HI_MAPI_DISP_CSC_MATRIX_BT601LIMIT_TO_RGBFULL |
BT.601 limit → RGB full(值为 16)。 |
HI_MAPI_DISP_CSC_MATRIX_BT601FULL_TO_RGBFULL |
BT.601 full → RGB full(值为 17)。 |
HI_MAPI_DISP_CSC_MATRIX_BT709LIMIT_TO_RGBFULL |
BT.709 limit → RGB full(值为 18)。 |
HI_MAPI_DISP_CSC_MATRIX_BT709FULL_TO_RGBFULL |
BT.709 full → RGB full(值为 19)。 |
HI_MAPI_DISP_CSC_MATRIX_BT601LIMIT_TO_RGBLIMIT |
BT.601 limit → RGB limit(值为 20)。 |
HI_MAPI_DISP_CSC_MATRIX_BT601FULL_TO_RGBLIMIT |
BT.601 full → RGB limit(值为 21)。 |
HI_MAPI_DISP_CSC_MATRIX_BT709LIMIT_TO_RGBLIMIT |
BT.709 limit → RGB limit(值为 22)。 |
HI_MAPI_DISP_CSC_MATRIX_BT709FULL_TO_RGBLIMIT |
BT.709 full → RGB limit(值为 23)。 |
HI_MAPI_DISP_CSC_MATRIX_RGBFULL_TO_BT601LIMIT |
RGB full → BT.601 limit(值为 24)。 |
HI_MAPI_DISP_CSC_MATRIX_RGBFULL_TO_BT601FULL |
RGB full → BT.601 full(值为 25)。 |
HI_MAPI_DISP_CSC_MATRIX_RGBFULL_TO_BT709LIMIT |
RGB full → BT.709 limit(值为 26)。 |
HI_MAPI_DISP_CSC_MATRIX_RGBFULL_TO_BT709FULL |
RGB full → BT.709 full(值为 27)。 |
HI_MAPI_DISP_CSC_MATRIX_BUTT |
枚举上界哨兵,不可使用。 |
【注意事项】
- "limit" 指有限范围(16–235 / 16–240),"full" 指全范围(0–255)。
- 单位矩阵(源与目标色彩空间相同)不做实际转换。
【相关数据类型及接口】
hi_mapi_disp_csc_attr;hi_mapi_disp_set_attr_ex、hi_mapi_disp_get_attr_ex。
7 hi_mapi_disp_user_intf_sync_attr
【说明】 定义用户自定义接口同步的时钟属性,包含时钟源类型及对应的分频/固定时钟配置。
【定义】
typedef struct {
hi_mapi_disp_clk_source clk_source;
union {
hi_mapi_disp_user_intf_sync_pll user_sync_pll;
td_u32 lcd_mclk_div;
hi_mapi_disp_fixed_clk fixed_clk;
};
} hi_mapi_disp_user_intf_sync_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
clk_source |
时钟源类型(枚举 hi_mapi_disp_clk_source)。 |
user_sync_pll |
当 clk_source 为 HI_MAPI_DISP_CLK_SOURCE_PLL 时有效,PLL 分频参数。 |
lcd_mclk_div |
当 clk_source 为 HI_MAPI_DISP_CLK_SOURCE_LCDMCLK 时有效,LCD MCLK 分频值。 |
fixed_clk |
当 clk_source 为 HI_MAPI_DISP_CLK_SRC_FIXED 时有效,固定时钟频率选择。 |
【注意事项】
- 联合体成员按
clk_source取值选择使用,不可同时设置多个。
【相关数据类型及接口】
hi_mapi_disp_clk_source、hi_mapi_disp_user_intf_sync_pll、hi_mapi_disp_fixed_clk、hi_mapi_disp_pub_attr;hi_mapi_disp_init。
8 hi_mapi_disp_user_intf_manual_sync_attr
【说明】 定义用户自定义手动同步时序属性,包含设备分频参数及基础同步属性。
【定义】
typedef struct {
hi_mapi_disp_user_intf_sync_attr user_intf_sync_attr;
td_u32 pre_div;
td_u32 dev_div;
} hi_mapi_disp_user_intf_manual_sync_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
user_intf_sync_attr |
用户接口同步时钟属性(类型 hi_mapi_disp_user_intf_sync_attr)。 |
pre_div |
设备前级分频值,取值范围 [1, 32]。 |
dev_div |
设备时钟分频值,取值范围 [1, 4]。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_disp_user_intf_sync_attr、hi_mapi_disp_user_intf_sync_info;hi_mapi_disp_init。
9 hi_mapi_disp_user_intf_auto_sync_attr
【说明】 定义用户自定义自动同步时序属性,仅包含像素时钟频率。
【定义】
【成员】
| 成员名称 | 描述 |
|---|---|
pixel_clk |
像素时钟频率,单位 Hz。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_disp_user_intf_sync_info;hi_mapi_disp_init。
10 hi_mapi_disp_op_mode
【说明】 定义用户自定义时序的操作模式枚举(自动/手动)。
【定义】
typedef enum {
HI_MAPI_DISP_OP_MODE_AUTO = 0,
HI_MAPI_DISP_OP_MODE_MANUAL = 1,
HI_MAPI_DISP_OP_MODE_BUTT
} hi_mapi_disp_op_mode;
【成员】
| 成员名称 | 描述 |
|---|---|
HI_MAPI_DISP_OP_MODE_AUTO |
自动模式(值为 0),由硬件自动推导时序,使用 auto_sync_attr。 |
HI_MAPI_DISP_OP_MODE_MANUAL |
手动模式(值为 1),由用户指定完整时序参数,使用 manual_sync_attr。 |
HI_MAPI_DISP_OP_MODE_BUTT |
枚举上界哨兵,不可使用。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_disp_user_intf_sync_info;hi_mapi_disp_init。
11 hi_mapi_disp_user_intf_sync_info
【说明】 定义用户自定义接口同步信息,包含操作模式、时钟翻转标志及自动/手动时序参数。
【定义】
typedef struct {
hi_mapi_disp_op_mode mode;
td_bool clk_reverse;
union {
hi_mapi_disp_user_intf_auto_sync_attr auto_sync_attr;
hi_mapi_disp_user_intf_manual_sync_attr manual_sync_attr;
};
} hi_mapi_disp_user_intf_sync_info;
【成员】
| 成员名称 | 描述 |
|---|---|
mode |
操作模式(枚举 hi_mapi_disp_op_mode),决定使用自动或手动时序。 |
clk_reverse |
时钟反转标志:TD_TRUE 反转,TD_FALSE 正常。 |
auto_sync_attr |
当 mode 为 HI_MAPI_DISP_OP_MODE_AUTO 时有效,自动同步属性。 |
manual_sync_attr |
当 mode 为 HI_MAPI_DISP_OP_MODE_MANUAL 时有效,手动同步属性。 |
【注意事项】
- 联合体成员按
mode取值选择使用。 - 仅当
intf_sync为HI_MAPI_DISP_OUTPUT_USER时使用该结构。
【相关数据类型及接口】
hi_mapi_disp_op_mode、hi_mapi_disp_user_intf_auto_sync_attr、hi_mapi_disp_user_intf_manual_sync_attr、hi_mapi_disp_user_info_attr;hi_mapi_disp_init。
12 hi_mapi_disp_user_info_attr
【说明】 定义用户自定义时序的完整属性,包含同步信息及设备帧率。
【定义】
typedef struct {
hi_mapi_disp_user_intf_sync_info user_info;
td_u32 dev_frame_rate;
} hi_mapi_disp_user_info_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
user_info |
用户接口同步信息(类型 hi_mapi_disp_user_intf_sync_info)。 |
dev_frame_rate |
设备输出帧率,单位 fps。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_disp_user_intf_sync_info、hi_mapi_disp_attr;hi_mapi_disp_init。
13 hi_mapi_disp_sync_info
【说明】 定义显示接口时序参数,包含同步模式、主/副场时序及同步极性。
【定义】
typedef struct {
td_bool synm;
td_bool iop;
td_u8 intfb;
td_u16 vact;
td_u16 vbb;
td_u16 vfb;
td_u16 hact;
td_u16 hbb;
td_u16 hfb;
td_u16 hmid;
td_u16 bvact;
td_u16 bvbb;
td_u16 bvfb;
td_u16 hpw;
td_u16 vpw;
td_bool idv;
td_bool ihs;
td_bool ivs;
} hi_mapi_disp_sync_info;
【成员】
| 成员名称 | 描述 |
|---|---|
synm |
同步模式:TD_FALSE 为时序同步(如 BT.656),TD_TRUE 为信号同步(如 LCD)。 |
iop |
扫描方式:TD_FALSE 为隔行,TD_TRUE 为逐行。 |
intfb |
隔行模式下的输出位宽。 |
vact |
垂直有效区域行数。 |
vbb |
垂直后肩(back blank porch)行数。 |
vfb |
垂直前肩(front blank porch)行数。 |
hact |
水平有效区域像素数。 |
hbb |
水平后肩像素数。 |
hfb |
水平前肩像素数。 |
hmid |
底场水平有效区域像素数(隔行模式)。 |
bvact |
底场垂直有效区域行数(隔行模式)。 |
bvbb |
底场垂直后肩行数。 |
bvfb |
底场垂直前肩行数。 |
hpw |
水平同步脉冲宽度。 |
vpw |
垂直同步脉冲宽度。 |
idv |
数据有效信号极性反转:TD_TRUE 反转。 |
ihs |
水平同步信号极性反转:TD_TRUE 反转。 |
ivs |
垂直同步信号极性反转:TD_TRUE 反转。 |
【注意事项】
- 逐行模式下
hmid、bvact、bvbb、bvfb无效。 - 该结构体一般由
hi_mapi_disp_intf_sync预定义时序自动填充,仅在HI_MAPI_DISP_OUTPUT_USER模式下需要用户手动设置。
【相关数据类型及接口】
hi_mapi_disp_pub_attr;hi_mapi_disp_init。
14 hi_mapi_disp_pub_attr
【说明】 定义显示设备的公共属性,包含背景颜色、接口类型、接口时序及同步信息。
【定义】
typedef struct {
td_u32 bg_color;
hi_mapi_disp_intf_type intf_type;
hi_mapi_disp_intf_sync intf_sync;
hi_mapi_disp_sync_info sync_info;
} hi_mapi_disp_pub_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
bg_color |
设备背景颜色,RGB 格式。 |
intf_type |
显示接口类型(类型 hi_mapi_disp_intf_type,位掩码)。 |
intf_sync |
接口时序标准(枚举 hi_mapi_disp_intf_sync)。 |
sync_info |
接口时序详细信息(类型 hi_mapi_disp_sync_info)。 |
【注意事项】
intf_sync为非USER值时,sync_info由系统自动填充。intf_sync为HI_MAPI_DISP_OUTPUT_USER时,须自行填充sync_info。
【相关数据类型及接口】
hi_mapi_disp_intf_type、hi_mapi_disp_intf_sync、hi_mapi_disp_sync_info、hi_mapi_disp_attr;hi_mapi_disp_init。
15 hi_mapi_disp_attr
【说明】 定义显示设备的完整属性,包含公共属性与用户自定义时序属性。
【定义】
typedef struct {
hi_mapi_disp_pub_attr pub_attr;
hi_mapi_disp_user_info_attr user_info_attr;
} hi_mapi_disp_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
pub_attr |
显示设备公共属性(类型 hi_mapi_disp_pub_attr)。 |
user_info_attr |
用户自定义时序属性(类型 hi_mapi_disp_user_info_attr),仅当 intf_sync 为 HI_MAPI_DISP_OUTPUT_USER 时有效。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_disp_pub_attr、hi_mapi_disp_user_info_attr;hi_mapi_disp_init、hi_mapi_disp_deinit。
16 hi_mapi_disp_video_layer_attr
【说明】 定义显示视频层(Video Layer)属性,包含图像分辨率、帧率及缓冲长度。
【定义】
typedef struct {
hi_mapi_size image_size;
td_u32 frame_rate;
td_u32 buf_len;
} hi_mapi_disp_video_layer_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
image_size |
视频层显示分辨率(类型 hi_mapi_size),单位像素。 |
frame_rate |
视频层帧率,单位 fps。 |
buf_len |
视频层缓冲帧数。 |
【注意事项】
buf_len越大延迟越高但显示越平滑。
【相关数据类型及接口】
hi_mapi_size(公共数据类型);hi_mapi_disp_start、hi_mapi_disp_stop。
17 hi_mapi_disp_window_attr
【说明】 定义显示窗口属性,包含窗口位置、大小及优先级。
【定义】
【成员】
| 成员名称 | 描述 |
|---|---|
rect |
窗口矩形区域(类型 hi_mapi_rect),包含左上角坐标及宽高,单位像素。 |
priority |
窗口优先级,值越大越靠前显示。 |
【注意事项】
- HI3516CV610 窗口数量上限
OT_VO_MAX_CHN_NUM为 4。
【相关数据类型及接口】
hi_mapi_rect(公共数据类型);hi_mapi_disp_set_window_attr、hi_mapi_disp_get_window_attr。
18 hi_mapi_disp_csc_attr
【说明】 定义显示 CSC(色彩空间转换)属性,包含转换矩阵、亮度、对比度、色调、饱和度及扩展 CSC 开关。
【定义】
typedef struct {
hi_mapi_disp_csc_matrix csc_matrix;
td_u32 luma;
td_u32 contrast;
td_u32 hue;
td_u32 satuature;
td_bool enable_ex_csc;
} hi_mapi_disp_csc_attr;
【成员】
| 成员名称 | 描述 |
|---|---|
csc_matrix |
CSC 转换矩阵(枚举 hi_mapi_disp_csc_matrix)。 |
luma |
亮度,取值范围 [0, 100],默认值 50。 |
contrast |
对比度,取值范围 [0, 100],默认值 50。 |
hue |
色调,取值范围 [0, 100],默认值 50。 |
satuature |
饱和度,取值范围 [0, 100],默认值 50。 |
enable_ex_csc |
扩展 CSC 开关(用于亮度扩展调整):TD_TRUE 启用,TD_FALSE 禁用,默认 TD_FALSE(0)。 |
【注意事项】
- 该类型为底层 CSC 属性结构体。在
hi_mapi_disp_set_attr_ex/hi_mapi_disp_get_attr_ex接口中,使用包装类型hi_mapi_disp_csc_attr_ex。
【相关数据类型及接口】
hi_mapi_disp_csc_matrix、hi_mapi_disp_csc_attr_ex;hi_mapi_disp_set_attr_ex、hi_mapi_disp_get_attr_ex。
19 hi_mapi_disp_csc_attr_ex
【说明】
定义显示扩展 CSC 属性的包装结构,用于 hi_mapi_disp_set_attr_ex / hi_mapi_disp_get_attr_ex 接口。
【定义】
【成员】
| 成员名称 | 描述 |
|---|---|
vo_csc |
视频层 CSC 属性(类型 hi_mapi_disp_csc_attr)。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_disp_csc_attr;hi_mapi_disp_set_attr_ex、hi_mapi_disp_get_attr_ex。
20 hi_mapi_disp_window_rotate
【说明】 定义窗口旋转属性。
【定义】
【成员】
| 成员名称 | 描述 |
|---|---|
rorate |
旋转角度(枚举 hi_mapi_rotation,参见公共数据类型),取值 HI_MAPI_ROTATION_0 / 90 / 180 / 270。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_rotation(公共数据类型);hi_mapi_disp_set_window_attr_ex(HI_MAPI_DISP_WINDOW_CMD_ROTATE)、hi_mapi_disp_get_window_attr_ex。
21 hi_mapi_disp_window_aspect_ratio
【说明】 定义窗口宽高比属性,包含水平分割使能及宽高比属性。
【定义】
typedef struct {
td_bool hor_split_en;
hi_mapi_aspect_ratio_attr aspect_ratio;
} hi_mapi_disp_window_aspect_ratio;
【成员】
| 成员名称 | 描述 |
|---|---|
hor_split_en |
水平分割使能(仅 HI3516CV610 / HI3516DV500 / HI3519DV500 平台有效):TD_TRUE 启用,TD_FALSE 禁用。 |
aspect_ratio |
宽高比属性(类型 hi_mapi_aspect_ratio_attr,参见公共数据类型),包含模式、背景色及视频区域。 |
【注意事项】
hor_split_en在 HI3516CV610 平台上编译有效。
【相关数据类型及接口】
hi_mapi_aspect_ratio_attr(公共数据类型);hi_mapi_disp_set_window_attr_ex(HI_MAPI_DISP_WINDOW_CMD_ASPECTRATIO)、hi_mapi_disp_get_window_attr_ex。
22 hi_mapi_disp_cmd
【说明】
定义显示设备扩展属性命令枚举,用于 hi_mapi_disp_set_attr_ex / hi_mapi_disp_get_attr_ex。
【定义】
typedef enum {
HI_MAPI_DISP_CMD_VIDEO_CSC,
HI_MAPI_DISP_CMD_GRAPHIC_CSC,
HI_MAPI_DISP_CMD_BUTT
} hi_mapi_disp_cmd;
【成员】
| 成员名称 | 描述 |
|---|---|
HI_MAPI_DISP_CMD_VIDEO_CSC |
视频层 CSC 属性命令(值为 0),对应属性类型为 hi_mapi_disp_csc_attr_ex。 |
HI_MAPI_DISP_CMD_GRAPHIC_CSC |
图形层 CSC 属性命令(值为 1),对应属性类型为 hi_mapi_disp_csc_attr_ex。 |
HI_MAPI_DISP_CMD_BUTT |
枚举上界哨兵,不可使用。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_disp_csc_attr_ex;hi_mapi_disp_set_attr_ex、hi_mapi_disp_get_attr_ex。
23 hi_mapi_disp_window_cmd
【说明】
定义窗口扩展属性命令枚举,用于 hi_mapi_disp_set_window_attr_ex / hi_mapi_disp_get_window_attr_ex。
【定义】
typedef enum {
HI_MAPI_DISP_WINDOW_CMD_ROTATE,
HI_MAPI_DISP_WINDOW_CMD_ASPECTRATIO,
HI_MAPI_DISP_WINDOW_CMD_BUTT
} hi_mapi_disp_window_cmd;
【成员】
| 成员名称 | 描述 |
|---|---|
HI_MAPI_DISP_WINDOW_CMD_ROTATE |
窗口旋转命令(值为 0),对应属性类型为 hi_mapi_disp_window_rotate。 |
HI_MAPI_DISP_WINDOW_CMD_ASPECTRATIO |
窗口宽高比命令(值为 1),对应属性类型为 hi_mapi_disp_window_aspect_ratio。 |
HI_MAPI_DISP_WINDOW_CMD_BUTT |
枚举上界哨兵,不可使用。 |
【注意事项】 无
【相关数据类型及接口】
hi_mapi_disp_window_rotate、hi_mapi_disp_window_aspect_ratio;hi_mapi_disp_set_window_attr_ex、hi_mapi_disp_get_window_attr_ex。
5 错误码
模块编号
mod=7,错误码基址0xA3078000。
| 错误代码 | 宏定义 | 描述 |
|---|---|---|
0xA3078001 |
HI_MAPI_DISP_EINVALID_DEVID |
设备号无效。 |
0xA3078002 |
HI_MAPI_DISP_EINVALID_CHNID |
通道号无效。 |
0xA3078006 |
HI_MAPI_DISP_ENULL_PTR |
空指针。 |
0xA3078008 |
HI_MAPI_DISP_ENOT_SUPPORT |
不支持的操作。 |
0xA3078010 |
HI_MAPI_DISP_ENOTREADY |
系统未就绪。 |