视频输出(4.4--4.5)¶
数据类型¶
视频输出相关数据类型定义如下:
OT_VO_MAX_PHYS_DEV_NUM:定义视频输出物理设备最大个数。
OT_VO_MAX_VIRT_DEV_NUM:定义视频输出虚拟设备最大个数。
OT_VO_MAX_CAS_DEV_NUM:定义视频输出级联设备最大个数。
OT_VO_MAX_DEV_NUM:定义视频输出设备最大个数。
OT_VO_VIRT_DEV_0:定义虚拟设备0的设备号。
OT_VO_VIRT_DEV_1:定义虚拟设备1的设备号。
OT_VO_VIRT_DEV_2:定义虚拟设备2的设备号。
OT_VO_VIRT_DEV_3:定义虚拟设备3的设备号。
OT_VO_CAS_DEV_1:定义级联设备1的设备号。
OT_VO_CAS_DEV_2:定义级联设备2的设备号。
OT_VO_MAX_PHYS_VIDEO_LAYER_NUM:定义视频输出物理视频层最大个数。
OT_VO_MAX_GFX_LAYER_NUM:定义视频输出图形层最大个数。
OT_VO_MAX_PHYS_LAYER_NUM:定义视频输出物理视频层和图形层最大个数。
OT_VO_MAX_LAYER_NUM:定义所有视频层和图形层最大个数。
OT_VO_MAX_LAYER_IN_DEV:定义每个设备中最大的(视频)层数。
OT_VO_LAYER_V0:定义视频层0的层号。
OT_VO_LAYER_V1:定义视频层1的层号。
OT_VO_LAYER_V2:定义视频层2的层号。
OT_VO_LAYER_V3:定义视频层3的层号。
OT_VO_LAYER_G0:定义图形层0的层号。
OT_VO_LAYER_G1:定义图形层1的层号。
OT_VO_LAYER_G2:定义图形层2的层号。
OT_VO_LAYER_G3:定义图形层3的层号。
OT_VO_LAYER_G4:定义图形层4的层号。
ot_vo_get_virt_layer:定义获取虚拟设备对应的虚拟视频层号宏。
ot_vo_get_cas_layer:定义获取级联设备对应的级联设备视频层号宏。
OT_VO_MAX_PRIORITY:定义视频层最大优先级。
OT_VO_MIN_TOLERATE:定义最小的播放容忍度。
OT_VO_MAX_TOLERATE:定义最大的播放容忍度。
OT_VO_MAX_CHN_NUM:定义通道最大个数。
OT_VO_MIN_CHN_WIDTH:定义通道最小宽度。
OT_VO_MIN_CHN_HEIGHT:定义通道最小高度。
OT_VO_MAX_IMG_WIDTH:定义VO处理图像最大宽度。
OT_VO_MAX_IMG_HEIGHT:定义VO处理图像最大高度。
OT_VO_MAX_ZOOM_RATIO:定义最大缩放比例。
OT_VO_MAX_NODE_NUM:定义最大节点个数。
OT_VO_MAX_WBC_NUM:定义回写设备最大个数。
OT_VO_MAX_CAS_PATTERN:定义最大的级联样式。
OT_VO_MAX_CAS_POS_32RGN:定义32区域最大的级联位置。
OT_VO_MAX_CAS_POS_64RGN:定义64区域最大的级联位置。
ot_vo_dev:定义设备号。
ot_vo_layer:定义视频层号。
ot_vo_chn:定义通道号。
ot_vo_wbc:定义回写通路号。
ot_vo_intf_type:定义接口类型。
ot_vo_intf_sync:定义时序类型。
ot_vo_sync_info:定义时序信息。
ot_vo_pub_attr:定义视频输出设备属性结构体。
ot_vo_dev_param:定义VO视频输出设备参数结构体。
ot_vo_mod_param:VO模块参数。
ot_vo_clk_src:VO设备的时钟源类型。
ot_vo_fixed_clk:VO固定时钟频点类型。
ot_vo_pll:用户接口时序PLL信息,用于配置PLL.
ot_vo_user_sync_attr:用户接口时序属性,包括配置时钟源类型、时钟大小(时钟源输出的大小)配置信息。
ot_vo_user_sync_info:用户接口时序信息,包括配置时钟源类型、时钟大小、时钟分频比和时钟相位。
ot_vo_less_buf_attr:VO模块省BUF属性参数。
ot_vo_user_notify_attr:VO模块用户通知属性参数。
ot_vo_intf_plug_status:定义VGA/CVBS接口连接状态类型。
ot_vo_intf_status:定义VGA/CVBS接口状态结构体。
ot_vo_csc_matrix:定义CSC转换矩阵。
ot_vo_csc:定义图像输出效果结构体。
ot_vo_vga_param:定义VGA图像输出效果结构体。
ot_vo_hdmi_param:定义HDMI图像输出效果结构体。
ot_vo_rgb_param:定义RGB图像输出效果结构体。
ot_vo_clk_edge:定义时钟单沿双沿类型。
ot_vo_bt_param:定义BT.1120或BT.656图像输出效果结构体。
ot_vo_mipi_param:定义MIPI图像输出效果结构体。
ot_vo_partition_mode:定义视频层分割模式枚举类型。
ot_vo_video_layer_attr:定义视频层属性结构体。
ot_vo_layer_param:定义视频层参数,用于调整视频层内视频内容的显示效果。
ot_vo_chn_attr:定义视频输出通道属性结构体。
ot_vo_chn_param:定义视频输出通道参数(幅型比)结构体。
ot_vo_zoom_in_type:定义局部放大类型。
ot_vo_zoom_ratio:定义按比例局部放大结构体。
ot_vo_zoom_attr:定义局部放大属性结构体。
ot_vo_border:定义边框属性结构体。
ot_vo_mirror_mode:定义通道的镜像类型。
ot_vo_chn_status:定义视频输出通道状态结构体。
ot_vo_wbc_attr:定义视频回写的属性。
ot_vo_wbc_mode:定义视频回写的模式。
ot_vo_wbc_src_type:定义视频回写源的类型。
ot_vo_wbc_src:定义视频回写源。
ot_vo_cas_mode:定义级联的单路双路模式。
ot_vo_cas_data_transmission_mode:定义级联的单双沿数据传输模式。
ot_vo_cas_rgn:定义级联的区域类型
ot_vo_cas_attr:定义级联属性。
ot_vo_export_callback:定义中断回调通知函数结构。
ot_vo_export_symbol:定义注册中断回调函数结构体。
ot_vo_register_export_callback:定义注册中断回调钩子函数。
OT_VO_MAX_PHYS_DEV_NUM¶
【说明】
定义视频输出物理设备最大个数。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS626V100:
#define OT_VO_MAX_PHYS_DEV_NUM 3
SS928V100:
#define OT_VO_MAX_PHYS_DEV_NUM 2
【解决方案差异】
【注意事项】
SS522V101不支持DHD1。
【相关数据类型及接口】
无。
OT_VO_MAX_VIRT_DEV_NUM¶
【说明】
定义视频输出虚拟设备最大个数。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS928V100/SS626V100:
#define OT_VO_MAX_VIRT_DEV_NUM 32
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_MAX_CAS_DEV_NUM¶
【说明】
定义视频输出级联扩展设备最大个数。
【定义】
SS528V100:
#define OT_VO_MAX_CAS_DEV_NUM 2
SS625V100/SS524V100/SS522V101/SS928V100/SS626V100:
#define OT_VO_MAX_CAS_DEV_NUM 0
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_MAX_DEV_NUM¶
【说明】
定义视频输出设备最大个数。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS928V100/SS626V100:
#define OT_VO_MAX_DEV_NUM (OT_VO_MAX_PHYS_DEV_NUM + OT_VO_MAX_VIRT_DEV_NUM + OT_VO_MAX_CAS_DEV_NUM)
【解决方案差异】
最多(OT_VO_MAX_PHYS_DEV_NUM + OT_VO_MAX_VIRT_DEV_NUM + OT_VO_MAX_CAS_DEV_NUM) 37个设备 |
|
最多(OT_VO_MAX_PHYS_DEV_NUM + OT_VO_MAX_VIRT_DEV_NUM + OT_VO_MAX_CAS_DEV_NUM) 35个设备 |
|
最多(OT_VO_MAX_PHYS_DEV_NUM + OT_VO_MAX_VIRT_DEV_NUM + OT_VO_MAX_CAS_DEV_NUM) 35个设备 |
|
最多(OT_VO_MAX_PHYS_DEV_NUM + OT_VO_MAX_VIRT_DEV_NUM + OT_VO_MAX_CAS_DEV_NUM) 34个设备 |
|
最多(OT_VO_MAX_PHYS_DEV_NUM + OT_VO_MAX_VIRT_DEV_NUM + OT_VO_MAX_CAS_DEV_NUM) 35个设备 |
【注意事项】
SS522V101不支持DHD1。
【相关数据类型及接口】
无。
OT_VO_VIRT_DEV_0¶
【说明】
定义虚拟设备0的设备号。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS626V100:
#define OT_VO_VIRT_DEV_0 3
SS928V100:
#define OT_VO_VIRT_DEV_0 2
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_VIRT_DEV_1¶
【说明】
定义虚拟设备1的设备号。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS626V100:
#define OT_VO_VIRT_DEV_1 4
SS928V100:
#define OT_VO_VIRT_DEV_1 3
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_VIRT_DEV_2¶
【说明】
定义虚拟设备2的设备号。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS626V100:
#define OT_VO_VIRT_DEV_2 5
SS928V100:
#define OT_VO_VIRT_DEV_2 4
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_VIRT_DEV_3¶
【说明】
定义虚拟设备3的设备号。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS626V100:
#define OT_VO_VIRT_DEV_3 6
SS928V100:
#define OT_VO_VIRT_DEV_3 5
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_CAS_DEV_1¶
【说明】
定义级联设备1的设备号。
【定义】
SS528V100:
#define OT_VO_CAS_DEV_1 35
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_CAS_DEV_2¶
【说明】
定义级联设备2的设备号。
【定义】
SS528V100
#define OT_VO_CAS_DEV_2 36
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_MAX_PHYS_VIDEO_LAYER_NUM¶
【说明】
定义物理视频层最大个数。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS626V100:
#define OT_VO_MAX_PHYS_VIDEO_LAYER_NUM 4
SS928V100:
#define OT_VO_MAX_PHYS_VIDEO_LAYER_NUM 3
【解决方案差异】
【注意事项】
SS522V101不支持VHD1。
【相关数据类型及接口】
无。
OT_VO_MAX_GFX_LAYER_NUM¶
【说明】
定义图形层最大个数。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101:
#define OT_VO_MAX_GFX_LAYER_NUM 4
SS928V100:
#define OT_VO_MAX_GFX_LAYER_NUM 3
SS626V100:
#define OT_VO_MAX_GFX_LAYER_NUM 5
【解决方案差异】
【注意事项】
SS522V101不支持G1。
【相关数据类型及接口】
无。
OT_VO_MAX_PHYS_LAYER_NUM¶
【说明】
定义物理视频层和图形层最大个数。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS928V100/SS626V100:
#define OT_VO_MAX_PHYS_LAYER_NUM (OT_VO_MAX_PHYS_VIDEO_LAYER_NUM + OT_VO_MAX_GFX_LAYER_NUM)
【解决方案差异】
【注意事项】
SS522V101不支持VHD1和G1。
【相关数据类型及接口】
无。
OT_VO_MAX_LAYER_NUM¶
【说明】
定义所有视频层和图形层最大个数。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS928V100/SS626V100:
#define OT_VO_MAX_LAYER_NUM (OT_VO_MAX_PHYS_LAYER_NUM + OT_VO_MAX_VIRT_DEV_NUM + OT_VO_MAX_CAS_DEV_NUM)
【解决方案差异】
最多(OT_VO_MAX_PHYS_LAYER_NUM + OT_VO_MAX_VIRT_DEV_NUM + OT_VO_MAX_CAS_DEV_NUM)共42个视频层和图形层。 |
|
最多(OT_VO_MAX_PHYS_LAYER_NUM + OT_VO_MAX_VIRT_DEV_NUM + OT_VO_MAX_CAS_DEV_NUM)共40个视频层和图形层。 |
|
最多(OT_VO_MAX_PHYS_LAYER_NUM + OT_VO_MAX_VIRT_DEV_NUM + OT_VO_MAX_CAS_DEV_NUM)共40个视频层和图形层。 |
|
最多(OT_VO_MAX_PHYS_LAYER_NUM + OT_VO_MAX_VIRT_DEV_NUM + OT_VO_MAX_CAS_DEV_NUM)共38个视频层和图形层。 |
|
最多(OT_VO_MAX_PHYS_LAYER_NUM + OT_VO_MAX_VIRT_DEV_NUM + OT_VO_MAX_CAS_DEV_NUM)共41个视频层和图形层。 |
【注意事项】
SS522V101不支持VHD1和G1。
【相关数据类型及接口】
无。
OT_VO_MAX_LAYER_IN_DEV¶
【说明】
每个设备上最大的视频层数。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS928V100/SS626V100:
#define OT_VO_MAX_LAYER_IN_DEV 2
【解决方案差异】
【注意事项】
仅指视频层,不包括图形层。
【相关数据类型及接口】
无。
OT_VO_LAYER_V0¶
【说明】
定义视频层0的层号。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS928V100/SS626V100:
#define OT_VO_LAYER_V0 0
【解决方案差异】
SS528V100/SS625V100/SS524V100/SS522V101 /SS928V100/SS626V100 |
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_LAYER_V1¶
【说明】
定义视频层1的层号。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS928V100/SS626V100:
#define OT_VO_LAYER_V1 1
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_LAYER_V2¶
【说明】
定义视频层2的层号。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS928V100/SS626V100:
#define OT_VO_LAYER_V2 2
【解决方案差异】
SS528V100/SS625V100/SS524V100/SS522V101 /SS928V100/SS626V100 |
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_LAYER_V3¶
【说明】
定义视频层3的层号。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS626V100:
#define OT_VO_LAYER_V3 3
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_LAYER_G0¶
【说明】
定义图形层0的层号。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS626V100:
#define OT_VO_LAYER_G0 4
SS928V100:
#define OT_VO_LAYER_G0 3
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_LAYER_G1¶
【说明】
定义图形层1的层号。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS626V100:
#define OT_VO_LAYER_G1 5
SS928V100:
#define OT_VO_LAYER_G1 4
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_LAYER_G2¶
【说明】
定义图形层2的层号。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS626V100:
#define OT_VO_LAYER_G2 6
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_LAYER_G3¶
【说明】
定义图形层3的层号。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS626V100:
#define OT_VO_LAYER_G3 7
SS928V100:
#define OT_VO_LAYER_G3 5
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_LAYER_G4¶
【说明】
定义图形层4的层号。
【定义】
SS626V100:
#define OT_VO_LAYER_G4 8
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_vo_get_virt_layer¶
【说明】
定义获取虚拟设备对应的虚拟视频层号宏。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101:
#define ot_vo_get_virt_layer(vo_virt_dev) ((vo_virt_dev) + 5)
SS928V100:
#define ot_vo_get_virt_layer(vo_virt_dev) ((vo_virt_dev) + 4)
SS626V100:
#define ot_vo_get_virt_layer(vo_virt_dev) ((vo_virt_dev) + 6)
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_vo_get_cas_layer¶
【说明】
定义获取级联设备对应的级联设备视频层号宏。
【定义】
SS528V100:
#define ot_vo_get_cas_layer(vo_cas_dev) ((vo_cas_dev) + 5)
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_MAX_PRIORITY¶
【说明】
定义视频层和图形层最大优先级。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS626V100:
#define OT_VO_MAX_PRIORITY 4
SS928V100:
#define OT_VO_MAX_PRIORITY 3
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_MIN_TOLERATE¶
【说明】
定义最小的播放容忍度,单位是毫秒(ms)。
【定义】
#define OT_VO_MIN_TOLERATE 1
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_MAX_TOLERATE¶
【说明】
定义最大的播放容忍度,单位是毫秒(ms)。
【定义】
#define OT_VO_MAX_TOLERATE 100000
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_MAX_CHN_NUM¶
【说明】
定义通道最大个数。
【定义】
SS528V100/SS524V100/SS522V101/SS928V100:
#define OT_VO_MAX_CHN_NUM 64
SS625V100:
#define OT_VO_MAX_CHN_NUM 49
SS626V100:
#define OT_VO_MAX_CHN_NUM 128
【解决方案差异】
【注意事项】
API接口的通道号检查时最大通道数OT_VO_MAX_CHN_NUM使用以上的【解决方案差异】中的值。
【相关数据类型及接口】
无。
OT_VO_MIN_CHN_WIDTH¶
【说明】
定义通道最小宽度。
【定义】
#define OT_VO_MIN_CHN_WIDTH 32
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_MIN_CHN_HEIGHT¶
【说明】
定义通道最小高度。
【定义】
#define OT_VO_MIN_CHN_HEIGHT 32
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_MAX_IMG_WIDTH¶
【说明】
定义VO处理图像最大宽度。
【定义】
#define OT_VO_MAX_IMG_WIDTH 16384
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_MAX_IMG_HEIGHT¶
【说明】
定义VO处理图像最大高度。
【定义】
#define OT_VO_MAX_IMG_HEIGHT 8192
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_MAX_ZOOM_RATIO¶
【说明】
定义最大缩放比例。
【定义】
#define OT_VO_MAX_ZOOM_RATIO 1000
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_MAX_NODE_NUM¶
【说明】
定义最大节点个数。
【定义】
#define OT_VO_MAX_NODE_NUM 16
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_MAX_WBC_NUM¶
【说明】
定义回写设备最大个数。
【定义】
SS528V100/SS625V100/SS524V100/SS522V101/SS626V100:
#define VO_MAX_WBC_NUM 1
SS928V100:
#define VO_MAX_WBC_NUM 0
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_MAX_CAS_PATTERN¶
【说明】
定义最大的级联样式。
【定义】
SS528V100:
#define OT_VO_MAX_CAS_PATTERN 128
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_MAX_CAS_POS_32RGN¶
【说明】
定义32区域最大的级联位置。
【定义】
SS528V100:
#define OT_VO_MAX_CAS_POS_32RGN 32
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VO_MAX_CAS_POS_64RGN¶
【说明】
定义64区域最大的级联位置。
【定义】
SS528V100:
#define OT_VO_MAX_CAS_POS_64RGN 64
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_vo_dev¶
【说明】
定义设备号。
【定义】
typedef td_s32 ot_vo_dev;
【成员】
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
ot_vo_layer¶
【说明】
定义视频层号。
【定义】
typedef td_s32 ot_vo_layer;
【成员】
|
2:OT_VO_LAYER_V2,即视频层2,用作PIP层; |
【解决方案差异】
【注意事项】
无。
【相关数据类型及接口】
ot_vo_chn¶
【说明】
定义通道号。
【定义】
typedef td_s32 ot_vo_chn;
【解决方案差异】
无。
【注意事项】
无。
【相关数据类型及接口】
ot_vo_wbc¶
【说明】
定义回写通路号。
【定义】
typedef td_s32 ot_vo_wbc;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_vo_enable_wbc
ot_vo_intf_type¶
【说明】
定义接口类型。
【定义】
#define OT_VO_INTF_CVBS (0x01L << 0)
#define OT_VO_INTF_VGA (0x01L << 1)
#define OT_VO_INTF_BT656 (0x01L << 2)
#define OT_VO_INTF_BT1120 (0x01L << 3)
#define OT_VO_INTF_HDMI (0x01L << 4)
#define OT_VO_INTF_RGB_6BIT (0x01L << 5)
#define OT_VO_INTF_RGB_8BIT (0x01L << 6)
#define OT_VO_INTF_RGB_16BIT (0x01L << 7)
#define OT_VO_INTF_RGB_18BIT (0x01L << 8)
#define OT_VO_INTF_RGB_24BIT (0x01L << 9)
#define OT_VO_INTF_MIPI (0x01L << 10)
#define OT_VO_INTF_MIPI_SLAVE (0x01L << 11)
#define OT_VO_INTF_HDMI1 (0x01L << 12)
typedef td_u32 ot_vo_intf_type;
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_vo_set_pub_attr
ot_vo_intf_sync¶
【说明】
定义时序类型枚举。
【定义】
typedef enum {
OT_VO_OUT_PAL = 0,
OT_VO_OUT_NTSC = 1,
OT_VO_OUT_960H_PAL = 2,
OT_VO_OUT_960H_NTSC = 3,
OT_VO_OUT_640x480_60 = 4,
OT_VO_OUT_480P60 = 5,
OT_VO_OUT_576P50 = 6,
OT_VO_OUT_800x600_60 = 7,
OT_VO_OUT_1024x768_60 = 8,
OT_VO_OUT_720P50 = 9,
OT_VO_OUT_720P60 = 10,
OT_VO_OUT_1280x800_60 = 11,
OT_VO_OUT_1280x1024_60 = 12,
OT_VO_OUT_1366x768_60 = 13,
OT_VO_OUT_1400x1050_60 = 14,
OT_VO_OUT_1440x900_60 = 15,
OT_VO_OUT_1680x1050_60 = 16,
OT_VO_OUT_1080P24 = 17,
OT_VO_OUT_1080P25 = 18,
OT_VO_OUT_1080P30 = 19,
OT_VO_OUT_1080I50 = 20,
OT_VO_OUT_1080I60 = 21,
OT_VO_OUT_1080P50 = 22,
OT_VO_OUT_1080P60 = 23,
OT_VO_OUT_1600x1200_60 = 24,
OT_VO_OUT_1920x1200_60 = 25,
OT_VO_OUT_1920x2160_30 = 26,
OT_VO_OUT_2560x1440_30 = 27,
OT_VO_OUT_2560x1440_60 = 28,
OT_VO_OUT_2560x1600_60 = 29,
OT_VO_OUT_3840x2160_24 = 30,
OT_VO_OUT_3840x2160_25 = 31,
OT_VO_OUT_3840x2160_30 = 32,
OT_VO_OUT_3840x2160_50 = 33,
OT_VO_OUT_3840x2160_60 = 34,
OT_VO_OUT_4096x2160_24 = 35,
OT_VO_OUT_4096x2160_25 = 36,
OT_VO_OUT_4096x2160_30 = 37,
OT_VO_OUT_4096x2160_50 = 38,
OT_VO_OUT_4096x2160_60 = 39,
OT_VO_OUT_7680x4320_30 = 40,
OT_VO_OUT_240x320_50 = 41,
OT_VO_OUT_320x240_50 = 42,
OT_VO_OUT_240x320_60 = 43,
OT_VO_OUT_320x240_60 = 44,
OT_VO_OUT_800x600_50 = 45,
OT_VO_OUT_720x1280_60 = 46,
OT_VO_OUT_1080x1920_60 = 47,
OT_VO_OUT_USER = 48,
OT_VO_OUT_BUTT,
} ot_vo_intf_sync;
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_vo_set_pub_attr
ot_vo_sync_info¶
【说明】
定义时序信息结构体。
【定义】
typedef struct {
td_bool syncm;
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;
} ot_vo_sync_info;
【成员】
表 1 时序像素时钟计算公式
(hbb+hact+hfb)*(vbb+vact+vfb +bvbb+bvact+bvfb) * frame_rate / 1000000 |
【注意事项】
如图1所示,配置消隐区时,水平消隐后肩hbb已经包含水平同步信号的宽度hpw;垂直消隐后肩vbb已经包含垂直同步信号高度vpw(隔行时,底场垂直消隐后肩bvbb已经包含vpw)。
内部只做以下参数检查:
hact、hbb、hfb、vbb、vfb、hpw、vpw要求不能为0。
vact要求大于等于100。
idv、ihs、ivs只能为TD_TRUE或TD_FALSE。
在iop为TD_FALSE时,要求bvact、bvbb和bvfb不能为0。用户须自行保证时序配置的正确性。
【相关数据类型及接口】
ss_mpi_vo_set_pub_attr
ot_vo_pub_attr¶
【说明】
定义视频输出公共属性结构体。
【定义】
typedef struct {
td_u32 bg_color;
ot_vo_intf_type intf_type;
ot_vo_intf_sync intf_sync;
ot_vo_sync_info sync_info;
} ot_vo_pub_attr;
【成员】
【注意事项】
对于SS626V100,配置为OT_VO_OUT_7680x4320_30时序时,背景色配置无效,默认显示为黑色。
虚拟设备的接口类型为无用参数,不做参数检查。虚拟设备支持的时序为[OT_VO_OUT_PAL, OT_VO_OUT_USER]。
当接口时序配置为OT_VO_OUT_USER时,sync_info定义的时序结构才会生效,表示用户自定义的时序结构。
支持多接口同源输出,解决方案各设备支持情况见表1。同时使用多个接口类型示意:intf_type = OT_VO_INTF_BT1120 | OT_VO_INTF_HDMI。
输出时序支持情况:同源输出接口支持的时序的交集。
接口支持的时序范围见表2。
互斥使用的接口列表:列表中的接口,同一时刻仅能使用其中一种,见表3。
所有接口均支持用户时序。
配置设备属性在设备下一次使能时生效。
支持BT.1120接口输出时序OT_VO_OUT_3840x2160_24到OT_VO_OUT_3840x2160_30时序默认使用双沿148.5Mhz输出,其他时序默认使用单沿输出,对接的外设转换设备时要注意适配。
对于SS626V100,配置为OT_VO_OUT_7680x4320_30时序时,请参考《SUHD开发参考》。
表 1 多接口同源输出
表 2 接口支持时序范围
表 3 互斥使用的接口列表
【相关数据类型及接口】
ss_mpi_vo_set_pub_attr
ot_vo_dev_param¶
【说明】
定义VO视频输出设备参数结构体,用于配置VO的透传标记。
【定义】
typedef struct {
td_bool vo_bypass_en;
} ot_vo_dev_param;
【成员】
【注意事项】
无
【相关数据类型及接口】
ss_mpi_vo_set_dev_param
ot_vo_mod_param¶
【说明】
VO模块参数。
【定义】
typedef struct {
td_bool exit_dev_en;
td_bool dev_clk_ext_en;
td_bool vga_detect_en;
td_u32 vdac_detect_cycle;
td_bool cal_cost_time_en;
} ot_vo_mod_param;
【成员】
模块参数,表示是否由用户自己开启设备接口时钟。(默认TD_FALSE) |
|
【差异说明】
【注意事项】
exit_dev_en标记表示通过ss_mpi_sys_exit(参考“系统控制”章节)退出VO时是否禁用VO设备。
dev_clk_ext_en主要用于多片视频同步场景,此场景下dev_clk_ext_en置TRUE,使能设备时并不开启接口时钟,当设备时钟开启也会关闭设备时钟,由用户统一在外部对多个设备同时开启接口时钟来达到时钟同步的效果。特别说明,对于SS528V100/SS625V100/SS524V100/SS522V101, 驱动加载时需要默认开启和保持DSD设备时钟开启,对于DSD设备可以设置时钟寄存器来关闭时钟开关,对于SS626V100,DSD设备时钟默认不会开启。
【相关数据类型及接口】
无。
ot_vo_clk_src¶
【说明】
VO设备的时钟源类型。
【定义】
typedef enum {
OT_VO_CLK_SRC_PLL = 0,
OT_VO_CLK_SRC_LCDMCLK = 1,
OT_VO_CLK_SRC_PLL_FOUT4 = 2,
OT_VO_CLK_SRC_FIXED = 3,
OT_VO_CLK_SRC_BUTT,
} ot_vo_clk_src;
【成员】
固定频点类型时钟源,参考范围见ot_vo_fixed_clk。 |
【注意事项】
时钟源特性说明:
频点大小:PLL类型时钟源能够输出较大频点,适合用来输出1080P60、3840x2160_60等较大时序;LCD分频器时钟源和PLL FOUT4类型时钟源能够输出较小频点,适合用来输出中小型LCD屏幕的时序。
频点精度:LCD分频器时钟源可能出现频率大小抖动等不稳定的现象;在需要稳定频率或时序输出时,如果支持所需频点,可考虑使用固定频点类型时钟源。
【相关数据类型及接口】
无。
ot_vo_fixed_clk¶
【说明】
VO固定时钟频点类型。
【定义】
typedef enum {
OT_VO_FIXED_CLK_148_5M = 0,
OT_VO_FIXED_CLK_134_4M = 1,
OT_VO_FIXED_CLK_108M = 2,
OT_VO_FIXED_CLK_74_25M = 3,
OT_VO_FIXED_CLK_64M = 4,
OT_VO_FIXED_CLK_54M = 5,
OT_VO_FIXED_CLK_37_125M = 6,
OT_VO_FIXED_CLK_13_5M = 7,
OT_VO_FIXED_CLK_BUTT,
} ot_vo_fixed_clk;
【成员】
【注意事项】
无
【相关数据类型及接口】
无。
ot_vo_pll¶
【说明】
用户接口时序PLL信息:用于配置PLL。
【定义】
typedef struct {
td_u32 fb_div;
td_u32 frac;
td_u32 ref_div;
td_u32 post_div1;
td_u32 post_div2;
} ot_vo_pll;
【成员】
【解决方案差异】
【注意事项】
该数据项仅用于配置【成员】表所列系数。
fb_div、frac、ref_div需满足:PLL引脚FOUTVCO范围在[800MHz, 3200MHz],FOUTVCO=FREF x (fb_div + frac / 2^24) / ref_div (FREF值固定为24)。
post_div1、post_div2需满足post_div1 >= post_div2。
PLL系数计算和配置方法参考以下步骤:
推导PLL输出大小。PLL系数用于计算PLL时钟源的输出大小,用户需要根据时序的像素时钟(见时序像素时钟计算公式表)、时钟分频比(见时钟分频比配置方法表)、前置分频比(见前置分频配置方法表)、推算出PLL的输出大小,可参考时钟源时钟大小配置方法表进行推导,时钟源、前置分频、时钟分频比拓扑结构如像素时钟简要示意图所示。
确认PLL输出到VO的Pin脚。PLL时钟源具体计算方法和Pin脚参见对应芯片手册的系统章节“PLL频率计算方法”。
Tableau 1 PLL和PLL FOUT4频率计算方法(以SS528V100为例)
以配置PLL时钟源输出600MHz为例,目标是600MHz。
确认PLL输出到VO的Pin脚:FOUTPOSTDIV,即FOUTPOSTDIV=600MHz。
配置FOUTPOSTDIV为FOUTVCO的一半,根据FOUTPOSTDIV= FOUTVCO / (post_div1 x post_div2),post_div2=1,post_div1=2。
配置FOUTVCO输出1200MHz,根据FREF x ( fb_div + frac/ 2^24) / ref_div=1200MHz,其中FREF=24MHz,若取ref_div=1,计算出fb_div=50,frac=0
将步骤2中计算出来的fb_div,frac,ref_div,post_div1,post_div2填充到ot_vo_pll中,然后使用接口ss_mpi_vo_set_user_sync_info配置PLL。
【相关数据类型及接口】
ot_vo_user_sync_attr¶
【说明】
用户接口时序属性,包括配置时钟源类型、时钟大小(时钟源输出的大小src_clk)配置信息。
【定义】
typedef struct {
ot_vo_clk_src clk_src;
union {
ot_vo_pll vo_pll;
td_u32 lcd_m_clk_div;
ot_vo_fixed_clk fixed_clk;
};
} ot_vo_user_sync_attr;
【成员】
【解决方案差异】
【注意事项】
如果是PLL或PLL FOUT4类型的时钟源,频率计算方法见PLL和PLL FOUT4频率计算方法(以SS528V100为例)表,如果是LCD分频器类型时钟源,其分频系数lcd_m_clk_div计算方法见LCDMCLK分频系数lcd_m_clk_div计算方法表。
表 1 LCDMCLK分频系数lcd_m_clk_div计算方法
假定目标频率src_clk(MHz),则分频系数lcd_m_clk_div = (src_clk/1188) * 2^27;src_clk最大75MHz |
表 2 时钟源时钟大小配置方法
注:pixel_clk表示时序的像素时钟大小,dev_div和pre_div见ot_vo_user_sync_info。
仅在成员clk_src 为OT_VO_CLK_SRC_PLL或OT_VO_CLK_SRC_PLL_FOUT4时,联合体内vo_pll成员有效。
仅在成员clk_src 为OT_VO_CLK_SRC_LCDMCLK时,联合体内lcd_m_clk_div成员有效。
仅在成员clk_src 为OT_VO_CLK_SRC_FIXED时,联合体内fixed_clk成员有效。
lcd_m_clk_div范围:(0, 8473341]。
【相关数据类型及接口】
ot_vo_user_sync_info¶
【说明】
用户接口时序信息,包括配置时钟源类型、时钟大小、时钟分频比和时钟相位,拓扑关系参见像素时钟简要示意图。
【定义】
typedef struct {
ot_vo_user_sync_attr user_sync_attr;
td_u32 pre_div;
td_u32 dev_div;
td_bool clk_reverse_en;
} ot_vo_user_sync_info;
【成员】
【注意事项】
设备时钟分频比与解决方案、设备、接口相关,建议配置方法如时钟分频比配置方法表。
表 1 时钟分频比配置方法
只有在SS528V100/SS625V100/SS524V100/SS522V101采用HDMI(含HDMI同源)接口输出时设备前置分频属性需要进行配置,其他接口输出时前置分频属性配置为1(不分频);而对于SS626V100/SS928V100的所有接口,前置分频属性必须配置为1(不分频)。——因此,从图1可以知道,对于同一个时序,HDMI接口(含HDMI同源)输出与非HDMI接口输出需要分别配置出两套不同的时钟源参数。根据像素时钟频率所在的范围来配置前置分频属性值。由于有前置分频的存在,锁相环配置时钟时需要相应的增加倍数。
表 2 前置分频配置方法
时钟的相位反向clk_reverse_en可根据外设的要求进行配置,只对BT.1120/BT.656/RGB接口生效。非用户时序下的默认配置如相位反向clk_reverse_en默认配置表。
表 3 相位反向clk_reverse_en默认配置
以下是用户时序信息推导方法
表 4 用户时序信息推导方法
ot_vo_intf_sync intf_sync = { |
|
pixel_clk=148.5MHz。从表1可知。 |
|
从表1可知:dev_div =1 |
|
从表2可知,pre_div=4;不含HDMI输出时,配为1即可。 |
|
从表2可知:src_clk= pre_div*pixel_clk* dev_div =594MHz |
|
clk_src = OT_VO_CLK_SRC_PLL(根据ot_vo_user_sync_attr中列出的解决方案和设备支持的时钟源进行选择,有多种时钟源可以选择时,可根据频点大小和时钟源特性进行选择,如一般LCD接口输出频点较小(小于75MHz),可使用PLL FOUT4类型或LCD分频器类型时钟源) |
|
|
从表1可知: |
|
|
从表1可知。 |
|
【相关数据类型及接口】
ot_vo_less_buf_attr¶
【说明】
VO模块省buffer属性参数。
【定义】
typedef struct {
td_bool enable;
td_u32 vtth;
} ot_vo_less_buf_attr;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_vo_user_notify_attr¶
【说明】
VO模块用户通知属性参数。
【定义】
typedef struct {
td_bool enable;
td_u32 vtth;
} ot_vo_user_notify_attr;
【成员】
【注意事项】
无
【相关数据类型及接口】
无
ot_vo_intf_plug_status¶
【说明】
定义VGA/CVBS接口连接状态类型。
【定义】
typedef enum {
OT_VO_INTF_STATUS_NO_PLUG = 0,
OT_VO_INTF_STATUS_PLUG = 1,
OT_VO_INTF_STATUS_BUTT,
} ot_vo_intf_plug_status;
【成员】
【注意事项】
无
【相关数据类型及接口】
ss_mpi_vo_query_intf_status
ot_vo_intf_status¶
【说明】
定义VGA/CVBS接口状态结构体。
【定义】
typedef struct {
ot_vo_intf_plug_status plug_status;
} ot_vo_intf_status;
【成员】
【注意事项】
无
【相关数据类型及接口】
ss_mpi_vo_query_intf_status
ot_vo_csc_matrix¶
【说明】
定义CSC转换矩阵。
【定义】
typedef enum {
OT_VO_CSC_MATRIX_BT601LIMIT_TO_BT601LIMIT = 0,
OT_VO_CSC_MATRIX_BT601FULL_TO_BT601LIMIT = 1,
OT_VO_CSC_MATRIX_BT709LIMIT_TO_BT601LIMIT = 2,
OT_VO_CSC_MATRIX_BT709FULL_TO_BT601LIMIT = 3,
OT_VO_CSC_MATRIX_BT601LIMIT_TO_BT709LIMIT = 4,
OT_VO_CSC_MATRIX_BT601FULL_TO_BT709LIMIT = 5,
OT_VO_CSC_MATRIX_BT709LIMIT_TO_BT709LIMIT = 6,
OT_VO_CSC_MATRIX_BT709FULL_TO_BT709LIMIT = 7,
OT_VO_CSC_MATRIX_BT601LIMIT_TO_BT601FULL = 8,
OT_VO_CSC_MATRIX_BT601FULL_TO_BT601FULL = 9,
OT_VO_CSC_MATRIX_BT709LIMIT_TO_BT601FULL = 10,
OT_VO_CSC_MATRIX_BT709FULL_TO_BT601FULL = 11,
OT_VO_CSC_MATRIX_BT601LIMIT_TO_BT709FULL = 12,
OT_VO_CSC_MATRIX_BT601FULL_TO_BT709FULL = 13,
OT_VO_CSC_MATRIX_BT709LIMIT_TO_BT709FULL = 14,
OT_VO_CSC_MATRIX_BT709FULL_TO_BT709FULL = 15,
OT_VO_CSC_MATRIX_BT601LIMIT_TO_RGBFULL = 16,
OT_VO_CSC_MATRIX_BT601FULL_TO_RGBFULL = 17,
OT_VO_CSC_MATRIX_BT709LIMIT_TO_RGBFULL = 18,
OT_VO_CSC_MATRIX_BT709FULL_TO_RGBFULL = 19,
OT_VO_CSC_MATRIX_BT601LIMIT_TO_RGBLIMIT = 20,
OT_VO_CSC_MATRIX_BT601FULL_TO_RGBLIMIT = 21,
OT_VO_CSC_MATRIX_BT709LIMIT_TO_RGBLIMIT = 22,
OT_VO_CSC_MATRIX_BT709FULL_TO_RGBLIMIT = 23,
OT_VO_CSC_MATRIX_RGBFULL_TO_BT601LIMIT = 24,
OT_VO_CSC_MATRIX_RGBFULL_TO_BT601FULL = 25,
OT_VO_CSC_MATRIX_RGBFULL_TO_BT709LIMIT = 26,
OT_VO_CSC_MATRIX_RGBFULL_TO_BT709FULL = 27,
OT_VO_CSC_MATRIX_BUTT,
} ot_vo_csc_matrix;
【成员】
【注意事项】
无
【相关数据类型及接口】
ss_mpi_vo_set_layer_csc
ot_vo_csc¶
【说明】
定义图像输出效果结构体。
【定义】
typedef struct {
ot_vo_csc_matrix csc_matrix;
td_u32 luma;
td_u32 contrast;
td_u32 hue;
td_u32 saturation;
td_bool ex_csc_en;
} ot_vo_csc;
【成员】
【差异说明】
【注意事项】
无
【相关数据类型及接口】
ss_mpi_vo_set_layer_csc
ot_vo_vga_param¶
【说明】
定义VGA图像输出效果结构体。
【定义】
typedef struct {
ot_vo_csc csc;
td_u32 gain;
td_s32 sharpen_strength;
} ot_vo_vga_param;
【成员】
VGA的图像调节结构体,具体参考ot_vo_csc。 luma、contrast、hue、saturation取值范围:[0, 100],默认值:50。 sharpen_strength 取值范围:[0, 255]。 接口csc_matrix默认值:OT_VO_CSC_MATRIX_BT601FULL_TO_RGBFULL。可以选择: OT_VO_CSC_MATRIX_BT601LIMIT_TO_RGBFULL OT_VO_CSC_MATRIX_BT601FULL_TO_RGBFULL OT_VO_CSC_MATRIX_BT709LIMIT_TO_RGBFULL OT_VO_CSC_MATRIX_BT709FULL_TO_RGBFULL OT_VO_CSC_MATRIX_BT601LIMIT_TO_RGBLIMIT OT_VO_CSC_MATRIX_BT601FULL_TO_RGBLIMIT |
|
【差异说明】
【注意事项】
无
【相关数据类型及接口】
ss_mpi_vo_set_vga_param
ot_vo_hdmi_param¶
【说明】
定义HDMI图像输出效果结构体。
【定义】
typedef struct {
ot_vo_csc csc;
} ot_vo_hdmi_param;
【成员】
HDMI的图像调节结构体,具体参考ot_vo_csc。 luma、contrast、hue、saturation取值范围:[0, 100],默认值:50。 接口csc_matrix默认值:OT_VO_CSC_MATRIX_BT601FULL_TO_BT601FULL。可以选择: OT_VO_CSC_MATRIX_BT601LIMIT_TO_BT601LIMIT OT_VO_CSC_MATRIX_BT601FULL_TO_BT601LIMIT OT_VO_CSC_MATRIX_BT709LIMIT_TO_BT601LIMIT OT_VO_CSC_MATRIX_BT709FULL_TO_BT601LIMIT OT_VO_CSC_MATRIX_BT601LIMIT_TO_BT709LIMIT OT_VO_CSC_MATRIX_BT601FULL_TO_BT709LIMIT OT_VO_CSC_MATRIX_BT709LIMIT_TO_BT709LIMIT OT_VO_CSC_MATRIX_BT709FULL_TO_BT709LIMIT OT_VO_CSC_MATRIX_BT601LIMIT_TO_BT601FULL OT_VO_CSC_MATRIX_BT601FULL_TO_BT601FULL OT_VO_CSC_MATRIX_BT709LIMIT_TO_BT601FULL OT_VO_CSC_MATRIX_BT709FULL_TO_BT601FULL OT_VO_CSC_MATRIX_BT601LIMIT_TO_BT709FULL OT_VO_CSC_MATRIX_BT601FULL_TO_BT709FULL OT_VO_CSC_MATRIX_BT709LIMIT_TO_BT709FULL OT_VO_CSC_MATRIX_BT709FULL_TO_BT709FULL OT_VO_CSC_MATRIX_BT601LIMIT_TO_RGBFULL OT_VO_CSC_MATRIX_BT601FULL_TO_RGBFULL OT_VO_CSC_MATRIX_BT709LIMIT_TO_RGBFULL OT_VO_CSC_MATRIX_BT709FULL_TO_RGBFULL OT_VO_CSC_MATRIX_BT601LIMIT_TO_RGBLIMIT OT_VO_CSC_MATRIX_BT601FULL_TO_RGBLIMIT |
【注意事项】
无
【相关数据类型及接口】
ss_mpi_vo_set_hdmi_param
ot_vo_rgb_param¶
【说明】
定义RGB图像输出效果结构体。
【定义】
typedef struct {
ot_vo_csc csc;
td_bool rgb_inverted_en;
td_bool bit_inverted_en;
} ot_vo_rgb_param;
【成员】
【注意事项】
并行接口OT_VO_INTF_RGB_16BIT,OT_VO_INTF_RGB_18BIT,OT_VO_INTF_RGB_24BIT输出时,当rgb_inverted_en和bit_inverted_en同时配置为TD_TRUE,“RGB反向”先生效,“bit位倒序”后生效。
【相关数据类型及接口】
ss_mpi_vo_set_rgb_param
ot_vo_clk_edge¶
【说明】
定义时钟单沿双沿类型。
【定义】
typedef enum {
OT_VO_CLK_EDGE_SINGLE = 0, /* single-edge mode */
OT_VO_CLK_EDGE_DUAL, /* dual-edge mode */
OT_VO_CLK_EDGE_BUTT
} ot_vo_clk_edge;
【成员】
【注意事项】
无
【相关数据类型及接口】
无。
ot_vo_bt_param¶
【说明】
定义BT.1120或BT.656图像输出效果结构体。
【定义】
typedef struct {
td_bool yc_inverted_en;
td_bool bit_inverted_en;
ot_vo_clk_edge clk_edge;
} ot_vo_bt_param;
【成员】
“Y”,“C”分量顺序正向和反向设置,正向为YC,反向为CY,默认TD_FALSE不反向,即YC,以下描述中左为高位管脚,右为低位管脚。 |
|
数据bit位倒序,默认TD_FALSE不倒序,以下描述中左为高位管脚,右为低位管脚。 OT_VO_INTF_BT656: bit排布[7:0],bit7在高位; OT_VO_INTF_BT1120:bit排布[15:0],bit15在高位。 |
|
【差异说明】
【注意事项】
接口OT_VO_INTF_BT1120输出时,当yc_inverted_en和bit_inverted_en同时配置为TD_TRUE,“YC反向”先生效,“bit位倒序”后生效。
【相关数据类型及接口】
ss_mpi_vo_set_bt_param
ot_vo_mipi_param¶
【说明】
定义MIPI图像输出效果结构体。
【定义】
typedef struct {
ot_vo_csc csc;
} ot_vo_mipi_param;
【成员】
MIPI的图像调节结构体,具体参考ot_vo_csc。 luma、contrast、hue、saturation取值范围:[0, 100],默认值:50。 接口csc_matrix默认值:OT_VO_CSC_MATRIX_BT601FULL_TO_RGBFULL。可以选择: OT_VO_CSC_MATRIX_BT601LIMIT_TO_BT601LIMIT OT_VO_CSC_MATRIX_BT601FULL_TO_BT601LIMIT OT_VO_CSC_MATRIX_BT709LIMIT_TO_BT601LIMIT OT_VO_CSC_MATRIX_BT709FULL_TO_BT601LIMIT OT_VO_CSC_MATRIX_BT601LIMIT_TO_BT709LIMIT OT_VO_CSC_MATRIX_BT601FULL_TO_BT709LIMIT OT_VO_CSC_MATRIX_BT709LIMIT_TO_BT709LIMIT OT_VO_CSC_MATRIX_BT709FULL_TO_BT709LIMIT OT_VO_CSC_MATRIX_BT601LIMIT_TO_BT601FULL OT_VO_CSC_MATRIX_BT601FULL_TO_BT601FULL OT_VO_CSC_MATRIX_BT709LIMIT_TO_BT601FULL OT_VO_CSC_MATRIX_BT709FULL_TO_BT601FULL OT_VO_CSC_MATRIX_BT601LIMIT_TO_BT709FULL OT_VO_CSC_MATRIX_BT601FULL_TO_BT709FULL OT_VO_CSC_MATRIX_BT709LIMIT_TO_BT709FULL OT_VO_CSC_MATRIX_BT709FULL_TO_BT709FULL OT_VO_CSC_MATRIX_BT601LIMIT_TO_RGBFULL OT_VO_CSC_MATRIX_BT601FULL_TO_RGBFULL OT_VO_CSC_MATRIX_BT709LIMIT_TO_RGBFULL OT_VO_CSC_MATRIX_BT709FULL_TO_RGBFULL OT_VO_CSC_MATRIX_BT601LIMIT_TO_RGBLIMIT OT_VO_CSC_MATRIX_BT601FULL_TO_RGBLIMIT |
【注意事项】
无
【相关数据类型及接口】
ss_mpi_vo_set_mipi_param
ot_vo_partition_mode¶
【说明】
定义视频层分割处理模式。
【定义】
typedef enum {
OT_VO_PARTITION_MODE_SINGLE = 0,
OT_VO_PARTITION_MODE_MULTI = 1,
OT_VO_PARTITION_MODE_BUTT,
} ot_vo_partition_mode;
【成员】
【注意事项】
VO软件本身不具备将多个通道的图像拼接的功能,一般通过两种方式进行处理:
通过硬件多区域管理显示,对应OT_VO_PARTITION_MODE_MULTI模式,该模式不支持区域重叠;
通过内部调用VGS拼接,最终配置单个拼接后的全图像给硬件显示,对应OT_VO_PARTITION_MODE_SINGLE模式,该模式支持区域重叠。
【相关数据类型及接口】
ss_mpi_vo_set_video_layer_attr
ot_vo_video_layer_attr¶
【说明】
定义视频层属性。
在视频层属性涉及三个概念,即设备分辨率、显示分辨率和图像分辨率。每种分辨率的概念可以从图1中看出。
图像分辨率指放置各个通道图像的画布大小。
显示分辨率是把图像分辨率中描述的画布经过VO放大或者裁剪后的显示区域。
设备分辨率与设备时序一致,即如果时序为1080P30,那设备分辨率就为1920 x 1080。
视频层的内存使用分为通道聚集(如图2所示)和非聚集(如图3所示)两种方式。
聚集方式:
决定内存分配大小的因素:实际显示通道的分辨率的总和。
不支持视频层的放大功能。
仅适用于MULTI模式。
聚集方式使能后,对于MULTI模式下的视频层,可以调用通道显示位置接口(ss_mpi_vo_set_chn_display_pos)来合理布局通道的显示位置。
非聚集方式:
决定内存分配大小的因素:层上的通道的起始坐标(0,0)与最右下角的坐标所决定的区域大小。
支持视频层的放大功能。
在拼接好图像画面后,通道画面的显示位置不可以通过ss_mpi_vo_set_chn_display_pos接口调整。
【定义】
typedef struct {
ot_rect display_rect;
ot_size img_size;
td_u32 display_frame_rate;
ot_pixel_format pixel_format;
td_bool double_frame_en;
td_bool cluster_mode_en;
ot_dynamic_range dst_dynamic_range;
td_u32 display_buf_len;
ot_vo_partition_mode partition_mode;
ot_compress_mode compress_mode;
} ot_vo_video_layer_attr;
【成员】
【差异说明】
【注意事项】
display_rect范围不能超出设备分辨率。img_size和display_rect的范围都要大于或等于显示的最小分辨率32x32。
SS528V100/SS625V100/SS524V100/SS522V101视频层VHD0在SINGLE模式下支持放大,img_size小于display_rect时,视频层的图像将从img_size放大到display_rect显示;img_size大于display_rect时,显示为img_size与display_rect的交集;VHD1和VHD2不支持缩放,img_size如果大于display_rect,图像将被剪裁显示。
SS524V100/SS522V101视频层VHD0在MULTI模式下仅支持全屏放大。
SS928V100/SS626V100视频层不支持缩放。
img_size和display_rect要求2对齐。
当设备输出时序为隔行时,且格式为YVU420 SEMIPLANAR或YUV420 SEMIPLANAR时,img_size高度height和display_rect高度height要求4对齐。
如果视频层已使能,开启了回写功能并且回写源为该视频层时,SINGLE模式时动态切换显示区域宽高会改变回写的大小,回写大小和回写目标大小的限制参考ss_mpi_vo_set_wbc_attr接口的描述。
display_frame_rate是视频显示帧率。该值可设范围为(0, 240],该值一般设置为设备帧率,即:
如果源是PAL制式,设置为25;
如果源是NTSC制式,设置为30。
如果设置的帧率比通道的源帧率高,则会造成不必要的性能浪费。
对于不支持缩放的视频层,通常保持图像分辨率和显示分辨率一致。
Single模式下VO会占用3块私有VB用来显示轮转。如果开启省BUF配置,可节省一块VB.
Multi模式下,如果前端绑定VPSS为auto模式,VO会占用4块私有VB用来显示轮转;如果前端为User模式,VO可以不分配VB,此时占用前端模块发送过来的VB,显示完后释放。如果开启省BUF配置,可节省一块VB。
在MULTI模式下,display_rect中的起始位置x和y无效,视频层始终以(0, 0)为起始坐标,用户通过配置各个通道的起始位置来实现显示位置的调节。
在vpss auto模式场景时,配置压缩模式compress_mode表示希望vpss送码流的压缩模式,MULTI模式时只有非压和行压支持,SINGLE模式时compress_mode参数列出的压缩模式都支持。
在vpss user模式场景时,MULTI模式时配置压缩模式compress_mode表示当前vo支持的解压能力,具体解压能力见解决方案视频层解压缩规格表。SINGLE模式时VO配置此解压模式是无效的,非直通和直通时时分别依赖VGS和VDP的解压能力,不受此配置的约束。
在vpss auto模式场景时,配置压缩模式compress_mode为OT_COMPRESS_MODE_LINE时,如果通道的宽度小于480时,此时会默认让vpss送非压图像。
不支持倍帧。
在聚集模式下,img_size和display_rect不相等时也不会有缩放效果。
显示区域宽度超过3840场景时,不支持像素格式YVU420 SEMIPLANAR或YUV420 SEMIPLANAR,并且不支持视频层的缩放。
【相关数据类型及接口】
ss_mpi_vo_set_video_layer_attr
ot_vo_layer_param¶
【说明】
定义视频层参数,用于调整视频层内视频内容的显示效果。
【定义】
typedef struct {
ot_aspect_ratio aspect_ratio;
} ot_vo_layer_param;
【成员】
【注意事项】
手动模式下,幅型比参数中的视频区域video_rect (x, y, width, height):坐标(x, y)值在视频层属性成员的display_rect以内,坐标以display_rect为参考;宽高值范围为:img_size宽高=< (width, height)<=display_rect宽高,特别说明,若img_size宽高较display_rect宽高大,则任何幅型比参数均无效——无法设置幅型比。
幅型比参数中的视频区域video_rect要求2对齐。
幅型比背景色范围为[0, 0xFFFFFF]。
【相关数据类型及接口】
ss_mpi_vo_set_video_layer_param
ot_vo_chn_attr¶
【说明】
定义视频输出通道属性。
【定义】
typedef struct {
td_u32 priority;
ot_rect rect;
td_bool deflicker_en;
} ot_vo_chn_attr;
【成员】
|
SINGLE模式下优先级取值范围:[0, OT_VO_MAX_CHN_NUM-1]。 |
|
通道矩形显示区域。以屏幕的左上角为原点。其取值必须是2对齐,且该矩形区域必须在屏幕范围之内。注意:MULTI模式下隔行时序且SPYCbCr420、SPYCrCb420显示时,高度必须4对齐。 |
|
【注意事项】
SINGLE模式下,当多个通道有重叠的显示区域时,优先级高的通道图像将覆盖优先级低的通道。优先级相同的各通道有重叠时,默认通道号大的图像将覆盖通道号小的通道图像。
如果有视频层放大的情况,rect是放大前视频层上的起始位置和宽高,放大后显示的起始位置和宽高会按视频层放大的比例偏移或放大。
【相关数据类型及接口】
ss_mpi_vo_set_chn_attr
ot_vo_chn_param¶
【说明】
定义视频输出通道参数,用于幅型比功能。
【定义】
typedef struct {
ot_aspect_ratio aspect_ratio;
} ot_vo_chn_param;
【成员】
【注意事项】
设置幅型比参数可以实现用户需要显示的视频大小,对于没有视频显示的区域通过设置相应颜色来填充。
幅型比参数需要满足2对齐且在通道区域范围内。
如果输出图像有缩放,则图像会缩放到幅型比视频区域的大小,缩放比例不能超过解决方案支持的缩放比例,解决方案支持的缩放比例请参考5.2.3小节 处理流程。
单区域下,幅型比是通过VGS调整视频内容显示位置和大小来实现的,特别说明,若设置为AUTO幅型比,且输入图像宽高比与通道宽高比相等时,则禁用幅型比功能;多区域下,幅型比是通过VPSS来实现的。
幅型比背景色范围为[0, 0xFFFFFF]。
【相关数据类型及接口】
ss_mpi_vo_set_chn_param
ss_mpi_vo_set_chn_attr
ot_vo_zoom_in_type¶
【说明】
定义局部放大类型。
【定义】
typedef enum {
OT_VO_ZOOM_IN_RECT = 0,
OT_VO_ZOOM_IN_RATIO = 1,
OT_VO_ZOOM_IN_BUTT,
} ot_vo_zoom_in_type;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_vo_set_zoom_in_window
ot_vo_zoom_ratio¶
【说明】
定义按比例局部放大结构体。
【定义】
typedef struct {
td_u32 x_ratio;
td_u32 y_ratio;
td_u32 width_ratio;
td_u32 height_ratio;
} ot_vo_zoom_ratio;
【成员】
【注意事项】
结构体成员变量的取值范围[0, 1000]。
参数取值相对比例值是放大了1000倍,例如待缩放区域宽与显示通道图像宽的比例是0.6,对应的参数width_ratio则是600。
取消局部放大功能时,只要将该结构体中的成员都置0即可。
【相关数据类型及接口】
ss_mpi_vo_set_zoom_in_window
ot_vo_zoom_attr¶
【说明】
定义局部放大属性结构体。局部放大原理示意如图1所示。
【定义】
typedef struct {
ot_vo_zoom_in_type zoom_type;
union {
ot_rect zoom_rect;
ot_vo_zoom_ratio zoom_ratio;
};
} ot_vo_zoom_attr;
【成员】
【注意事项】
局部放大支持两种截取VO通道源数据的方式,按位置和按比例:
按位置时,配置联合体中的zoom_rect,要求参数为非负数,按2像素对齐。且局部放大窗口不小于32x32。
按比例时,配置联合体中的zoom_ratio。参数范围要求[0, 1000],1000表示1:1,计算出来的宽高会按2对齐,如果计算出来的宽高小于32,则无放大效果。
按位置和按比例两种类型都是相对于输入图像数据而言,而不是屏幕坐标。
取消局部放大时,可以按位置方式设置zoom_rect为(0, 0, 0, 0),或按比例方式设置zoom_ratio为(0, 0, 0, 0)。
若局部放大窗口部分超出输入图像,则截取源数据与窗口相交部分,若局部放大窗口全部超出输入图像,则无放大效果。
SINGLE模式时通道的宽高与截取窗口的宽高的比值不能大于16。
【相关数据类型及接口】
ss_mpi_vo_set_zoom_in_window
ot_vo_border¶
【说明】
定义边框属性结构体。
【定义】
typedef struct {
td_bool enable;
ot_border border;
} ot_vo_border;
【成员】
【注意事项】
边框的宽度取值范围[0,14],且为偶数。VO上边框各边宽度允许不相等。
【相关数据类型及接口】
ss_mpi_vo_set_chn_border
ss_mpi_vo_get_chn_border
ot_vo_mirror_mode¶
【说明】
定义通道镜像类型。
【定义】
typedef enum {
OT_VO_MIRROR_NONE = 0,
OT_VO_MIRROR_HOR = 1,
OT_VO_MIRROR_VER = 2,
OT_VO_MIRROR_BOTH = 3,
OT_VO_MIRROR_BUTT
} ot_vo_mirror_mode;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_vo_set_chn_mirror
ss_mpi_vo_get_chn_mirror
ot_vo_chn_status¶
【说明】
视频输出通道状态结构体。
【定义】
typedef struct {
td_u32 chn_buf_used;
td_u32 chn_busy_num;
} ot_vo_chn_status;
【成员】
【注意事项】
通道当前占用buffer数目包括当前通道队列和通道正在显示的buffer。
【相关数据类型及接口】
ss_mpi_vo_query_chn_status
ot_vo_wbc_attr¶
【说明】
回写设备属性。
【定义】
typedef struct {
ot_size target_size;
ot_pixel_format pixel_format;
td_u32 frame_rate;
ot_dynamic_range dynamic_range;
ot_compress_mode compress_mode;
} ot_vo_wbc_attr;
【成员】
【注意事项】
当回写模式为OT_VO_WBC_MODE_PROGRESSIVE_TO_INTERLACED时,帧率控制无效。
【相关数据类型及接口】
无。
ot_vo_wbc_mode¶
【说明】
回写模式枚举类型。
【定义】
typedef enum {
OT_VO_WBC_MODE_NORM = 0,
OT_VO_WBC_MODE_DROP_REPEAT = 1,
OT_VO_WBC_MODE_PROGRESSIVE_TO_INTERLACED = 2,
OT_VO_WBC_MODE_BUTT,
} ot_vo_wbc_mode;
【成员】
|
1、该模式下,VO使用设备帧率和视频层VHDx显示帧率进行帧率控制而重复显示的帧,WBC只回写一次。 2、该模式下,根据视频层VHDx显示帧率和WBC回写帧率进行帧率控制。 |
|
PROGRESSIVE_TO_INTERLACED模式,逐行转隔行模式。 |
【注意事项】
WBC回写模式设为OT_VO_WBC_MODE_PROGRESSIVE_TO_INTERLACED时,如果高清设备HD是1080P@60fps显示,VI实际采集帧率为30fps,WBC会将60帧逐行显示的图像转为30帧隔行图像,使回写后的图像在监视器上达到较好的显示效果。因此,当HD是1080P@30fps显示时,该模式下WBC的回写帧率最大只能达到15fps,且该模式下设置的帧率控制无效。在该模式下,WBC实际回写帧率分以下几种情况:
当display_frame_rate <= 1/2 x dev_frame_rate时,WBC实际回写帧率为display_frame_rate。
当display_frame_rate == dev_frame_rate时,WBC实际回写帧率为1/2 x dev_frame_rate。
当1/2 x dev_frame_rate < display_frame_rate < dev_frame_rate时,WBC实际回写帧率不固定,随display_frame_rate不同而变。
建议用户设置display_frame_rate == 1/2 x dev_frame_rate。
WBC回写模式设为VO_WBC_MODE_DROP_REPEAT时,回写源为设备时,视频层VHD0禁用且PIP显示的情况下,则根据PIP显示帧率和WBC回写帧率进行帧率控制;回写源为设备时,视频层VHD0显示的情况下,则根据VHD0显示帧率和WBC回写帧率进行帧率控制;回写源为视频层时,视频层VHD0禁用情况下,则回写设备无输出。
WBC回写模式设为VO_WBC_MODE_DROP_REPEAT时,视频层VHD0显示情况下,如果设备是1080P@60fps显示,视频层VHD0显示帧率(回写源为设备时,取VHD0显示帧率)为30fps,WBC只回写视频层显示的30帧图像,丢弃设备上重复显示的帧图像,即该模式下回写帧率最大不会超过视频层显示帧率。例如:设备是1080P@60fps显示,视频层显示帧率为30fps,回写帧率为15fps,则丢弃重复显示帧后帧率为f1=30fps,根据视频层显示帧率f2=30fps和回写帧率f3=15fps进行帧率控制得实际帧率为15fps(f1*(f3/f2))。
【相关数据类型及接口】
无。
ot_vo_wbc_src_type¶
【说明】
回写设备捕获数据的源类型,用于区别是从视频层回写还是从设备回写。
【定义】
typedef enum {
OT_VO_WBC_SRC_DEV = 0,
OT_VO_WBC_SRC_VIDEO = 1,
OT_VO_WBC_SRC_BUTT,
} ot_vo_wbc_src_type;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_vo_wbc_src¶
【说明】
回写设备回写源。
【定义】
typedef struct {
ot_vo_wbc_src_type src_type;
td_u32 src_id;
} ot_vo_wbc_src;
【成员】
【注意事项】
回写源类型是设备时,回写源ID表示设备ID,回写源类型是视频层时,回写源ID表示视频层的ID。
【相关数据类型及接口】
无。
ot_vo_cas_mode¶
【说明】
定义级联的单路双路模式。
【定义】
typedef enum {
OT_VO_CAS_MODE_SINGLE = 0,
OT_VO_CAS_MODE_DUAL = 1,
OT_VO_CAS_MODE_BUTT,
} ot_vo_cas_mode;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_vo_cas_data_transmission_mode¶
【说明】
定义级联的单双沿数据传输模式。
【定义】
typedef enum {
OT_VO_CAS_MODE_SINGLE_EDGE = 0,
OT_VO_CAS_MODE_DUAL_EDGE = 1,
OT_VO_CAS_MODE_EDGE_BUTT,
} ot_vo_cas_data_transmission_mode;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_vo_cas_rgn¶
【说明】
定义级联的区域类型。
【定义】
typedef enum {
OT_VO_CAS_RGN_64 = 0,
OT_VO_CAS_RGN_32,
OT_VO_CAS_RGN_BUTT,
} ot_vo_cas_rgn;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_vo_cas_attr¶
【说明】
定义级联属性。
【定义】
typedef struct {
td_bool is_slave;
ot_vo_cas_rgn cas_rgn;
ot_vo_cas_mode cas_mode;
ot_vo_cas_data_transmission_mode cas_edge_mode;
} ot_vo_cas_attr;
【成员】
【注意事项】
无
【相关数据类型及接口】
ss_mpi_vo_set_cas_attr
ot_vo_export_callback¶
【说明】
定义中断回调通知函数结构。
【定义】
typedef struct {
void (*vo_notify)(int mod_id, int dev);
void (*vo_user_notify)(int mod_id, int dev);
} ot_vo_export_callback;
【成员】
【注意事项】
在内核态使用。
【相关数据类型及接口】
ot_vo_export_symbol
ot_vo_export_symbol¶
【说明】
定义注册中断回调函数结构体。
【定义】
typedef struct {
ot_vo_register_export_callback *vo_register_export_callback;
} ot_vo_export_symbol;
【成员】
【注意事项】
在内核态使用。
【相关数据类型及接口】
ot_vo_export_callback
ot_vo_register_export_callback¶
【说明】
定义注册中断回调钩子函数。
【定义】
typedef td_s32 ot_vo_register_export_callback(ot_vo_export_callback *export_callback);
【成员】
无。
【注意事项】
无。
【相关数据类型及接口】
无。
错误码¶
视频输出API错误码如下所示。
表 1 视频输出API错误码





