CSDN博客

img lucky2all

Directshow RTP对网络多媒体应用适配的支持

发表于2004/4/5 23:42:00  2747人阅读

Directshow RTP对网络多媒体应用适配的支持

lucky2all@yahoo.com

Intel 体系结构实验室

前言

 

交互协作应用,或者包含许多个独立多媒体程序的分布式游戏,运行时会同步生成和/或播放多路的音频和视频流。随着单个流的变化和流/应用被启动或最后终止对资源的需求,可用的资源总量会随之动态的改变。网络多媒体应用程序(NetMM)必须准备去适应这些变化,利用他们可以提供给用户可接受的不同级别的服务的这一事实。本文着重指出了添加网络和主机适应能力到基于组件的Directshow RTP的所出现的问题。

 

Directshow 是微软的一套针对视频数据采集和显示的系统架构。Directshow RTP 是一套拓展了Directshow系统架构的框架,添加了对采用RTP协议通过网络传输多媒体应用数据的支持。Directshow RTP 框架被设计用来支持高扩展性的广阔领域的多媒体流任务。Directshow RTP 做为 Windows NT5.0一部分会随同操作系统发行。我们已经扩展了这套架构,添加了对流应用的支持,对本地主机和计算机网络因分发和接收多媒体数据而引起的可用资源的变化,能够动态补偿。

 

我们的扩展包括采集可做出适配选择的相关信息,基于这些信息做出决策的组件,和可以利用基础体系结构中早已具有的能力来执行策略的方法。本文对于应用开发和用于开发这些应用的架构的设计都是有益的。

 

1.  介绍

 

NetMM是运行在客户计算机和单用户工作站的执行程序中资源需求最强烈的一类。这些应用对主机处理能力和网路带宽的耗用都有很高的要求。这些应用也经常需要底层操作系统和计算机网络接近实时处理的所提供能够执行的必要资源。以上任何资源访问的延迟都会导致明显的可觉察的展现给用户的质量的下降。随着单个NetMM程序对资源的需求的变化,和流和程序的启停,本地主机和网络可用资源会显著变化。因为可用资源和需求资源都会在运行期间显著变化,NetMM必须随时能够平滑的适配这些变化。

 

在这篇论文中,我们主要针对两种类型的适配------网络适配和主机适配。网络适配是指在网络可用带宽,网络抖动,数据丢失等条件下,流程序能够通过各种方法充分利用网络资源的能力。主机适配可定义为应用程序基于本地主机的情况,包括CPU利用率、可用内存,来改变自己的行为。 下面列举的例子的情形对网络和主机适配都是有用的:

 

多流对资源的竞争。假定某个应用有一个音频流,一个高比特率的视频流,和一个突发的幻灯片流,其中音频流对用户来讲是最高优先级的。如果音频流的质量受到影响,为满足用户的优先权,程序可以适配幻灯放映和视频流以降低系统资源占用。应用也必须可以检测对网络资源的竞争,相应调节它发送和接收各个流的行为。

 

允许体验对不同的网络和处理器资源的用户都可承受。在一次包括不同带宽和处理能力的异质用户的视频会议或交互会议中,所有节点将不可能接收所有的流。在这种条件下,如果采用分级编码,所有会议人员都可参与。这种适配形式,相较一个不采用分级编码流的展现,允许拥有很少资源需求的异质参与者获得到极大的满足。

 

补偿不同重要程度应用程序角色的变化。在单用户环境,一个程序相对其他程序的重要程度会随着时间变化。比如,当一个用户从看新闻广播切换到编译或一个设计任务,像Windows 95这样的操作系统一般会调度多媒体程序至后台以较低的优先级运行。当用户切换到新闻广播,去看感兴趣的事件(比如,最新的棒球运动消息),操作系统会相应提升此程序的执行优先级。NetMM也应该对被放置于后台或前台做出响应。这样,NetMM 程序切换到后台后应该减少网络和CPU占用率,回到前台后要全速运行。上面的附加的响应和超出操作系统所执行的优先级调度策略的是给那些急需资源的任务分配最多资源。

 

研究人员已经为NetMM程序的适配准备了几套方法。这些方法包括不同形式的源码流控制,采用分层视频的接受驱动,和主机资源的适配。尽管像RSVPATM提供QoS保障的协议和机制已能够满足NetMM程序,研究人员已在研究在资源约束和资源变化的条件下适配的应用。

 

假定适配对应用质量的影响是正面的,我们决定研究应用开发人员可以怎样不担心适配的复杂性,把适配添加到应用中。在这篇论文中,详细研究了的NetMM程序如何基于多媒体流组件架构适配网络和主机条件的变化。论文讨论了我们在该领域的成果,包括针对资源限制的适配的新的研究,创建用于NetMM支持网络主机适配的的中间件,和一些对采用适配的应用开发人员或架构设计人员有益的教训。

 

我们把微软的DirectShow做为我们架构的基础。Directshow提供了一个模块化,可扩展的实现多媒体应用的系统。在DirectShow架构中,我们添加了一套实现RTP协议的框架,我们称为DirectShow RTP,用来创建NetMM应用,

 

本论文的剩余部分组织如下。第2部分讲述了DirectShow 架构和DirectShow RTP。第3部分对此进行了讨论,分析了一些添加适配功能到 DirectShow RTP这些基于组件的架构的几种方法。第4部分给出了基于数据源的适配实现,第5部分,介绍了采用层多播的接收驱动的适配实现。第6部分提供了一个总体针对基于组件的流框架网络、主机适配实现的经验分析。第7部分讨论了可能进一步提高适配在NetMM中应用的下一步的工作领域。最后以在基于组件架构中实现适配的宜处的讨论结束本文。

 

2.  DirectShow 架构

 

21 微软的DirectShow

 

DirectShow 架构被用来为许多应用提供基本的多媒体流处理功能。它被用于全方位的多媒体处理,包括采集,编解码,回放,音视频数据的存储。DirectShow 采用4种主要抽象来操作多媒体数据。这些抽象术语为过滤器(filter),管脚(pin),媒体样本(media sample)和媒体类型(media types)。

MPEG File       MPEG Decoder       Video Render

           Data Flow

DirectShow filters 被用来封装一个或多个与多媒体流有关的任务。DirectShow filters例子中包含视频采集filter,被用来控制视频摄像设备,输出原始RGB视频帧;H.261编解码filter,被用来压缩原始RGB视频数据至H.261帧和解压。存在类似的用于音频流的Filters, 音频采集filterG.711编解码filterFilter还被用来在本地设备回放音视频。为允许程序综合几种功能来处理音频或视频,DirectShow采用filter graphsFilter graph 是一些串行连接的有序的,处理多媒体数据缓冲的filters。图1给出了一个范例filter graph, 包含一个文件读取filter,一个MPEG解码filter,和一个视频渲染filter,用以回放视频。

 

Filters 通过pins连接起来组成filter graphPinsDirectShow中有两种主要作用。第一是在filters互联时协商media type,和Filter互联时的分配内存。Media type 协商是media type管理两个确定的filters数据交互的方式。内存分配协商被用以指定保存多媒体缓冲(也被称为media sample)的内存在何处分配,分配多大的内存(字节对齐,使用来自内存映射设备的特定区域的内存,等)。

 

DirectShow Pins的第二项任务是隐藏filters间交换数据的方式。一旦一条链接已被成功建立,filters只是简单的接收和分发media samples至它的pins, pins相应的执行实际的操作,也就是samples 被分发到filter graph中下一个filter

 

Media samplesDirectShow中是对存储多媒体数据缓冲区的抽象。除了它们含有的多媒体数据缓,media samples还包含用来确定samples生命期的起始和终止时间戳。这些值可被渲染器用来确定何时播放和检测性能问题。

 

DirectShow media types 指定了filters之间交换包含media sample的数据的格式。Media types包含好几部分;其中最重要的是major minor 类型。一个主类型一般用来根据最高层的语义指导区分格式。MAJORTYPE_VIDEO MAJORTYPE_AUDIO是主类型的两种。次类型一般用来确定格式的不同,比如MINORTYPE_AUDIO_G711AMINORTYPE_AUDIO_G723。如果两个filters之间的 pins可以找到相同的media type,那么它们之间的就可以建立连接。DirectShow 允许定义新的filterspins,和media types。充分利用DirectShow内在的可扩展性,我们定义了两个新的media types和几个filters,实现了DirectShow架构下采用RTP协议通过网络传输多媒体数据流。这个新的NetMM框架被称为DirectShow RTP

 

22 DirectShow RTP

 

DirectShow RTP 定义了一组支持使用RTP协议网络传输多媒体流的fitlersmedia types

新定义的filtersRTP Source filterRTP Render Filter, RTP Demux filter, RTP Receive Payload Handler(RPH) filter,和RTP Send PayloadSPHfilter。使用这五个filters(同时使用标准的CODEC和采集/渲染filters),构造一个可以通过RTP协议网络传输音视频流的数据平台应用是可能的。

 

RTP Source filter被用来从一个单独的RTP会话中接收RTPRTCP包。这些包被封装在media sample中发到filter graph。这个filter被用以外出连接的广播media type包括主类型

RTP_MAJORTYPE_MULTIPLE_STREAM和次类型RTP_MINORTYPE_PAYLOAD_ANY,它们二者都是DirectShow RTP框架的一部分。这样的media types组合表示这个filter可以生成一个包含一个或多个RTP流的流,放到一起有可能是单个负载类型或多负载类型。这个filter提供一个指定发送给其它主机RTCP接收器报告和指定网络地址和端口接口来接收RTP会话的接口。

 

RTP Source filter紧密相关的就是RTP Render filter。这个filter接收media type 主类型为RTP_MAJORTYPE_SINGLE_STREAM,任何次类型的外来连接。为了遵从AVP的对发送者在RTP流关于负载类型和SSRC的规定,更加严格的主类型的选择是必要的。这个filter提供了与RTP Source filter类似控制的接口。

 

RTP Demux filter被用来多路分离来自RTP Source filterRTP包。多路分离遵从SSRC和每个包的负载类型。这个filter接收主类型为RTP_MAJORTYPE_MULTIPLE_STREAM和次类型为RTP_MINORTYPE_PAYLOAD_ANYpin的连接。此filter登记一个或多个输出pin

主类型为RTP_MAJORTYPE_SINGLE_STREAM,与正在讨论的pin上单个分发流负载有关的次类型。这个filter提供了控制流如何多路分离和如何分配到特定输出pin的接口。

RTP RPH filter 被用来转变来自单个固定负载类型源的RTP包为它们对应的未打包的形式。因此,这个filter的一个版本是用来获取RTP H.261包和生成H.261压缩视频帧。这个版本的filter已被设计为支持H.261H.263IndeoG.711G.723G.729和常见的多种音视频负载类型。这些常用的音视频RPH filter均遵从RTP AVP规定打包media sample。它提供了指定数目的缓冲的接口来解决在数据丢失(或转发)前等待时间,特别是丢帧时重建,需要进行的缓冲重分配工作。RTP SPH fitlerRTP RPH filter相似,它的任务是将音视频压缩filter输出的media samples的分解为RTP包。它提供的接口有,指定最大生成包大小(为了适用不同网络的MTU(最大传输单元))和PT值(允许使用动态RTP  PT值)。

 

Video Capture    codec     SPH       RTP Render

Data Flow

2 使用 DirectShow RTP发送网络数据

 

RTP Source    RTP Demux   RPH    Decoder    Video Render

Data Flow

3使用DiectShow RTP接收网络数据

2和图3展示了DirectShow RTP中定义的filters如何运用。图2是一个采集本地多媒体数据并使用RTP协议通过网络发送的filter graph。它包含一个输出原始视频帧的视频采集filter,紧跟一个压缩帧的编码filter。一旦压缩,这些帧就会被发送到RTP SPH filter,分片打包,生成RTP包,对应的发送到 RTP Render filter,通过网络传输这些包。图3展现了一个filter graph,用来接收包含视频流RTP包,播放视频。这个graph由一个用来接收包的RTP Source filter,一个根据源和负载类型进行分类的RTP Demux filter,一个把RTP包转为压缩视频帧的RTP RPH filter组成。这些filter随后的是用来解压帧的解码filter,一个显示未压缩帧的渲染filter

 

DirectShow RTP 框架中最重要的就是对用来显示RTP流和用来接收,处理,发送RTP包的五个filtersmedia type的定义。Media type的定义提供了一个有用的,描述DirectShow 系统结构中RTP流的方法,允许以后的可以添加新的处理RTP流方法的filters的定义。这些filter的实现提供了一组组件,基于此NetMM应用可以容易的被创建,并提供一套可用于未来NetMM领域的进一步研究的体系结构。 

0 0

相关博文

我的热门文章

img
取 消
img