Files

1134 lines
40 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* 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; //范围为[01000]; x_ratio = x * 1000 / W, x是局部放大的起始位置,W是通道帧的宽度
xmedia_u32 y_ratio; //范围为[01000]; y_ratio = y * 1000 / H, y是局部放大的起始位置,H是通道帧的高度
xmedia_u32 w_ratio; //范围为[01000]; w_ratio = x * 1000 / W, w是局部放大的宽度,W是通道帧的宽度
xmedia_u32 h_ratio; //范围为[01000]; 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