ISVP-SDK  3.12.0
Ingenic Smart Video Platform SDK
结构体 | 宏定义 | 类型定义 | 枚举 | 函数

OSD模块,可在视频流上叠加图片、位图、直线、矩形框 更多...

IMP_OSD 的协作图:

结构体

struct  lineRectData
 OSD区域线和矩形数据 更多...
 
struct  coverData
 OSD区域遮挡数据 更多...
 
struct  picData
 OSD区域图片数据 更多...
 
union  IMPOSDRgnAttrData
 OSD区域属性数据 更多...
 
struct  IMPOSDRgnAttr
 OSD区域属性 更多...
 
struct  IMPOSDRgnTimestamp
 OSD区域生效时间戳 更多...
 
struct  IMPOSDGrpRgnAttr
 OSD组区域属性 更多...
 

宏定义

#define INVHANDLE   (-1)
 出错返回值
 

类型定义

typedef int IMPRgnHandle
 OSD 区域句柄
 

枚举

enum  IMPOsdColour {
  OSD_BLACK = 0xff000000, OSD_WHITE = 0xffffffff, OSD_RED = 0xffff0000, OSD_GREEN = 0xff00ff00,
  OSD_BLUE = 0xff0000ff
}
 OSD颜色类型,颜色格式为bgra. 更多...
 
enum  IMPOsdRgnType {
  OSD_REG_INV = 0, OSD_REG_LINE = 1, OSD_REG_RECT = 2, OSD_REG_BITMAP = 3,
  OSD_REG_COVER = 4, OSD_REG_PIC = 5
}
 OSD区域类型 更多...
 

函数

int IMP_OSD_CreateGroup (int grpNum)
 创建OSD组 更多...
 
int IMP_OSD_DestroyGroup (int grpNum)
 销毁OSD组 更多...
 
int IMP_OSD_AttachToGroup (IMPCell *from, IMPCell *to)
 将OSD组加入到系统中 更多...
 
IMPRgnHandle IMP_OSD_CreateRgn (IMPOSDRgnAttr *prAttr)
 创建OSD区域 更多...
 
void IMP_OSD_DestroyRgn (IMPRgnHandle handle)
 销毁OSD区域 更多...
 
int IMP_OSD_RegisterRgn (IMPRgnHandle handle, int grpNum, IMPOSDGrpRgnAttr *pgrAttr)
 注册OSD区域 更多...
 
int IMP_OSD_UnRegisterRgn (IMPRgnHandle handle, int grpNum)
 注销OSD区域 更多...
 
int IMP_OSD_SetRgnAttr (IMPRgnHandle handle, IMPOSDRgnAttr *prAttr)
 设置区域属性 更多...
 
int IMP_OSD_SetRgnAttrWithTimestamp (IMPRgnHandle handle, IMPOSDRgnAttr *prAttr, IMPOSDRgnTimestamp *prTs)
 设置区域属性和生效时间 更多...
 
int IMP_OSD_GetRgnAttr (IMPRgnHandle handle, IMPOSDRgnAttr *prAttr)
 获取区域属性 更多...
 
int IMP_OSD_UpdateRgnAttrData (IMPRgnHandle handle, IMPOSDRgnAttrData *prAttrData)
 更新区域数据属性,只针对OSD_REG_BITMAP和OSD_REG_PIC的区域类型 更多...
 
int IMP_OSD_SetGrpRgnAttr (IMPRgnHandle handle, int grpNum, IMPOSDGrpRgnAttr *pgrAttr)
 设置OSD组区域属性 更多...
 
int IMP_OSD_GetGrpRgnAttr (IMPRgnHandle handle, int grpNum, IMPOSDGrpRgnAttr *pgrAttr)
 获取OSD组区域属性 更多...
 
int IMP_OSD_ShowRgn (IMPRgnHandle handle, int grpNum, int showFlag)
 设置组区域是否显示 更多...
 
int IMP_OSD_Start (int grpNum)
 设置开始OSD组的显示 更多...
 
int IMP_OSD_Stop (int grpNum)
 设置停止OSD组的显示 更多...
 

详细描述

OSD模块,可在视频流上叠加图片、位图、直线、矩形框

1 模块介绍

OSD的全称是On-Screen Display。模块的功能就是在每张片源中叠加线条、图片等信息。

2 相关概念

2.1 Region

Region即是叠加区域,在API中简称Rgn。每个Region具有一定的图像信息,可以经过OSD模块叠加后,与背景图像合为一张图片。 对于图片的叠加,还可以实现Alpha效果。关于各种叠加类型的详细介绍请参考osd_region_type。

2.1 Region type

Region有几种类型,分别为:
OSD_REG_LINE:直线
OSD_REG_RECT:矩形框
OSD_REG_BITMAP:位图
OSD_REG_COVER:遮挡
OSD_REG_PIC:图片
其中,位图与图片的区别是,位图仅进行像素的单色覆盖,而图片是RGBA图像的Alpha叠加。

3 模块功能

OSD模块支持线条、矩形框、位图叠加、矩形遮挡和图片叠加。 线条、矩形框和位图采用软件实现;矩形遮挡和图片叠加采用硬件实现。

4 模块使用

OSD的使用一般有以下几个步骤

  1. 创建OSD组
  2. 绑定OSD组到系统中
  3. 创建OSD区域
  4. 注册OSD区域到OSD组中
  5. 设置OSD组区域属性和区域属性
  6. 设置OSD功能开关

枚举类型说明

OSD颜色类型,颜色格式为bgra.

枚举值
OSD_BLACK 

黑色

OSD_WHITE 

白色

OSD_RED 

红色

OSD_GREEN 

绿色

OSD_BLUE 

蓝色

OSD区域类型

枚举值
OSD_REG_INV 

未定义区域类型

OSD_REG_LINE 

线

OSD_REG_RECT 

矩形

OSD_REG_BITMAP 

点阵图片

OSD_REG_COVER 

矩形遮挡

OSD_REG_PIC 

图片,适合用作Logo或时间戳

函数说明

int IMP_OSD_AttachToGroup ( IMPCell from,
IMPCell to 
)

将OSD组加入到系统中

参数
[in]fromOSD单元
[in]to系统中其他单元
返回值
0成功
非0失败
备注
新版本的SDK中建议使用Bind的方式将OSD串到系统的数据流中,Attach的方式不再推荐使用,但是API保留,方便兼容以往版本的软件。 具体可以参考2 模块绑定(Bind) 的的示例
注意
无。
int IMP_OSD_CreateGroup ( int  grpNum)

创建OSD组

参数
[in]grpNumOSD组号,取值范围: [0, NR_MAX_OSD_GROUPS - 1]
返回值
0成功
非0失败
备注
无。
注意
无。
IMPRgnHandle IMP_OSD_CreateRgn ( IMPOSDRgnAttr prAttr)

创建OSD区域

参数
[in]prAttrOSD区域属性
返回值
大于等于0成功
小于0失败
备注
无。
注意
无。
int IMP_OSD_DestroyGroup ( int  grpNum)

销毁OSD组

参数
[in]grpNumOSD组号,取值范围: [0, NR_MAX_OSD_GROUPS - 1]
返回值
0成功
非0失败
备注
调用此API时要求对应的组已经创建。
注意
无。
void IMP_OSD_DestroyRgn ( IMPRgnHandle  handle)

销毁OSD区域

参数
[in]prAttr区域句柄,IMP_OSD_CreateRgn的返回值
返回值
备注
无。
注意
无。
int IMP_OSD_GetGrpRgnAttr ( IMPRgnHandle  handle,
int  grpNum,
IMPOSDGrpRgnAttr pgrAttr 
)

获取OSD组区域属性

参数
[in]handle区域句柄,IMP_OSD_CreateRgn的返回值
[in]grpNumOSD组号
[out]pgrAttrOSD组区域属性
返回值
0成功
非0失败
备注
调用此API时要求对应的OSD组已经创建,区域已经创建并注册。
注意
无。
int IMP_OSD_GetRgnAttr ( IMPRgnHandle  handle,
IMPOSDRgnAttr prAttr 
)

获取区域属性

参数
[in]handle区域句柄,IMP_OSD_CreateRgn的返回值
[out]prAttrOSD区域属性
返回值
0成功
非0失败
备注
调用此API时要求对应的区域已经创建。
注意
无。
int IMP_OSD_RegisterRgn ( IMPRgnHandle  handle,
int  grpNum,
IMPOSDGrpRgnAttr pgrAttr 
)

注册OSD区域

参数
[in]handle区域句柄,IMP_OSD_CreateRgn的返回值
[in]grpNumOSD组号
[in]pgrAttrOSD组显示属性
返回值
0成功
非0失败
备注
调用此API时要求对应的OSD组已经创建。
注意
无。
int IMP_OSD_SetGrpRgnAttr ( IMPRgnHandle  handle,
int  grpNum,
IMPOSDGrpRgnAttr pgrAttr 
)

设置OSD组区域属性

参数
[in]handle区域句柄,IMP_OSD_CreateRgn的返回值
[in]grpNumOSD组号
[in]pgrAttrOSD组区域属性
返回值
0成功
非0失败
备注
调用此API时要求对应的OSD组已经创建,区域已经创建并注册。
注意
无。
int IMP_OSD_SetRgnAttr ( IMPRgnHandle  handle,
IMPOSDRgnAttr prAttr 
)

设置区域属性

参数
[in]handle区域句柄,IMP_OSD_CreateRgn的返回值
[in]prAttrOSD区域属性
返回值
0成功
非0失败
备注
调用此API时要求对应的区域已经创建。
注意
无。
int IMP_OSD_SetRgnAttrWithTimestamp ( IMPRgnHandle  handle,
IMPOSDRgnAttr prAttr,
IMPOSDRgnTimestamp prTs 
)

设置区域属性和生效时间

参数
[in]handle区域句柄,IMP_OSD_CreateRgn的返回值
[in]prAttrOSD区域属性
[in]prTs生效时间
返回值
0成功
非0失败
备注
调用此API时要求对应的区域已经创建。
注意
无。
int IMP_OSD_ShowRgn ( IMPRgnHandle  handle,
int  grpNum,
int  showFlag 
)

设置组区域是否显示

参数
[in]handle区域句柄,IMP_OSD_CreateRgn的返回值
[in]grpNumOSD组号
[in]showFlagOSD组区域显示开关
返回值
0成功
非0失败
备注
调用此API时要求对应的OSD组已经创建,区域已经创建并注册。
注意
无。
int IMP_OSD_Start ( int  grpNum)

设置开始OSD组的显示

参数
[in]grpNumOSD组号
返回值
0成功
非0失败
备注
调用此API时要求对应的OSD组已经创建。
注意
无。
int IMP_OSD_Stop ( int  grpNum)

设置停止OSD组的显示

参数
[in]grpNumOSD组号
返回值
0成功
非0失败
备注
调用此API时要求对应的OSD组已经创建。
注意
无。
int IMP_OSD_UnRegisterRgn ( IMPRgnHandle  handle,
int  grpNum 
)

注销OSD区域

参数
[in]handle区域句柄,IMP_OSD_CreateRgn的返回值
[in]grpNumOSD组号
返回值
0成功
非0失败
备注
调用此API时要求对应的OSD组已经创建,对应的区域已经注册。
注意
无。
int IMP_OSD_UpdateRgnAttrData ( IMPRgnHandle  handle,
IMPOSDRgnAttrData prAttrData 
)

更新区域数据属性,只针对OSD_REG_BITMAP和OSD_REG_PIC的区域类型

参数
[in]handle区域句柄,IMP_OSD_CreateRgn的返回值
[in]prAttrDataOSD区域数据属性
返回值
0成功
非0失败
备注
调用此API时要求对应的区域已经创建且区域属性已经设置成OSD_REG_BITMAP或OSD_REG_PIC。
注意
无。