会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 组合管理 / 组合管理器相机

组合管理器相机

申请号 CN201310346641.8 申请日 2013-08-09 公开(公告)号 CN103634558B 公开(公告)日 2017-06-06
申请人 2236008安大略有限公司; 发明人 艾丁尼·贝朗格; 阿德里安·尼塔; 阿德里安·博克; 迈克尔·亚历山大·冯·雷南; 尼尔·约翰·格雷厄姆;
摘要 可以提供用于通过相机服务来访问图像的系统和方法,其中,图像由非传感器图像源(例如组合管理器)来生成。该系统可以包括相机服务和非传感器图像源。非传感器图像源可以从与传感器不同的源生成处理过的图像。该相机服务可以向图像消费应用提供由非传感器图像源生成的处理过的图像。
权利要求

1.一种用于访问图像的系统,包括:

图像缓冲区;

包括组合管理器在内的非传感器图像源设备,所述组合管理器包括处理器,所述处理器基于由第一应用在应用缓冲区中呈现的应用图像,在所述图像缓冲区中生成处理过的图像;以及相机服务组件,从第二应用接收用于选择从哪个图像源接收图形内容的请求;

其中,从包括传感器图像源和所述非传感器图像源设备在内的多个图像源中选择所述图像源;以及其中,基于由所述第二应用将所述非传感器图像源设备选择为所述图像源,所述相机服务组件向所述第二应用提供所述图像缓冲区的图形内容。

2.根据权利要求1所述的系统,其中,所述组合管理器在所述图像缓冲区中生成作为在多个应用缓冲区中呈现的多个应用图像的组合的处理过的图像,以及所述多个应用缓冲区包括所述应用缓冲区。

3.根据权利要求1所述的系统,其中,来自所述第二应用的用于选择所述图像源的请求还包括图像源标识符,以及所述相机服务组件还:确定所述图像源标识符识别了所述图像缓冲区;

当所述图像源标识符识别了所述图像缓冲区时,向所述第二应用提供所述图像缓冲区的图形内容,其中,当所述图像源标识符识别了所述图像缓冲区时,所述请求将所述组合管理器识别为所述图像源;以及当所述图像源标识符未识别由所述组合管理器填入的缓冲区时,从与所述组合管理器不同的图像源之一向所述第二应用提供图形内容。

4.根据权利要求1所述的系统,其中,所述组合管理器的处理器包括以下至少一项:2维引擎、图形处理单元、或显示控制器。

5.根据权利要求1所述的系统,其中,来自所述第二应用的用于选择所述图像源的请求还包括图像源标识符和图像规范参数,以及所述组合管理器响应于所述图像源标识符和所述图像规范参数,在所述图像缓冲区中生成处理过的图像。

6.根据权利要求5所述的系统,其中,所述图像规范参数包括以下至少一项:处理过的图像的位置、处理过的图像的大小、处理过的图像的颜色格式、处理过的图像的像素格式、处理过的图像的时间戳、或处理过的图像的可用性。

7.根据权利要求1所述的系统,其中,所述请求中的图像源标识符将所述图像源识别为以下至少一项:集成相机、外部相机、或所述组合管理器。

8.根据权利要求1所述的系统,其中,所述组合管理器生成处理过的图像作为所述组合管理器生成显示图像的副产品。

9.根据权利要求1所述的系统,其中,所述图像缓冲区是所述组合管理器的回写式缓冲区。

10.根据权利要求1所述的系统,其中,由所述组合管理器生成的处理过的图像包括图像流或图像序列。

11.根据权利要求1所述的系统,其中,所述第二应用是视频聊天应用或远程显示驱动程序之一。

12.根据权利要求1所述的系统,其中,处理过的图像与由所述组合管理器生成的用于在与所述系统集成在一起的显示设备或所述系统外的显示设备上显示的显示图像实质上相同。

13.根据权利要求1所述的系统,其中,处理过的图像是组合图像。

14.一种访问图像的方法,包括:

提供相机服务组件,通过所述相机服务组件,图像消费应用选择非传感器图像源设备作为图像源,以从所述图像源接收图形内容;

使用所述非传感器图像源设备,从应用缓冲区生成图像缓冲区中的处理过的图像;

使用所述相机服务组件,从所述图像消费应用接收用于选择所述非传感器图像源设备作为所述图像源以从所述图像源接收图形内容的请求;以及基于用于选择所述非传感器图像源设备作为所述图像源的请求,通过所述相机服务组件,向所述图像消费应用提供由所述非传感器图像源设备生成的所述图像缓冲区中的处理过的图像。

15.根据权利要求14所述的方法,其中,提供相机服务组件包括:提供相机应用编程接口API,所述相机API包括编程程序,当调用所述编程程序且选择相机作为所述图像源时,所述编程程序使得图片被获取。

16.根据权利要求15所述的方法,其中,向所述图像消费应用提供所述图像缓冲区中的处理过的图像是响应于对所述编程程序的调用的。

17.根据权利要求14所述的方法,还包括:使用所述相机服务组件从所述图像消费应用接收针对目标格式的请求,其中,提供所述图像缓冲区的处理过的图像包括:以目标格式提供处理过的图像。

18.根据权利要求14所述的方法,其中,生成处理过的图像包括:修改从所述应用缓冲区中取回的像素数据。

19.一种装置,包括:

用于提供相机服务组件的装置,通过所述相机服务组件,第一应用选择非传感器图像源设备作为图像源,以从所述图像源接收图形内容;

用于从所述第一应用接收用于选择所述非传感器图像源设备作为所述图像源的请求的装置,其中,在所述相机服务组件处从所述第一应用接收所述请求;以及用于基于选择所述非传感器图像源设备作为所述图像源的请求,使用所述相机服务组件,向所述第一应用提供处理过的图像的装置,其中,由所述非传感器图像源设备根据由第二应用呈现的应用缓冲区来生成处理过的图像。

20.根据权利要求19所述的装置,其中,由组合管理器生成作为多个应用缓冲区的图形内容的组合的处理过的图像,所述多个应用缓冲区包括由所述第二应用呈现的应用缓冲区。

说明书全文

组合管理器相机

技术领域

[0001] 本申请涉及图形缓冲区,且具体地涉及访问图形缓冲区

背景技术

[0002] 图形系统可以具有生成内容的多个软件应用。可以将来自软件应用的内容组合在一起成为单一图形。组合可以发生在软件中、硬件中、或这二者的组合中。

发明内容

附图说明

[0003] 参考以下附图和描述可以更好地理解各实施例。图中的组件不一定是按比例绘制的。
[0004] 图1示出了用于通过相机服务来访问由非传感器图像源生成的图像的系统;以及[0005] 图2示出了用于通过相机服务来访问由非传感器图像源生成的图像的系统的逻辑流程图。

具体实施方式

[0006] 系统可以通过相机服务来访问图像,其中,图像由非传感器图像源生成,而不是由相机生成。系统可以包括图像缓冲区、相机服务、以及向该图像缓冲区填入的非传感器图像源。非传感器图像源可以从不同于传感器的源生成图像。非传感器图像源的一个示例为组合管理器,其可以包括基于应用图像在图像缓冲区中生成处理过的图像的处理器,其中,应用图像在应用缓冲区中由第一应用来呈现。相机服务可以接收来自第二应用的用于选择从哪个图像源接收图形内容的请求。图像源可以选自可能的图像源的集合,例如选自包括非传感器图像源和相机在内的集合。基于由第二应用将非传感器图像源选择为图像源,相机服务可以向第二应用提供图像缓冲区中的图形内容。
[0007] 由于相机服务可以从非传感器图像源向应用提供图形内容,因此相机服务可以方便应用来接收截屏、屏幕捕捉视频、或由非传感器图像源生成的某种其他类型的图像。例如,组合管理器可以在图像缓冲区中生成截屏或屏幕捕捉视频,且相机服务可以以期望格式向应用提供截屏或屏幕捕捉视频。
[0008] 备选地或附加地,通过从非传感器图像源向远程显示驱动程序提供图形内容,相机服务可以方便显示器的扩张和镜像。例如,非传感器图像源的图像缓冲区可以是回写式(writeback)缓冲区,相机服务可以向远程显示驱动程序提供回写式缓冲区的图形内容,且远程显示驱动程序可以在向外部显示设备或远程显示设备发送的视频流中对图形内容编码。
[0009] 在一些示例中,可以通过选择媒体播放器作为非传感器图像源来支持第二显示器。媒体播放器可以向相机服务提供视频流,且相机服务可以向应用提供视频流,该应用对视频流编码并向外部显示设备或远程显示设备发送视频流。媒体播放器可以针对集成显示器提供不同的显示图像。例如,针对集成显示器的显示图像可以包括用于控制向外部显示设备或远程显示设备提供的视频流的图形用户界面。
[0010] 图1示出了用于通过相机服务104来访问由非传感器图像源102生成的图像的系统100。此外,系统100可以提供针对传感器图像源106(例如,相机)生成的图像的访问。
[0011] 系统100可以包括相机服务104和一个或多个图像源102和106,例如非传感器图像源102和传感器图像源106。系统100还可以包括:通过相机服务104来获得图像的应用108、110、和112;不使用相机服务104的应用114;应用缓冲区116;集成显示器118;以及外部显示器120。
[0012] 系统100的一个或多个组件可以被包括在设备121中,例如移动计算设备或任何其他类型的计算设备。例如,应用114、108、110和112、应用缓冲区116、相机服务104、传感器图像源106、非传感器图像源102、以及集成显示器128可以被包括在设备121中。
[0013] 传感器图像源106可以是从传感器122生成图像的任何组件。传感器图像源106的示例包括:相机、集成相机、外部相机、摄像机、红外相机、热成像设备、网络摄像头、扫描仪、传真机、或可以从传感器122生成图像的任何其它组件。
[0014] 传感器图像源106可以包括:传感器122、图像信号处理器124、和传感器图像缓冲区126。传感器122可以是检测光、热、或任何其他物理特性的任何类型传感器,传感器图像源106可以根据这些物理特性来生成图像。图像信号处理器124可以是将传感器122生成的信号转换为在传感器图像缓冲区126中表示的图像的任何处理器。
[0015] 相反地,非传感器图像源102可以是从不同于传感器的源生成和/或包括图像的任何组件。例如,非传感器图像源102可以包括应用显示组件或其他类型的图像处理器。非传感器图像源102不包括仅从存储介质(例如光盘驱动器、硬盘驱动器、和闪存驱动器)读取图像数据的设备。备选地,非传感器图像源102可以是对图形图像进行生成、呈现、或解码的任何软件或硬件组件。例如,非传感器图像源102可以包括应用116,例如Microsoft Word、(在Washington的Redmond的Microsoft Corporation的注册商标)、或(在California的San Jose的Adobe Systems Incorporated的注册商
标),其填入相应的应用缓冲区116。非传感器图像源102的附加示例可以包括HTML(超文本标记语言)呈现引擎,例如 (在California的Cupertino的Apple Inc.的注册商
标)、 (在California的Mountain View的Google Inc.的注册商标)、HTML5
(超文本标记语言版本5)播放器、或视频解码应用或引擎,例如 (在California的San Jose的Adobe Systems Incorporated的注册商标)播放器。备选地或附加地,非传感器图像源102可以是存储器或包括存储器,存储器是例如缓冲区、高速缓存、或存储介质。
[0016] 应用显示组件可以是根据应用图像和/或图形用户界面(GUI)来生成图像的任何组件,其中,应用图像和/或GUI由应用114、108、和112中的一个或多个生成,生成的图像将被显示。例如,应用显示组件可以包括组合管理器128。组合管理器128可以是生成组合图像的任何组件,该组合图像用于在显示设备(例如,集成显示器118和/或外部显示器120)上显示。具体地,通过将应用缓冲区116中表示的应用图像和由应用114、108和112呈现的应用图像合并,组合管理器128可以生成组合图像。组合管理器128可以包括一个或多个处理器129,例如中央处理单元(CPU)、图形处理单元(GPU)、2D(二维)引擎、和/或显示控制器。
[0017] 除了组合管理器128以外或代替组合管理器128,应用显示组件可以包括不同类型的应用显示组件。例如,应用显示组件可以是用软件或硬件来实现的窗口管理器、显示控制器、或图形转换器。应用显示组件可以包括处理器,该处理器在生成用于显示的图像时,以任意数目的方式来修改从应用缓冲区116中读取的像素数据。例如,应用显示组件可以包括处理器,该处理器在根据应用图像和/或应用图像的组合来生成图像时,转换应用图像和/或应用图像的组合的像素的色彩空间。备选地或附加地,应用显示组件可以包括处理器,该处理器调整应用图像和/或应用图像的组合的像素数据的大小;裁剪像素数据;块移(blit)像素数据;和/或过滤像素数据。
[0018] 非传感器图像源102可以包括组合管理器128和/或任何其他类型的应用显示组件。此外,非传感器图像源102可以包括图像缓冲区130和图像缓冲区控制器132。
[0019] 图像缓冲区130可以是存储了由非传感器图像源102生成的图像的存储器。例如,图像缓冲区130可以是由组合管理器128填入的回写式缓冲区。回写式缓冲区可以是由组合管理器128的硬件组件填入的缓冲区,其中,作为生成用于显示的图像的副产品,存储于缓冲区中的数据表示由硬件组件输出的图像。回写式缓冲区可以表示组合图像。备选地,回写式缓冲区可以表示根据组合图像导出的图像,例如,一个或多个应用图像的屏幕外部分。备选地,回写式缓冲区可以表示某个其他图像,例如,由应用114之一生成的应用图像。
[0020] 图像缓冲区控制器132可以是在向相机服务104传输处理过的内容之前控制图像缓冲区130中表示的图像的特性和/或处理图像缓冲区130的内容的任何组件。图像缓冲区控制器132可以是与应用显示组件分离的组件,或备选地,被包括在应用显示组件中。例如,图像缓冲区控制器132可以与组合管理器128分离,或备选地,被包括在组合管理器128中。
[0021] 相机服务104可以是通过面向相机的接口向一个或多个消费图像的应用(例如,视频聊天应用108、远程显示驱动程序110、和相机应用112)提供针对图像源102和106的访问的任何组件。相机服务104可以作为调用相机服务104的进程的一部分来执行。备选地或附加地,相机服务104可以作为背景进程、网络服务、或任何其他类型的进程来执行。
[0022] 面向相机的接口可以包括相机API(应用编程接口)的实现。相机API可以提供图像源102和106的统一视图,即使在各图像源102和106不是相机的情况下,其也将图像源102和106均视为相机。此外,相机API可以提供针对图像源102和106的访问,其对于一种或多种图像源102和106是特定的。
[0023] 相机API可以包括面向相机的接口,图像消费应用10g、110或112可以通过该面向相机的接口来选择从图像源102或是106接收图形内容。备选地或附加地,相机API可以提供面向相机的接口,图像消费应用108、110或112可以通过该面向相机的接口来接收图形内容。备选地或附加地,相机API可以提供面向相机的接口,图像消费应用108、110或112可以通过该面向相机的接口来指定用于接收图形内容的目标格式。相机API可以用指定的目标格式向图像消费应用108、110或112提供图形内容。
[0024] 通过相机服务104接收图形内容的应用108、110和112可以包括例如:视频聊天应用108、远程显示驱动程序110、和相机应用112。通过相机服务104接收图形内容的应用108、110和112可以包括附加的应用、更少的应用或不同的应用。
[0025] 相机应用112可以是提供GUI的任何应用,通过该GUI,用户可以拍摄照片和/或对通过相机服务104从相机接收到的视频进行流传输。相机应用112的示例是移动设备(例如(其为在California的Cupertino的Apple Inc.的注册商标)和运行ANDROIDTM操作系统(其为在California的Mountain View的Google Inc.的商标)的设备)上名为“相机”的移动应用软件。
[0026] 远程显示驱动程序110可以是向远程显示设备136提供视频流和/或静态图像的组件,其中,远程显示驱动程序110通过相机服务104从所选的图像源102或106接收静态图像和/或视频流或图像序列。远程显示设备136可以是用于显示数据的任何电-光设备,例如发光二极管(LED)显示器、液晶显示器(LCD)、阴极射线管(CRT)、电致发光显示器、等离子显示面板(PDP)、真空荧光(vacuum florescent)显示器(VFD)、投影仪、或任何其他显示设备。通过网络134和/或线缆,例如 (高清多媒体接口)线缆(HDMI是在California的Sunnyvale的HDMI LICENSING L.L.C.的注册商标),远程显示驱动程序110可以向远程显示设备136发送静态图像和/或视频流。网络134可以包括局域网(LAN)、无线局域网(WLAN)、(在Texas的Austin的Wireless Ethernet Compatibility Alliance Inc.的注册商标)网络、个域网(PAN)、广域网(WAN)、互联网、网际协议(IP)网络、 (数字生活网络联盟)网络(DLNA是在Oregon的Lake Oswego的Digital Living Network Alliance的注册商标)、任何其他通信网络、或它们的任意组合。在一些示例中,远程显示设备136可以是 显示器。在不同的示例中,远程显示设备136可以是通过HDMI线缆接收视频流和/或静态图像的监视器和/或电视机。
[0027] 视频聊天应用108可以是提供用户界面的组件,用户可以通过该用户界面在音频和/或视频信道上与其他用户通信。视频聊天应用108可以例如在使用基于网际协议的语音(VoIP)或任何其他语音通信协议(例如国际电信联盟(ITU)标准H.320、H.264、H.324或V.80中任意标准)的两个或更多个设备之间通信。
[0028] 在系统100的操作期间,生成各自应用图像的各个应用114、108和112可以在相应的应用缓冲区116中呈现各自的应用图像。生成应用图像的应用114、108和112可以包括生成GUI且不使用相机服务104的应用114的集合。备选地或附加地,生成应用图像的应用114、108和112可以包括生成GUI且使用相机服务104的应用108和112的集合,例如视频聊天应用
108和相机应用112。例如,视频聊天应用108可以在与视频聊天应用108相对应的应用缓冲区116中呈现GUI。由视频聊天应用108呈现的GUI可以是用户界面,用户可以通过该用户界面来控制视频聊天应用108。
[0029] 应用显示组件(例如组合管理器128)可以根据在应用缓冲区116中表示的应用图像在图像缓冲区130中生成处理过的图像。例如,组合管理器128可以在图像缓冲区130中生成组合图像,该组合图像是应用缓冲区116中表示的应用图像的组合。组合管理器128和/或附加硬件可以使得组合图像在显示设备上显示,例如集成显示器118和外部显示器120。备选地,在图像缓冲区130中表示的处理过的图像可以是不同于组合图像的图像。例如,处理过的图像可以是根据一个或多个应用图像导出的屏幕外部分。
[0030] 应用108、110和112中任意应用可以与相机服务104通信并选择非传感器图像源102作为图像源。例如,通过相机服务104,远程显示驱动程序110可以选择非传感器图像源
102作为图像源。通过选择非传感器图像源102,远程显示驱动程序110可以从非传感器图像源102接收图像和/或视频,就好像非传感器图像源102是相机一样。当非传感器图像源102是应用显示组件(例如,组合管理器128)时,图像缓冲区130可以表示在集成显示器118中显示的组合图像。当图像缓冲区130表示组合图像时,通过相机服务104,远程显示驱动程序
110可以从应用显示组件接收截屏和/或屏幕捕捉视频。远程显示驱动程序110可以捕捉向远程显示设备136发送截屏和/或屏幕捕捉视频,由此将集成显示器118上显示的图像向远程显示设备136加以镜像。
[0031] 备选地或附加地,通过选择应用显示组件(例如,组合管理器128)作为图像源(通过相机服务104从该图像源接收图形内容),视频聊天应用108可以实现“共享我的屏幕”特征或“共享应用”特征。“共享我的屏幕”特征将显示在集成显示器118上的图像的内容与网络134上的设备共享。“共享应用”特征将由一个或多个应用114、108和112生成的应用图像的内容与网络134上的设备共享。
[0032] 当图像缓冲区130表示在集成显示器118上的图像时,则通过相机服务104,视频聊天应用108可以从应用显示组件接收截屏和/或屏幕捕捉视频。作为“共享我的屏幕”特征的实现的一部分,视频聊天应用108可以将从相机服务104接收到的截屏和/或屏幕捕捉视频向一个或多个远程设备传输。
[0033] 当图像缓冲区130表示由应用114、108或112之一生成的应用图像时,则通过相机服务104,视频聊天应用108可以从应用显示组件接收应用图像的截屏和/或屏幕捕捉视频。作为“共享应用”特征的实现的一部分,视频聊天应用108可以将从相机服务104接收到的应用图像的截屏和/或屏幕捕捉视频向一个或多个远程设备传输。
[0034] 图像缓冲控制器132可以控制在图像缓冲区130中表示什么类型的图像。例如,视频聊天应用108可以直接指导图像缓冲区控制器132,通过相机服务104间接指导,或通过某个其他组件间接指导,以用组合图像填入图像缓冲区130。备选地,视频聊天应用108可以直接指导图像缓冲区控制器132,通过相机服务104间接指导,或通过某个其他组件间接指导,以用应用图像填入图像缓冲区130。
[0035] 通过发送由相机服务104接收的请求,图像消费应用108、110或112可以选择图像源102或106。该请求可以是任何类型的请求,例如SOAP(简单对象访问协议)请求或处于线程或进程中的编程程序(programmatic procedure)的本地调用。
[0036] 在一个示例中,图像消费应用108、110或112可以选择具有工厂类(factory class)的图像源102或106,编程对象可以通过该工厂类来实例化。在工厂类的编程程序的调用中,可以使用图像源标识符来识别图像源102或106,该标识符识别要选择的图像源102。在第二示例中,通过调用与先前实例化的编程对象相关的编程程序并且将图像源102的图像源标识符作为参数传递,图像消费应用108、110或112可以选择图像源102或106。
[0037] 对于由图像源标识符来识别的图像源102或106,实例化的编程对象可以是特定的。实例化的编程对象的编程程序和/或属性对于所有类型的图像源102或106可以是公共的,和/或对于各类型图像源102或106的子集可以是特定的。例如,在实例化对象的一个或多个编程程序和/或属性中,可以指定用于接收图形内容的目标格式。下述表1描述了以下示例:使用相机API来选择图像源102或106,使用相机API从图像源102或106接收图形内容,以及使用相机API来指定待接收的图形内容的目标格式。
[0038] 表1
[0039]
[0040] 表1中的代码描述了使用创建(create)程序将相机对象实例化。创建程序的参数可以选择图像源102或106。实例化的相机对象的程序可以由图像消费应用108、110或112调用,以从相机服务104接收图形内容和/或与相机服务104通信。
[0041] 表1中的代码描述了使用实例化的对象的捕捉图像(captureImage())程序从图像源102或106接收单个图像。相机对象是实例化的编程对象。捕捉图像(captureImage())是与相机API相关的编程程序的示例,当调用该编程程序且所选择的图像源106是相机时,其使得图片被获取或捕捉。
[0042] 表1中的代码还描述了使用实例化的对象的捕捉视频(capture Video())程序来接收视频流。捕捉视频(capture Video())是与相机API相关的编程程序的示例,当调用该编程程序且所选择的图像源106是相机时,其使得视频捕捉开始。
[0043] 表1中的代码还描述了通过将期望的持续时间(在表1中的示例代码列表中为5000毫秒)作为捕捉视频(capture Video())程序的参数加以传递,来指定视频流的期望的持续时间。可以以任意数目的方式来指定视频流的目标格式,例如以一个或多个图像规范参数的方式。可以将图像规范参数作为参数向捕捉视频(capture Video())程序或某个其他编程程序传递。图像规范参数可以包括例如:处理过的图像的存储器位置、处理过的图像的像素格式、处理过的图像的时间戳、对处理过的图像的可用性的指示、和/或与由图像消费应用108、110或112从相机服务104接收的处理过的图像或图形内容有关的任何其他类型的信息。
[0044] 相机API可以以许多不同的方式实现。例如,图像消费应用108、110和112可以选择非传感器图像源102的多个图像缓冲区130之一和/或传感器图像源106的多个传感器图像缓冲区126之一作为图像源。非传感器图像源102中的每一个图像缓冲区130可以包括与非传感器图像源102中的其他图像缓冲区130中任何图像不同的图像。图像源标识符可以识别哪一个图像缓冲区130将作为图像源102。图像源标识符可以包括:名称、数字、和/或任何其他类型的标识符。
[0045] 当图像源标识符未识别由非传感器图像源102填入的缓冲区时,相机服务104可以选择图像源102和与非传感器图像源102不同的图像源106之一。例如,无论何时图像源标识符未识别由非传感器图像源102填入的缓冲区时,相机服务104都可以选择缺省的图像源,例如集成相机,
[0046] 与图1所示相比较,系统100可以包括附加的、较少的、或不同的组件。例如,系统100可以就包括相机服务104。在另一示例中,系统100可以包括如图1所示的设备121的组件,但不包括设备121外部的任何组件,例如外部显示器120、网络134、和远程显示设备136。
在又一示例中,系统100可以就包括相机服务104和远程显示驱动程序110。
[0047] 系统100可以包括非传感器图像源设备和/或传感器图像源设备。当非传感器图像源102包括硬件或固件时,非传感器图像源设备可以是非传感器图像源102。当传感器图像源设备106包括硬件或固件时,传感器图像源设备可以是传感器图像源106。
[0048] 与图1中所示相比较,系统100的各个组件可以包括附加的、较少的、或不同的组件。例如,非传感器图像源102可以就包括硬件组合器,其包括图像缓冲区130但不包括图像缓冲区控制器132。在另一示例中,相机服务104可以包括图像缓冲区控制器132,而不是包括图像缓冲区控制器132在内的非传感器图像源102。在又一示例中,传感器图像源106可以不包括传感器122,而代之以从传感器122接收信号。系统100可以包括任何数目的图像源102和106。
[0049] 应用缓冲区116、图像缓冲区130、和/或传感器图像缓冲区126可以被双缓冲。在一些示例中,应用缓冲区116、图像缓冲区130、和/或传感器图像缓冲区126均可以被三缓冲或使用任何数目的缓冲区来缓冲。
[0050] 系统100可以以多种不同的方式实现。例如,设备121中的一个或多个组件可以被包括在系统级芯片(SOC)中。非传感器图像源102可以被包括在SOC中。备选地或附加地,传感器图像源106可以被包括在SOC中。作为另一示例,图1中示出为设备121中的组件可以在多个设备上分布,这些设备物理耦合在一起和/或电耦合在一起。
[0051] 设备121可以包括系统100的任何数目的组件。作为集成组件的组件(例如集成显示器118)可以被包括在设备121中。作为外部组件的组件(例如外部显示器120)可以不被包括在设备121中。
[0052] 组合管理器128可以包括硬件(例如处理器129),和/或完全以硬件或固件来实现。备选地,组合管理器128可以完全用软件来实现。
[0053] 尽管一些组件可以被描述为存储在计算机可读存储器中(例如在存储器中实现为计算机可执行指令或数据结构的逻辑),系统100及其逻辑和数据结构的全部或部分可以用硬件或固件来实现。例如,相机服务104可以用硬件或固件来实现。备选地或附加地,系统100的全部或部分及其逻辑和数据结构可以被存储在多个机器可读存储介质上,在多个机器可读存储介质上分布,或从多个机器可读存储介质被读取。机器可读存储介质可以包括:
存储器、硬盘、软盘、CD-ROM、或任何其他类型的计算机可读存储介质。
[0054] 备选地或附加地,可以将被描述为用硬件或固件来实现的一些组件实现为存储在存储器中的计算机可执行指令。例如,可以将图像信号处理器124的一部分实现为存储在存储器中的计算机可执行指令。
[0055] 一些组件(例如应用114、108、110和112、相机服务104、以及全部或部分组合管理器128)可以被存储在存储器中。存储器可以保持实现了上述逻辑的、且可由处理器执行的程序和进程,处理器是例如图1所示的组合管理器128的处理器129。
[0056] 处理器(例如图1所示的处理器129)可以是一个或多个设备或硬件组件,其能够被操作以执行在存储器中体现的计算机可执行指令或计算机代码,以执行系统100的一个或多个组件的特征。可以将处理器实现为任何类型的处理器,例如微处理器、微控制器、DSP、CPU、GPU、显示控制器、专用集成电路(ASIC)、分立逻辑、和/或模拟电路或数字电路。计算机代码可以包括能够用处理器来执行的指令。计算机代码可以使用目前已知的或以后发现的任何计算机语言来编写,例如:C++、C#、Java、Pascal、Visual Basic、Perl、超文本标记语言(HTML)、JavaScript、汇编语言、shell脚本、或它们的任意组合。计算机代码可以包括源代码和/或汇编的代码。
[0057] 存储器可以是非易失性存储器和/或易失性存储器,例如:随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器(EPROM)、闪存、和/或任何其他类型的存储器。存储器可以包括:高速缓存、闪存驱动器、光盘驱动器、磁(硬盘驱动器)和/或任何其他类型的数据存储设备。缓冲区(例如应用缓冲区116、图像缓冲区130和传感器图像缓冲区126)可以是一个或多个存储器的区域。
[0058] 处理器可以与存储器通信。在一个示例中,存储器还可以与附加组件(例如,集成显示器118)通信。
[0059] 图2示出了说明了系统100的逻辑的流程图。该逻辑可以包括附加操作、不同的操作、或较少的操作。该操作可以与图2所示不同的顺序来执行和/或彼此并行执行。
[0060] 在操作开始时,可以提供相机服务104,通过相机服务104,图像消费应用108、110或112选择非传感器图像源设备作为图像源,以从该图像源接收图形内容(210)。例如,相机服务104可以被存储在存储器中,和/或可以提供包括相机服务104的设备121。
[0061] 接下来,使用非传感器图像源设备,可以从应用缓冲区116生成在图像缓冲区130中的处理过的图像(220)。来自图像消费应用108、110或112的用于选择非传感器图像源设备102作为图像源的请求可以由相机服务104接收(230)。
[0062] 所述操作可以在下述操作中结束:其中,基于用于选择非传感器图像源设备作为图像源的请求,通过相机服务104,可以向图像消费应用108、110或112提供由非传感器图像源设备在图像缓冲区130中生成的处理过的图像(240)。例如,由于使用识别了非传感器图像源设备的图像源标识符来实例化编程对象,实例化的编程对象可以向图像消费应用108、110或112提供处理过的图像。向图像消费应用108、110或112提供图像缓冲区130中的处理过的图像可以响应于对编程程序的调用。取代以向图像消费应用108、110或112提供处理过的图像的操作来结束操作,操作可以循环回操作的起始处或转入某个其他操作。
[0063] 该操作还可以包括:使用相机服务104从图像消费应用108、110或112接收针对目标格式的请求,其中,提供图像缓冲区130的处理过的图像包括:以目标格式提供处理过的图像。生成处理过的图像可以包括:修改从应用缓冲区114取回的像素数据。
[0064] 如上所述,用于访问图像的系统100可以包括:图像缓冲区130;组合管理器128,其包括处理器129,处理器129基于由第一应用114在应用缓冲区116中呈现的应用图像,在图像缓冲区128中生成处理过的图像;以及相机服务104,其从第二应用108、110或112接收用于选择图像源120或106作为图形内容接收的来源的请求,其中,从包括传感器图像源106和组合管理器128在内的多个图像源中选择图像源102或106,以及基于由第二应用108、110或112将组合管理器128选择为图像源,相机服务104向第二应用108、110或112提供图像缓冲区130的图形内容。处理过的图像可以是组合图像。处理过的图像可以由组合管理器128作为应用缓冲区116的图形内容的组合而生成,应用缓冲区116包括由第二应用108、110或112呈现的应用缓冲区。
[0065] 不管是否与所描述的具体实现相关,所有的讨论在本质上都是示例性的,而非限定性的。例如,尽管将各实现的所选择的方面、特征或组件描述为存储在存储器中,但与本公开一致的系统和方法的全部或部分可以存储在其他计算机可读存储介质上,在其他计算机可读存储介质上分布,或从其他计算机可读存储介质中读取,该其他计算机可读存储介质是例如辅助存储设备,例如硬盘、软盘、和CD-ROM;或目前已知的或今后开发出的其他形式的ROM或RAM。计算机可读存储介质可以是非瞬时性的计算机可读介质,其包括CD-ROM、易失性或非易失性存储器,例如ROM和RAM,或任何其他适合的存储设备。此外,各模块仅是这样的功能的一个示例,且涵盖相似的功能任何其他配置也是可能的。
[0066] 此外,尽管本公开中描述了具体的组件,但与本公开一致的方法、系统、和制品也可以包括附加组件或不同组件。例如,存储器可以是DRAM、SRAM、闪存或任何其他类型的存储器。标志、数据、数据库、表、实体、和其他数据结构可以以多种不同的方式被单独存储和管理,被并入单一存储器或数据库、分布式的、或被逻辑地和物理地组织。组件可以被独立地操作或可以是相同的程序的一部分。组件可以存在于不同的硬件上,例如分离的可拆卸的电路板,或共享相同的硬件,例如相同的存储器和用于实现来自存储器的指令的处理器。程序可以是单一程序的一部分、分离的程序、或在若干存储器和处理器上分布。
[0067] 用于实现上述进程、方法和/或技术的各逻辑、软件或指令可以在计算机可读介质或存储器或其他有形介质上提供,例如:高速缓存、缓冲区、RAM、可拆卸式介质、硬盘驱动器、其他计算机可读存储介质、或任何其他有形介质或它们的任意组合。有形介质可以包括各种类型的易失性存储介质和非易失性存储介质。附图所示的或本文中所述的功能、动作或任务可以响应存储于计算机可读介质之中或之上的逻辑或指令的一个或多个集合而被执行。功能、动作或任务与指令集合、存储介质、处理器或处理策略无关,并且可以通过软件、硬件、集成电路、固件、微代码等单独工作或组合工作。同样地,处理策略可以包括:多处理、多任务、并行处理等。在一个实施例中,为了被本地系统或远程系统读取,指令被存储于可移除介质设备上。在其他实施例中,为了通过计算机网络或通过电话线传输,逻辑或指令被存储于远程位置中。在其它实施例中,逻辑或指令被存储于给定计算机、中央处理单元(“CPU”)、图形处理单元(“GPU”)或系统中。