/* * Copyright (c) XMEDIA. All rights reserved. */ #ifndef __XMEDIA_VO_H__ #define __XMEDIA_VO_H__ #include "xmedia_type.h" #include "xmedia_video_common.h" #include "xmedia_errcode.h" #include "xmedia_intf_common.h" #ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif typedef xmedia_s32 xmedia_vo_chn; typedef enum { XMEDIA_VO_DEV_0 = 0, XMEDIA_VO_DEV_1, XMEDIA_VO_DEV_VIRT_0, XMEDIA_VO_DEV_VIRT_1, XMEDIA_VO_DEV_MAX }xmedia_vo_dev; typedef enum { XMEDIA_VO_LAYER_V0 = 0, XMEDIA_VO_LAYER_V1, XMEDIA_VO_LAYER_VIRT_V0, XMEDIA_VO_LAYER_VIRT_V1, XMEDIA_VO_LAYER_MAX }xmedia_vo_layer; //定义输出接口时序 typedef enum { XMEDIA_VO_INTF_SYNC_PAL = 0, XMEDIA_VO_INTF_SYNC_NTSC, XMEDIA_VO_INTF_SYNC_1080P24, XMEDIA_VO_INTF_SYNC_1080P25, XMEDIA_VO_INTF_SYNC_1080P30, XMEDIA_VO_INTF_SYNC_720P50, XMEDIA_VO_INTF_SYNC_720P60, XMEDIA_VO_INTF_SYNC_1080I50, XMEDIA_VO_INTF_SYNC_1080I60, XMEDIA_VO_INTF_SYNC_1080P50, XMEDIA_VO_INTF_SYNC_1080P60, XMEDIA_VO_INTF_SYNC_576P50 = 11, XMEDIA_VO_INTF_SYNC_480P60, XMEDIA_VO_INTF_SYNC_800x600_60 = 13, XMEDIA_VO_INTF_SYNC_1024x768_60, XMEDIA_VO_INTF_SYNC_1280x1024_60, XMEDIA_VO_INTF_SYNC_1366x768_60, XMEDIA_VO_INTF_SYNC_1440x900_60, XMEDIA_VO_INTF_SYNC_1280x800_60, XMEDIA_VO_INTF_SYNC_1600x1200_60, XMEDIA_VO_INTF_SYNC_1680x1050_60, XMEDIA_VO_INTF_SYNC_1920x1200_60, XMEDIA_VO_INTF_SYNC_640x480_60, XMEDIA_VO_INTF_SYNC_960H_PAL, XMEDIA_VO_INTF_SYNC_960H_NTSC, XMEDIA_VO_INTF_SYNC_1920x2160_30, XMEDIA_VO_INTF_SYNC_2560x1440_30, XMEDIA_VO_INTF_SYNC_2560x1440_60, XMEDIA_VO_INTF_SYNC_2560x1600_60, XMEDIA_VO_INTF_SYNC_3840x2160_24 = 29, XMEDIA_VO_INTF_SYNC_3840x2160_25, XMEDIA_VO_INTF_SYNC_3840x2160_30, XMEDIA_VO_INTF_SYNC_3840x2160_50, XMEDIA_VO_INTF_SYNC_3840x2160_60, XMEDIA_VO_INTF_SYNC_4096x2160_24, XMEDIA_VO_INTF_SYNC_4096x2160_25, XMEDIA_VO_INTF_SYNC_4096x2160_30, XMEDIA_VO_INTF_SYNC_4096x2160_50, XMEDIA_VO_INTF_SYNC_4096x2160_60, XMEDIA_VO_INTF_SYNC_320x240_60 = 39, XMEDIA_VO_INTF_SYNC_320x240_50, XMEDIA_VO_INTF_SYNC_240x320_50, XMEDIA_VO_INTF_SYNC_240x320_60, XMEDIA_VO_INTF_SYNC_800x600_50, XMEDIA_VO_INTF_SYNC_800x480_50, XMEDIA_VO_INTF_SYNC_720x1280_60, XMEDIA_VO_INTF_SYNC_1080x1920_60, XMEDIA_VO_INTF_SYNC_7680x4320_30, XMEDIA_VO_INTF_SYNC_USER = 48, XMEDIA_VO_INTF_SYNC_MAX }xmedia_vo_intf_sync; //定义设备模式 typedef enum{ XMEDIA_VO_DEV_MODE_VIDEO_GRAPHIC = 0, XMEDIA_VO_DEV_MODE_VIDEO, XMEDIA_VO_DEV_MODE_GRAPHIC, XMEDIA_VO_DEV_MODE_MAX }xmedia_vo_dev_mode; //定义lcd的数据传输模式 typedef enum { XMEDIA_VO_LCD_DATA_MODE_SERIAL = 0, XMEDIA_VO_LCD_DATA_MODE_PARA, XMEDIA_VO_LCD_DATA_MODE_MAX } xmedia_vo_lcd_data_mode; //定义视频分割模式 typedef enum { XMEDIA_VO_PARTITION_MODE_SINGLE = 0, //单区域模式,用软件将多张图片进行拼接显示在硬件的一个区域上 XMEDIA_VO_PARTITION_MODE_MULTI, //多区域模式,每个区域对应硬件的一个区域 XMEDIA_VO_PARTITION_MODE_MAX, }xmedia_vo_partition_mode; //定义局部放大类型 typedef enum { XMEDIA_VO_ZOOM_IN_RECT = 0, XMEDIA_VO_ZOOM_IN_RATIO, XMEDIA_VO_ZOOM_IN_MAX } xmedia_vo_zoom_in_type; //定义视频低延时模式 typedef enum { XMEDIA_VO_LOW_DELAY_NONE = 0, //普通模式 XMEDIA_VO_LOW_DELAY_NORMAL, //软件低延时 XMEDIA_VO_LOW_DELAY_MAX } xmedia_vo_low_delay_mode; //定义用户同步时序 typedef struct { xmedia_u16 vact; //垂直有效区 xmedia_u16 vbb; //垂直消隐后肩 xmedia_u16 vfb; //垂直消隐前肩 xmedia_u16 hact; //水平有效区 xmedia_u16 hbb; //水平消隐后肩 xmedia_u16 hfb; //水平消隐前肩 xmedia_u16 hmid; //底场同步水平有效区域 xmedia_u16 bvact; //底场垂直有效区 xmedia_u16 bvbb; //底场垂直消隐后肩 xmedia_u16 bvfb; //底场垂直消隐前肩 xmedia_u16 hpw; //水平脉冲宽度 xmedia_u16 vpw; //垂直脉冲宽度 xmedia_bool idv; //数据有效信号的极性 xmedia_bool ihs; //水平有效信号的极性 xmedia_bool ivs; //垂直有效信号的极性 xmedia_bool synm; //同步模式 xmedia_bool iop; //隔行或者逐行显示(0表示隔行,1表示逐行) xmedia_u8 intfb; //隔行输出的位宽 } xmedia_vo_user_sync_timing; //定义用户同步信息 typedef struct { xmedia_vo_user_sync_timing timing_info; //输出接口的时序信息 xmedia_u32 frame_rate; //用户同步输出帧率 xmedia_bool clk_reverse_en; //时钟是否翻转 } xmedia_vo_user_sync_config; //定义BT656的属性 typedef struct { xmedia_intf_bt_data_type data_type; xmedia_intf_bt601_bt656_data_seq data_seq; } xmedia_vo_bt656_attr; //定义BT1120的属性 typedef struct { xmedia_intf_bt_data_type data_type; xmedia_intf_bt1120_data_seq data_seq; } xmedia_vo_bt1120_attr; //定义LCD的属性 typedef struct { xmedia_intf_lcd_data_type data_type; xmedia_vo_lcd_data_mode data_mode; xmedia_intf_lcd_data_seq data_seq; } xmedia_vo_lcd_attr; typedef enum { XMEDIA_VO_MIPI_LANE_DATA0 = 0, XMEDIA_VO_MIPI_LANE_DATA1, XMEDIA_VO_MIPI_LANE_CLK, XMEDIA_VO_MIPI_LANE_DATA2, XMEDIA_VO_MIPI_LANE_DATA3, XMEDIA_VO_MIPI_LANE_MAX }xmedia_vo_mipi_lane; typedef enum { XMEDIA_VO_MIPI_LANE_DEFAULT = 0, XMEDIA_VO_MIPI_LANE_NUM1, XMEDIA_VO_MIPI_LANE_NUM2, XMEDIA_VO_MIPI_LANE_NUM3, XMEDIA_VO_MIPI_LANE_NUM4, XMEDIA_VO_MIPI_LANE_NUM_MAX }xmedia_vo_mipi_lane_num; //定义MIPI的属性 typedef struct { xmedia_intf_mipi_dsi_data_type data_type; xmedia_bool lane_pn_swap[XMEDIA_VO_MIPI_LANE_MAX]; xmedia_vo_mipi_lane lane_sel[XMEDIA_VO_MIPI_LANE_MAX]; xmedia_s32 mipi_htotal_adjust; xmedia_s32 mipi_vsync_adjust; xmedia_vo_mipi_lane_num mipi_lane_num; } xmedia_vo_mipi_attr; typedef enum { XMEDIA_VO_LVDS_LANE_DATA0 = 0, XMEDIA_VO_LVDS_LANE_DATA1, XMEDIA_VO_LVDS_LANE_DATA2, XMEDIA_VO_LVDS_LANE_DATA3, XMEDIA_VO_LVDS_LANE_CLK, XMEDIA_VO_LVDS_LANE_MAX }xmedia_vo_lvds_lane; //定义LVDS的属性 typedef struct { xmedia_intf_lvds_data_type data_type; xmedia_intf_lvds_format format; xmedia_vo_lvds_lane lane_sel[XMEDIA_VO_LVDS_LANE_MAX]; xmedia_bool lane_pn_swap[XMEDIA_VO_LVDS_LANE_MAX]; } xmedia_vo_lvds_attr; //定义mcu的数据传输模式 typedef enum { XMEDIA_VO_MCU_DATA_TYPE_8BIT_16BPP_RGB565_8080I = 0, XMEDIA_VO_MCU_DATA_TYPE_8BIT_18BPP_RGB666_8080I, XMEDIA_VO_MCU_DATA_TYPE_8BIT_16BPP_RGB565_8080II, XMEDIA_VO_MCU_DATA_TYPE_8BIT_18BPP_RGB666_8080II, XMEDIA_VO_MCU_DATA_TYPE_9BIT_16BPP_RGB565_8080I, XMEDIA_VO_MCU_DATA_TYPE_9BIT_18BPP_RGB666_8080I_OPTION1, XMEDIA_VO_MCU_DATA_TYPE_9BIT_18BPP_RGB666_8080I_OPTION2, XMEDIA_VO_MCU_DATA_TYPE_9BIT_16BPP_RGB565_8080II, XMEDIA_VO_MCU_DATA_TYPE_9BIT_18BPP_RGB666_8080II_OPTION1, XMEDIA_VO_MCU_DATA_TYPE_9BIT_18BPP_RGB666_8080II_OPTION2, XMEDIA_VO_MCU_DATA_TYPE_16BIT_16BPP_RGB565_8080I, XMEDIA_VO_MCU_DATA_TYPE_16BIT_18BPP_RGB666_8080I_OPTION1, XMEDIA_VO_MCU_DATA_TYPE_16BIT_18BPP_RGB666_8080I_OPTION2, XMEDIA_VO_MCU_DATA_TYPE_16BIT_18BPP_RGB666_8080I_OPTION3, XMEDIA_VO_MCU_DATA_TYPE_16BIT_18BPP_RGB666_8080I_OPTION4, XMEDIA_VO_MCU_DATA_TYPE_16BIT_18BPP_RGB666_8080I_OPTION5, XMEDIA_VO_MCU_DATA_TYPE_16BIT_16BPP_RGB565_8080II, XMEDIA_VO_MCU_DATA_TYPE_16BIT_18BPP_RGB666_8080II_OPTION1, XMEDIA_VO_MCU_DATA_TYPE_16BIT_18BPP_RGB666_8080II_OPTION2, XMEDIA_VO_MCU_DATA_TYPE_16BIT_18BPP_RGB666_8080II_OPTION3, XMEDIA_VO_MCU_DATA_TYPE_16BIT_18BPP_RGB666_8080II_OPTION4, XMEDIA_VO_MCU_DATA_TYPE_18BIT_16BPP_RGB565_8080I, XMEDIA_VO_MCU_DATA_TYPE_18BIT_18BPP_RGB666_8080I, XMEDIA_VO_MCU_DATA_TYPE_18BIT_16BPP_RGB565_8080II, XMEDIA_VO_MCU_DATA_TYPE_18BIT_18BPP_RGB666_8080II, XMEDIA_VO_MCU_DATA_TYPE_3LINE_RGB565_OPTION1, XMEDIA_VO_MCU_DATA_TYPE_3LINE_RGB666_OPTION1, XMEDIA_VO_MCU_DATA_TYPE_3LINE_RGB565_OPTION2, XMEDIA_VO_MCU_DATA_TYPE_3LINE_RGB666_OPTION2, XMEDIA_VO_MCU_DATA_TYPE_4LINE_RGB565, XMEDIA_VO_MCU_DATA_TYPE_4LINE_RGB666, XMEDIA_VO_MCU_DATA_TYPE_MAX } xmedia_intf_mcu_data_type; //定义MCU的属性 typedef struct { xmedia_bool te_mode_en; xmedia_intf_mcu_data_type data_type; } xmedia_vo_mcu_attr; //定义输出接口信息 typedef struct { xmedia_intf_type intf_type; union { xmedia_vo_bt656_attr bt656_attr; xmedia_vo_bt1120_attr bt1120_attr; xmedia_vo_lcd_attr lcd_attr; xmedia_vo_mipi_attr mipi_attr; xmedia_vo_lvds_attr lvds_attr; xmedia_vo_mcu_attr mcu_attr; }; } xmedia_vo_intf_config; //定义设备属性 typedef struct { xmedia_u32 bg_color; //设备的背景色,RGB格式 xmedia_vo_intf_config intf_config; //输出接口属性 xmedia_vo_intf_sync intf_sync; //输出接口的时序 xmedia_vo_user_sync_config user_sync_config; //用户同步属性 } xmedia_vo_dev_config; //定义设备的csc属性 typedef struct { xmedia_vo_dev_mode mode; //设备模式 xmedia_video_color_descript color_info; //颜色信息,包含输出色域空间,色域范围和量化范围 xmedia_u32 luma; //亮度范围为[0, 100],默认50 xmedia_u32 contrast; //对比度度范围为[0, 100],默认50 xmedia_u32 hue; //色度范围为[0, 100],默认50 xmedia_u32 saturation; //饱和度范围为[0, 100],默认50 } xmedia_vo_dev_csc; typedef struct { xmedia_u8 gamma_table[VO_GAMMA_MAP_SIZE]; } xmedia_vo_gamma_table; //定义设备的gamma属性 typedef struct { xmedia_bool gamma_en; //gamma使能状态 xmedia_vo_gamma_table gamma_table; //gamma表 } xmedia_vo_dev_gamma; //定义视频层输出属性 typedef struct { xmedia_video_size img_size; //视频层的画布尺寸 xmedia_video_pixel_format pix_format; //视频层的像素格式 xmedia_video_data_width bit_width;; //视频层数据位宽 xmedia_u32 disp_buf_len; //显示buf的长度 xmedia_vo_partition_mode part_mode; //视频层的分割模式 } xmedia_vo_layer_config; //定义通道属性 typedef struct { xmedia_u32 zorder; //通道顺序 xmedia_video_rect out_rect; //输出通道的分辨率和位置 xmedia_u32 bg_color; //输出通道区域背景色 xmedia_video_rect region_rect;//输出通道的区域分辨率和位置 } xmedia_vo_chn_attr; //定义通道局部放大属性 typedef struct { xmedia_u32 x_ratio; //范围为[0,1000]; x_ratio = x * 1000 / W, x是局部放大的起始位置,W是通道帧的宽度 xmedia_u32 y_ratio; //范围为[0,1000]; y_ratio = y * 1000 / H, y是局部放大的起始位置,H是通道帧的高度 xmedia_u32 w_ratio; //范围为[0,1000]; w_ratio = x * 1000 / W, w是局部放大的宽度,W是通道帧的宽度 xmedia_u32 h_ratio; //范围为[0,1000]; h_ratio = h * 1000 / H, h是局部放大的高度,H是通道帧的高度 } xmedia_vo_zoom_ratio; typedef struct { xmedia_vo_zoom_in_type zoom_type; //选择局部放大类型 union { xmedia_video_rect zoom_rect; //按窗口局部放大 xmedia_vo_zoom_ratio zoom_ratio; //按比例局部放大 }; } xmedia_vo_zoom_attr; //定义边框属性 typedef struct{ xmedia_u32 width; xmedia_u32 color; }xmedia_vo_border; typedef struct { xmedia_bool border_en; xmedia_vo_border border; } xmedia_vo_border_attr; //定义镜像属性 typedef struct { xmedia_bool mirror_en; xmedia_bool flip_en; } xmedia_vo_mirror_attr; /* * 函数功能: 初始化vo设备 * 函数参数:无 * 返回值: * XMEDIA_SUCCESS - 函数执行成功 * XMEDIA_ERRCODE_OPEN_FAILED - 打开设备节点失败 */ xmedia_s32 xmedia_vo_init(xmedia_void); /* * 函数功能: 去初始化vo设备 * 函数参数:无 * 返回值: * XMEDIA_SUCCESS - 函数执行成功 * XMEDIA_ERRCODE_OPEN_FAILED - 关闭设备节点失败 */ xmedia_s32 xmedia_vo_exit(xmedia_void); /* * 函数功能: 设置设备属性 * 函数参数: * dev - 输入参数, 设备ID号 * dev_config - 输出参数, 设备属性结构指针 * 返回值: * XMEDIA_SUCCESS - 函数执行成功 * XMEDIA_ERRCODE_INVALID_DEV_ID- 无效的设备ID * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 * XMEDIA_ERRCODE_NOT_PERMITTED - 设备已被使能无法设置参数 * XMEDIA_ERRCODE_INVALID_PARAM - 同步时序参数错误 * XMEDIA_ERRCODE_NOT_SUPPORT - 设备接口复用异常用 或者 接口类型参数检查错误 * 注意: * 必须在设备未使能之前调用 */ xmedia_s32 xmedia_vo_set_dev_config(xmedia_vo_dev dev, const xmedia_vo_dev_config *dev_config); /* * 函数功能: 获取设备属性 * 函数参数: * dev - 输入参数, 设备ID号 * 返回值: * XMEDIA_SUCCESS - 函数执行成功 * XMEDIA_ERRCODE_INVALID_DEV_ID - 无效的设备ID * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 */ xmedia_s32 xmedia_vo_get_dev_config(xmedia_vo_dev dev, xmedia_vo_dev_config *dev_config); /* * 函数功能: 设备使能 * 函数参数: * dev - 输入参数, 设备ID号 * 返回值: * XMEDIA_SUCCESS - 函数执行成功 * XMEDIA_ERRCODE_INVALID_DEV_ID - 无效的设备ID * XMEDIA_ERRCODE_NOT_READY - 设备没有配置 * XMEDIA_ERRCODE_NOT_PERMITTED - 设备已经使能,不允许重复使能 * XMEDIA_ERRCODE_NOT_SUPPORT - 设备crg时钟设置失败 * XMEDIA_ERRCODE_NOT_READY - 中断使能或注册失败 * 注意: * 必须在设备配置后使用 */ xmedia_s32 xmedia_vo_enable_dev(xmedia_vo_dev dev); /* * 函数功能: 设备禁止 * 函数参数: * dev - 输入参数, 设备ID号 * 返回值: * XMEDIA_SUCCESS - 函数执行成功 * XMEDIA_ERRCODE_INVALID_DEV_ID - 无效的设备ID * XMEDIA_ERRCODE_NOT_READY - 设备没有使能 * XMEDIA_ERRCODE_NOT_PERMITTED - 视频层未禁止 * XMEDIA_ERRCODE_BUSY - 中断注销失败 * ERR_CODE_VO_WAIT_INTERRUPTED - 等待信号被中断 * 注意: * 必须在视频层都关闭之后才能关闭设备 */ xmedia_s32 xmedia_vo_disable_dev(xmedia_vo_dev dev); /* * 函数功能: 设置设备的CSC信息 * 函数参数: * dev - 输入参数, 设备ID号 * dev_csc - 输入参数, 设备颜色空间指针 * 返回值: * XMEDIA_SUCCESS - 函数执行成功 * XMEDIA_ERRCODE_INVALID_DEV_ID - 无效的设备ID * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 * XMEDIA_ERRCODE_INVALID_PARAM - 检查csc参数失败 * XMEDIA_ERRCODE_NOT_SUPPORT - 检查csc参数或接口属性不合法 */ xmedia_s32 xmedia_vo_set_dev_csc(xmedia_vo_dev dev, const xmedia_vo_dev_csc *dev_csc); /* * 函数功能: 获取设备的CSC信息 * 函数参数: * dev - 输入参数, 设备ID号 * dev_csc - 输出参数, 设备颜色空间指针 * 返回值: * XMEDIA_SUCCESS - 函数执行成功 * XMEDIA_ERRCODE_INVALID_DEV_ID - 无效的设备ID * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 */ xmedia_s32 xmedia_vo_get_dev_csc(xmedia_vo_dev dev, xmedia_vo_dev_csc *dev_csc); /* * 函数功能: 设置设备的GAMMA信息 * 函数参数: * dev - 输入参数, 设备ID号 * dev_gamma - 输入参数, 设备GAMMA指针 * 返回值: * XMEDIA_SUCCESS - 函数执行成功 * XMEDIA_ERRCODE_INVALID_DEV_ID - 无效的设备ID * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 * XMEDIA_ERRCODE_NOT_SUPPORT - 检查gamma参数或接口属性不合法 */ xmedia_s32 xmedia_vo_set_dev_gamma(xmedia_vo_dev dev, const xmedia_vo_dev_gamma *dev_gamma); /* * 函数功能: 获取设备的GAMMA信息 * 函数参数: * dev - 输入参数, 设备ID号 * dev_csc - 输出参数, 设备GAMMA指针 * 返回值: * XMEDIA_SUCCESS - 函数执行成功 * XMEDIA_ERRCODE_INVALID_DEV_ID - 无效的设备ID * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 */ xmedia_s32 xmedia_vo_get_dev_gamma(xmedia_vo_dev dev, xmedia_vo_dev_gamma *dev_gamma); /* * 函数功能: 设置视频层属性 * 函数参数: * layer - 输入参数, 视频层ID号 * layer_config - 输入参数, 视频层属性结构指针 * 返回值: * XMEDIA_SUCCESS - 函数执行成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 * XMEDIA_ERRCODE_INVALID_DEV_ID - 视频层对应的设备ID无效 * XMEDIA_ERRCODE_NOT_READY - 视频层对应的设备未使能 * XMEDIA_ERRCODE_NOT_PERMITTED - 视频层已使能 * XMEDIA_ERRCODE_INVALID_PARAM - 配置参数不合法 * 注意: * 必须在设备使能之后,视频层使能之前调用 */ xmedia_s32 xmedia_vo_set_layer_config(xmedia_vo_layer layer, const xmedia_vo_layer_config *layer_config); /* * 函数功能: 获取视频层属性 * 函数参数: * layer - 输入参数, 视频层ID号 * layer_config - 输出参数, 视频层属性结构指针 * 返回值: * XMEDIA_SUCCESS - 函数执行成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 */ xmedia_s32 xmedia_vo_get_layer_config(xmedia_vo_layer layer, xmedia_vo_layer_config *layer_config); /* * 函数功能: 视频层使能 * 函数参数: * layer - 输入参数, 视频层ID号 * 返回值: * XMEDIA_SUCCESS - 函数执行成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_NOT_READY - 设备未使能 或者 layer层参数未配置 * XMEDIA_ERRCODE_NOT_PERMITTED - layer层已使能 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - buf list初始化失败 或者 vb申请失败 * 注意: * 必须在设备使能 且 视频属性配置之后调用 */ xmedia_s32 xmedia_vo_enable_layer(xmedia_vo_layer layer); /* * 函数功能: 视频层禁止 * 函数参数: * layer - 输入参数, 视频层ID号 * 返回值: * XMEDIA_SUCCESS - 函数执行成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_NOT_PERMITTED - 层上还有通道未关闭 * XMEDIA_ERRCODE_BUSY - 还有vgs任务未完成 * XMEDIA_ERRCODE_TIMEOUT - 获取并发标志超时 * 注意: * 必须在通道关闭下使用 */ xmedia_s32 xmedia_vo_disable_layer(xmedia_vo_layer layer); /* * 函数功能: 获取视频层帧 * 函数参数: * layer - 输入参数, 视频层ID号 * milli_sec - 输入参数, 等待时间 * frame_info - 输出参数, 帧信息结构指针 * 返回值: * XMEDIA_SUCCESS - 函数执行成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 * XMEDIA_ERRCODE_INVALID_PARAM - 超时参数无效 * XMEDIA_ERRCODE_NOT_READY - 层未使能 * XMEDIA_ERRCODE_NOT_SUPPORT - 多通道模式 或者 vgs bypass模式 当前模式不支持获取视频层帧 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - vb占用累加失败 * XMEDIA_ERRCODE_TIMEOUT - 等待视频层帧超时 * XMEDIA_ERRCODE_BUSY - 等待视频层帧出错 * 注意: * 必须在视频层使能之后才能调用 */ xmedia_s32 xmedia_vo_acquire_layer_frame(xmedia_vo_layer layer, xmedia_video_frame_info *frame_info, xmedia_s32 milli_sec); /* * 函数功能: 释放视频层帧 * 函数参数: * layer - 输入参数, 视频层ID号 * frame_info - 输入参数, 帧信息结构指针 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 * XMEDIA_ERRCODE_NOT_PERMITTED - 未调用获取获取视频层帧接口 * XMEDIA_ERRCODE_NOT_SUPPORT - 模式不支持释放视频层帧 * XMEDIA_ERRCODE_INVALID_PARAM - 无效的帧 * XMEDIA_ERRCODE_BUSY - vb帧计数累减失败 * 注意: * 不允许释放重复帧 */ xmedia_s32 xmedia_vo_release_layer_frame(xmedia_vo_layer layer, const xmedia_video_frame_info *frame_info); /* * 函数功能: 设置视频层播放显容忍度 * 函数参数: * layer - 输入参数, 视频层ID号 * toleration - 输入参数 容忍度 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_NOT_READY -设备未使能 * XMEDIA_ERRCODE_INVALID_PARAM - 参数不合法 */ xmedia_s32 xmedia_vo_set_layer_toleration(xmedia_vo_layer layer, xmedia_u32 toleration); /* * 函数功能: 获取视频播放层容忍度 * 函数参数: * layer - 输入参数, 视频层ID号 * toleration - 输出参数,保存容忍度指针 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID */ xmedia_s32 xmedia_vo_get_layer_toleration(xmedia_vo_layer layer, xmedia_u32 *toleration); /* * 函数功能: 视频层上通道属性设置批处理开始 * 函数参数: * layer - 输入参数, 视频层ID号 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID */ xmedia_s32 xmedia_vo_begin_batch_layer(xmedia_vo_layer layer); /* * 函数功能: 视频层上通道属性设置批处理结束 * 函数参数: * layer - 输入参数, 视频层ID号 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID */ xmedia_s32 xmedia_vo_end_batch_layer(xmedia_vo_layer layer); /* * 函数功能: 设置通视频层转属性 * 函数参数: * layer - 输入参数, 视频层ID号 * rota - 输入参数, 旋转属性 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_NOT_SUPPORT - MULTI或者disp_buf_len为0 场景则不支持 * XMEDIA_ERRCODE_INVALID_PARAM - 参数不合法 */ xmedia_s32 xmedia_vo_set_layer_rotation(xmedia_vo_layer layer, xmedia_video_rotation rota); /* * 函数功能: 获取视频层旋转属性 * 函数参数: * layer - 输入参数, 视频层ID号 * rota - 输出参数, 旋转属性结构体指针 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 */ xmedia_s32 xmedia_vo_get_layer_rotation(xmedia_vo_layer layer, xmedia_video_rotation *rota); /* * 函数功能: 设置通道属性 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道号 * chn_attr - 输入参数, 通道属性结构指针 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NOT_READY - 视频层未使能 * XMEDIA_ERRCODE_INVALID_PARAM - 参数检查不合法 * XMEDIA_ERRCODE_NOT_SUPPORT - 通道已使能情况下 多通道模式 不允许动态改变通道输出size * 注意: * 必须在视频层配置之后调用 */ xmedia_s32 xmedia_vo_set_chn_attr(xmedia_vo_layer layer, xmedia_vo_chn chn, const xmedia_vo_chn_attr *chn_attr); /* * 函数功能: 获取通道属性 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * chn_attr - 输出参数, 通道属性结构指针 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 */ xmedia_s32 xmedia_vo_get_chn_attr(xmedia_vo_layer layer, xmedia_vo_chn chn, xmedia_vo_chn_attr *chn_attr); /* * 函数功能: 通道使能 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NOT_READY - 视频层未使能 或者 通道未配置 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 通道队列初始化失败 * 注意: * 必须在视频层使能和通道属性配置后调用 */ xmedia_s32 xmedia_vo_enable_chn(xmedia_vo_layer layer, xmedia_vo_chn chn); /* * 函数功能: 通道禁止 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_BUSY - 去初始化队列 或者 清vb失败 */ xmedia_s32 xmedia_vo_disable_chn(xmedia_vo_layer layer, xmedia_vo_chn chn); /* * 函数功能: 通道显示 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NOT_READY - 视频层未使能 * 注意: * 必须在视频层使能之后调用 */ xmedia_s32 xmedia_vo_show_chn(xmedia_vo_layer layer, xmedia_vo_chn chn); /* * 函数功能: 通道隐藏 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 */ xmedia_s32 xmedia_vo_hide_chn(xmedia_vo_layer layer, xmedia_vo_chn chn); /* * 函数功能: 设置通道帧率 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * frame_rate N*X[-64*X,+64*X] X为dev帧率 N为[-64,+64]任意整数 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NOT_READY - 通道没有配置 * XMEDIA_ERRCODE_INVALID_PARAM - 帧率不合法 * 注意: * 必须在通道配置之后调用 */ xmedia_s32 xmedia_vo_set_chn_frame_rate(xmedia_vo_layer layer, xmedia_vo_chn chn, xmedia_s32 frame_rate); /* * 函数功能: 获取通道帧率 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * frame_rate 获取用户设置的通道帧率 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 */ xmedia_s32 xmedia_vo_get_chn_frame_rate(xmedia_vo_layer layer, xmedia_vo_chn chn, xmedia_s32 *frame_rate); /* * 函数功能: 获取通道帧 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * milli_sec - 输入参数, 等待时间 * frame_info - 输出参数, 帧信息结构指针 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 * XMEDIA_ERRCODE_NOT_READY - 通道未使能 * XMEDIA_ERRCODE_INVALID_PARAM - 超时参数无效 * XMEDIA_ERRCODE_TIMEOUT - 并发标识获取失败 或者 等待通道帧超时 * XMEDIA_ERRCODE_BUSY - 等待通道帧失败 * 注意: * 必须在通道使能之后调用 */ xmedia_s32 xmedia_vo_acquire_chn_frame(xmedia_vo_layer layer, xmedia_vo_chn chn, xmedia_video_frame_info *frame_info, xmedia_s32 milli_sec); /* * 函数功能: 释放通道帧 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * frame_info - 输入参数, 帧信息结构指针 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NOT_PERMITTED - 未调用获取通道帧接口 * XMEDIA_ERRCODE_INVALID_PARAM - 无效的帧 * XMEDIA_ERRCODE_BUSY - vb帧计数失败 * 注意: * 不允许释放重复帧 */ xmedia_s32 xmedia_vo_release_chn_frame(xmedia_vo_layer layer, xmedia_vo_chn chn, const xmedia_video_frame_info *frame_info); /* * 函数功能: 发送帧给通道 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * frame_info - 输入参数, 帧信息结构指针 * milli_sec - 输入参数, 等待时间 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NOT_READY - 通道未使能 * XMEDIA_ERRCODE_INVALID_PARAM - 送下来的帧无效 或者 超时参数无效 * XMEDIA_ERRCODE_TIMEOUT - 等待送帧水线正常超时 * XMEDIA_ERRCODE_BUSY - 等待送帧水线出错 或者 vb计数失败 * XMEDIA_FAILURE - 送帧入队失败 * 注意: * 必须在通道使能之后才能调用 */ xmedia_s32 xmedia_vo_send_chn_frame(xmedia_vo_layer layer, xmedia_vo_chn chn, xmedia_video_frame_info *frame_info, xmedia_s32 milli_sec); /* * 函数功能: 清除通道缓存 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * is_clear_all - 输入参数, 是否清除通道所有的buf * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_INVALID_PARAM - 参数不合法 * XMEDIA_ERRCODE_NOT_READY - 通道未使能 * XMEDIA_ERRCODE_BUSY - 还有vgs任务未完成 * XMEDIA_ERRCODE_TIMEOUT - 获取并发标识失败 * XMEDIA_ERRCODE_BUSY - 清buf list或者vb失败 */ xmedia_s32 xmedia_vo_clear_chn_buf(xmedia_vo_layer layer, xmedia_vo_chn chn, xmedia_bool is_clear_all); /* * 函数功能: 设置通道局部放大属性 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * zoom_attr - 输入参数, 局部放大属性结构指针 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_INVALID_PARAM - 参数不合法 * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 * XMEDIA_ERRCODE_NOT_READY - 视频层未使能 * XMEDIA_ERRCODE_NOT_SUPPORT - MULTI或者disp_buf_len为0 场景则不支持 * 注意: * 必须在视频层配置之后使用 */ xmedia_s32 xmedia_vo_set_chn_zoom_in(xmedia_vo_layer layer, xmedia_vo_chn chn, const xmedia_vo_zoom_attr *zoom_attr); /* * 函数功能: 获取通道局部放大属性 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * zoom_attr - 输出参数, 局部放大属性结构指针 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 */ xmedia_s32 xmedia_vo_get_chn_zoom_in(xmedia_vo_layer layer, xmedia_vo_chn chn, xmedia_vo_zoom_attr *zoom_attr); /* * 函数功能: 设置通道边框属性 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * border_attr - 输入参数, 边框属性结构体指针 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 * XMEDIA_ERRCODE_NOT_SUPPORT - MULTI或者disp_buf_len为0 场景则不支持 * XMEDIA_ERRCODE_INVALID_PARAM - 参数不合法 */ xmedia_s32 xmedia_vo_set_chn_border(xmedia_vo_layer layer, xmedia_vo_chn chn, const xmedia_vo_border_attr *border_attr); /* * 函数功能: 获取通道边框属性 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * border_attr - 输出参数, 边框属性结构体指针 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 */ xmedia_s32 xmedia_vo_get_chn_border(xmedia_vo_layer layer, xmedia_vo_chn chn, xmedia_vo_border_attr *border_attr); /* * 函数功能: 设置通道旋转属性 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * rota - 输入参数, 旋转属性 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NOT_SUPPORT - MULTI或者disp_buf_len为0 场景则不支持 * XMEDIA_ERRCODE_INVALID_PARAM - 参数不合法 */ xmedia_s32 xmedia_vo_set_chn_rotation(xmedia_vo_layer layer, xmedia_vo_chn chn, xmedia_video_rotation rota); /* * 函数功能: 获取通道旋转属性 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * rota - 输出参数, 旋转属性结构体指针 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 */ xmedia_s32 xmedia_vo_get_chn_rotation(xmedia_vo_layer layer, xmedia_vo_chn chn, xmedia_video_rotation *rota); /* * 函数功能: 设置通道镜像属性 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * mirror_attr - 输入参数, 镜像属性 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 * XMEDIA_ERRCODE_INVALID_PARAM - 参数不合法 * XMEDIA_ERRCODE_NOT_SUPPORT - MULTI或者disp_buf_len为0 场景则不支持 */ xmedia_s32 xmedia_vo_set_chn_mirror(xmedia_vo_layer layer, xmedia_vo_chn chn, const xmedia_vo_mirror_attr *mirror_attr); /* * 函数功能: 获取通道镜像属性 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * mirror_attr - 输出参数, 镜像属性结构体指针 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 */ xmedia_s32 xmedia_vo_get_chn_mirror(xmedia_vo_layer layer, xmedia_vo_chn chn, xmedia_vo_mirror_attr *mirror_attr); /* * 函数功能: 设置通道低延时模式 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * low_delay_mode - 输入参数, 低延时模式 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_INVALID_PARAM - 参数不合法 */ xmedia_s32 xmedia_vo_set_chn_low_delay(xmedia_vo_layer layer, xmedia_vo_chn chn, xmedia_vo_low_delay_mode low_delay_mode); /* * 函数功能: 获取通道低延时模式 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * low_delay_mode - 输出参数, 低延时模式结构体指针 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NULL_PTR - 参数空指针 */ xmedia_s32 xmedia_vo_get_chn_low_delay(xmedia_vo_layer layer, xmedia_vo_chn chn, xmedia_vo_low_delay_mode *low_delay_mode); /* * 函数功能: 暂停通道 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NOT_READY - 通道未使能 */ xmedia_s32 xmedia_vo_pause_chn(xmedia_vo_layer layer, xmedia_vo_chn chn); /* * 函数功能: 唤醒通道 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NOT_READY - 通道未使能 */ xmedia_s32 xmedia_vo_resume_chn(xmedia_vo_layer layer, xmedia_vo_chn chn); /* * 函数功能: 步进通道 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NOT_READY - 通道未使能 */ xmedia_s32 xmedia_vo_step_chn(xmedia_vo_layer layer, xmedia_vo_chn chn); /* * 函数功能: 设置通道显示缓存门限 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * threshold - 输入参数 显示门限 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NOT_READY - 视频层未使能 */ xmedia_s32 xmedia_vo_set_chn_threshold(xmedia_vo_layer layer, xmedia_vo_chn chn, xmedia_u32 threshold); /* * 函数功能: 获取通道显示缓存门限 * 函数参数: * layer - 输入参数, 视频层ID号 * chn - 输入参数, 通道ID号 * threshold - 输出参数,保存显示门限的指针 * 返回值: * XMEDIA_SUCCESS - 成功 * XMEDIA_ERRCODE_INVALID_GRP_ID - 无效的视频层ID * XMEDIA_ERRCODE_INVALID_CHN_ID - 通道ID无效 * XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 创建通道失败 * XMEDIA_ERRCODE_NOT_READY - 视频层未使能 */ xmedia_s32 xmedia_vo_get_chn_threshold(xmedia_vo_layer layer, xmedia_vo_chn chn, xmedia_u32 *threshold); #ifdef __cplusplus #if __cplusplus } #endif #endif #endif