基于DirectShow技术的2D与3D软件切换方法转让专利

申请号 : CN200910182817.4

文献号 : CN101702132A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘磊邵军海徐秀兵

申请人 : 无锡景象数字技术有限公司

摘要 :

本发明涉及一种基于DirectShow技术的2D与3D软件切换方法,包括以下步骤:构建2D Filter和3D Filter;构建适合当前显示模式的完整播放链路:先利用DirectShow技术建立一条能够回放普通的视频文件的链路;再根据显示设备的显示模式,在图像提交显示前对源文件解码出的每帧内容进行处理,最后将生成的数据提交给显示设备显示;然后可以对应硬件上的切换,在软件上进行2D与3D切换。本发明的优点是:根据显示模式,在软件上实时调整平面或立体图像;2D与3D切换快速、实时,不需要重新播放;可以方便地进行2D与3D效果的对比。

权利要求 :

1.一种基于DirectShow技术的2D与3D软件切换方法,其特征是:所述方法包括以下步骤:

(1)构建2D Filter和3D Filter;

(2)构建适合当前显示模式的完整播放链路:先利用DirectShow技术建立一条能够回放普通的视频文件的链路;再根据显示设备的显示模式,在图像提交显示前对源文件解码出的每帧内容进行处理,即若显示模式为2D,则在FilterGraph中增加2D Filter,对图像进行2D处理,生成一幅平面图像的数据;若显示模式为3D,则Filter Graph中增加3D Filter,对图像进行3D处理,生成一幅立体图像的数据;最后将生成的数据提交给显示设备显示;

(3)对应硬件上的切换,在软件上进行2D与3D切换:当在硬件上从2D显示模式切换为3D显示模式时,播放时对原文件的图像内容处理生成为立体图像,即在Filter Graph中先删除2D Filter,在2D Filter位置增加3D Filter,来对解码出来的图像进行3D处理;当在硬件上从3D显示模式切换为2D显示模式时,播放时对原文件的图像内容处理生成为平面图像,即在Filter Graph中先删除3D Filter,在3D Filter位置增加2D Filter,来对解码出来的图像进行2D处理。

说明书 :

技术领域

本发明涉及一种2D与3D软件切换的方法,尤其是一种DirectShow播放立体视频时,进行2D与3D软件切换的方法。

背景技术

DirectShow是一套完全基于COM(Component Object Model,即组件对象模型)的应用系统,它的组成模块是一种称之为Filter(过滤器)的COM组件,每一个Filter完成数据流上的某些功能。其设计初衷就是尽量让应用程序开发人员从复杂的数据传输、硬件差异、音视频流同步等工作中解脱出来,总体应用框架和底层工作由DirectShow的各个功能Filter完成,程序员需要做的就是设计整个应用程序的功能,确定要使用的Filter,然后通过Filter Graph(过滤器图表)的管理模型将各个功能模块正确连接并控制整个数据流的处理过程。
立体显示设备与2D与3D切换:
多视点自由立体显示设备是建立在人眼立体视觉机制上的新一代自由立体显示设备,采用显微透镜光栅屏幕或透镜屏技术,通过摩尔纹干涉测量法精确对位,利用一组倾斜排列的凸透镜阵列,在水平方向上发生的折射来为双眼提供不同的透视图像,来实现立体效果。它利用人眼视差特性,不需要借助任何助视设备(如3D眼睛、头盔等),在人眼裸视条件下即可获得具有完整深度信息的图像。
目前各种规格的立体显示设备提供一种2D与3D可切换功能,他们之间的切换只需在硬件上按下按钮即可轻松实现。当2D显示模式无法满足浏览需求时,您可以切换到3D模式即可轻松播放立体图像,还可随时切换回2D模式浏览平面图像。
但这种切换只是单方面从硬件上改变显示屏的偏振栅屏,播放的图像内容并没有实时改变。立体显示设备只有在2D模式下播放平面图像、3D模式下播放立体图像时才具有理想的观赏效果。当在3D模式下播放立体图像时,若单从硬件上实时切换成2D模式,只是在2D模式下播放立体图像,则不会具有清晰的效果;同样当在2D模式下播放平面图像时,单从硬件上实时切换成3D模式,只是在3D模式下播放平面图像,也不会具有立体效果。
所以,这种在硬件上按下按钮切换2D与3D的方法,是对同一图像内容在两种不同模式下的显示,不会在两种模式下都具有清晰的显示效果。

发明内容

本发明的目的是克服单方面从硬件上进行2D与3D切换存在的固有缺陷,提供一种基于DirectShow技术的2D与3D软件切换方法,从软件上根据显示设备的显示模式,采取对应的图像处理方法,生成平面或立体图像内容再提交显示,以便获得更好的观赏效果。
按照本发明提供的技术方案,所述基于DirectShow技术的2D与3D软件切换方法包括以下步骤:
(1)构建2D Filter和3D Filter;
(2)构建适合当前显示模式的完整播放链路:先利用DirectShow技术建立一条能够回放普通的视频文件的链路;再根据显示设备的显示模式,在图像提交显示前对源文件解码出的每帧内容进行处理,即若显示模式为2D,则在FilterGraph中增加2D Filter,对图像进行2D处理,生成一幅平面图像的数据;若显示模式为3D,则Filter Graph中增加3D Filter,对图像进行3D处理,生成一幅立体图像的数据;最后将生成的数据提交给显示设备显示;
(3)对应硬件上的切换,在软件上进行2D与3D切换:当在硬件上从2D显示模式切换为3D显示模式时,播放时对原文件的图像内容处理生成为立体图像,即在Filter Graph中先删除2D Filter,在2D Filter位置增加3D Filter,来对解码出来的图像进行3D处理;当在硬件上从3D显示模式切换为2D显示模式时,播放时对原文件的图像内容处理生成为平面图像,即在Filter Graph中先删除3D Filter,在3D Filter位置增加2D Filter,来对解码出来的图像进行2D处理。
本发明的优点是:
1,根据显示模式,在软件上实时调整平面或立体图像;
2,2D与3D切换快速、实时,不需要重新播放;
3,可以方便地进行2D与3D效果的对比。

附图说明

图1利用DirectShow技术构建一个完整具有回放功能的过滤器图表架构。
图2是2D模式下的过滤器图表架构。
图3是3D模式下的过滤器图表架构。
图4是2D与3D模式切换的过滤器图表架构。

具体实施方式

下面结合附图和实施例对本发明作进一步说明。
利用DirectShow技术,构建一个能够播放普通文件的Filter Graph,根据立体显示设备的显示模式,改变图像数据的处理过程,在Filter Graph中对解码出的原视频图像进行2D或3D处理后,再提交给显示设备显示。具体实现有以下步骤:
步骤1.构建2D Filter和3D Filter
2D与3D的切换实质上是在显示设备上显示不同的图像内容,在Filter Graph内部需要对原始的图像数据用不同的方法进行处理,再提交给显示设备显示。这就需要构建2D显示模式所需的2D Filter和3D显示模式所需的3D Filter。2DFilter功能:每帧原始图像进行数据处理,生成一幅平面图像的数据;3D Filter功能:每帧原始图像进行数据处理,生成一幅立体图像的数据。
步骤2.构建适合当前显示模式的完整播放链路
1、为了能够显示图像数据,首先需要利用DirectShow技术建立一条能够回放普通的视频文件的链路。Filter Graph管理器提供了一种称之为“智能连接”的技术为应用程序自动生成用于文件回放的Graph,图1所示的普通模式下FilterGraph的基本架构便是通过调用Filter Graph管理器的智能连接方法自动生成的。智能连接技术会在系统已注册的组件库中寻找适合播放该文件的Filter并自动连接各个Filter实现回放功能。这种构建的播放普通文件的Filter Graph,只是对源文件内容进行解码(若源文件内容是不经过压缩的,则不需要解码),再提交显示,不对图像数据做处理。
2、由于立体显示设备的屏幕构造和播放的视频文件内容与普通的平面显示设备都存在差异,用上述的Filter Graph播放视频文件是得不到清晰的观赏效果的,还需要根据显示设备的显示模式,在图像提交显示前对源文件解码出的每帧内容进行特殊的处理。若显示模式为2D,则在Filter Graph中增加2D Filter,对图像进行2D处理,生成一幅平面图像的数据;若显示模式为3D,则Filter Graph中增加3D Filter,对图像进行3D处理,生成一幅立体图像的数据。最后再将这些数据提交给显示设备显示。
图1所示的普通模式下Filter Graph的基本架构包括:源过滤器主要负责获取数据,变换过滤器主要负责数据的格式转换处理等工作,提交过滤器主要负责数据的最终去向。
图2所示的2D模式下Filter Graph架构是在普通模式下Filter Graph架构的基础上在数据提交显示之前进行图像的2D处理。
图3所示的3D模式下Filter Graph架构是在普通模式下Filter Graph架构的基础上在数据提交显示之前进行图像的3D处理。
步骤3.对应硬件上的切换,在软件上进行2D与3D切换
在播放过程中,在硬件上改变显示设备的显示模式时,为了得到清晰地观赏效果,就需要在软件上对图像的处理过程进行更改。软件上的切换可根据显示模式分两种情况:
1、从2D模式切换成3D模式。也就是当在硬件上从2D显示模式切换为3D显示模式的时候,播放时对原文件的图像内容处理生成为立体图像。在FilterGraph中先删除2D Filter,同时在2D Filter位置增加3D Filter,来对解码出来的图像进行3D处理。
2、从3D模式切换成2D模式。也就是当在硬件上从3D显示模式切换为2D显示模式的时候,播放时对原文件的图像内容处理生成为平面图像。在FilterGraph中先删除3D Filter,同时在3D Filter位置增加2D Filter,来对解码出来的图像进行2D处理。
图4所示的2D与3D模式切换下Filter Graph架构,是在普通模式下FilterGraph架构的基础上在数据提交显示之前进行图像的2D与3D切换处理。
本实施案例运行在普通PC机上,具体配置如下:
CPU:Intel Core22.66GHz
内存:2G DDR333
操作系统:Windows XP Professional Edition
运行环境:Microsoft Visual Studio 2008
实施案例中,要播放一段图像,先根据当前显示设备的显示模式,调用对应显示模式的图像过程,完成播放链路。当在硬件上对显示设备的显示模式调整时,在软件上调整图像的处理过程,生成对应显示模式的图像数据,再提交给显示设备显示。其处理步骤如下:
步骤1.构建2D Filter和3D Filter
构建2D显示模式所需的2D Filter和3D显示模式所需的3D Filter。
步骤2.构建适合当前显示模式的完整播放链路
利用DirectShow技术,配置DirectShow的运行环境,初始化COM库,完成DirectShow的基本框架结构,运用智能连接方法来构建一个Filter Graph,支持回放普通的视频文件。然后根据当前显示设备的显示模式,对应地加入步骤1构建的Filter。
步骤3.对应硬件上的切换,在软件上进行2D与3D切换
2D与3D的切换就是根据当前硬件上显示模式的变换,在Filter Graph中对2D Filter和3D Filter调用的更换,从而生成适合显示模式的图像。
使用上述实施案例,当在硬件上改变立体显示设备的显示模式时,可以方便快速地在软件上调整图像的处理过程,生成对应显示模式的图像数据,从而在显示设备上获得清晰地观赏效果。