CSDN博客

img psprite

视频流的显示模块

发表于2004/9/29 15:50:00  1371人阅读

网络服务器端接收到的MPEG-1数据,必须进行一定量的缓冲,然后才能交给DirectShow解码处理。系统动态地一边从网络接收数据,一边进行数据的解码回放。这里介绍一种使用的双缓冲队列技术。

双缓冲队列技术的工作原理是,建立两个队列,一个是PoolList,空闲的缓冲队列,用以接收存放数据;另一个是DataList,尚未处理的数据缓冲队列,等待DirectShow处理。当网络接收到一个包的数据,从PoolList队列头取出一个缓冲区,存放数据,并将这个缓冲区加入到DataList的尾部等待DirectShow的Filter读取。DirectShow从DataList队列的头区出一个缓冲区,读取数据,将读完的缓冲区加到PoolList的尾部,等待再一次地接收数据

DirectShow是一个基于COM系统,由许多模块化的软件组件组成的技术。在这个系统中,最基本的构造模块称为过滤器DirectShow将多媒体数据的处理过程分为若干步骤,每一步由一个过滤器来完成。在应用程序中,为了完成对多媒体数据的处理,需要将若干过滤器连接起来,一个的输出作为另一个的输入,这样连接在一起的一组过滤器称为过滤器图。过滤器之间数据传输的细节由插头来处理。插头实际上是一个COM对象,分为输入插头和输出插头。插头相当于过滤器之间的连结点,位于上游的过滤器的输出插头和位于下游的过滤器的输入插头连结在一起。插头知道它们支持的媒体类型并会在两个过滤器初始连接时协商媒体类型。当媒体类型协商完成后,插头会进一步商讨当过滤器图运行时如何传输数据。当原始数据被加入过滤器图时,无论这些数据是来自捕捉卡还是其他数据源,都必须先被解析成有意义的单元,即媒体样本,才能在过滤器图中传递。过滤器图的管理又是由一个更高一级组件来完成的,即过滤器图管理器(FilterGraph Manager)。过滤器图管理器可以对流经过滤器图的数据流执行一些较高级的调用,如运行、停止等.
通常完整的DirectShow过滤器图需要用到3种类型的过滤器:源过滤器、变换过滤器以及实施过滤器。源过滤器接收到原始数据后,经变换过滤器的处理,由实施过滤器输出处理后的数据。

服务器接收到MPEG-1视频源源不断的写入到双缓冲队列中,与此同时图3-14所示的过滤器图将在过滤器图管理器控制下开始运行。这时位于源过滤器MPEG1Source下游的MPEG1Stream Spliter就主动向源过滤器提出数据读取请求。源过滤器接到数据读取请求后就开始从双缓冲队列获取视频数据包,经解包重组后传递给MPEG-1 Stream SpliterMPEG-1StreamSpliter对获得的数据进行解析后转交给其下游的变换过滤器MPEG-1 Video Decoder,由它进行实际的MPEG-1解码。最后由实施过滤器Video Render把解压后的视频图像输出到服务器端的显示器上去。

 

阅读全文
0 0

相关文章推荐

img
取 消
img