视频源,是IMP系统的图像数据源,可设置图像的分辨率、裁减、缩放等属性,以及后端降噪功能
更多...
|
int | IMP_FrameSource_CreateChn (int chnNum, IMPFSChnAttr *chn_attr) |
| 创建通道 更多...
|
|
int | IMP_FrameSource_DestroyChn (int chnNum) |
| 销毁通道 更多...
|
|
int | IMP_FrameSource_EnableChn (int chnNum) |
| 使能通道 更多...
|
|
int | IMP_FrameSource_DisableChn (int chnNum) |
| 关闭通道 更多...
|
|
int | IMP_FrameSource_GetChnAttr (int chnNum, IMPFSChnAttr *chnAttr) |
| 获得通道属性 更多...
|
|
int | IMP_FrameSource_SetChnAttr (int chnNum, const IMPFSChnAttr *chnAttr) |
| 设置通道属性 更多...
|
|
int | IMP_FrameSource_SetFrameDepth (int chnNum, int depth) |
| 设置可获取的图像最大深度 更多...
|
|
int | IMP_FrameSource_GetFrameDepth (int chnNum, int *depth) |
| 获取的图像最大深度 更多...
|
|
int | IMP_FrameSource_GetFrame (int chnNum, IMPFrameInfo **frame) |
| 获取的图像 更多...
|
|
int | IMP_FrameSource_GetTimedFrame (int chnNum, IMPFrameTimestamp *framets, int block, void *framedata, IMPFrameInfo *frame) |
| 获取指定时间的图像 更多...
|
|
int | IMP_FrameSource_ReleaseFrame (int chnNum, IMPFrameInfo *frame) |
| 释放获取的图像 更多...
|
|
int | IMP_FrameSource_SnapFrame (int chnNum, IMPPixelFormat fmt, int width, int height, void *framedata, IMPFrameInfo *frame) |
| 获取图像 更多...
|
|
int | IMP_FrameSource_SetMaxDelay (int chnNum, int maxcnt) |
| 设置最大延迟帧数 更多...
|
|
int | IMP_FrameSource_GetMaxDelay (int chnNum, int *maxcnt) |
| 获取最大延迟帧数 更多...
|
|
int | IMP_FrameSource_SetDelay (int chnNum, int cnt) |
| 设置延迟帧数 更多...
|
|
int | IMP_FrameSource_GetDelay (int chnNum, int *cnt) |
| 获取延迟帧数 更多...
|
|
int | IMP_FrameSource_SetChnFifoAttr (int chnNum, IMPFSChnFifoAttr *attr) |
| 设置通道最大缓存FIFO属性 更多...
|
|
int | IMP_FrameSource_GetChnFifoAttr (int chnNum, IMPFSChnFifoAttr *attr) |
| 获取通道最大缓存FIFO属性 更多...
|
|
视频源,是IMP系统的图像数据源,可设置图像的分辨率、裁减、缩放等属性,以及后端降噪功能
FrameSource是一个数据流相关概念,可以设置图像分辨率,格式等,并向后端提供原始图像。
FrameSource的结构如下图:
如上图所示,FrameSource有三路输出,三路输出均可用来编码,其中:
- Channel 0一般作为高清视频流
- Channel 1一般作为标清视频流,或者IVS只能算法的数据源
- Channel 2是拓展通道,在特殊应用下使用,一般不建议使用
FrameSource的初始化步骤如下(以两路输出为例):
if (ret < 0) {
printf("FrameSource_CreateChn(0) error\n");
goto createchn_err;
}
if (ret < 0) {
printf("EnableChn(0) error\n";
return enablechn_err;
}
if (ret < 0) {
printf("FrameSource_DisableChn(0) error\n");
return disablechn_err;
}
if (ret < 0) {
printf("FrameSource_DestroyChn error\n");
return destorychn_err;
}
更多使用方法请参考Samples
通道FIFO类型
枚举值 |
---|
FIFO_CACHE_PRIORITY |
FIFO 优先缓存,然后输出数据
|
FIFO_DATA_PRIORITY |
FIFO 优先输出数据,然后缓存
|
枚举值 |
---|
FS_PHY_CHANNEL |
物理通道
|
FS_EXT_CHANNEL |
拓展通道
|
int IMP_FrameSource_CreateChn |
( |
int |
chnNum, |
|
|
IMPFSChnAttr * |
chnAttr |
|
) |
| |
创建通道
- 参数
-
[in] | chnNum | 通道号 |
[in] | chnAttr | 通道属性结构体指针 |
- 返回值
-
- 注意
- 无。
IMP_FrameSource_DestroyChn |
( |
int |
chnNum | ) |
|
销毁通道
- 参数
-
- 返回值
-
- 注意
- 如果程序调用过IMP_FrameSource_EnableChn,一定要调用IMP_FrameSource_DisableChn之后,再使用此函数。
int IMP_FrameSource_DisableChn |
( |
int |
chnNum | ) |
|
int IMP_FrameSource_EnableChn |
( |
int |
chnNum | ) |
|
使能通道
- 参数
-
- 返回值
-
- 注意
- 在使用这个函数之前,必须确保所使能的通道已经创建.
int IMP_FrameSource_GetChnAttr |
( |
int |
chnNum, |
|
|
IMPFSChnAttr * |
chnAttr |
|
) |
| |
获得通道属性
- 参数
-
[in] | chnNum | 通道号 |
[out] | chnAttr | 通道属性结构体指针 |
- 返回值
-
- 注意
- 无
获取通道最大缓存FIFO属性
- 参数
-
[in] | chnNum | 通道的编号 |
[out] | attr | FIFO属性. |
- 返回值
-
- 注意
- 使用时需要在函数IMP_FrameSource_CreateChn之后.
IMP_FrameSource_GetDelay |
( |
int |
chnNum, |
|
|
int * |
cnt |
|
) |
| |
获取延迟帧数
- 参数
-
[in] | chnNum | 通道的编号 |
[out] | cnt | 延迟,单位帧 |
- 返回值
-
- 注意
- 使用时需要在函数IMP_FrameSource_CreateChn之后.
IMP_FrameSource_GetFrame |
( |
int |
chnNum, |
|
|
IMPFrameInfo ** |
frame |
|
) |
| |
获取的图像
- 参数
-
[in] | chnNum | 通道的编号 |
[out] | frame | 获取的图像 |
- 返回值
-
1.此接口可以获取指定通道的视频图像信息。图像信息主要包括:图像的宽度、高度、像素格式以及图片数据起始地址。
2.此接口需在通道已启用后才有效。
3.支持多次获取后再释放,但建议获取和释放接口配对使用。
4.该接口默认超时时间为 2s,即2s 内仍未获取到图像,则超时返回。
- 注意
- 无.
IMP_FrameSource_GetFrameDepth |
( |
int |
chnNum, |
|
|
int * |
depth |
|
) |
| |
获取的图像最大深度
- 参数
-
[in] | chnNum | 通道的编号 |
[out] | depth | 获取的图像最大深度值 |
- 返回值
-
- 注意
- 无.
IMP_FrameSource_GetMaxDelay |
( |
int |
chnNum, |
|
|
int * |
maxcnt |
|
) |
| |
获取最大延迟帧数
- 参数
-
[in] | chnNum | 通道的编号 |
[out] | maxcnt | 最大延迟,单位帧 |
- 返回值
-
- 注意
- 使用时需要在函数IMP_FrameSource_CreateChn之后.
获取指定时间的图像
- 参数
-
[in] | chnNum | 通道的编号 |
[in] | framets | 时间信息 |
[in] | block | 阻塞属性 |
[in] | framedata | 拷贝图像的内存指针 |
[in] | frame | 获取到图像信息 |
- 返回值
-
1.此接口可以获取指定通道指定时间的视频图像信息。图像信息主要包括:图像的宽度、高度、像素格式以及图片数据。
2.此接口需在通道已启用后才有效。
3.此接口需要先设置IMP_FrameSource_SetMaxDelay和IMP_FrameSource_SetDelay。
- 注意
- 无.
IMP_FrameSource_ReleaseFrame |
( |
int |
chnNum, |
|
|
IMPFrameInfo * |
frame |
|
) |
| |
释放获取的图像
- 参数
-
[in] | chnNum | 通道的编号 |
[in] | frame | 释放获取的图像 |
- 返回值
-
- 注意
- 无.
int IMP_FrameSource_SetChnAttr |
( |
int |
chnNum, |
|
|
const IMPFSChnAttr * |
chnAttr |
|
) |
| |
设置通道属性
- 参数
-
[in] | chnNum | 通道号 |
[in] | chnAttr | 通道属性结构体指针 |
- 返回值
-
- 注意
- 无
设置通道最大缓存FIFO属性
- 参数
-
[in] | chnNum | 通道的编号 |
[in] | attr | FIFO属性,包括 FIFO最大深度,单位帧;FIFO 类型. |
- 返回值
-
- 注意
- 使用时需要在函数IMP_FrameSource_CreateChn与IMP_FrameSource_EnableChn之间调用.
IMP_FrameSource_SetDelay |
( |
int |
chnNum, |
|
|
int |
cnt |
|
) |
| |
设置延迟帧数
- 参数
-
[in] | chnNum | 通道的编号 |
[in] | cnt | 延迟,单位帧 |
- 返回值
-
- 注意
- 使用时需要在函数IMP_FrameSource_SetMaxDelay之后调用.
IMP_FrameSource_SetFrameDepth |
( |
int |
chnNum, |
|
|
int |
depth |
|
) |
| |
设置可获取的图像最大深度
- 参数
-
[in] | chnNum | 通道的编号 |
[in] | depth | 设置可获取的图像最大深度值 |
- 返回值
-
1.此接口用于设置某一通道缓存的视频图像帧数。当用户设置缓存多帧视频图像时,用户可以获取到一定数目的连续图像数据。
2.若指定depth为0,表示不需要系统为该通道缓存图像,故用户获取不到该通道图像数据。系统默认不为通道缓存图像,即depth默认为0。
3.系统将自动更新最旧的图像数据,保证用户一旦开始获取,就可获取到最近最新的图像。
4.系统因获取不到图像而自动停止缓存新的图像,用户也不能获取新的图像。因此建议用户保证获取和释放接口配对使用。
5.系统将自动更新用户仍未获取的最旧的图像数据,保证缓存的图像队列为最近最新的图像。由于用户不能保证获取速度,导致获取的可能不是连续的图像。
6.此函数可以调用位置,没有要求。但是只能使用一次。
- 注意
- 无.
IMP_FrameSource_SetMaxDelay |
( |
int |
chnNum, |
|
|
int |
maxcnt |
|
) |
| |
设置最大延迟帧数
- 参数
-
[in] | chnNum | 通道的编号 |
[in] | maxcnt | 最大延迟,单位帧 |
- 返回值
-
- 注意
- 使用时需要在函数IMP_FrameSource_CreateChn与IMP_FrameSource_EnableChn之间调用.
获取图像
- 参数
-
[in] | chnNum | 通道的编号 |
[in] | fmt | 图像格式 |
[in] | width | 图像宽度 |
[in] | height | 图像高度 |
[in] | framedata | 拷贝图像的内存指针 |
[in] | frame | 获取到图像信息 |
- 返回值
-
1.此接口可以获取一帧指定格式和大小的图像;目前格式支持NV12,YUYV422;大小和通道分辨率一致;不需要调用IMP_FrameSource_SetFrameDepth接口.
2.此接口需在通道已启用后才有效。
- 注意
- 无.