用于视频服务器的硬件自适应多通道多模式视频预监方法

文档序号:7669060阅读:260来源:国知局
专利名称:用于视频服务器的硬件自适应多通道多模式视频预监方法
技术领域
本发明涉及视频预监技术,具体涉及一种用于视频服务器的硬件自适应 多通道多模式视频预监方法。
背景技术
目前的视频服务器在采集状态下的预监方式,多为如采用占用视频10卡的
一路输出单路视频信号到监视器的方式,或使用软件监视窗口进行单路视频监 看的方式。在多路信号同时采集的状态下,不能够同期对所有输入视频进行监 控。使用板卡硬件通道,将受制于板卡的工作方式(如视频采集卡不支持双工
模式),并增加系统成本;而目前软件化到PC监视器的视频预监方式,如要实 现多路视频的混合(Mixing Blender),则一般要求显卡具有Video Overlay的 功能,同样将制约视频服务器软件的可移植性。

发明内容
本发明的目的在于针对现有技术的缺陷,提供一种适用于视频服务器的硬 件自适应的多通道多模式视频预监方法,通过调整数据源或视频排列方式,本 发明可用于如模拟电视墙,素材浏览器等多种应用。
本发明的技术方案如下 一种用于视频服务器的硬件自适应多通道多模式 视频预监方法,该方法接收输入的多路视频数据后,设置输入视频数据格式, 并进行视频重采样;然后将多路视频数据进行视频混合,并将混合后的结果数 据定位输出,通过配置预监画面位置,形成多通道一见频预监窗口画面。
进一步,如上所述的用于视频服务器的硬件自适应多通道多模式视频预监 方法,其中,当预监画面输出到PC显示器时,在视频数据输入之前,首先判断 PC机环境是否具有硬件加速功能,在不具有硬件加速功能的情况下,创建视频 合成器、输出定位器,定位输出到windows窗口,然后创建数据源包装器数组 和视频预处理器数组,连接各处理模块等待视频数据输入;在具有硬件加速功
4能的情况下,创建DirectShow兼容数据源包装器数组和DirectShow兼容^L频 预处理器数组,并创建DirectShow体系中的Video Mixing Render渲染器,连 接各处理模块等待视频数据输入。
如上所述的用于视频服务器的硬件自适应多通道多模式视频预监方法,其 中,当预监画面输出到视频监视器时,在视频数据输入之前,创建视频合成器、 输出定位器,定位输出到视频卡IO输出端,然后创建数据源包装器数组和视频 预处理器数组,连接各处理模块等待视频数据输入。
如上所述的用于视频服务器的硬件自适应多通道多模式视频预监方法,其 中,在PC机环境不具有硬件加速功能的情况下进行视频混合时,创建一个数据 处理工作线程,用于对来自上游的不同输入(即不同预处理端输出)进行同步 操作,在视频混合模块中,对每个输入端,实现一个先进先出(FIFO)队列, 并设置监测队列数据到达的最大超时时长,当超过时长时,混合模块认为上游 对应端输入未到达,以黑色填充数据帧,作为输入的对应占位,当所有输入数 据帧补齐时,工作线程进行帧拼接,并将结果数据进行输出。
如上所述的用于视频服务器的硬件自适应多通道多模式视频预监方法,其 中,预监源位置配置和监控由预监源混合观测器实施,预监源混合观测器提供 标准模式模板供用户配置时直接载入,并提供用户自定义方式,使用户自定义 预监源数量、视频通道位置、当前活动主预监源标识方式;预监源混合观测器 以标准COM接口方式实现,其接口函数包括更改视频位置 ChangeFramePosUion,更改浮见频大小ChangeFrameSize,同步更改到予贞处理才莫 块NotifyPreprocessor,同步更改到混合才莫块NotifyMixer。
如上所述的用于视频服务器的硬件自适应多通道多模式视频预监方法,其 中,在用户动态配置视频混合位置时,将在window窗体内由鼠标动作产生的矩 形区域更改映射到混合视频帧上的矩形区域更改,设窗体离散坐标系的一个坐 标轴的区间为[fl。,…A],混合帧上一个坐标轴的区间为[6。,..A],则其取值范 围为
= ^ _ a0 +1
6" = &i _ &o +1
从用户GDI区域到视频混合帧内存表面的坐标映射/>式为 6 = 2a + (6。 _0.5) — 2(a。 — 0.5)
公式中,坐标b是坐标a在混合帧上的映射。
5本发明适用于(但不限于)视频服务器的多通道视频数据采集模式下各个 通道的视频数据同时监看的应用,通过该方法实现了视频预监的硬件自适应功 能,以及多通道数据的视频混合功能,并能以多种模板形式予以显示,通过调 整数据源或视频排列方式,本发明将可用于如模拟电视墙,素材浏览器等多种 应用。


图1为视频预监方法的数据输入输出模块组成示意图。
图2为以UML类图模型描述实现各模块接口的最小实现类示意图。 图3为基于DShow结构的工作模式的数据输入输出模块组成示意图。 图4为在软件加速模式下系统工作状态示意图。 图5为在通过单个硬件通道预监的工作模式下系统工作状态示意图。 图6为本发明所应用的系统初始化流程图。
图7为在软件加速模式和通过单个硬件通道预监的工作模式下连接处理模 块流程图。
图8为连接成功后,在无混合更改操作激发的情况下视频混合工作流程图。 图9为预监源混合观测器以UML类图模型描述实现各模块接口的最小实现 类示意图。
图10为被混合视频位置变更的系统工作流程图。
图11为预处理输出视频大小变更的系统工作流程图。
具体实施例方式
下面结合附图和具体实施例对本发明进行详细的描述。 在描述本发明之前先对所用到的相关名词缩略进行介绍 视频预监窗口——VW;
孩£软Direct Show ^t术体系结构——DShow;
DShow中的Video Mixing Render--VMR;
隐ow中的Filter組件--Filter;
DShow中的Filter连接集合-Graph;
6统一建模语言UML;
线程(指Win32系统中的狭义线程)Thread。
为达成硬件自适应预监目的,要求软件模块设计实现(a)自主监测硬件 配置(b)基于硬件环境配置最优工作状态。
为达成多路预监目的,要求软件在模块中设计实现(a)隔离不同信号源 数据,(b)自动检测信号源状态,(c)提供预监信号输出路径选择模式。
为达成多模式预监目的,要求软件模块设计实现(a)通过人机交互运行时 配置预监画面主次,(b)运行时配置预监画面位置,(c)用户可定义预监方式模 板。
本发明所提供的用于视频服务器的硬件自适应多通道多模式视频预监方 法,是在接收输入的多路视频数据后,设置输入视频数据格式,并进行视频重 采样;然后将多路视频数据进行视频混合,并将混合后的结果数据定位输出, 通过配置预监画面位置,形成多通道纟见频预监窗口画面。
下面对该方法实现的具体结构设计进行介绍。视频预监方法的数据输入输 出模块组成如图1所示。
定义输入输出模块名称如下;接口 (Interface)函数描述(英文为函数 名,中文为函数功能描述)如下
(1 )视频输入模块(Source)
a. 接收输入视频数据(PushFrame)
PushFrame的输入为非压缩视频数据,即一连续内存数据块。收到数据 后,此函数检查格式兼容性并立即把数据向下游模块传送。
b. i殳置输入浮见频it据才各式(SetlnputMediaType )
SetlnputMediaType的输入参数的关4建字包括^L频数据格式(标准颜 色空间Format,如RGB, YUY2 ),视频帧的长宽,每象素比特数等。 一旦设 置完成,输入数据将被默认为按此数据格式组织,并不能更改.
(2 )浮见频预处理冲莫块(Preprocessor) a.接收输入视频数据(PushFrame)
PushFrame被上游模块调用,输入为非压缩视频数据,即一连续内存数 据块。收到数据后,此函数检查格式兼容性并调用重采样函数,将重采样结果数据向下游输出。
b. 设置输入视频数据格式(SetI叩utMediaType) SetlnputMediaType,正确调用才莫式下,此函数输入与Source中的
SetlnputMediaType输入参数兼容,若非,PushFrame在检查兼容性时返回失 败。
c. 设置重采样格式(SetOutputMediaType )
SetOutputMediaType,设置输出浮见频才各式,当此格式与输入凄t据不同时, 重釆样功能被启动。
d. 进行视频重采样(ResizeFrame )
ResizeFrame的输入为一帧非压缩数据,输出为变换后的一帧非压缩数 才居,进4亍浮见频重采才羊,在Source和Preprocessor的函凄史中,只有ResizeFrame 对视频数据进行变换(transform),其他数据相关才喿作仅完成内存数据的拷 贝,或内存指4十的传递,是传递(transmit)过禾呈。
从物理意义上讲,ResizeFrame实现了对二维数据的重采样滤波过程, 对重釆样滤波器的选择和实现(如基于线性空域不变系统的二维重采样滤波 器),本文档不做约束。
(3)视频混合模块(Mixer)
a. 查询新视频帧到达标志(CheckArrivalTimeOut) CheckArrivalTimeOut,在碎见频混合才莫块中,创建了一个数据处理工作线
程,用于对来自上游的不同输入(即不同预处理端输出)进行同步操作。Mixer 中,对每个输入端,实现一个先进先出(FIFO)队列,并设置监测队列数据 到达的最大超时时长,当超过时长时,混合模块认为上游对应端输入未到达, 以黑色填充数据帧,作为输入的对应占位。当所有输入数据帧补齐时,工作 线程调用MixFrames进行帧拼接。MixFrames的结果送SendFrame输出。
b. 设置^L频表面覆盖位置(SetOverlayPosition) SetOverlayPosition的输入参数为输入帧标识符(ID),输入帧相对于
目标帧右上角位置的坐标,输入帧透明度(alpha)预设值。输入帧长宽由 SetlnputMediaType函数决定。本函lt不强制进行区域重合4企测,所以输入 的两帧或多帧视频位置重合被视为合法操作。
8c. 设置输入视频数据格式(SetlnputMediaType )SetlnputMediaType输入参数为输入视频标识符(id),输入-见频格式
结构体。设置输入数据格式操作要求与对应预处理模块视频输出格式设置兼容,否则返回失败值。
d. 设置输出一见频凄t据格式(SetOutputMediaType )
Se 10utputMediaType输出参数为输出视频格式结构体。
e. 接收输入视频数据(ReceiveFrame )
ReceiveFrame由视频预处理器模块调用,负责将预处理模块的处理结果收入对应先进先出(FIFO)队列。
f. 混合视频数据(MixFrames)
MixFrames由工作线程调用,其输入参数为携带视频数据内容的内存指针数组(数组长度为通道数量)。MixFrames完成一见频的混合操作
g. 丰#出混合后一见频凄丈净居(SendFrame )
SendFrame由工作线程调用,将混合后的结果数据送给视频输出才莫块。
(4)视频输出模块(Output)
a. 定位输出UedirectOutput )
RedirectOutput输入参数为标识输出定位的枚举型变量(在可能的情况里,会标识输出到显示器窗口,或通过板卡IO输出到TV监视器)。输出模块根据定位标志不同,创建实体动作代理,根据所采用的第三方板卡不同,需要参考不同的板卡开发库(SDK),本文档不做进一步限制。
b. 设置输入^L频it据4各式(SetVideoMediaType)SetVideoMediaType,输出模块作为系统终端模块,没有输出端口。输
入视频数据格式需要匹配Mixer模块的输出视频数据模式,否则进入错误处理。
c. !叙出一见频凄t净居(RenderFrame )
RenderFrame由Mixer才莫块的工作线程调用,完成到监^L端的一见频输出工作。
以上接口以标准C0M4妄口方式实现,以UML类图冲莫型描述,上述接口最小
9实现类可表示如图2。
在本系统实现中,当软件系统所被布置的PC机环境具有硬件加速功能时,上述模块在定位输出到PC显示器时将工作在基于DShow结构的工作模式。在基于DShow结构的工作模式中,图1的输入输出模块中的各子模块可被替换为如图3所示的Filter-Graph集,输出级的末端两个才莫块#1 DShow中的VMR替代。预处理模块的包装Filter在此状态下被设置为直通状态,即视频输入输出格式相同,视频重采样工作由VMR完成。
在基于DShow的工作才莫式下,系统中不再存在Mixer和Output 4莫块,凄欠据源(Source)和预处理才莫块(Preprocessor)除需要实现如图2所示的4妻口函数外,需要按Microsoft⑧DirectShow⑧的开发协i义,分别支持标准源Filter (Source Filter)和传输Filter (Transform Filter)的协议接口函数。此部分内容,可参见由孩么软公开的《Microsoft DirectX 9. 0联机帮助》文档的"DirectShow"章节部分。
在非基于DShow结构的工作模式下,以GPU为基础的硬件加速模式,将仍然基于如图1的框架,如图4。各模块接口定义不变。在此结构中,Preprocessor仍将工作在直通状态,需要替换的部分包括Mixer中MixFrames函数和Output中RenderFrame函数的具体实现。若以Direct3D技术实现此部分内容,可参见由微软公开的《Microsoft DirectX 9. 0联机帮助》文档的"DirectX Graphics"章节部分。
本发明在软件加速模式下,系统工作状态如图4所示;在通过单个硬件通道预监的工作冲莫式下,系统工作状态如图5所示。系统初始化流程如图6所示。当预监画面输出到PC显示器时,在视频数据输入之前,首先判断PC机环境是否具有硬件加速功能,在不具有硬件加速功能的情况下,创建视频合成器、输出定位器,定位输出到windows窗口,然后创建数据源包装器tt组和^L频预处理器数组,连接各处理模块等待视频数据输入;在具有硬件加速功能的情况下,创建DirectShow兼容数据源包装器数组和DirectShow兼容视频预处理器数组,并创建DirectShow体系中的Video Mixing Render渲染器,连接各处理才莫块等待视频数据输入。当预监画面输出到视频监视器时,在视频数据输入之前,创
10建视频合成器、输出定位器,定位输出到视频卡IO输出端,然后创建数据源包装器数组和视频预处理器数组,连接各处理模块等待视频数据输入。在上述工作状态下,连接处理模块流程如图7所示,连接成功后,在无混合更改操作激发的情况下(参见视频混合观测器),视频混合工作流程如图8所示。
视频预监窗口 vw提供了多种标准模式模板供用户配置时直接载入,同时
提供用户自定义方式,使用户自定义预监源数量、视频通道位置、当前活动主预监源标识方式等。
预监源位置配置和监控由预监源混合观测器实施。预监源混合观测器
(VideoMixingObersever )的动作(接口函数)定义如下
a. 更改视频位置(ChangeFramePosition)
ChangeFramePosition的输入包括,视频通道标志符(id),新视频在目标帧上相对左上角的坐标,新视频覆盖在目标帧上时的透明度(alpha),本函数首先检查并确认相关参数存在更改情况,并更新更改参数到观测器模块类的成员数组中,设置更改脏标记。
b. 更改视频大小(ChangeFrameSize )
ChangeFrameSize的输入包括,^见频通道标志符(id),新浮见频重采样后的大小。类似a,本函数首先检查并确认相关参数存在更改情况,并更新更改参数到观测器模块类的成员数组中,设置更改脏标记。
c. 同步更改到预处理才莫块(NotifyPreprocessor )
NotifyPreprocessor的專lr入包4舌, 一见步页通道才示志才寻(id ),即确iUU口某特定视频通道变更重采样参数。为将更改情况同步到每一个输出帧,即在一次混合处理循环中,若产生更改命令(即消息),此更改将延迟到下一帧视频时,也就是本次所有通道处理处理完毕后,再被实施。本函数将在ChangeFrameSize中更新的参数通知相应的预处理模块,并调用其SetOutputMediaType函数进行数据属性变更。
d. 同步更改到混合才莫块(NotifyMixer )
NotifyMixer的输入包括,以浮见频通道标志符(id)为id的位置坐标数
ii組。类似于NotifyPreprocessor,为将更改情况同步到每一个$#出帧,即在 一次混合处理循环中,若产生更改命令(即消息),此更改将延迟到下一帧 视频时,也就是本次所有通道处理处理完毕后,再被实施。本函数将在Change FramePosUion中更新的参数通过并调用视频混合模块中的SetOverlay-Position函数进行数据属性变更。
预监源混合观测器以标准COM接口方式实现,以UML类图模型描述,其最 小实现类可表示如图9。被混合视频位置变更的系统工作流程如图IO所示,预 处理输出视频大小变更的系统工作流程如图11所示。
在用户动态配置视频混合位置时,用户将在系统给定区域内(即系统生成 的一个标准windows窗体)进行鼠标的拖放。此操作将对应到视频混合观测器 上,即,将在window窗体内由鼠标动作产生的矩形区域更改映射到混合视频帧 上的矩形区域更改。抽象的,这是从一个离散坐标系到另一个离散坐标系的映射。
设窗体离散坐标系的一个坐标轴的区间为h,…d,混合帧上一个坐标轴
的区间为[6。,..a],则其取值范围为
p = cj^ _ a0 +1 1a=&i - 60+1
设坐标b是坐标a在混合帧上的映射,则由平面几何知识,有
6-60+0.5 = 2("-a。+0.5),其中,0. 5代表舍入进位。 最终有
6 = + (60 —0.5)-i(fl。 -0.5)
上式即本系统中采用的从用户GDI区域到视频混合帧内存表面的坐标映射 公式。
员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围。
1权利要求
1. 一种用于视频服务器的硬件自适应多通道多模式视频预监方法,其特征在于该方法接收输入的多路视频数据后,设置输入视频数据格式,并进行视频重采样;然后将多路视频数据进行视频混合,并将混合后的结果数据定位输出,通过配置预监画面位置,形成多通道视频预监窗口画面。
2. 如权利要求1所述的用于视频服务器的硬件自适应多通道多模式视频预 监方法,其特征在于当预监画面输出到PC显示器时,在视频数据输入之前, 首先判断PC机环境是否具有硬件加速功能,在不具有硬件加速功能的情况下, 创建视频合成器、输出定位器,定位输出到windows窗口,然后创建数据源包 装器数组和视频预处理器数组,连接各处理模块等待视频数据输入。
3. 如权利要求1所述的用于视频服务器的硬件自适应多通道多模式视频预 监方法,其特征在于当预监画面输出到PC显示器时,在视频数据输入之前, 首先判断PC机环境是否具有硬件加速功能,在具有硬件加速功能的情况下,创 建DirectShow兼容数据源包装器数组和DirectShow兼容视频预处理器数组, 并创建DirectShow体系中的Video Mixing Render渲染器,连接各处理模块等 待视频数据输入。
4. 如权利要求1所述的用于视频服务器的硬件自适应多通道多模式视频预 监方法,其特征在于当预监画面输出到视频监视器时,在视频数据输入之前, 创建视频合成器、输出定位器,定位输出到视频卡IO输出端,然后创建数据源 包装器数组和视频预处理器数组,连接各处理模块等待视频数据输入。
5. 如权利要求2或4所述的用于视频服务器的硬件自适应多通道多模式视 频预监方法,其特征在于在进行视频混合时,创建一个数据处理工作线程, 用于对来自上游的不同输入(即不同预处理端输出)进行同步操作,在视频混 合模块中,对每个输入端,实现一个先进先出(FIFO)队列,并设置监测队列 数据到达的最大超时时长,当超过时长时,混合模块认为上游对应端输入未到 达,以黑色填充数据帧,作为输入的对应占位,当所有输入数据帧补齐时,工 作线程进行帧拼接,并将结果数据进行输出。
6. 如权利要求1所述的用于视频服务器的硬件自适应多通道多才莫式视频预 监方法,其特征在于该方法的预监源位置配置和监控由预监源混合观测器实 施,预监源混合观测器提供标准模式模板供用户配置时直接载入,并提供用户自定义方式,使用户自定义预监源数量、视频通道位置、当前活动主预监源标识方式。
7. 如权利要求6所述的用于视频服务器的硬件自适应多通道多模式视频预 监方法,其特4正在于预监源混合7见测器以标准COM 4姿口方式实现,其4姿口函 数包括更改视频位置ChangeF腦ePosition,更 文视频大小ChangeFrameSize, 同步更改到预处理才莫块NotifyPreprocessor ,同步更改到混合才莫块 NotifyMixer。
8. 如权利要求7所述的用于视频服务器的硬件自适应多通道多模式视频预 监方法,其特征在于在用户动态配置^L频混合位置时,将在window窗体内由 鼠标动作产生的矩形区域更改映射到混合^L频帧上的矩形区域更改,设窗体离 散坐标系的一个坐标轴的区间为["。,…fl丄混合帧上一个坐标轴的区间为 [&,…6j,则其取值范围为
全文摘要
本发明涉及视频预监技术,具体涉及一种用于视频服务器的硬件自适应多通道多模式视频预监方法。该方法接收输入的多路视频数据后,设置输入视频数据格式,并进行视频重采样;然后将多路视频数据进行视频混合,并将混合后的结果数据定位输出,通过配置预监画面位置,形成多通道视频预监窗口画面。本发明适用于(但不限于)视频服务器的多通道视频数据采集模式下各个通道的视频数据同时监看的应用,通过该方法实现了视频预监的硬件自适应功能,以及多通道数据的视频混合功能,并能以多种模板形式予以显示,通过调整数据源或视频排列方式,本发明将可用于如模拟电视墙,素材浏览器等多种应用。
文档编号H04N5/262GK101472090SQ20071030429
公开日2009年7月1日 申请日期2007年12月27日 优先权日2007年12月27日
发明者伟 朱, 王闻博 申请人:新奥特(北京)视频技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1