海思3516A区域管理操作汇总及位图填充示例

本文介绍了海思3516A芯片在视频处理中的区域管理操作,包括创建和设置区域属性、指定区域到通道、位图填充(BMP图片和字库文件)。详细讲解了如何进行位图填充,提供了加载Bmp文件和字库文件转化为位图的步骤及示例代码。
摘要由CSDN通过智能技术生成

按照手册中的说明,使用区域管理功能需要做如下几步
1.用户填充区域属性并创建区域
2.将该区域指定到具体通道中(如VENC)。在指定到具体通道时,需要输入通道的显示属性
    之后用户可以通过以下操作来控制区域属性,以及在某通道的通道显示属性
    2.1通过 HI_MPI_RGN_GetAttr、 HI_MPI_RGN_SetAttr 获取和设置区域属性
    2.2通过 HI_MPI_RGN_SetBitMap(仅针对 Overlay)设置区域的位图信息
    2.3通过 HI_MPI_RGN_GetDisplayAttr 和 HI_MPI_RGN_SetDisplayAttr 获取和设置区域在某通道(如 VENC 通道)的通道显示属性。
    2.4最后用户可以将该区域从通道中撤出(非必须操作),再销毁区域。

 

接下来我们看看每一步应该怎么做

第一步:用户填充区域属性并创建区域

想要创建区域,可以调用函数

HI_MPI_RGN_Create

来创建一个region区域,函数原型如下

HI_S32 HI_MPI_RGN_Create(
    RGN_HANDLE Handle,                  //区域句柄号
    const RGN_ATTR_S *pstRegion         //区域属性指针
);


每一个区域对应一个句柄,和一个具体的属性RGN_ATTR_S,属性结构体定义如下
 

typedef struct hiRGN_ATTR_S
{
    RGN_TYPE_E enType;                  //区域类型
    RGN_ATTR_U unAttr;                  //区域属性
} RGN_ATTR_S;

区域类型有以下几种

  • OVERLAY_RGN                           //VENC通道视频叠加区域
  • COVER_RGN                               //VI通道视频叠加区域
  • COVEREX_RGN                          //扩展视频遮挡区域
  • OVERLAYEX_RGN                      //扩展视频叠加区域

对应的区域属性就有两种

  • OVERLAY_ATTR_S      stOverlay                //VENC通道叠加区域属性
  • OVERLAYEX_ATTR_S    stOverlayEx         //扩展叠加区域属性

这两个属性的结构体其实是一样的,以OVERLAY_ATTR_S举例,结构体定义如下
 

typedef struct hiOVERLAY_ATTR_S
{
    PIXEL_FORMAT_E enPixelFmt;          //OSD的像素格式,目前只支持ARGB1555,ARGB4444,ARGB8888这三种
    HI_U32 u32BgColor;                  //区域的背景色
    SIZE_S stSize;                      //区域的高宽
}OVERLAY_ATTR_S;

将这些属性填充好,调用HI_MPI_RGN_Create函数后,区域就创建好了,之后我们就可以通过区域句柄号进行管理

 

第二步:将该区域指定到具体通道中

想要指定到具体通道,可以调用函数

HI_MPI_RGN_AttachToChn

将区域叠加到通道上,该函数原型为

HI_S32 HI_MPI_RGN_AttachToChn(
    RGN_HANDLE Handle,                  //区域句柄号
    const MPP_CHN_S *pstChn,            //通道结构体指针
    const RGN_CHN_ATTR_S *pstChnAttr    //区域通道显示属性指针
);


区域句柄我们已经有了,通道结构体指针定义如下

typedef struct hiMPP_CHN_S
{
    MOD_ID_E    enModId;                //模块号
    HI_S32      s32DevId;               //设备号
    HI_S32      s32ChnId;               //通道号
} MPP_CHN_S;


其实意思就是告诉系统,这个区域是叠加在哪个模块的哪个设备的哪个通道上面的
区域通道显示属性指针就是用来设定区域显示属性的,结构体定义如下
 

typedef str
  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值