摄像机共享转让专利

申请号 : CN200510093798.X

文献号 : CN1744048B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 斯蒂芬·英格曼诺贾·阿格尼霍特里

申请人 : 英特尔公司

摘要 :

系统、方法和软件在一个以上的应用之间共享视频捕获设备(例如摄像机)的输出。一些实施方案包括将视频帧写入可由一个或多个应用访问的共享存储器缓冲区。一些应用是虚拟设备驱动器,它们看起来就像产生视频数据的视频捕获设备的实际设备驱动器一样。一些实施方案包括获取对视频捕获设备驱动器的独占控制,分配共享存储器缓冲区,从所述视频捕获设备驱动器接收视频帧,并且将所述视频帧写入所述共享存储器缓冲区。在一些实施方案中,共享存储器缓冲区包括以交替方式写入并读出的两个共享存储器缓冲区。

权利要求 :

1.一种共享摄像机的方法,包括:

获取对视频捕获设备驱动器的独占控制;

分配共享存储器缓冲区,其中所述共享存储器缓冲区能够由一个或多个虚拟视频捕获设备驱动器访问;

从所述视频捕获设备驱动器接收视频帧;以及将所述视频帧写入所述共享存储器缓冲区;

由所述一个或多个虚拟视频捕获设备驱动器从所述共享存储器缓冲区读取所述视频帧,并对读取的视频帧执行变换,然后将所述视频帧提供给多于一个的应用。

2.如权利要求1所述的方法,其中所述多于一个的应用是允许视频的应用。

3.如权利要求1所述的方法,其中随后接收的视频帧被写入所述共享存储器缓冲区,覆写所述共享存储器缓冲区中在前的视频帧。

4.一种共享摄像机的方法,包括:

接收视频帧的流;

将所述视频帧的流交替写入两个共享存储器缓冲区,其中所述共享存储器缓冲区能够由一个或多个虚拟视频捕获设备驱动器访问;

由所述一个或多个虚拟视频捕获设备驱动器从所述共享存储器缓冲区读取所述视频帧,并对读取的视频帧执行变换,然后将所述视频帧提供给多于一个的应用。

5.如权利要求4所述的方法,其中所述多于一个的应用包括允许视频的应用。

6.如权利要求4所述的方法,其中所述共享存储器缓冲区具有的大小至少等于容纳一个接收的视频帧所需的大小。

7.一种用于共享摄像机的设备,包括:

用于在存储器中分配共享存储器缓冲区的装置,其中所述共享存储器缓冲区能够由一个或多个虚拟视频捕获设备驱动器来访问;

用于从视频捕获设备驱动器接收视频帧的装置,其中所述视频捕获设备驱动器从视频捕获设备接收所捕获的视频帧,其中所述视频捕获设备驱动器是互斥的;;

用于将所接收的视频帧写入所述共享存储器缓冲区的装置;

用于由所述一个或多个虚拟视频捕获设备驱动器从所述共享存储器缓冲区读取所述视频帧的装置,以及用于对读取的视频帧执行变换、然后将所述视频帧提供给多于一个的应用的装置。

8.如权利要求7所述的设备,其中被写入所述共享存储器缓冲区的所接收视频帧能够由运行在所述系统上的多于一个的应用来访问。

9.如权利要求8所述的设备,其中所述设备是多实例的虚拟驱动器。

10.如权利要求9所述的设备,其中所述多实例的虚拟驱动器对于运行在系统上的所述多于一个的应用而言,看起来就像视频捕获设备驱动器一样。

11.如权利要求7所述的设备,其中所述设备有对所述视频捕获设备驱动器的独占控制。

12.一种共享摄像机的方法,包括:

获取互斥型视频捕获设备驱动器;

分配两个共享存储器缓冲区;

创建一个或多个虚拟设备驱动器,其中所述一个或多个虚拟设备驱动器对于可运行在执行所述方法的系统上的应用而言,看起来就像视频捕获设备驱动器一样;以及由所述一个或多个虚拟设备驱动器从所述共享存储器缓冲区读取所述视频帧,并对读取的视频帧执行变换,然后将所述视频帧提供给多于一个的应用。

13.如权利要求12所述的方法,还包括:从所述视频捕获设备驱动器接收视频帧流;以及在所述两个共享存储器缓冲区之间以交替的方式写入所述视频帧。

14.如权利要求13所述的方法,其中所述虚拟设备驱动器可运行来通过以交替的方式从所述两个共享存储器缓冲区读取所述视频帧,向可运行在所述系统上的应用提供视频。

15.如权利要求13所述的方法,其中创建一个或多个虚拟设备驱动器的步骤包括创建固定数量的互斥虚拟设备驱动器。

16.一种共享摄像机的方法,包括:

获取对视频捕获设备驱动器的独占控制;

分配共享存储器缓冲区;

将来自所述视频捕获设备驱动器的视频流接收到过滤器图中,所述过滤器图包括:从所述视频捕获设备驱动器接收视频流的源过滤器;

转换所述视频流的转换滤波器;以及

一次一帧地将所述视频流写入共享存储器缓冲区的递交过滤器。

17.如权利要求16所述的方法,其中分配所述共享存储器缓冲区包括分配一个以上的共享存储器缓冲区,它们被所述过滤器图的递交过滤器一次一帧地并在所述存储器缓冲区之间交替地写入。

18.如权利要求16所述的方法,还包括:获得进入源过滤器的视频流,其中所述源过滤器在应用看来就像视频捕获设备驱动器;以及由应用获取所述源过滤器,其中所述源过滤器被所述应用的过滤器图用来从所述共享存储器缓冲区获得视频。

19.如权利要求16所述的方法,其中所述视频流是包括音频流在内的复用流。

20.一种共享摄像机的方法,包括:

向系统提供一个或多个虚拟视频捕获设备驱动器;

用接收自互斥型视频捕获设备驱动器的视频数据填充所述共享存储器缓冲区;以及由所述一个或多个虚拟视频捕获设备驱动器从所述共享存储器缓冲区读取所述视频数据,并对读取的视频数据执行变换,然后将所述视频数据提供给多于一个的应用。

21.如权利要求20所述的方法,其中所述一个或多个虚拟视频捕获设备驱动器是互斥的。

22.如权利要求20所述的方法,其中所述虚拟视频捕获设备驱动器至少包括过滤器图中的源过滤器。

23.一种用于共享摄像机的方法,包括:

在存储器中分配共享存储器缓冲区,其中所述共享存储器缓冲区能够由一个或多个虚拟视频捕获设备驱动器来访问;

从视频捕获设备驱动器接收视频帧,其中所述视频捕获设备驱动器从视频捕获设备接收所捕获的视频帧,其中所述视频捕获设备驱动器是互斥的;

将所接收的视频帧写入所述共享存储器缓冲区;

由所述一个或多个虚拟视频捕获设备驱动器从所述共享存储器缓冲区读取所述视频帧,以及对读取的视频帧执行变换,然后将所述视频帧提供给多于一个的应用。

24.如权利要求23所述的方法,其中被写入所述共享存储器缓冲区的所接收视频帧能够由运行在所述系统上的多于一个的应用来访问。

25.如权利要求24所述的方法,其中所述方法是由多实例的虚拟驱动器执行的。

26.如权利要求25所述的方法,其中所述多实例的虚拟驱动器对于运行在系统上的所述多于一个的应用而言,看起来就像视频捕获设备驱动器一样。

27.如权利要求23所述的方法,包括获取对所述视频捕获设备驱动器的独占控制。

说明书 :

技术领域

本发明涉及计算机系统中的视频捕获设备,具体地说,涉及视频捕获设备的输出在应用之间的共享。

背景技术

用于计算机系统的摄像机在当今的计算环境中正变得更加常见。此外,越来越多的应用能够利用从摄像机捕获而来的视频。然而,计算机系统的应用对摄像机的访问通常被限制为单个应用。用于这些摄像机的设备驱动器是互斥的,即禁止在多个应用之间共享摄像机的使用。一旦某个应用获得了视频捕获设备驱动器,任何其他应用都无法接收到摄像机的输出,直到正在控制的应用解除对所述驱动器的控制。

发明内容

为解决以上问题,本发明提供了在一个以上的应用之间共享视频捕获设备(例如摄像机)的输出的系统、方法和软件。
根据本发明的一个方面,提供了一种方法,包括:获取对视频捕获设备驱动器的独占(exclusive)控制;分配共享存储器缓冲区;从所述视频捕获设备驱动器接收视频帧;并且将所述视频帧写入所述共享存储器缓冲区。
根据本发明的另一个方面,提供了一种方法,包括:将视频帧写入共享存储器缓冲区,其中所述共享存储器缓冲区可由一个或多个应用访问。
根据本发明的又一个方面,提供了一种系统,包括:存储器;视频捕获设备;从所述视频捕获设备接收所捕获的视频帧的视频捕获设备驱动器,其中所述视频捕获设备驱动器是互斥的;和可运行在所述系统上的软件,该软件在所述存储器中分配共享存储器缓冲区;从所述视频捕获设备驱动器接收视频帧;并且将所接收的视频帧写入所述共享存储器缓冲区。
根据本发明的再一个方面,提供了一种包括机器可访问介质的制品,所述机器可访问介质具有相关指令,其中所述指令在被访问时导致机器执行:将来自视频捕获设备的视频数据通过共享存储器缓冲区提供给可运行在所述机器上的两个或两个以上的应用。
根据本发明的再又一个方面,提供了一种方法,包括:获取互斥型视频捕获设备驱动器;分配两个共享存储器缓冲区;并且创建一个或多个虚拟设备驱动器,其中所述一个或多个虚拟设备驱动器对于可运行在执行所述方法的系统上的应用而言,看起来就像视频捕获设备驱动器一样。
根据本发明的再又一个方面,提供了一种方法,包括:获取对视频捕获设备驱动器的独占控制;分配共享存储器缓冲区;将来自所述视频捕获设备驱动器的视频流接收到过滤器图中,所述过滤器图包括:从所述视频捕获设备驱动器接收视频流的源过滤器;和一次一帧地将所述视频流写入共享存储器缓冲区的递交过滤器。
根据本发明的再又一个方面,提供了一种方法,包括:向系统提供一个或多个虚拟视频捕获设备驱动器,其中所述虚拟视频捕获设备驱动器从共享存储器缓冲区获得视频数据;并且用接收自互斥型视频捕获设备驱动器的视频数据填充所述共享存储器缓冲区。

附图说明

图1是根据本发明主题的一个示例性实施方案的系统的示意图。
图2是本发明主题的一个示例性实施方案的流程图。
图3是本发明主题的一种方法的示例性实施方案的框图。
图4是本发明主题的一种方法的示例性实施方案的框图。
图5是本发明主题的一种方法的示例性实施方案的框图。
图6是本发明主题的一个示例性实施方案的流程图。

具体实施方式

在以下详细描述中,参考构成其一部分的附图,在附图中以示例的方式示出了可以实现本发明主题的具体实施方案。足够详细地描述了这些实施方案,以使得本领域的技术人员能够实现它们,并且将会理解,可以采用其他实施方案,并且可以作出结构、逻辑和电气上的改变,而不会偏离本发明主题的范围。本发明主题的这些实施方案可以单一地和/或统一地被称为“发明”一词,这仅仅是为了方便起见,如果事实上公开了一个以上的发明或发明概念时,我们并不想主动地将这一申请的范围限制到任何单个发明或发明概念。
因此,以下描述并不是限制性的,本发明主题的范围由所附的权利要求书来限定。
这里所描述的功能或算法可以用硬件、软件或者软硬件的组合来实现。软件包括存储在计算机可读介质上的计算机可执行指令,所述计算机可读介质例如是存储器或其他类型的存储设备。术语“计算机可读介质”也被用来表示可以传送软件的载波。此外,这样的功能对应于由软件、硬件、固件或其任何组合构成的模块。根据需要可以在一个或多个模块中实现多种功能,所描述的实施方案仅仅是实施例而已。软件可以在数字信号处理器、专用集成电路(ASIC)、微处理器或者运行于系统中的其他类型处理器上执行,所述系统例如是个人计算机、服务器、路由器或者有能力处理数据的其他设备,包括网络互连设备。
一些实施方案在两个或更多的专门互连的硬件模块或设备中,利用在模块之间传送以及通过模块传送的相关控制和数据信号,或者作为专用集成电路的若干部分,实现所述功能。因此,示例性的处理流程(process flow)适用于软件、固件和硬件实现方式或者它们的组合。
用在这里,术语“视频”被用来涵盖所捕获的图像,无论是静止的还是运动的。因此,希望术语“视频”是广义的,不想限制本公开或权利要求书的广度。
用在这里,术语“互斥”被用来描述禁止在多个应用之间摄像机共享使用的设备驱动器。这种“互斥”型设备驱动器被第一个应用获得,就不能被另一个应用获得,直到第一个应用释放该驱动器。
本发明主题提供了在计算系统上的多个应用之间共享视频捕获设备(例如摄像机)的各种系统、方法和软件。一些这样的实施方案包括获取对互斥型视频捕获设备驱动器的独占控制,并且将所捕获的视频写入系统上的其他应用可访问的存储器缓冲区的服务器处理。然后,系统上的一个或多个其他处理从所述存储器缓冲区中读取所述视频,并将该视频提供给一个或多个应用。在附图中示出了多种实施方案,下面将进行描述。
图1是根据本发明主题的示例性实施方案的系统100的示意图。系统100的该示例性实施方案提供了本发明主题多种可能的硬件和/或软件设置中的一种。系统100包括具有处理器102、存储器104的计算设备101和视频捕获设备118。存储器104包括多个应用1-N,图中应用1和N分别用106和108来标识。存储器104还包括虚拟视频捕获设备110、共享存储器缓冲区112、视频服务器处理116和视频捕获设备驱动器114。
计算设备101代表能够与视频捕获设备118一同工作的任何类型的计算设备。这种计算设备101的一些例子包括计算机、个人计算机、服务器、个人数字助手(PDA)、或者实际上任何其他类型的计算设备101。计算设备101也可以具有使用实际上任意操作系统的体系结构。
计算设备101的处理器102代表数字信号处理器或任意类型体系结构的处理单元,包括ASIC(专用集成电路)、CISC(复杂指令集计算机)、RISC(精简指令集计算机)、VLIW(超长指令字)、或者混合体系结构,但是也可以使用任何适当的处理器。处理器102执行指令。处理器102还包括控制单元,该单元组织存储器(例如存储器104)内的数据和程序存储,并且将数据及其他信息传入并传出计算设备101,例如与视频捕获设备118之间传入传出数据,并且在一些实施方案中,还通过可选的网络接口(未示出)与一个或多个网络连接(未示出)之间传入传出数据。虽然在计算设备101内只示出了一个处理器,但是在一些实施方案中,计算设备101包括多个处理器102。
存储器104代表一个或多个存储数据的机制。例如,存储器104在不同的实施方案中包括随机访问存储器(RAM)、磁盘存储介质、光存储介质、闪存器件和/或其他易失性及非易失性机器可读介质中的一种或多种。在其他实施方案中,存储器包括适当类型的存储设备或存储器104。虽然只示出了一个存储器104,但是也可以出现不同类型的多个存储器104以及多种类型的存储设备。
视频捕获设备118在一些实施方案中是能够捕获视频的设备,例如摄像机。在不同的实施方案中,视频捕获设备118可以捕获单帧视频、时间上的多帧或以上两者。视频捕获设备118可以以多种方式被耦合到计算设备101。例如,视频捕获设备118可以经由一条线缆,例如通用串行总线(USB)线缆被有效地耦合到计算设备101。其他实施方案包括经由诸如(蓝牙)无线连接之类的无线连接,或者能够将所捕获的视频从视频捕获设备118传递到计算设备101的其他有线或无线连接设备或技术,被有效地耦合到计算设备101的视频捕获设备。
在一些实施方案中,视频捕获设备118可以以640×480像素的分辨率,以每秒30帧的速率来捕获彩色视频。这种视频捕获设备118可以捕获分辨率为1.3兆像素的静止图像。在其他实施方案中,视频捕获设备118能够以更高或更低的分辨率,以更高或更低的每秒帧率来捕获视频和静止图像。在一些实施方案中,可以通过调节视频捕获设备118的一个或多个参数来改变所捕获视频的属性。一些这样的设置包括捕获视频的分辨率。其他设置包括帧率、清晰度、亮度、聚焦、缩放、色彩、摄像机角度或位置,以及实际上用于调节所捕获视频的一种或多种属性或主题的任何其他设置。
视频捕获设备118的一些更进一步的实施方案包括麦克风。在一些这样的实施方案中,视频捕获设备118可以将复用信号(multiplexed signal)传递给计算设备101,所述复用信号包括视频和音频。
如上所述,视频捕获设备118被有效地耦合到计算设备101。视频捕获设备驱动器114从视频捕获设备118接收视频。在一些实施方案中,视频捕获设备驱动器114也向视频捕获设备118提供命令。这些命令包括改变由视频捕获设备118捕获的视频的属性的命令。在一些实施方案中,视频捕获设备驱动器114是互斥型设备驱动器,只允许运行在计算设备101上的一个应用使用视频捕获设备驱动器114。在一些实施方案中,视频捕获设备驱动器114是由视频捕获设备118的销售商/制作商提供的驱动器。
视频服务器处理116是获取对视频捕获设备驱动器114的控制的处理。如果共享存储器缓冲区112还未分配的话,视频服务器处理116还在存储器104内分配一个共享存储器缓冲区112。在已获取了视频捕获设备驱动器114并且分配了共享存储器缓冲区112后,视频服务器处理116将从视频捕获设备驱动器114接收到的视频写入共享存储器缓冲区112。可以一帧接一帧地完成视频向共享存储器缓冲区112的写入,每一帧覆写一个在前的帧。在一些实施方案中,存在两个或更多的共享存储器缓冲区112。在这种多个共享存储器缓冲区112的实施方案中,在共享存储器缓冲区之间以交替的方式写入视频。
共享存储器缓冲区112是存储器中分配来供视频服务器处理116及其他应用使用的区域。共享存储器缓冲区112具有的大小至少足够容纳一个视频帧。在包括一个以上共享存储器缓冲区112的实施方案中,每个共享存储器缓冲区112具有的大小都至少足以容纳一个视频帧。由视频服务器处理116写入共享存储器缓冲区112的视频帧可以被其他应用(例如虚拟视频捕获设备驱动器110)读取。在一些实施方案中,诸如应用106和应用108一类的应用可以直接从共享存储器缓冲区112取得视频。
在一些实施方案中,虚拟视频捕获设备驱动器110在计算设备101上就像是可由运行在计算设备101上的应用获得的实际视频捕获设备驱动器一样。虚拟视频捕获设备驱动器110从共享存储器缓冲区112读取视频,并将该视频提供给一个或多个应用。系统100的一些实施方案包括一个以上的虚拟视频捕获设备驱动器110。在一些实施方案中,虚拟视频捕获设备驱动器110是互斥的,只允许单个应用获得虚拟视频捕获设备驱动器110。在一些这样的实施方案中,存在多个互斥的虚拟视频捕获设备驱动器,以允许一个以上的应用同时接收视频。在其他实施方案中,如图1所示,虚拟视频捕获设备驱动器110是一个多实例(multi-instance)的虚拟驱动器,其允许一个以上的应用同时获得该多实例虚拟驱动器并接收视频。
在一些实施方案中,虚拟视频捕获设备驱动器110根据一个或多个设置对视频进行变换。在一些实施方案中,视频服务器处理116从视频捕获设备驱动器114接收由视频捕获设备118以高质量,甚至以视频捕获设备118所能实现的最高质量而捕获的视频。然后,视频服务器处理116将这个高质量的视频写入共享存储器缓冲区112。在一些实施方案中,视频服务器处理在将视频写入共享存储器之前,对该视频执行一种或多种变换,以改变一种或多种视频属性。然后,虚拟视频捕获设备驱动器110从共享存储器缓冲区112中读取所述视频,并且在将视频提供给发出请求的应用之前,根据一个或多个设置对该视频执行必要的变换。在一些实施方案中,所述设置包括对分辨率、帧大小、帧率、清晰度、亮度中的一种或多种属性的设置,或者实际上与视频属性相关的任何其他设置。在不同的实施方案中,这些设置由应用来提供,或者通过所述设置的用户操纵来提供。
应用106和应用108是要反映允许视频的(video-enabled)应用。在计算设备上可以运行有任意数量的这种允许视频的应用。这种允许视频的应用的例子包括视频记录应用、视频会议应用、短消息器应用、视频监督应用、以及实际上能够接收或请求源起于视频捕获设备118的视频的任何其他类型的应用。
图2是本发明主题的示例性实施方案的流程图。图2提供了所捕获的视频从视频捕获设备202流动到一个或多个客户应用210的高层视图,所述客户应用210将所捕获的视频提供给一个或多个用户应用(未示出)。视频捕获设备202可以与图1中的视频捕获设备118相同或不同。
图2的示例性图示包括视频捕获设备202提供视频给销售商提供的驱动器204。销售商提供的驱动器204是已由服务器206获得的互斥型驱动器。服务器206用来从销售商提供的驱动器204接收视频,并将该视频放入存储器208。存储器208是应用可访问的存储器。一些这样的应用包括客户(client),例如客户210A和210B。客户210A和210B的功能是从存储器208读取视频,并将该视频提供给一个或多个用户应用。用户应用通常是可与视频捕获设备202的所捕获视频相兼容的任何应用。
图3是本发明主题的方法300的示例性实施方案的框图。方法300包括获取对视频捕获设备驱动器的独占控制,并且分配共享存储器缓冲区304。方法300还包括从视频捕获设备驱动器接收视频帧306,并且将该视频帧写入共享存储器缓冲区308。在一些实施方案中,方法300还包括从视频捕获设备驱动器接收另一个视频帧306,并再次将该视频帧写入共享存储器缓冲区308。方法300然后在该方法的这些部分(即,306和308)上反复迭代,同时在接收视频帧。
方法300的共享存储器缓冲区可由一个或多个应用访问,例如虚拟视频捕获设备驱动器。虚拟视频捕获设备驱动器向允许视频的应用提供视频,在这些应用看来就像实际的设备驱动器一样。
在一些实施方案中,分配共享存储器缓冲区的操作包括在系统存储器(例如随机访问存储器(RAM))中分配一个空间。所分配的存储器量根据所捕获视频的属性而变。通常,较高分辨率的视频将需要分配更大的共享存储器缓冲区。另外,在捕获和传输视频时所使用的格式可能会影响所需要的存储器大小。此外,如果视频被复用而包括相关的音频,那么所需的存储器空间可能会受到影响。
图4是本发明主题的方法400的示例性实施方案的框图。方法400包括获取互斥型视频捕获设备驱动器402,分配两个共享存储器缓冲区404,并且创建一个或多个虚拟设备驱动器,其中所述一个或多个虚拟设备驱动器对于可运行在执行所述方法的系统上的应用而言,看起来就像视频捕获设备驱动器一样406。方法400的一些实施方案还包括从视频捕获设备驱动器接收视频帧流,并将在两个共享存储器缓冲区之间以交替的方式写入视频帧。方法400所创建的虚拟设备驱动器可运行来通过从两个共享存储器缓冲区中以交替的方式读取视频帧,而向运行在系统上的应用提供视频。
在方法400的一些实施方案中,创建一个或多个虚拟设备驱动器的步骤406包括创建固定数量的互斥虚拟设备驱动器。在一些实施方案中,所述的固定数量是2,而在其他实施方案中,固定数量是10。然而,方法400可以创建任意数量的互斥设备驱动器。在一些实施方案中,互斥设备驱动器的数量是同时可以从方法400接收视频的允许视频应用的最大数量。在一些其他实施方案中,如果使用了所有的互斥设备驱动器,那么实现方法400的系统动态地创建一个或多个额外的互斥设备驱动器。
在一些实施方案中,互斥型设备驱动器是销售商提供的设备驱动器的拷贝,其进行了某种改动,以使所述互斥型设备驱动器从共享存储器缓冲区读取视频数据,而不是从视频捕获设备读取。在其他实施方案中,互斥型设备驱动器包括被编写为对于可耦合到实现方法400的系统的视频捕获设备来说就像设备驱动器一样的软件。
图5是本发明主题的方法500的示例性实施方案的框图。方法500是在一个具有包括在内的操作系统的系统上的方法500的示例性实施方案。
Microsoft的体系结构是建立在过滤器之上的。总地说,过滤器对一个数据流(例如视频帧流)执行一种操作。一些过滤器操作包括读取文件或流,将数据传递到视频卡或其他外围设备,并将数据转换成特定的帧大小或特定的格式,例如MPEG-1(运动图像专家组;国际标准组织/国际电学技术委员会标准11172)或RGB(红-绿-蓝)。
通常有三种过滤器类别:获得视频数据的源过滤器,以某种方式转换视频数据的转换过滤器,以及输出视频数据的递交(render)过滤器。多个过滤器可以以某种方式链接在一起,这样一个过滤器的输出就是下一个过滤器的输入。由相互链接的过滤器组成的组被称为过滤器图。通常,过滤器图至少包括一个源过滤器和一个递交过滤器。
方法500包括获取对视频捕获设备驱动器的独占控制502,并且分配共享存储器缓冲区504。该方法还包括将来自视频捕获设备驱动器的视频流接收到过滤器图中506,获得进入源过滤器的视频流,其中源过滤器看起来就像视频捕获设备驱动器508,并且由应用获取源过滤器,其中源过滤器被应用的过滤器图用来从共享存储器缓冲区获得视频流510。
将来自视频捕获设备驱动器的视频流接收到过滤器图中的步骤506包括获得所述视频流并将该视频流提供给递交过滤器的源过滤器。然后,递交过滤器一帧接一帧地将视频流递交给共享存储器缓冲区。
获得进入源过滤器的视频流,其中源过滤器对应用来讲看起来就像视频捕获设备驱动器的步骤508包括可以作为用于获得视频流的设备驱动器而被获取的源过滤器。源过滤器一旦被应用获取,然后就被用作供该应用的过滤器图从共享存储器缓冲区获得视频流的源过滤器。
图6是本发明主题的示例性实施方案的流程图。图6提供了类似于图2的高层视图,但是它在图5所提供的方法500的示例性实施方案之上进行了扩展。这个高层视图包括从视频捕获设备602流动到一个或多个客户源过滤器的所捕获的视频,所述客户源过滤器例如是610A和610B,它们向一个或多个用户应用(未示出)提供所捕获的视频。视频捕获设备602可以与图1中的视频捕获设备相同或不同。
图6的示例性图示包括向销售商提供的驱动器604提供视频的视频捕获设备602。销售商提供的驱动器604是已由服务器过滤器图606获取的互斥型驱动器。服务器过滤器图606包括用来从销售商提供的驱动器604获得视频的源过滤器。服务器过滤器图606还包括将视频写入共享存储器缓冲区608的递交过滤器。共享存储器缓冲区608是至少可以被客户源过滤器610A和610B访问的存储器。客户源过滤器610A和610B的功能是通过从共享存储器缓冲区608读取视频,并将该视频提供给一个或多个用户应用的过滤器图,从而对于一个或多个用户应用(未示出)而言起到过滤器图中的源过滤器的作用。
需要强调的是,说明书摘要是依照37C.F.R.§1.72(b)来提供的,该法条要求摘要能使读者快速地把握技术公开内容的本质和要旨。提交说明书摘要不是用来解释或限制权利要求书的范围或含义。
在以上具体实施方式部分中,将各种特征一起分组到单个实施方案中,以使本公开流畅。这一公开方法不想被解释为反映了以下意图,即本发明所要求保护的实施方案比在每个权利要求中所明确记载的特征需要更多的特征。相反,正如权利要求书所反映的,发明性的主题所具有的特征少于单个公开实施方案中的所有特征。因此,将权利要求书包含到具体实施方式这部分中,每个权利要求单独成为一个独立的实施方案。
本领域的技术人员很容易理解,在已经描述并图示来解释本发明主题的本质的细节、材料以及部件和方法阶段的设置方面,可以作出多种不同的其他改变,而不会偏离在附加的权利要求书中所表明的本发明主题的原理和范围。