HiMPP V3.0 媒体处理软件笔记(四)

本文详细介绍了海思VI模块的多个关键API,包括获取和设置丢点模式、旋转属性、模块参数,以及VI通道与视频缓存VB池的绑定与解绑定。这些API对于控制和优化视频输入处理流程至关重要。

HI_MPI_VI_GetSkipModeEx
【描述】
获取VI高级丢点模式。
【语法】
HI_S32 HI_MPI_VI_GetSkipModeEx(VI_CHN ViChn,VI_SKIP_MODE_EX_S *pstModeEx);
【参数】

参数名称描述输入/输出
ViChnVI通道号输入
pstModeExVI丢点模式输出

【返回值】
同上

【芯片差异】

芯片类型是否支持
Hi3536
Hi3521A/Hi3521DV100/Hi3531A/Hi3531DV100

【需求】
同上
【注意】
参见HI_MPI_VI_SetSkipModeEx的注意事项。
【举例】
参见HI_MPI_VI_SetSkipModeEx的举例
【相关主题】

HI_MPI_VI_SetRotate
【描述】
设置VI图像旋转属性。
【语法】
HI_S32 HI_MPI_VI_SetRotate(VI_CHN ViChn,const ROTATE_E enRotate);
【参数】

参数名称描述输入/输出
ViChnVI物理通道号。
取值范围:[0,VIU_MAX_PHYCHN_NUM)
输入
enRotate旋转属性输入

【返回值】
同上

【芯片差异】

芯片类型是否支持
Hi3536
Hi3521A/Hi3521DV100/Hi3531A/Hi3531DV100

【需求】
同上
【注意】
· 用户图片不支持旋转。
· 非用户图片设置:
  - Rotate是静态属性,不能动态修改,且必须在设置通道属性后,在Enable通道前设置此属性。
  - 仅支持非场输出的SP420和YUV400图像的旋转。
  - 仅支持90度、180度、270度的旋转,不支持任意角度旋转。
  - 设置旋转后,物理通道输出的宽高可能会发送变化,但获取的通道属性中的通道宽高仍为用户设置值。比如720P输入的图像,在旋转90、270度时,实际输出的图像大小为(720,1280),但HI_MPI_VI_GetChnAttr获取的DestSize宽高仍为(1280,720)。
  - 旋转会多占用一块COMM VB,并且旋转后的COMM VB的大小可能和旋转前不一致,因此开启旋转,需要根据开启旋转的通道数以及大小多分配相应的COMM VB。
  - Rotate、mirror及flip不能和混合采集同时设置,可能会引起图像抖动。

【举例】

HI_S32 s32Ret;
VI_CHN ViChn = 0;
ROTATE_E enRotate;

/* first enable vi device */

/* set vi chn attr */
s32Ret = HI_MPI_VI_SetChnAttr(ViChn,&stChnAttr);
if(s32Ret != HI_SUCCESS)
{
   printf("Set chn attributes failed with error code %#x!\n",s32Ret);
   return HI_FAILURE;
}
/* Set Rotate_90 */
s32Ret = HI_MPI_VI_SetRotate(ViChn,ROTATE_90)if(HI_SUCCESS != s32ret)
{
   printf("Set vi rotate err:0x%x\n",s32ret);
   return s32Ret;
}

s32Ret = HI_MPI_VI_EnableChn(ViChn);
if(s32Ret != HI_SUCCESS)
{
   printf("Enable can failed with error code %#x!\n",s32Ret);
   return HI_FAILURE;
}

/* Get Rotate */
s32Ret = HI_MPI_VI_GetRotate(ViChn,&enRotate);
if(HI_SUCCESS != s32ret)
{
   printf("Get vi rotate err:0x%x\n",s32ret);
   return s32Ret;
}

【相关主题】

HI_MPI_VI_GetRotate
【描述】
获取VI图像旋转属性。
【语法】
HI_S32 HI_MPI_VI_GetRotate(VI_CHN ViChn,ROTATE_E *penRotate);
【参数】

参数名称描述输入/输出
ViChnVI物理通道号。
取值范围:[0,VIU_MAX_PHYCHN_NUM)
输入
penRotate旋转属性指针。输出

【返回值】
同上

【芯片差异】

芯片类型是否支持
Hi3536
Hi3521A/Hi3521DV100/Hi3531A/Hi3531DV100

【需求】
同上
【注意】

【相关主题】
HI_MPI_VI_SetRotate

HI_MPI_VI_SetModParam

【描述】
设置VI模块参数
【语法】
HI_S32 HI_MPI_VI_SetModParam(const VI_MOD_PARAM_S *pstModParam);
【参数】

参数名称描述输入/输出
pstModParamVI模块参数指针输入

【返回值】
同上

【芯片差异】

【需求】
同上
【注意】

· 该接口用于在加载VI模块后重新设置部分模块参数,若未调用该接口则使用加载模块时传入的模块参数或其默认值。
· 必须在设置VI设备属性或扩展属性之前调用该接口,否则返回对应错误码。
【举例】

【相关主题】
HI_MPI_VI_GetModParam

HI_MPI_VI_GetModParam
【描述】
获取VI模块参数。
【语法】
HI_S32 HI_MPI_VI_GetModParam(VI_MOD_PARAM_S *pstModParam);
【参数】

参数名称描述输入/输出
pstModParamVI模块参数指针输出

【返回值】
同上
【需求】
同上
【注意】

【举例】

【相关主题】
HI_MPI_VI_SetModParam

HI_MPI_VI_AttachVbPool
【描述】
将VI通道绑定到某个视频缓存VB池中。
【语法】
HI_S32 HI_MPI_VI_AttachVbPool(VI_CHN ViChn,VB_POOL,hVbPool);
【参数】

参数名称描述输入/输出
ViChn视频通道号。
取值范围:[0,VIU_MAX_CHN_NUM)
输入
hVbPool视频缓存VB池信息输入

【返回值】
同上
【需求】
同上
【注意】
· 必须保证通道已创建。
· 通道必须是物理通道,不包括级联扩展通道。
· 用户必须调用接口HI_MPI_VB_CreatePool创建一个视频缓存VB池,再通过调用接口HI_MPI_VI_AttachVbPool把当前通道绑定到固定PoolId的VB池中。可以把多个通道绑定到同一个VB池中,但是不能把同一个通道绑定到多个VB池中。
· 当要切换当前通道绑定的VB池时,只需再调一次接口HI_MPI_VI_AttachVbPool正确配置需要绑定到的VB池即可。
· hVbPool必须保证是已创建VB池的有效PoolId。
· 此接口对用户图片无效,用户图片还是使用公共VB。
【举例】

【相关主题】
HI_MPI_VI_DetachVbPool

HI_MPI_VI_DetachVbPool
【描述】
将VI通道从某个视频缓存VB池中解绑定。
【语法】
HI_S32 HI_MPI_VI_DetachVbPool(VI_CHN ViChn);
【参数】

参数名称描述输入/输出
ViChn视频通道号。
取值范围:[0,VIU_MAX_CHN_NUM)
输入

【返回值】
同上
【需求】
同上
【注意】
必须保证通道已创建。
【举例】

【相关主题】
HI_MPI_VI_AttachVbPool

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值