|
|
/*
|
|
|
* Copyright (c) Hisilicon Technologies Co., Ltd. 2019-2020. All rights reserved.
|
|
|
* Description: Huanglong VI API declaration.
|
|
|
* Author: Hisilicon
|
|
|
* Create: 2019-11-20
|
|
|
*/
|
|
|
|
|
|
#ifndef __UAPI_VI_H__
|
|
|
#define __UAPI_VI_H__
|
|
|
|
|
|
#include "uapi_video.h"
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
#if __cplusplus
|
|
|
extern "C" {
|
|
|
#endif
|
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
/*
|
|
|
* Defines the vi type required in a VI.
|
|
|
* CNcomment: 定义VI类型枚举
|
|
|
*/
|
|
|
typedef enum {
|
|
|
UAPI_VI_MAIN, /* The main vi */
|
|
|
/* CNcomment: 主通路 */
|
|
|
UAPI_VI_SUB, /* The main vi */
|
|
|
/* CNcomment: 次通路,一屏双显时使用 */
|
|
|
UAPI_VI_MAX
|
|
|
} uapi_vi_type;
|
|
|
|
|
|
/*
|
|
|
* Defines the Interface mode required in a VI.
|
|
|
* CNcomment: 定义VI对接时序
|
|
|
*/
|
|
|
typedef enum {
|
|
|
UAPI_VI_INTF_FVHDE = 0, /* The FVHDE */
|
|
|
/* CNcomment: FVHDE时序 */
|
|
|
UAPI_VI_INTF_BT1120, /* The BT1120 */
|
|
|
/* CNcomment: BT1120时序 */
|
|
|
UAPI_VI_INTF_MAX
|
|
|
} uapi_vi_intf_mode;
|
|
|
|
|
|
/*
|
|
|
* Defines the type of VI quantization range type.
|
|
|
* CNcomment: 定义VI的输入的量化区间类型
|
|
|
*/
|
|
|
typedef enum {
|
|
|
UAPI_VI_QUANTIZATION_RANGE_AUTO = 0, /* Auto Type : in/out use same range */
|
|
|
/* CNcomment: 自动模式,由VI根据输入决策输出 */
|
|
|
UAPI_VI_QUANTIZATION_RANGE_LIMIT, /* Limit Range: force limit range */
|
|
|
/* CNcomment: 强制limit模式 */
|
|
|
UAPI_VI_QUANTIZATION_RANGE_FULL, /* Full Range : force full range */
|
|
|
/* CNcomment: 强制full模式 */
|
|
|
UAPI_VI_QUANTIZATION_RANGE_MAX
|
|
|
} uapi_vi_quantization_range;
|
|
|
|
|
|
/*
|
|
|
* Defines the access type required in a VI.
|
|
|
* CNcomment: 定义VI对接接口
|
|
|
*/
|
|
|
typedef enum {
|
|
|
UAPI_VI_ACCESS_TVD = 0, /* The access of TVD */
|
|
|
/* CNcomment: TVD接口 */
|
|
|
UAPI_VI_ACCESS_HDDEC, /* The access of HDDEC */
|
|
|
/* CNcomment: HDDEC接口 */
|
|
|
UAPI_VI_ACCESS_HDMIRX_PORT0, /* The access of HDMIRX PORT 0 */
|
|
|
/* CNcomment: HDMIRX接口0 */
|
|
|
UAPI_VI_ACCESS_HDMIRX_PORT1, /* The access of HDMIRX PORT 1 */
|
|
|
/* CNcomment: HDMIRX接口1 */
|
|
|
UAPI_VI_ACCESS_HDMIRX_PORT2, /* The access of HDMIRX PORT 2 */
|
|
|
/* CNcomment: HDMIRX接口2 */
|
|
|
UAPI_VI_ACCESS_HDMIRX_PORT3, /* The access of HDMIRX PORT 3 */
|
|
|
/* CNcomment: HDMIRX接口3 */
|
|
|
UAPI_VI_ACCESS_MAX
|
|
|
} uapi_vi_access_type;
|
|
|
|
|
|
/*
|
|
|
* Defines the type of VI display filed mode at game mode when interlace signal input.
|
|
|
* CNcomment: 定义隔行信号输入设置游戏模式下,设置VI的显示场模式
|
|
|
*/
|
|
|
typedef enum {
|
|
|
UAPI_VI_DISPLAY_FIELD_ALL = 0, /* Display All Field : vi display top and bottom */
|
|
|
/* CNcomment: 显示所有场 */
|
|
|
UAPI_VI_DISPLAY_FIELD_TOP, /* Display Top Field : vi only display top field */
|
|
|
/* CNcomment: 只显示顶场 */
|
|
|
UAPI_VI_DISPLAY_FIELD_BOTTOM, /* Display Bottom Field :vi only display bottom field */
|
|
|
/* CNcomment: 只显示底场 */
|
|
|
UAPI_VI_DISPLAY_FIELD_MAX
|
|
|
} uapi_vi_display_field;
|
|
|
|
|
|
/*
|
|
|
* Defines the type of VI picture mode.
|
|
|
* CNcomment: 定义图像模式,三种模式的区别是处理程度不同,时延不同
|
|
|
*/
|
|
|
typedef enum {
|
|
|
UAPI_VI_PICTURE_MODE_VIDEO, /* pass vpss and pass csc */
|
|
|
/* CNcomment: 视频模式由vpss做后处理,且会做csc颜色转换 */
|
|
|
UAPI_VI_PICTURE_MODE_GAME, /* bypass vpss and pass csc */
|
|
|
/* CNcomment: 游戏模式,不做vpss处理但做csc */
|
|
|
UAPI_VI_PICTURE_MODE_PC, /* bypass vpss and bypass csc */
|
|
|
/* CNcomment: PC模式低延时,不做vpss处理且不做csc颜色转换 */
|
|
|
UAPI_VI_PICTURE_MODE_MAX
|
|
|
} uapi_vi_picture_mode;
|
|
|
|
|
|
/*
|
|
|
* Defines the output configuration of VI.
|
|
|
* CNcomment: 定义VI的输出配置
|
|
|
*/
|
|
|
typedef struct {
|
|
|
td_u32 frame_rate; /* VI output frame rate. [0, input_frame_rate].
|
|
|
0 means input frame rate is equal to the output frame rate. */
|
|
|
/* CNcomment: VI输出的视频帧率,[0, input_frame_rate]。
|
|
|
0表示输出帧率等于输入帧率 */
|
|
|
td_u32 width; /* VI output frame width */
|
|
|
/* CNcomment: VI输出的视频宽度 */
|
|
|
td_u32 height; /* VI output frame height */
|
|
|
/* CNcomment: VI输出的视频高度 */
|
|
|
} uapi_vi_output_attr;
|
|
|
|
|
|
/*
|
|
|
* Defines the config parameters of vi
|
|
|
* CNcomment: 定义可变更配置参数的结构体
|
|
|
*/
|
|
|
typedef struct {
|
|
|
uapi_video_rect input_rect; /* The crop rect of input window */
|
|
|
/* CNcomment: 输入窗口的裁减区域 */
|
|
|
td_u32 width; /* The width of source image */
|
|
|
/* CNcomment: 源图像一帧的宽度,3D格式为单眼宽高 */
|
|
|
td_u32 height; /* The height of source image */
|
|
|
/* CNcomment: 源图像一帧的高度,
|
|
|
即隔行信号是两场的高度,逐行信号是一帧的高度,3D格式为单眼宽高 */
|
|
|
td_u32 frame_rate; /* The input framerate */
|
|
|
/* CNcomment: 输入帧率 */
|
|
|
uapi_color_sys color_sys; /* The color system */
|
|
|
/* CNcomment: ATV/CVBS信源下的彩色制式 */
|
|
|
uapi_vi_display_field display_field; /* The mode of display field mode at game mode or pc mode */
|
|
|
/* CNcomment: 隔行设置游戏模式或者pc模式,设置场送帧模式 */
|
|
|
td_bool interlace; /* Is interlace or progressive */
|
|
|
/* CNcomment: 逐行隔行信息 */
|
|
|
} uapi_vi_config;
|
|
|
|
|
|
/*
|
|
|
* Defines the created parameters of vi
|
|
|
* CNcomment: 定义同步状态变更参数的结构体
|
|
|
*/
|
|
|
typedef struct {
|
|
|
uapi_vi_type vi_type; /* The type of vi */
|
|
|
/* CNcomment: vi类型,实体vi最多创建两路2D或则一路3D */
|
|
|
uapi_vi_intf_mode intf_mode; /* The interface mode of vi */
|
|
|
/* CNcomment: 实体vi对接的接口时序类型 */
|
|
|
uapi_video_source source_type; /* The input soure type */
|
|
|
/* CNcomment: 输入信源类型 */
|
|
|
uapi_vi_access_type access_type; /* The access of vi */
|
|
|
/* CNcomment: 实体vi对接的输入数据源 */
|
|
|
uapi_oversample over_sample; /* The oversample mode */
|
|
|
/* CNcomment: 过采样模式 */
|
|
|
uapi_video_frame_packing_type video_3d_type; /* The 2d/3d format */
|
|
|
/* CNcomment: 2D/3D 格式 */
|
|
|
uapi_color_description color_description; /* The color spacet */
|
|
|
/* CNcomment: 彩色空间 */
|
|
|
uapi_video_pixel_format pixel_format; /* The pixel of Format, for example, RGB444/YUV444/YUV422 */
|
|
|
/* CNcomment: 输入像素格式 RGB444/YUV444/422 */
|
|
|
uapi_pixel_bit_depth bit_depth; /* The bit width, max 12bit */
|
|
|
/* CNcomment: 输入位宽 8/10/12BIT */
|
|
|
uapi_vi_picture_mode picture_mode; /* The UI picture mode */
|
|
|
/* CNcomment: 用户设置的图像模式 */
|
|
|
td_u32 vblank; /* The vblank, for the framepacking */
|
|
|
/* CNcomment: 场消隐区宽度,用于处理3D格式FP */
|
|
|
td_bool secure; /* Support secure path */
|
|
|
/* CNcomment: 安全通路 */
|
|
|
uapi_vi_config vi_config;
|
|
|
} uapi_vi_attr;
|
|
|
|
|
|
/*
|
|
|
* Defines timing of pattern
|
|
|
* CNcomment: 定义pattern的时序源
|
|
|
*/
|
|
|
typedef enum {
|
|
|
UAPI_VI_PATTERN_TIMING_SOURCE_OFF, /* timing off */
|
|
|
/* CNcomment: 关闭时序 */
|
|
|
UAPI_VI_PATTERN_TIMING_SOURCE_INPUT, /* input timing */
|
|
|
/* CNcomment: 前端输入时序 */
|
|
|
UAPI_VI_PATTERN_TIMING_SOURCE_SELF, /* self timing */
|
|
|
/* CNcomment: 自产生时序 */
|
|
|
UAPI_VI_PATTERN_TIMING_SOURCE_MAX
|
|
|
} uapi_vi_pattern_timing_source;
|
|
|
|
|
|
/*
|
|
|
* Defines data of pattern
|
|
|
* CNcomment: 定义pattern的数据,显示不同画面
|
|
|
*/
|
|
|
typedef enum {
|
|
|
UAPI_VI_PATTERN_DATA_OFF, /* data off */
|
|
|
/* CNcomment: 关闭数据 */
|
|
|
UAPI_VI_PATTERN_DATA_STATIC, /* static data */
|
|
|
/* CNcomment: 静态数据,显示静态画面 */
|
|
|
UAPI_VI_PATTERN_DATA_DYNAMIC, /* dynamic picture */
|
|
|
/* CNcomment: 动态数据,显示动态画面 */
|
|
|
UAPI_VI_PATTERN_DATA_MAX
|
|
|
} uapi_vi_pattern_data;
|
|
|
|
|
|
/*
|
|
|
* Defines pattern info
|
|
|
* CNcomment: 定义pattern信息
|
|
|
*/
|
|
|
typedef struct {
|
|
|
uapi_vi_pattern_timing_source timing_source; /* pattern timming source */
|
|
|
/* CNcomment: pattern时序源 */
|
|
|
uapi_vi_pattern_data data; /* pattern data */
|
|
|
/* CNcomment: pattern数据 */
|
|
|
} uapi_vi_pattern_info;
|
|
|
|
|
|
/*
|
|
|
* brief Initializes the VI module. CNcomment: 初始化VI模块 CNend
|
|
|
* attention \n
|
|
|
* Before calling ::uapi_vi_create to create a VI, you must call this application programming interface (API).
|
|
|
* CNcomment: 在调用VI模块其他接口前,要求首先调用本接口 CNend
|
|
|
* param N/A
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_OPEN_FAILED. The VI device is not exist CNcomment: Vi设备不存在 CNend
|
|
|
* see \n
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_init(td_void);
|
|
|
|
|
|
/*
|
|
|
* brief Deinitializes the VI module. CNcomment: 去初始化VI模块 CNend
|
|
|
* attention \n
|
|
|
* After calling ::uapi_vi_destroy, and Destroy all vi, Please call this API function.
|
|
|
* CNcomment: 在调用::uapi_vi_destroy接口销毁所有的VI通路后,调用本接口 CNend
|
|
|
* param N/A
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* see \n
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_deinit(td_void);
|
|
|
|
|
|
/*
|
|
|
* brief Obtains the default configuration of a VI. CNcomment: 获取缺省的VI配置 CNend
|
|
|
* attention \n
|
|
|
* It is recommended that you call this API to obtain the default vi attributes before creating a vi.
|
|
|
* This avoids creation failures due to incomplete or incorrect parameters.
|
|
|
* CNcomment: 创建VI前建议调用本接口,获取到VI默认属性,避免创建VI时由于参数不全或参数错误导致VI创建不成功现象 CNend
|
|
|
* param[in] attr Pointer to VI attributes. For details, see the description of ::uapi_vi_attr.
|
|
|
* CNcomment: 指针类型,VI创建属性,请参见::uapi_vi_attr. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* see \n
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_get_default_attr(uapi_vi_attr *attr);
|
|
|
|
|
|
/*
|
|
|
* brief Create a VI. CNcomment: 创建VI CNend
|
|
|
* attention \n
|
|
|
* You can call this API to create a vi. input created attributes, This API return the created vi handle.
|
|
|
* CNcomment: 创建VI时调用本接口,传入创建属性,返回所创建VI的句柄 CNend
|
|
|
* param[in] attr Pointer to VI attributes. For details, see the description of ::uapi_vi_attr.
|
|
|
* CNcomment: 指针类型,VI创建属性,请参见::uapi_vi_attr. CNend
|
|
|
* param[out] vi_handle Pointer to VI handle. CNcomment: 指针类型,VI句柄. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_NULL_PTR. The pointer is null. CNcomment: 指针参数为空 CNend
|
|
|
* retval ::SOC_ERR_VI_NOT_INIT. The Vi module is not initialized. CNcomment: 模块未初始化 CNend
|
|
|
* retval ::SOC_ERR_VI_INVALID_PARA. The input parameter is invalid. CNcomment: 输入参数非法 CNend
|
|
|
* see \n
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_create(uapi_vi_attr *attr, td_handle *vi_handle);
|
|
|
|
|
|
/*
|
|
|
* brief Destroy a VI. CNcomment: 创建VI CNend
|
|
|
* attention \n
|
|
|
* You can call this API to destroy a vi. input VI handle. CNcomment: 销毁VI时调用本接口,传入需销毁的VI句柄 CNend
|
|
|
* param[in] vi_handle VI handle. CNcomment: 32位整数,VI句柄. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_NOT_INIT. The Vi module is not initialized. CNcomment: 模块未初始化 CNend
|
|
|
* retval ::SOC_ERR_VI_INVALID_PARA. The input parameter is invalid. CNcomment: 输入参数非法 CNend
|
|
|
* see \n
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_destroy(td_handle vi_handle);
|
|
|
|
|
|
/*
|
|
|
* brief attach the window with vi source.
|
|
|
* CNcomment: 把WINDOW与VI绑定 CNend
|
|
|
* attention \n
|
|
|
* it can attach the handler of vi to the window.
|
|
|
* CNcomment: 可以将VI的句柄与WINDOW绑定。 CNend
|
|
|
* param[in] win_handle the input window handler. CNcomment: WINDOW句柄 CNend
|
|
|
* param[in] vi_handle the handle of video source. CNcomment: 数据源句柄 CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_NOT_INIT. The Vi module is not initialized. CNcomment: 模块未初始化 CNend
|
|
|
* retval ::SOC_ERR_VI_INVALID_PARA. The input parameter is invalid. CNcomment: 输入参数非法 CNend
|
|
|
* see \n
|
|
|
* CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_attach_win(td_handle vi_handle, td_handle win_handle);
|
|
|
|
|
|
/*
|
|
|
* brief detach the window from vi. CNcomment: 把WINDOW与VI解绑定 CNend
|
|
|
* attention \n
|
|
|
* CNcomment: 无 CNend
|
|
|
* param[in] win_handle the input window handler. CNcomment: WINDOW句柄 CNend
|
|
|
* param[in] vi_handle the handler of video source. CNcomment: 数据源句柄 CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_NOT_INIT. The Vi module is not initialized. CNcomment: 模块未初始化 CNend
|
|
|
* retval ::SOC_ERR_VI_INVALID_PARA. The input parameter is invalid. CNcomment: 输入参数非法 CNend
|
|
|
* see \n
|
|
|
* CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_detach_win(td_handle vi_handle, td_handle win_handle);
|
|
|
|
|
|
/*
|
|
|
* brief Start a VI. CNcomment: 启动VI CNend
|
|
|
* attention \n
|
|
|
* You can call this API to start a vi. input VI handle. CNcomment: 启动VI时调用本接口,传入需启动的VI句柄 CNend
|
|
|
* param[in] vi_handle VI handle. CNcomment: 32位整数,VI句柄. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_NOT_INIT. The Vi module is not initialized. CNcomment: 模块未初始化 CNend
|
|
|
* retval ::SOC_ERR_VI_INVALID_PARA. The input parameter is invalid. CNcomment: 输入参数非法 CNend
|
|
|
* see \n
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_start(td_handle vi_handle);
|
|
|
|
|
|
/*
|
|
|
* brief Stop a VI. CNcomment: 停止VI CNend
|
|
|
* attention \n
|
|
|
* You can call this API to stop a vi. input VI handle. CNcomment: 停止VI时调用本接口,传入需停止的VI句柄 CNend
|
|
|
* param[in] vi_handle VI handle. CNcomment: 32位整数,VI句柄. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_NOT_INIT. The Vi module is not initialized. CNcomment: 模块未初始化 CNend
|
|
|
* retval ::SOC_ERR_VI_INVALID_PARA. The input parameter is invalid. CNcomment: 输入参数非法 CNend
|
|
|
* see \n
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_stop(td_handle vi_handle);
|
|
|
|
|
|
/*
|
|
|
* brief Update the no standard Information of a VI,special for TV. CNcomment: 更新VI的非标信息,TV特有 CNend
|
|
|
* attention \n
|
|
|
* When you need update the no standard Information of a VI, You can call this API. CNcomment: 更新VI的非标信息 CNend
|
|
|
* param[in] vi_handle VI handle. CNcomment: 32位整数,VI句柄. CNend
|
|
|
* param[in] info Pointer to VI no standard Information.
|
|
|
* For details, see the description of ::uapi_video_nonstd_info.
|
|
|
* CNcomment: 指针类型,非标信息属性,请参见::uapi_video_nonstd_info. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_NULL_PTR. The pointer is null. CNcomment: 指针参数为空 CNend
|
|
|
* retval ::SOC_ERR_VI_NOT_INIT. The Vi module is not initialized. CNcomment: 模块未初始化 CNend
|
|
|
* retval ::SOC_ERR_VI_INVALID_PARA. The input parameter is invalid. CNcomment: 输入参数非法 CNend
|
|
|
* see \n
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_update_nstd_info(td_handle vi_handle, uapi_video_nonstd_info *info);
|
|
|
|
|
|
/*
|
|
|
* brief Set VI source csc type. CNcomment: 设置VI的Csc类型 CNend
|
|
|
* attention \n
|
|
|
* When you want to set VI Csc, You can call this API. CNcomment: 设置VI的输入源的Csc类型 CNend
|
|
|
* param[in] vi_handle VI handle. CNcomment: 32位整数,VI句柄. CNend
|
|
|
* param[in] csc_type Pointer to Csc Range type. For details, see the description of ::uapi_vi_quantization_range.
|
|
|
* CNcomment: 指针类型,Csc类型,请参见::uapi_vi_quantization_range. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_NOT_INIT. The Vi module is not initialized. CNcomment: 模块未初始化 CNend
|
|
|
* retval ::SOC_ERR_VI_INVALID_PARA. The input parameter is invalid. CNcomment: 输入参数非法 CNend
|
|
|
* see \n
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_set_src_quantization_range(td_handle vi_handle, uapi_vi_quantization_range range_type);
|
|
|
|
|
|
/*
|
|
|
* brief Set VI picture mode. CNcomment: 设置VI的图像模式 CNend
|
|
|
* attention \n
|
|
|
* When you want to set VI picture mode, You can call this API. CNcomment: 设置VI的图像模式 CNend
|
|
|
* param[in] vi_handle VI handle. CNcomment: 32位整数,VI句柄. CNend
|
|
|
* param[in] picture_mode Pointer to picture mode. For details, see the description of ::uapi_vi_picture_mode.
|
|
|
* CNcomment: 指针类型,图像模式,请参见::uapi_vi_picture_mode. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_NOT_INIT. The Vi module is not initialized. CNcomment: 模块未初始化 CNend
|
|
|
* retval ::SOC_ERR_VI_INVALID_PARA. The input parameter is invalid. CNcomment: 输入参数非法 CNend
|
|
|
* see \n
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_set_picture_mode(td_handle vi_handle, uapi_vi_picture_mode picture_mode);
|
|
|
|
|
|
/*
|
|
|
* brief Update VI's Config parameter. CNcomment: 设置VI的配置属性 CNend
|
|
|
* attention \n
|
|
|
* When you want to Update VI Config parameter, You can call this API. CNcomment: 设置VI的配置属性 CNend
|
|
|
* param[in] vi_handle VI handle. CNcomment: 32位整数,VI句柄. CNend
|
|
|
* param[in] cfg Pointer to Create Attr. For details, see the description of ::uapi_vi_config.
|
|
|
* CNcomment:指针类型,创建属性,请参见::uapi_vi_config. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_NULL_PTR. The pointer is null. CNcomment: 指针参数为空 CNend
|
|
|
* retval ::SOC_ERR_VI_NOT_INIT. The Vi module is not initialized. CNcomment: 模块未初始化 CNend
|
|
|
* retval ::SOC_ERR_VI_INVALID_PARA. The input parameter is invalid. CNcomment: 输入参数非法 CNend
|
|
|
* see \n
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_set_config(td_handle vi_handle, const uapi_vi_config *cfg);
|
|
|
|
|
|
/*
|
|
|
* brief Get VI's Config parameter. CNcomment: 获取VI的当前配置属性 CNend
|
|
|
* attention \n
|
|
|
* When you want to Get VI Config parameter, You can call this API. CNcomment: 获取VI的配置属性 CNend
|
|
|
* param[in] vi_handle VI handle. CNcomment: 32位整数,VI句柄. CNend
|
|
|
* param[in] cfg Pointer to Config. For details, see the description of ::uapi_vi_config.
|
|
|
* CNcomment: 指针类型,配置属性,请参见::uapi_vi_config. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_NULL_PTR. The pointer is null. CNcomment: 指针参数为空 CNend
|
|
|
* retval ::SOC_ERR_VI_NOT_INIT. The Vi module is not initialized. CNcomment: 模块未初始化 CNend
|
|
|
* retval ::SOC_ERR_VI_INVALID_PARA. The input parameter is invalid. CNcomment: 输入参数非法 CNend
|
|
|
* see \n
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_get_config(td_handle vi_handle, uapi_vi_config *cfg);
|
|
|
|
|
|
/*
|
|
|
* brief Get VI's Attr. CNcomment: 获取VI的当前属性 CNend
|
|
|
* attention \n
|
|
|
* When you want to Get VI Attr, You can call this API. CNcomment: 获取VI的属性 CNend
|
|
|
* param[in] vi_handle VI handle. CNcomment: 32位整数,VI句柄. CNend
|
|
|
* param[in] attr Pointer to Attr. For details, see the description of ::uapi_vi_attr.
|
|
|
* CNcomment: 指针类型,创建属性,请参见::uapi_vi_attr. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_NULL_PTR. The pointer is null. CNcomment: 指针参数为空 CNend
|
|
|
* retval ::SOC_ERR_VI_NOT_INIT. The Vi module is not initialized. CNcomment: 模块未初始化 CNend
|
|
|
* retval ::SOC_ERR_VI_INVALID_PARA. The input parameter is invalid. CNcomment: 输入参数非法 CNend
|
|
|
* see \n
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_get_attr(td_handle vi_handle, uapi_vi_attr *attr);
|
|
|
|
|
|
/*
|
|
|
* brief Set VI uapi_vi_set_capture_latency. CNcomment: 设置VI采集延迟值 CNend
|
|
|
* attention \n
|
|
|
* param[in] vi_handle: VI handle. CNcomment: 32位整数,VI句柄. CNend
|
|
|
* param[in] capture_latency CNcomment:采集延时值 输入范围 0-100, 0:表示信号来即发送,100:表示采集完再发送. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* see \n
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_set_capture_latency(td_handle vi_handle, td_u32 capture_latency);
|
|
|
|
|
|
/*
|
|
|
* brief Set VI uapi_vi_get_capture_latency. CNcomment: 获取VI采集延迟值 CNend
|
|
|
* attention \n
|
|
|
* param[in] vi_handle: VI handle. CNcomment: 32位整数,VI句柄. CNend
|
|
|
* param[in] capture_latency CNcomment:采集延时值,正常范围 0-100. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* see \n
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_get_capture_latency(td_handle vi_handle, td_u32 *capture_latency);
|
|
|
|
|
|
/*
|
|
|
* brief Set VI pattern. CNcomment: 设置VI的pattern CNend
|
|
|
* attention When pattern is disabled, pattern timing and pattern data must be both off.
|
|
|
* When pattern is enabled, timing and data must be not off at the same time.
|
|
|
* CNcomment:当关闭pattern时,pattern时序和pattern数据必须同时关闭;当打开pattern时,pattern时序和pattern数据必须同时打开 CNend
|
|
|
* When you want to set VI pattern to debug, you can call this API. CNcomment: 设置VI的pattern CNend
|
|
|
* param[in] vi_handle VI handle. CNcomment: 32位整数,VI句柄. CNend
|
|
|
* param[in] pattern_info Pointer to pattern. For details, see the description of ::uapi_vi_pattern_info.
|
|
|
* CNcomment: 指针类型,pattern信息,请参见::uapi_vi_pattern_info. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_NULL_PTR. The pointer is null. CNcomment: 指针参数为空 CNend
|
|
|
* retval ::SOC_ERR_VI_INVALID_PARA. The input parameter is invalid. CNcomment: 输入参数非法 CNend
|
|
|
* retval ::SOC_ERR_VI_NOT_SUPPORT. The ability is not support. CNcomment: 输入参数不支持 CNend
|
|
|
* see \n
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_set_pattern(td_handle vi_handle, uapi_vi_pattern_info *pattern_info);
|
|
|
|
|
|
/*
|
|
|
* brief Get VI pattern. CNcomment: 获取VI的pattern信息 CNend
|
|
|
* attention \n
|
|
|
* When you want to get VI pattern info, you can call this API. CNcomment: 获取VI的pattern info CNend
|
|
|
* param[in] vi_handle VI handle. CNcomment: 32位整数,VI句柄. CNend
|
|
|
* param[in/out] pattern_info Pointer to pattern. For details, see the description of ::uapi_vi_pattern_info.
|
|
|
* CNcomment: 指针类型,pattern信息,请参见::uapi_vi_pattern_info. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_NULL_PTR. The pointer is null. CNcomment: 指针参数为空 CNend
|
|
|
* retval ::SOC_ERR_VI_INVALID_PARA. The input parameter is invalid. CNcomment: 输入参数非法 CNend
|
|
|
* retval ::SOC_ERR_VI_NOT_SUPPORT. The ability is not support. CNcomment: 输入参数不支持 CNend
|
|
|
* see \n
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_get_pattern(td_handle vi_handle, uapi_vi_pattern_info *pattern_info);
|
|
|
|
|
|
/*
|
|
|
* brief Get VI frame info. CNcomment: 获取VI的视频帧信息 CNend
|
|
|
* attention \n
|
|
|
* When you want to get frame info from VI, you can call this API. CNcomment: 获取VI的视频帧信息 CNend
|
|
|
* param[in] vi_handle VI handle. CNcomment: 32位整数,VI句柄. CNend
|
|
|
* param[in/out] frame_info. Pointer to farme. For details, see the description of ::uapi_video_frame_info.
|
|
|
* CNcomment: 指针类型,视频帧信息,请参见::uapi_video_frame_info. CNend
|
|
|
* param[in] timeout_ms.During this period, VI requires frame until timeout or require success.
|
|
|
* CNcomment: 32位整数,超时时间,单位ms。VI会在这个时间段内一直取帧,直到取到或者超时再返回. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_NULL_PTR. The pointer is null. CNcomment: 指针参数为空 CNend
|
|
|
* retval ::SOC_ERR_VI_INVALID_PARA. The input parameter is invalid. CNcomment: 输入参数非法 CNend
|
|
|
* retval ::SOC_ERR_VI_NOT_SUPPORT. The ability is not support. CNcomment: 输入参数不支持 CNend
|
|
|
* retval ::SOC_ERR_VI_BUFFER_EMPTY. Frame buffer list is empty. CNcomment: 获取帧失败,帧缓存队列为空 CNend
|
|
|
* retval ::SOC_ERR_VI_DEVICE_BUSY. VI has already attach win. CNcomment: 该VI已经与WIN绑定 CNend
|
|
|
* see This function cannot be bound to Windows. When uapi_vi_attach_win and uapi_vi_detach_win are invoked,
|
|
|
* win_handle needs to be 0.
|
|
|
* CNcomment: 使用本功能时,不能和win绑定,即调用uapi_vi_attach_win和uapi_vi_detach_win时win_handle需要传0 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_acquire_frame(td_handle vi_handle, uapi_video_frame_info *frame_info, td_u32 timeout_ms);
|
|
|
|
|
|
/*
|
|
|
* brief release VI frame info. CNcomment: 释放VI的视频帧信息 CNend
|
|
|
* attention \n
|
|
|
* When you want to release frame info from VI, you can call this API. CNcomment: 释放VI的视频帧信息 CNend
|
|
|
* param[in] vi_handle VI handle. CNcomment: 32位整数,VI句柄. CNend
|
|
|
* param[in] frame_info. Pointer to farme. For details, see the description of ::uapi_video_frame_info.
|
|
|
* CNcomment: 指针类型,视频帧信息,请参见::uapi_video_frame_info. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_NULL_PTR. The pointer is null. CNcomment: 指针参数为空 CNend
|
|
|
* retval ::SOC_ERR_VI_INVALID_PARA. The input parameter is invalid. CNcomment: 输入参数非法 CNend
|
|
|
* retval ::SOC_ERR_VI_NOT_SUPPORT. The ability is not support. CNcomment: 输入参数不支持 CNend
|
|
|
* retval ::SOC_ERR_VI_DEVICE_BUSY. VI has already attach win. CNcomment: 该VI已经与WIN绑定 CNend
|
|
|
* see This function cannot be bound to Windows. When uapi_vi_attach_win and uapi_vi_detach_win are invoked,
|
|
|
* win_handle needs to be 0.
|
|
|
* CNcomment: 使用本功能时,不能和win绑定,即调用uapi_vi_attach_win和uapi_vi_detach_win时win_handle需要传0 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_release_frame(td_handle vi_handle, uapi_video_frame_info *frame_info);
|
|
|
|
|
|
/*
|
|
|
* brief set output attribution of VI. CNcomment: 设置VI的输出属性 CNend
|
|
|
* attention \n
|
|
|
* When you need to control the output attribution of VI, such as output frame rate, you can call this API.
|
|
|
* CNcomment: 当需要控制VI的输出属性,例如输出帧率时,可以调用本接口 CNend
|
|
|
* param[in] vi_handle VI handle. CNcomment: 32位整数,VI句柄. CNend
|
|
|
* param[in] output_attr. Pointer to uapi_vi_output_attr.
|
|
|
For details, see the description of ::uapi_vi_output_attr.
|
|
|
* CNcomment: 指针类型,VI输出属性,请参见::uapi_vi_output_attr. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_NULL_PTR. The pointer is null. CNcomment: 指针参数为空 CNend
|
|
|
* retval ::SOC_ERR_VI_INVALID_PARA. The input parameter is invalid. CNcomment: 输入参数非法 CNend
|
|
|
* retval ::SOC_ERR_VI_NOT_SUPPORT. The ability is not support. CNcomment: 输入参数不支持 CNend
|
|
|
* see 1.After the output frame rate is changed, the VI module evenly discards frames to reach the target frame rate.
|
|
|
* This function is used in scenarios where the bandwidth is reduced. This function may cause frame freezing and
|
|
|
* is not recommended in other scenarios.
|
|
|
* 1. 输出帧率修改后VI会均匀丢帧以达到目标目标帧率,用于降低带宽的场景使用。
|
|
|
* 该功能可能会造成卡顿等效果问题,其他场景不推荐使用。
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_set_output_attr(td_handle vi_handle, const uapi_vi_output_attr *output_attr);
|
|
|
|
|
|
/*
|
|
|
* brief set output attribution of VI. CNcomment: 获取VI的输出属性 CNend
|
|
|
* attention \n
|
|
|
* When you need to control the output of VI, such as output frame rate, you can call this API.
|
|
|
* CNcomment: 当需要获取VI的输出属性时,可以调用本接口 CNend
|
|
|
* param[in] vi_handle VI handle. CNcomment: 32位整数,VI句柄. CNend
|
|
|
* param[out] custom_config. Pointer to uapi_vi_output_attr.
|
|
|
For details, see the description of ::uapi_vi_output_attr.
|
|
|
* CNcomment: 指针类型,VI输出属性,请参见::uapi_vi_output_attr. CNend
|
|
|
* retval ::TD_SUCCESS Success CNcomment: 成功 CNend
|
|
|
* retval ::TD_FAILURE Calling this API fails. CNcomment: API系统调用失败 CNend
|
|
|
* retval ::SOC_ERR_VI_NULL_PTR. The pointer is null. CNcomment: 指针参数为空 CNend
|
|
|
* retval ::SOC_ERR_VI_INVALID_PARA. The input parameter is invalid. CNcomment: 输入参数非法 CNend
|
|
|
* retval ::SOC_ERR_VI_NOT_SUPPORT. The ability is not support. CNcomment: 输入参数不支持 CNend
|
|
|
* see \n
|
|
|
* N/A CNcomment: 无 CNend
|
|
|
*/
|
|
|
td_s32 uapi_vi_get_output_attr(td_handle vi_handle, uapi_vi_output_attr *output_attr);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
#if __cplusplus
|
|
|
}
|
|
|
#endif
|
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
#endif /* __UAPI_VI_H__ */
|