用于过滤媒体分组的方法和设备的制作方法

文档序号:6351541阅读:155来源:国知局
专利名称:用于过滤媒体分组的方法和设备的制作方法
技术领域
本发明总地涉及对视频会议数据的处理。更具体的说,本发明涉及从视频会议数据流中过滤媒体分组的方法,以及诸如多点控制单元之类的执行该方法的视频会议设备。
背景技术
视频会议和相关硬件大体落入两个阵营。在第一阵营中,“会议”在仅两个参与者之间发生,并且参与者通过某种形式的数据网络而彼此直接连接。在该形式的网络中,仅涉及两个端点,并且仅在这两个端点站点之一处存在多个参与者的情况下发生真实会议。这类会议的示例在低技术端是利用诸如NetMeeting⑧或Skype 之类的软件的PC使能的端点互连,并且在更高端是利用例如经由ISDN或IP (因特网协议)链路而互连的专用端点硬件的设备。在第二阵营中,视频会议允许多于两个端点彼此交互。这是通过提供至少一个集 中式协调点即所谓的“多点控制单元(MCU) ”来实现的,MCU接收来自端点的视频和音频流,以期望方式使其组合,并且将组合后的复合视频/音频流重新发送到参与者。发送到端点的会议视图对于每个端点经常是相同的。构成可随时间过去而改变但是对于所有参与者是相同的。仅提供单个构成是重要的问题,这是因为每个参与者因而必须接收如下会议流,该会议流被剪裁以使得其对会议中最低能力的端点而言是可以接受的。因此在该情形下许多端点未被最大限度使用并且因而可经历降级的图像和音频。最近,现代MCU已被设计为允许为每个参与者创建唯一的视图。这允许每个端点的能力被充分利用并且还允许针对不同参与者的不同构成,结果,例如会议中的具体参与者的重点对于不同用户可以是不同的。然而,视频数据的实时处理是高度处理器密集型任务。其还涉及大量数据的移动。一旦为了执行高质量处理而解压缩了数据尤其如此。因此,处理能力和带宽约束在允许产生会议的多个视图的高质量视频会议MCU的创建中是重要瓶颈。图I示出了典型的现有技术MCU架构。该示例性架构具有诸如德州仪器TMS系列之类的经由时分复用(TDM)总线4互连的多个数字信号处理器2。控制器和网络接口 6也被连接到TDM总线。每个DSP 2被分配TDM总线上的一个或多个时间槽。将会认识到,TDM总线是显著瓶颈。在可以通过添加更多强大DSP或附加DSP来实现MCU的增加处理能力的同时,在DSP之间以及在网络8与DSP之间流动的所有数据必须适合TDM总线4上的有限数目的时间槽。因此,该形式的架构一般可扩展性极差,并且无法满足依照参与者的构成的处理要求。图2示出了替代性的现有技术配置。在该示例中,多个DSP 2-1被各自连接到外围组件互连(PCI)总线10-1。类似地,多个DSP 2-2、2-3和2-4被连接到相应的PCI总线10-2、10-3和10-4。PCI总线10-2、10-3和10-4又经由缓冲器12连接到另一 PCI总线14。该架构相对于图I所示架构的显著优点在于组2-1中的DSP可相互通信,唯一瓶颈是PCI总线10-1。对组2-2、2-3和2-4也是如此。然而,如果组2_1中的DSP希望与例如组2_3中的DSP通信,那么PCI总线14必须被利用。因此,虽然该架构在扩展性以及有效利用多个DSP的能力方面是对图I中示出的架构的显著改进,但是PCI总线14仍然必须被用于DSP内通信的某些组合,因而可变成MCU架构的性能限制因素。已经做出从DSP卸载处理的尝试。例如,IDT以零件编号IDT70K2000制造与DSP一起使用的“预处理交换机(PPS) ”。PPS在递送到诸如DSP或FPGA之类的处理器之前执行预定功能。处理是基于分组所被发送到的交换机上的地址范围来确定的。芯片例如是针对3G移动电话中的用途来设计的,并且例如被设计用于从DSP卸载通常将被DSP低效执行的
基本任务。提供高度可扩展并且非常强大的处理平台的第三MCU架构在US20080158338和US20090213126中被公开。图3示出了母板20,该母板承载了现场可编程门阵列(FPGA) 24以及多个子板22。FPGA 24在控制器(未示出)、网络接口(未示出)以及多个子板22之 间路由数据。使母板20与子板的第一层相连的链路26可具有例如3Gb/秒或者更高的带宽。每个子板具有多个处理器,即经由子板交换机互连的数字信号处理器(DSP)。每个子板交换机被配置为在多个DSP之间以及在母板、子板和其他子板之间交换数据。在一个示例中,并且还参考图4,每个子板20具有各自具有关联存储器30的四个DSP 28。每个子板还具有包括交换机34的FPGA 32。FPGA 32还包括处理器36,以及两个高带宽链路38。虽然该架构是对替代现有技术的极大改进,这是因为板到板通信被极大减少,但是板到板通信仍然依赖于处理器过滤分组和利用满网络堆栈向DSP重新分配媒体分组。这对处理器造成不必要的负担,从而使系统减慢。尽管联系图3和4的架构具体提到,但是这对于在图2中示出的基于PCI总线的MCU架构甚至是更大的问题。

发明内容
本领域中存在对用于过滤来自视频会议媒体流的媒体分组而不必借助于满网络堆栈的方法和设备的需要。本发明的方法和设备允许在小型软核处理器上实现对来自视频会议媒体流的媒体分组的过滤,以便对千兆位以太网线路速度的媒体分组进行验证、分类和重定向。本发明由所附权利要求书指示。根据本发明的第一方面,包括一种用于在视频会议设备中过滤来自视频会议数据流的媒体分组的方法,该视频会议设备包括媒体处理网络、通用网络、软核处理器、查找表存储器(LUT)以及满网络堆栈。所述软核处理器处接收视频会议媒体流的分组,并且首先确定该分组的长度是否长到足以包含媒体,然后所述软核处理器确定其是否支持该分组的协议。在初始验证步骤之后,所述软核处理器找到该分组的媒体流ID,并且利用该媒体流ID作为输入值来向所述LUT发送请求,同时并行确定该分组是否为有效媒体分组。当所述软核处理器从所述LUT接收到所述媒体处理网络中的目的地地址,并且该分组被确定为有效媒体分组时,所述软核处理器利用从所述LUT接收到的所述目的地地址来修改该分组的头部;并且将该分组路由到修改后的目的地地址。根据本发明的第二方面,当确定分组是有效媒体分组同时未从所述LUT接收到所述媒体处理网络中的目的地地址时,将该分组路由到所述满网络堆栈,其中该分组在媒体网络中的目的地地址被解析,并且该分组被路由到所述媒体网络中的目的地地址。随后,使用该分组的对应媒体流ID作为索引值,利用媒体网络中的目的地地址来更新所述LUT。根据本发明的第三方面,未被确定为有效媒体分组、可能的媒体分组并且/或者在未被所述软核处理器支持的协议中的分组被直接路由到所述满网络堆栈。在结合附图回顾对本发明具体实施例的以下描述之后,本发明的其他方面和特征对本领域普通技术人员将变得显而易见。


图I是现有技术MCU架构的示意性框图;图2是替代现有技术MCU架构的示意性框图;图3是不出另一替代现有技术MCU架构的不意性框图; 图4是根据图3的现有技术MCU架构的现有技术子板的不意性框图;图5是根据本发明一个示例性实施例的媒体分组过滤单元的示意性框图;图6是根据本发明的用于媒体分组过滤的方法的流程图;并且图7是根据本发明的用于媒体分组过滤的方法的另一示例性流程图。
具体实施例方式给出以下描述是为了使得本领域的普通技术人员能够做出和使用本发明的各种方面和示例。对具体设备、技术和应用的描述仅是作为示例提供的。对在此描述的示例的各种修改对本领域的普通技术人员而言将是显而易见的,并且在此定义的一般性原理可被应用到其他示例和应用,而不脱离本发明的精神和范围。因此,本发明并不欲限于所示出并在此描述的示例,而是将符合与权利要求一致的范围。参考图5,媒体分组过滤单元50包括三FIFO 51、软核处理器52以及查找表LUT59。三FIFO 51是具有三个端口 53、54和55的同步或异步的FIFO(先入先出)。第一端口是通常与数据流送网络相连的数据输入端口 53,该端口被配置为根据数据流送网络的网络协议接收数据以及相应的控制信令。第三端口是与媒体处理网络相连的数据输出端口55。媒体处理网络通常由大量DSP、交换机等组成,如上面参考图1、2和3描述的。媒体处理网络还被连接到主MCU中的通用网络,该通用网络是由满网络堆栈或者主网络堆栈58控制的。主网络堆栈还与LUT 59操作地相连。数据输出端口 55被配置为根据媒体处理网络的网络协议将媒体数据流送到媒体处理网络中。或者数据输出端口 55被配置为随机访问读取端口。第二端口是与软核处理器52相连的软核处理器接口端口 54。接口端口 54被配置为向软核处理器52发送和从软核处理器52接收数据。在本发明的示例性实施例中,接口端口 54被配置为读取/写入随机访问端口。另外,三FIFO还包括在三个端口之间的传递的至少三个,优选至少四个,数据分组缓冲器56,从而从端口 53循环到端口 54、从端口54循环到端口 55,并且最终从端口 55返回端口 53。数据分组缓冲器是本领域技术人员已知的传统数据分组缓冲器。在示例性的主网络堆栈中,应用层使用RTP,传输层使用TCP/UDP,因特网层使用IP (IPv4),并且链路层使用以太网。因特网层例如可以是IPv4或IPv6。主网络堆栈必须包括对UDP和TCP两者的处理。TCP被多数控制协议使用。主堆栈上还需要RTP堆栈,以便处理未被软核处理器和LUT识别出的分组,使得它们可被转发到正确的目的地。期望对正确的以太网和因特网操作所必需的控制元件的处理是由主网络堆栈而非软核处理器和LUT处理的。这将对ARP、ICMP和以太网PHY和MAC的处理包括在相关设备驱动程序中。事实是存在对设备驱动程序和主机上的网络堆栈透明的软核处理器和LUT-设备驱动程序和IP网络堆栈的正确操作不需要(未在主机上见到的)被过滤的分组。本领域技术人员所已知的软核处理器52是完全利用逻辑综合(logicsynthesis)实现的微处理器核。其可以经由包含可编程逻辑(例如,FPGA、CPLD)的不同半导体器件来实现。本发明的软核处理器可以是8位、16位或者32位的处理器。软核处理器52还与LUT 59 (查找表存储器)进行通信。LUT 59利用快速存储器来保存当在下面描述LUT的功能时更详细描述的信息。在一个不例性实施例中,LUT被实现在与软核处理器52相同的芯片上,快速存储器优选被实现为片上SRAM(内部FPGA,例如“块RAM”)。在另一示例性实施例中,LUT位于软核处理器52外部,在该情况下快速存储器是诸如DDR2SRAM之类的外部存储器。 虽然在上面被描述为分立器件,但是在本发明的优选实施例中,三FIFO 51、软核处理器52和LUT 59被实现在单个FPGA中。再次参考图5,三FIFO 51在数据输入端口 53上接收来自数据流送网络的数据。取决于流送网络协议,数据输入端口 53还接收控制信号,例如wr(写)和eop (分组结束),如本领域技术人员可以容易理解的。在该示例中,数据输入端口 53首先写入缓冲器56a。当缓冲器56a是满的时,某一时间限制已经过去,或者由于其他已知触发,缓冲器被传递到软核处理器接口端口 54。缓冲器56c同时被从输出端口 55传递到输入端口 53,并且缓冲器56b被从接口端口 54传递到输出端口 55。在接口端口 54处,来自缓冲器(在该示例中为56a)的数据被发送到软核处理器52。软核处理器52然后接收分组并对接收到的分组执行初始验证,然后使用下面参考图6描述的新颖和创造性的方法与继续进行对接收到的分组的验证并行地进行向LUT 59的投机请求(speculative request)。图6示出了当前发明的方法,其中该方法在软核处理器接收分组时开始60。在初始验证步骤61中,分组的长度被检查以查找该分组是否长到足以包含媒体,例如包含媒体的RTP (实时协议)分组。然后,如果发现分组是包含媒体的可能的候选者,那么读取分组的头部以确定软核处理器是否支持分组的协议。或者,在以太网实施例中,以太网目的地验证和以太网CRC(循环冗余校验)验证也将是初始验证步骤的一部分。在这些初始验证中的任一个失败的情况下,分组被返回到接口端口 54,并且对下一分组的处理开始。被返回到接口端口的分组最终被路由到主满网络堆栈65。以下包括各种头部的长度示例。以太网头部=14个八位字节(注最小以太网有效载荷是46个八位字节)IPv4头部=20个八位字节UDP头部=8个八位字节RTP 头部=12这暗示,不包括以太网帧在内,不包含有效载荷的数据报是40个八位字节。我们假定24个八位字节足以包含有用数据,故长度小于64个八位字节的数据报被发送到主网络堆栈。长度上具有64个或更多个八位字节的数据报被认为长到足以包含媒体。64个八位字节仅仅是一个示例,并且其他值可被使用。在某些情形下,使用40个八位字节是更合理的,因为丢弃无效数据报可以是接收数据处理节点(DSP)中的RDP堆栈的责任。软核处理器52和LUT 59然后仅需防止它们自己尝试处理以太网帧中的不存在数据,从而防止引起无效内部状态。在初始验证步骤之后,下一步骤62是寻找分组的流ID。通过读取 分组头部长度,并且取决于分组的协议而在分组中距离分组头部一偏移处读取字段,例如在UDP的情况下是目的地m)P端口号码,来找到流ID。虽然在此参考UDP来描述,但是因为分组中的流ID根据分组的协议总被布置在分组中距离头部恒定偏移处,因此该寻找流ID的方法适用于若干其他协议,如知晓本公开的本领域技术人员容易理解的。对本发明有用的媒体流ID包括,但不限于,UDP数据报的目的地端口、RDP SCRID、RTP SSRC、H460/18复用ID等。然后,因为对LUT或LUT查找的请求要花时间,为了使得本发明以千兆位以太网线路速度工作,包含流ID的投机请求62被发送到LUT59,同时对分组的进一步验证63并行地继续。本公开意义下的投机假定与被发送到LUT的流ID相对应的分组是有效的未损坏的媒体分组,作为流ID所标识的假定媒体流的一部分。在步骤62,使用唯一媒体流ID作为输入值或索引值,请求被发送到LUT 59。如果媒体流ID在LUT中已经存在,那么软核处理器52从LUT接收属于该流ID的信息或者元数据。从LUT接收到的信息是流统计和/或媒体处理网络中的正确目的地地址。该地址可以是IPv4目的地地址、接口索引(MAC地址)、源/目的地(src/dst)端口或者根据网络协议的任何其他网络地址。在媒体流ID未被在LUT中列出的情况下,软核处理器接收表明对于该媒体流ID不存在信息的消息,或者作为替代接收空信息消息。当LUT查找发生时,对与媒体流ID相对应的分组的进一步验证在步骤63中继续。通常包括进一步的分组格式验证、头部格式验证、分组有效载荷类型等在内的进一步的分组验证确定分组是否为有效的媒体分组。在这些进一步验证中的任一个失败的情况下,分组被返回到接口端口 54,由LUT得到的任何数据被丢弃,并且对下一分组的处理开始。被返回到接口端口的分组最终被路由到主满网络堆栈65。在损坏分组的情况下,LUT中的查找将基于被解释为媒体流ID的伪数据。如果针对该媒体流ID存在条目,那么LUT将返回有效但是不相关的数据,该数据然后当分组被进一步分组验证63认为是无效时被丢弃。在进一步分组验证63确定分组是有效媒体分组,并且LUT返回与该分组相对应的媒体流ID的元数据的情况下;然后在步骤66中,软核处理器基于从LUT 59接收到的信息利用媒体处理网络中的正确目的地地址来改写所接收到的媒体分组的分组头部,并且将修改后的分组返回到接口端口 54处的缓冲器。属于具有未被LUT 59识别出的媒体流ID的媒体流的分组和/或未被确定为有效媒体分组的分组被未经修改地返回到接口端口 54处的缓冲器。当接口端口 54处的缓冲器(在该示例中为56a)是满的时,某一时间限制已经过去,或者由于其他已知的触发,缓冲器被传递给数据输出端口 55。或者,利用主网络堆栈58的地址来修改头部。数据输出端口 55从缓冲器(在该示例中为56a)中读出数据,并且具有修改后的分组头部的媒体分组被直接向着媒体处理网络中的各个正确目的地地址发送到该网络中。所有其他分组被路由到主网络堆栈。主网络堆栈然后利用新媒体分组的媒体流ID以及其在媒体处理网络中的各个目的地地址来更新LUT 59。取决于媒体处理网络协议,数据输出端口 55还接收控制信号,例如来自媒体处理网络的rd (读取)和done (完成),如本领域技术人员可以容易理解的。图7示出了根据本发明的一个示例性实施例,其中媒体分组是通过IP/UDP传输的RTP分组。在步骤71中,分组长度被检查以确定分组长度是否足以包含RTP媒体分组,在“是”的情况下方法前进到步骤72。如果未发现分组有可能包含RTP分组,那么分组被路由到主网络堆栈,步骤81,并且对下一分组的处理开始。在下一步骤72中,分组的头部被读取以确定分组是否为IP/UDP分组。再次,如果分组不是IP/UDP分组,那么分组被路由到主网络堆栈,步骤81,并且对下一分组的处理开 始。在步骤73中,通过读取IP头部长度以及IP头部长度到目的地UDP端口号码的偏移来找到分组的流ID。然后使用目的地UDP端口号码作为输入值或索引值来将请求74发送到LUT 59。在目的地UDP端口号码未被在LUT中列出的情况下,LUT发送表明针对该UDP端口号码不存在信息的消息,或者作为替代LUT发送空信息消息,并且分组被路由到主网络堆栈,步骤81,并且对下一分组的处理开始。如果UDP端口号码在LUT中已经存在,那么LUT返回媒体处理网络中的正确目的地地址,在该情况下为IPv4目的地地址。如上面参考图6描述的,当LUT查找发生时,分组在步骤75-79中被进一步验证,并且如果这些步骤中的任一个再次失败,那么分组被路由到主网络堆栈,步骤81,并且对下一分组的处理开始。步骤75-79中的测试是本领域技术人员所已知的常见分组验证测试,因此将不被详细描述。步骤75验证IP分组校验和。步骤76验证IP头部格式,例如检查IP版本号是
4。步骤77验证UDP分组格式。步骤78验证RTP分组格式;并且最终步骤79检查RTP标志和有效载荷类型是否表明分组包含媒体。在步骤80,被识别为RTP媒体分组并且通过具有正确版本协议的IP/UDP发送的分组的头部被利用从LUT接收到的元数据修改并且被路由到媒体处理网络中的正确目的地地址。在此公开的用于过滤来自视频会议数据流的媒体分组的方法以及对应的视频会议设备可被实现在多点控制单元(MCU)中。当然,其他特征和优点对本领域技术人员将会显而易见。前述系统概览表示某些示例性实现方式,但是其他实现方式将对本领域技术人员显而易见,并且所有这种替代方式被认为是等同的并且在仅受权利要求限制的本发明的精神和范围内。另外,虽然被单独列出,但是多个装置、元件或方法步骤可由例如单个单元或处理器实现。此外,虽然单独特征可被包括在不同的权利要求中,但是这些可能能被有利地组合,并且包括在不同的权利要求中并非暗示特征的组合不是可行和/或有利的。另外,在一种类别的权利要求中包含一特征并非暗示对该类别的限制,而是该特征视情况可同样适用于其他权利要求类别。
权利要求
1.一种用于在视频会议设备中过滤来自视频会议数据流的媒体分组的方法,所述视频会议设备包括媒体处理网络、通用网络、软核处理器、查找表存储器(LUT)以及满网络堆栈,该方法包括以下步骤 在所述软核处理器处接收视频会议媒体流的分组, 确定该分组的长度是否长到足以包含媒体, 确定该分组的协议是否被所述软核处理器支持, 找到该分组的媒体流ID, 在并行确定该分组是否为有效媒体分组的同时,利用所述媒体流ID作为输入值来向所述LUT发送请求;以及 当从所述LUT接收到所述媒体处理网络中的目的地地址并且确定该分组是有效媒体分组时, 利用从所述LUT接收到的所述目的地地址来修改该分组的头部;并且 将该分组路由到修改后的目的地地址。
2.如权利要求I所述的方法,其中所述方法还包括以下步骤 当确定该分组是有效媒体分组并且未从所述LUT接收到所述媒体处理网络中的目的地地址时, 将该分组路由到所述满网络堆栈, 解析该分组在媒体网络中的目的地地址, 将该分组路由到所述媒体网络中的目的地地址;并且 使用该分组的对应媒体流ID作为索引值,利用所述媒体网络中的所述目的地地址来更新所述LUT。
3.如权利要求I所述的方法,其中,分组的媒体流ID是通过在该分组中距离分组头部由该分组的协议所定义的偏移处读取字段而找到的。
4.如权利要求I所述的方法,其中,在所述分组未长到足以包含媒体数据的情况下,将该分组路由到所述满网络堆栈。
5.如权利要求I所述的方法,其中,在所述分组的协议不被所述软核处理器支持的情况下,将所述分组路由到所述满网络堆栈。
6.如权利要求I所述的方法,其中,在所述分组被确定为不是有效媒体分组的情况下,将所述分组路由到所述满网络堆栈。
7.一种适用于执行如前述权利要求中的一个所述的方法的视频会议设备,该视频会议设备包括三 FIFO, 软核处理器,以及 查找表存储器(LUT)。
8.如权利要求7所述的视频会议设备,其中,所述LUT和所述软核处理器被实现在一个半导体器件上。
9.如权利要求7所述的视频会议设备,其中,所述三FIFO、所述LUT和所述软核处理器被实现在一个半导体器件上。
10.如权利要求8或9所述的视频会议设备,其中,所述半导体器件是现场可编程门阵列(FPGA)。
11.如权利要求7所述的视频会议设备,其中,所述三FIFO包括至少三个数据分组缓冲器。
12.如权利要求11所述的视频会议设备,其中,所述三FIFO包括四个数据分组缓冲器。
13.如权利要求7-12中的一个所述的视频会议设备被实现在多点控制单元(MCU)中。
全文摘要
一种视频会议设备中的用于过滤来自视频会议数据流的媒体分组的方法。所述视频会议设备包括媒体处理网络、通用网络、软核处理器、查找表存储器(LUT)以及满网络堆栈。该方法包括在所述软核处理器处接收视频会议媒体流的分组,确定该分组的长度是否长到足以包含媒体,确定该分组的协议是否被所述软核处理器支持,找到该分组的媒体流ID,利用所述媒体流ID作为输入值来向所述LUT发送请求同时并行确定该分组是否为有效媒体分组;以及当从所述LUT接收到所述媒体处理网络中的目的地地址并且确定该分组是有效媒体分组时,利用从所述LUT接收到的所述目的地地址来修改该分组的头部;并且将该分组路由到修改后的目的地地址。一种视频会议设备适用于执行该方法。
文档编号G06F15/163GK102823201SQ201080058459
公开日2012年12月12日 申请日期2010年12月20日 优先权日2009年12月21日
发明者西蒙·罗宾斯 申请人:思科系统国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1