一种实现全屏预览的方法

xiaoxiao2020-6-26  15

专利名称:一种实现全屏预览的方法
技术领域
本发明应用于支持基于Windows CE的嵌入式设备,用于图像的预览和 处理。包括照相手机,PDA掌上电脑,游戏机,可视电话等带有摄像功能的 设备。
背景技术
Windows mobile⑤是徼软推出的新一代手机搡作系统平台,这一智能手 机电话解决方案提供了丰富的多媒体功能。尤其手机上的照相机已经发展到 了百万像素的级别,几乎可以和低端的数码相机媲美。在这样的发展趋势下 手机的照相机实现与数码相机同样全屏预览的效果能给用户带来全新的数码 体验,这也是巿场发展的趋势。
然而在Windows CE (Windows CE是为各种嵌入式系统和产品设计的 一种压縮的、具有高效的、可升级的操作系统)中,按照传统微软DirectShow (直接显示中间件,是微软公司提供的一套在Windows平台上进行流媒体处 理的开发包,DirectShow广泛地支持各种媒体格式,包括Asf、 Mpeg、 Avi、 Dv、 Mp3、 Wave等等,使得多媒体数据的回放变得轻而易举)的解决方案在 PXA27X(lntel处理器一种)系列嵌入式嵌入式徽处理速度基础上还很难达到 流畅清晰的效果。因此提出了非DirectShow的照相机的全屏解决方案。
传统DirectShow解决的方案简介
DirectShow是一个微软的中间件,它能够提供对音视频媒体的回放和捕 捉功能。DirectShow提供了 API接口函数,通过这些函数可以从流设备比如 照相机设备,直接回放录制的内容。这个中间件支持多种图像格式,支持照 相机等硬件设备,支持编码解码。因此,传统的照相机预览解决方案都是通
过DirectShow实现的,无论是图像的预览,还是视频的编码解码都是这样。 在这样的模式下,要实现全屏预览和预览时半透明的菜单和图标效果只能在 通过DirectShow提供的接口扩展这些功能。
如图1所示,要显示一个图像只需要增加一个用户定制的过滤器116 (User Custom Filter),来实现图像和菜单按钮的合成数据。然后再传给 DirectShow的视频显示部件110 (Video Render)去显示。
在上述过程中,应用程序只能操作DirectShow提供的接口,实际的图 像处理和显示都是DirectShow实现的。应用程序无法直接操作照相机和显 示屏的驱动程序。因此,无法对摄像和显示实现优化,这样在效率上是比较 差的,尤其是随着图像分辨率的增大,性能问题则更加的突出,因此在现有 技术中就会存在预览帧率很低,拍照时间过长,CPU占用率高导致程序响应 滞后等一系列问题。

发明内容
针对上述缺陷,本发明解决的技术问题在于,提供一种实现全屏预览的 方法,能解决现有技术中预览帧率很低,拍照时间过长,CPU占用率高导 致程序响应滞后的问题,使得用户使用全屏预览功能更加方便,响应更快, 提高系统的反应速度。
本发明是一种实现全屏预览的方法,它通过直接访问显示的驱动程序得 到数据。
所述的一种实现全屏预览的方法,于它直接访问照相机驱动程序得到数据。
所述的一种实现全屏预览的方法,其直接访问显示的驱动程序包括以下
' 一照相机应用程序向缓冲区写入数据; 数据传到DMA; LCD控制器获得数据;
将图像显示在显示屏上。
所述的一种实现全屏预览的方法 冲区写入数据。
所述的一种实现全屏预览的方法 冲区写入数据。
所述的一种实现全屏预览的方法 区写入数据。
所述的一种实现全屏预览的方法 包括以下步骤
打开照相机设备;
打开预览数据流传输设备和负责静态图像数据传输的设备;
初始化流并传送消息句柄;
分配空间并传给驱动程序;
把分配的空间入队列;
启动设备;
等待消息队列的消息进而得到图像数据的地址; 读取图像并归还缓冲区。


图1是传统的DSHOW的解决方案; 图2是非DSHOW的解决方案; 图3是从驱动程序得到数据的流程图; 图4是应用程序的操作的示意101:照相机驱动(Camera Driver);
102:视频流过滤器(Video Capture Filter);
103:智能分流(SmartTee);
104, 105, 106:颜色空间转换器(Color Space Converter);
其照相机应用程序向显示的第一层缓 其照相机应用程序向显示的第二层缓 其照相机应用程序向显示的底层缓冲 它直接访问照相机驱动程序得到数据107:缓冲过滤器(Buffer Filter);
108:封装的多媒体组件(DMO Wrapper Multiplexer);
109:写文件模块(File Writer);
110:视频显示部件(Video Renderer);
111:图像接收器(lmageSink);
112: LCD显示(LCD Display);
113:音频驱动(Audio Driver);
114:音频过滤器(Audio Capture Filter);
210:菜单图标;220:驱动程序;230:预览;240:静态图像;250: 改变大小;260:扩展接口; 270:显示驱动,其中包括显示底层(base),显 示第一层(Overlay 1),显示第二层(Overlay 2);
310:打开照相机设备;320:打开两个PIN设备;330:初始化流并传 送消息句柄;340:分配空间并传给驱动程序;350:把分配的空间入队列; 360:启动PIN; 370:等待消息队列的消息,进而得到图像数据的地址;380: 读取图像并归还缓冲区;
410:照相机应用程序;420:向第一层显示缓冲区或底层显示缓冲区写 入数据;430:或第二层显示缓冲区;440:直接内存访问控制其DMA; 450: LCD控制器获得数据; 460:将图像显示在显示屏上。
具体实施例方式
为了解决上述传统方案中存在的问题,本发明提出了非DirectShow的
照相机全屏预览的解决方案。下面结合附图对本发明做一个说明。
本发明通过直接访问照相机驱动程序,得到驱动程序送来的原始数据。
基于DriectShow的驱动程序也是一个不太标准的流设备驱动程序,通过一 系列操作,就可以从照相机的驱动程序中得到图像数据和控制照相机设备。
本发明通过直接访问显示驱动程序(绕过DirectShow),显示驱动程序属 于典型的本地驱动程序,徵软提供了接口访问显示的缓冲区和导出函数接口 以便扩展功能。本发明通过把要显示的数据直接压入(DirectPush)显示缓冲 区就可以显示了,从而性能得到提升。
本发明通过对显示驱动程序进行功能扩展,即实现OverLay的驱动程序 (如图2)。 Overlay是多媒体处理器所具有的一种分层显示的功能,即不同 类型的数据可以分层显示,每层都有单独的缓冲区,需要哪层的图像只需要 改变相应层的缓冲区数据即可。多层图像的叠加是由硬件完成的,这在现有 技术中已经存在。因此经过直接访问照相机的驱动程序,直接访问显示驱动 程序,同时对显示驱动程序进行功能扩展,就完全掌握了对图像的处理控制 权,需要哪层的图像只需要改变相应层的缓冲区数据即可。
通过上面方法的改进,就完全掌握了对图像的处理控制权,因此在具体 实现上就可以对一些细节的问题进行改进。如拍照处理,现有技术中传统的 方法要把数据压缩成JPEG图像,然后再显示JPEG图像,这样便经过了压 缩和解压縮的过程,效率低。在本发明中只需要把得到的数据改变一下尺寸 大小(Resize),数据格式不变就可以在Overlay上显示了 。如果是录像的话, 系统将从驱动得到的数据一边送显示第二层(overlay 2)显示,一边调用第三方 的编码器进行编码,这样可以在很大程度上降低CPU的占用率,提高录像速 度。
如图2所示,使用本发明的方法,通常将菜单图标210放在底层(base) 或者显示的第一层(Overlay 1),通过照相机的驱动程序220会得到两种图像 数据, 一种是拍照之前的预览图像数据230, 一种是拍照后得到的静态图像 数据24Q。如果是拍照之前的预览图像数据230,系统通过扩展接口 260,
将其显示在显示第二层(Overlay 2);如果是拍照后得到的静态图像数据 240,系统先将得到的静态图像数据改变一下尺寸大小250,然后通过扩展 接口 260,数据格式不变就可以直接在第二层(Overlay2)上显示了。如果是 录像的话,系统将从驱动得到的图像数据改变一下尺寸大小,然后通过扩展接 口,数据格式不变就直接在第二层(Overlay 2)上显示了, 一边调用第三方的 编码器进行编码,这样可以在很大程度上降低CPU的占用率,提高录像速 度。
上述的方法,在试验条件是windows mobile平台,硬件配置是intel PXA270 312MHZ, 64M SDRAM,试验结果如下
1. QVGA(320 x 240)分辨率达到了 15帧以上的预览和软件编码视频 效果。在现有技术中通常只能达到7帧或7帧左右的预览和软件编码视频效 果。
2.200万的照片拍照,从按下拍照键到回显照片只需一秒多。此时已完 成图像的JPEG压缩。现有技术中从按下拍照键到回显照片通常需要3秒多. 从试验数据可以看出,本发明提高了效率,使产品获得了良好的性能。
为更好的说明本发明,下面结合图3和图4来对本发明作进一步的说明。
现有技术中徼软提供的照相机的驱动程序的模型是一个不太标准的流接
口驱动程序,因此,通常对于驱动程序的访问可以按照流接口的访问方式进
行存取。但是为了获得本发明的效果,本发明采用了以下的访问过程。
在照相机驱动程序中实现了三个'设备' 一个设备是照相机的设备,对应
的数据结构为CCameraDevice类,这个和普通流设备一样;此外,在此基
础上还虛拟了两个流设备,称之为PIN,这两个PIN负责不同类型数据的传
输, 一个负责预览数据流的传输, 一个负责静态图像数据的传输。 如图3所示,首先打开照相机设备310;
然后打开两个PIN设备320,这两个PIN设备一个负责预览数据流的
传输, 一个负责静态图像数据的传输; 初始化流并传送消息句柄330; 分配空间并传给驱动程序340; 把分配的空间入队列350;
启动PIN 360;
等待消息队列的消息,进而得到图像数据的地址370; 读取图像并归还缓冲区380;
这样系统就绕过了 DirectShow,直接访问照相机的驱动程序,得到驱动 程序送来的原始数据。
本发明通过直接访问显示的驱动程序,显示驱动程序属于典型的本地驱 动程序,徼软提供了接口访问显示的缓冲区和导出函数接口以便扩展功能。 本发明把要显示的数据直接压入(DirectPush)显示缓冲区,就实现了显示,
从而使设备的性能得到提升。
下面是本发明的对于显示驱动的访问和Overlay驱动程序的实现优选实 施例。
现有技术中通过直接使用操作系统提供的标准函数来实现显示。本发明 为提高显示的速度,通过黴软提供的接口 ExtEscape(逃逸接口)直接访问显 示驱动程序的Buffer(缓冲区)。并在ExtEscape中加入了如下的接口 EnableOverlay, GetOverlayBufferAddress,在显示驱动中实现了 Overlay 的驱动程序。
EnableOverlay:使能Overlay,并对Overlay进行初始化操作。 GetOverlayBufferAddress:得到Overlay缓冲区的地址。这样以后只要 向这个Buffer中填充数据就可以显示了。其中Overalay2支持YUV格式的
数据,硬件能把YUV格式的数据转换并刷屏,因此从照相机得到的原始数
据可以直接填入显示缓冲区。
如图4所示,照相机应用程序410向第一层显示缓冲区或底层显示缓冲
区写入数据420,或向第二层显示缓冲区写入数据430; 数据传到DMA 440; LCD控制器获得数据450;
将图像显示在TFT屏上460;
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通 技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰, 这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种实现全屏预览的方法,其特征在于它直接访问显示的驱动程序得到数据。
2、 根据权利要求1所述的一种实现全屏预览的方法,其特征在于它直接 访问照相机驱动程序得到数据。
3、 根据权利要求1所述的一种实现全屏预览的方法,其特征在于其直接 访问显示的驱动程序包括以下步骤照相机应用程序向缓冲区写入数据; 数据传到DMA; LCD控制器获得数据; 将图像显示在显示屏上。
4、 根据权利要求3所述的一种实现全屏预览的方法,其特征在于照相机 应用程序向显示的第一层缓冲区写入数据。
5 根据权利要求3所述的一种实现全屏预览的方法,其特征在于照相机 应用程序向显示的第二层缓冲区写入数据。
6. 根据权利要求3所述的一种实现全屏预览的方法,其特征在于照相机 应用程序向显示的底层缓冲区写入数据。
7. 根据权利要求2或3或4或5或6所述的一种实现全屏预览的方法,其 特征在于它直接访问照相机驱动程序得到数据包括以下步骤打开照相机设备;打开预览数据流传输设备和负责静态图像数据传输的设备;初始化流并传送消息句柄;分配空间并传给驱动程序;把分配的空间入队列;启动设备;等待消息队列的消息进而得到图像数据的地址; 读取图像并归还缓冲区。
全文摘要
本发明公开一种实现全屏预览的方法,应用于支持基于Windows CE的嵌入式设备,用于图像的预览和处理。包括照相手机,PDA掌上电脑,游戏机,可视电话等带有摄像功能的设备。本发明通过直接访问显示的驱动程序得到数据,具体来说它直接访问照相机驱动程序得到数据。本发明能解决现有技术中手机预览帧率很低,拍照时间过长,CPU占用率高导致程序响应滞后的问题,使得用户使用全屏预览功能更加方便,响应更快,提高系统的反应速度。
文档编号G09G3/36GK101369256SQ20071012027
公开日2009年2月18日 申请日期2007年8月15日 优先权日2007年8月15日
发明者夏登洲 申请人:德信无线通讯科技(北京)有限公司

最新回复(0)