显示来自多监视器计算机系统中的多个源计算机的视频数据的方法和装置的制作方法

xiaoxiao2020-6-26  18

专利名称:显示来自多监视器计算机系统中的多个源计算机的视频数据的方法和装置的制作方法
技术领域
下文一般地涉及多监视器计算机系统,并且具体地,涉及用于显示来自多监视器 计算机系统中的可能多个源计算机的视频数据的装置、方法和计算机程序产品。
背景技术
使用物理显示器设备来便利会议变得越来越流行。根据环境,物理显示器设备可 以是许多类型(例如,液晶显示器(LCD)、阴极射线管(CRT)、交互式白板(IWB)或其它显示 器面板等)和/或不同尺寸中的一个。通常,从诸如个人计算机等的单个计算设备中的视 频卡向物理显示器设备提供视频数据,并且将该物理显示器设备置于在会议室中,以便于 对所有的会议参加者都可见。这样的物理显示器设备用于呈现幻灯片、视频数据、照片、图 表等以在演讲期间进行使用或者用于讨论。在具有多个贡献者的会议室中,可以使用多个 物理显示器设备,并且以一对一的方式将每一个连接到参与者各自的计算设备。多监视器计算机系统包括连接到单个计算设备的多个物理显示器设备。多监视器 计算机系统针对计算机程序提供增加的显示区域,并且变得越来越流行。为了支持多个物 理显示器设备,许多个人计算机中的视频卡具有多个插孔,以接纳来自多于一个的物理显 示器设备的电缆。替选地,一些个人计算机具有多个视频卡以接纳来自多于一个的物理显 示器设备的电缆。在任何一种情况下,响应于执行一个或多个计算机程序而由计算设备的 视频卡生成的视频数据都被输出到物理显示器设备以进行显示。其它多监视器计算机系统 具有联网的物理显示器设备,其中,物理显示器设备经由无线或有线网络来进行连接,并且 经由该网络连接来向物理显示器设备提供视频数据以进行显示。在会议期间常常期望在单个物理显示器设备上呈现来自多个源计算设备的视频 数据。这通常通过以物理方式从一个源计算设备拔出物理显示器设备中的一个的电缆并将 其插入另一个中来完成。然而,以物理方式交换电缆可能是相当不方便并且耗时的,尤其是 在多监视器计算机系统中。此外,以物理方式从源计算设备移除电缆使得不可能将其视频 数据连同另一个的视频数据同时显示在同一物理显示器设备上。如将认识到的,期望改善来自多监视器计算机系统中的多个计算设备的视频数据 的显示。因此,本发明的目的至少在于提供一种用于显示来自多监视器计算机系统的多个 源计算机的视频数据的新颖的方法以及采用该方法的新颖的装置。

发明内容
根据一方面,提供了一种用于显示来自多监视器计算机系统中的至少一个源计算 机的视频数据的装置,包括源计算机接口,该源计算机接口用于从至少一个源计算机接收至少视频数据;多监视器接口,该多监视器接口用于向多个监视器提供视频数据;以及处理结构,该处理结构基于从至少一个源计算机接收到的显示请求来协调经由多监视器接口向监视器路由视频数据。根据另一方面,提供了一种显示来自多监视器计算机系统中的至少一个源计算机 的视频数据的方法,包括从至少一个源计算机接收至少视频数据;以及基于从至少一个源计算机接收到的显示请求来协调对相应监视器的接收到的视 频数据的路由。根据本发明的另一方面,提供了一种计算机可读介质,该计算机可读介质包含用 于显示来自多监视器计算机系统中的至少一个源计算机的视频数据的计算机程序,该计算 机程序包括从至少一个源计算机接收至少视频数据的程序代码;以及基于从所述至少一个源计算机接收到的显示请求来协调对多个监视器的接收到 的视频数据的路由的程序代码。根据另一方面,提供了一种系统,该系统包括多个监视器,该多个监视器在操作 上与至少一个计算设备相关联,该至少一个计算设备用于从至少一个源计算机接收至少视 频数据并且执行显示管理程序,该显示管理程序基于从所述至少一个源计算机接收到的显 示请求来协调对相应的各个监视器的接收到的视频数据的路由。本发明的装置、方法、计算机可读介质和系统支持在多个监视器上的对来自至少 一个源计算机的视频数据的显示的集中式协调,至少减少对于插入和拔出物理电缆的需 要,并且基本上使得在多个监视器上显示和协调来自一个或多个源计算机的视频数据的过 程变得容易。


现在将参考附图来更全面地描述实施例,在附图中图1是多监视器计算机系统的示意性表示;图2示出了部署在会议室中并且包括连接到单个中央计算机的多个交互式白板 和多个膝上型源计算机的多监视器计算机系统;图3示出了图2的交互式白板和两个膝上型计算机,来自两个膝上型计算机的视 频数据被路由以在相应的各个交互式白板上进行显示;图4a是在与在中央计算机上运行的主机显示管理程序进行交互的相应的源计算 机上运行的客户端显示管理程序的示意性表示;图4b是示出用于共享视频数据的步骤的流程图;图5A至图5B示出了用于创建请求源计算机与监视器之间的关联并且用于在监视 器上显示来自请求源计算机的视频数据的过程的流程图;图6是使得在源计算机处显示的用于选择期望在其上显示视频数据的监视器的 对话框的图示;以及图7是示出用于从源计算机向相关监视器提供视频数据的过程的流程图。
具体实施例方式现在转到图1,示出了多监视器计算机系统,并且通常用附图标记20来标识该多监视器计算机系统。如可以看到的,在该实施例中,多监视器计算机系统包括多个物理显示 器设备22、24、26,其中的每一个都连接到公共计算设备,在该情况下为中央计算机28。物 理显示器设备22、24、26可以采取多种形式。例如,物理显示器设备可以是相同类型或不同 类型的监视器(例如,液晶显示器(LCD)、阴极射线管(CRT)、等离子显示器设备或其它类型 的显示器面板)和/或可以具有相同或不同的分辨率。替选地,物理显示器设备22、24、26 可以是交互式白板(IWB)。每个IWB可以是许多类型中的一个,该类型包括但不限于,模拟 电阻式、电容式、基于照相机、电磁性、表面声波等。当然,物理显示器设备22、24、26可以是 监视器与IWB的组合。一个或多个其它计算设备也与中央计算机28进行通信。在该实施 例中,示出了与中央计算机28进行通信的三(3)个膝上型计算机30、32、34。膝上型计算 机30、32、34可以通过诸如以太网或通用串行总线(USB)连接的有线通信链路来与中央计 算机28进行通信,或者可以通过诸如射频(RF)或蓝牙TM连接的无线通信链路来与中央计 算机28进行通信。出于本申请的目的,将可互换地使用“监视器”和“物理显示器设备”来 引用上文所阐述的监视器、IWB、或任何其它这样的物理显示器设备中的任何一个。如在以下段落中将更详细描述的,如将要描述的,中央计算机28被布置或编程为 显示来自多监视器计算机系统中的多个源膝上型计算机30、32、34的视频数据。中央计算 机28包括用于从多个源计算机30、32、34接收视频数据的源计算机接口 29。根据实现,源 计算机接口 29可以是用于处理与源计算机30、32、34的有线和/或无线通信链路的单个 设备,或者包括一组源计算机接口设备,其中的每个都处理与源计算机30、32、34中的相应 一个的通信。中央计算机28还包括用于向监视器22、24和26提供视频数据的多监视器接 口 27。根据实现,多监视器计算机接口 27可以是用于处理与监视器22、24和26的有线和 /或无线通信链路的单个设备,或者包括一组监视器接口设备,其中的每一个都处理与监视 器22、24、26中的相应一个的通信。中央计算机28包括处理器21,该处理器21根据存储在非易失性存储器31中并且 在系统存储器中执行的软件的指令,基于来自源计算机30、32、34的请求来协调将接收到 的视频数据经由多监视器接口 27提供给监视器22、24、26。除存储用于协调多监视器计算机系统20的软件之外,存储器31还存储用户可调 整的和非用户可调整的配置参数以在协调期间进行使用。根据需要,存储器31还被配置为 存储用于可选屏幕捕捉及其它目的的视频数据,诸如用于在源计算机30、32、34和中央计 算机28之间的文件共享和传送。同样出于该目的,可以将外部存储器设备(未示出)连接 到中央计算机28。中央计算机28还包括与中央计算机28的其它组件互连的网络接口 33,用于经由 网络37发送和接收视频数据并且处理来自远程源计算机(未示出)的显示请求。还可以 使用网络接口 33来提供对另一存储器设备(未示出)的访问。可以通过因特网、虚拟专用 网络(VPN)或类似通信链路经由窗口共享软件来进行与其它远程源计算机的通信。窗口 共享软件可以是多种类型中的一个,诸如由本申请的受让人、加拿大亚伯达省卡尔加里市 的SMART技术有限公司提供的类型,名为SynchronEyes 、Bridgit 或LinQ ,或者由第三 方提供的类型,名为 WebEx 、Microsoft Remote Desktop、Netmeeting、Windows Live 或 VNCtm0图2和图3示出了多监视器计算机系统20,该多监视器计算机系统20被部署在会4/12 页
议室中并且具有物理显示器设备22至26,物理显示器设备22至26采取在不同的间隔位置 处安装在会议室的墙壁上的交互式白板(IWB)的形式。经由安装在中央计算机28中的视 频卡的相应插孔所接纳的电缆或者经由网络连接来将每个IWB连接到中央计算机28 (未示 出)。该配置中的膝上型计算机30至34经由无线通信链路来与中央计算机28进行通信。 替选地,每个IWB可以包括嵌入式处理单元,该嵌入式处理单元控制其显示器,并且直接从 膝上型计算机30至34中的一个或多个接收通信。在该实施例中,IWB 22和24是由本申请的受让人、加拿大亚伯达省卡尔加里市的 SMART技术有限公司制造的600i系列交互式白板。如可以看到的,每个IWB 22,24包括具 有触摸表面72的模拟电阻式触摸屏70。触摸表面72被边框74包围。工具托盘76被附连 到与触摸表面72的底部边缘邻近的边框74,并且容纳用于与触摸表面72进行交互的一个 或多个工具。悬臂(boom)组件82经由安装支架84被安装在触摸屏70之上。悬臂组件82包 括从安装支架84向外延伸并且支撑邻近其远端处的投影仪88的大体水平的悬臂86。投影 仪88指向触摸屏70,使得由投影仪88投射的图像被呈现在触摸表面72上。在每个IWB 22,24的操作期间,投影仪88接收来自中央计算机28的视频输出,并 且将该视频图像投射到触摸表面72上。该视频图像可以是中央计算机28的桌面或膝上型 计算机30至34中的一个的桌面。当用户用诸如手指、笔工具或其它物体的指示器接触触 摸表面72时,该接触由IWB来检测,并且触摸屏(X,y)坐标的接触位置被传送到中央计算 机28。作为响应,中央计算机28将触摸屏(x,y)坐标映射成计算机显示器坐标,并且处理 该得到的输入。根据得到的输入的性质,可以将触摸表面接触处理为写入或绘画(draw)或 作为鼠标事件。因此,触摸表面72上的指示器接触或跨越接触表面72的指示器移动可以 由中央计算机28记录为写入或绘画,或者用于控制加载在中央计算机28上的一个或多个 应用程序的执行。中央计算机28还更新被传送到投影仪88的视频输出,使得在触摸表面 72上呈现的视频图像反映指示器活动。IffB 26是由本申请的受让人、加拿大亚伯达省卡尔加里市的SMART技术有限公司 制造的DViT基于照相机的交互式白板,并类似于美国专利No. 6,803,906 ;No. 6,972,401 ; 和No. 7,236,162中所述的那些,其全部内容通过引用并入本文中。IWB 26包括包围诸如等 离子体显示器或LCD的投影设备的显示屏的矩形边框或框架100。将工具托盘102附连到 边框100,并且容纳用于与投影设备进行交互的一个或多个笔工具。投影设备接收来自中央 计算机28的视频输出,并且在其显示屏106上显示视频图像。邻近边框100的至少两个角 来提供数字照相机104。数字照相机104具有包容显示屏106并且扫视显示屏106的重叠 视野。在操作期间,数字照相机104从不同视点获取大体上扫视显示屏106的图像并且 生成图像数据。由数字照相机104获取的图像数据由机载(on-board)数字信号处理器来 处理,以确定在捕捉到的图像数据中是否存在指示器。当确定了在捕捉到的图像数据中存 在指示器时,数字信号处理器生成指示器信息分组(PIP)并且将该PIP传送到主控制器。 在接收到PIP时,主控制器使用三角测量法来处理该PIP,以确定捕捉到的图像中的指示器 相对于显示屏(x,y)坐标的位置。以该方式,在响应于捕捉到的图像来生成PIP时,可以将 投影设备的显示屏106转换(turn)为交互式触摸表面来跟踪指示器在显示屏106上的位
8置和移动。由主控制器生成的显示屏(x,y)坐标被传送到中央计算机28。类似地,作为响 应,中央计算机28将显示屏(X,y)坐标映射成计算机显示器坐标并且处理该得到的输入。 根据得到的输入的性质,可以将显示屏106接触处理为写入或绘画或作为鼠标事件。因此, 显示屏106上的指示器接触或跨越显示屏106的指示器移动可以由中央计算机28记录为 写入或绘画,或用于控制加载在中央计算机28上的一个或多个应用程序的执行。中央计算 机28还更新传送到投影设备的视频输出,使得在其触摸屏106上呈现的视频图像反映指示 器活动。图4A示出了执行显示管理程序的多监视器计算机系统20的软件结构。每个源计 算机30、32、34都运行客户端显示管理程序112,其能够与在中央计算机28上运行的主机显 示管理程序114进行通信。客户端显示管理程序112将由源计算机30的用户发起的视频 数据显示请求传递到中央计算机28处的主机显示管理程序114。如将描述的,一旦显示请 求自动地或通过其用户(通常为会议主持人或管理员)被主机显示管理程序114准许,客 户端显示管理程序112就还处理对主机显示管理程序114的视频数据的发送。根据实施例,主机显示管理程序114对源计算机30、32、34进行轮询,以确定其是 否准备好提供或共享视频数据。主机显示管理程序114结合用户输入或自动地进行关于是 否准许显示请求以及关于视频数据将被路由到哪个监视器的确定。主机显示管理程序114 向在相应源计算机30、32、34上运行的客户端显示管理程序112发送准许/拒绝/等待消 息,以指示相应的显示请求已经被允许、拒绝或由于监视器的目前不可用而导致正在排队。 根据该实施例,还在源计算机30、32或34与中央计算机28之间交换其它信息,例如,监视 器标识符、包括哪个源计算机当前与特定监视器相关联的监视器可用性消息、监视器22、 24、26和源计算机30、32、34的可用屏幕分辨率。图4b是示出用于如由源计算机30、32、34中的一个的用户发起的用于共享视频数 据并且从而向中央计算机28提供视频数据的步骤的流程图120。使用在源计算机30上运 行的客户端显示管理程序112的接口,源计算机30的用户选择共享视频数据(步骤122)。 基于该选择,由在源计算机30上运行的客户端显示管理程序112将显示请求提供给在中央 计算机28上运行的主机显示管理程序114。从而向中央计算机28通知源计算机30可用于 提供用于在监视器22、24、26中的一个上进行显示的视频数据。然后,中央计算机28决定 是否准许该显示请求(步骤124)。为了促进监视器显示请求的协调使用户满意,主机显示管理程序114为在相应源 计算机22、24、26上运行的每个客户端显示管理程序112提供监视器标识符。每个监视器 标识符独特地标识中央计算机28针对其协调视频数据的路由的监视器30、32、34。然后, 源计算机30、32、34可以向其相应的用户呈现监视器标识符以有助于选择用于显示的监视 器,并且由用户发起的显示请求因此可以包括与用户的选择相对应的监视器标识符。如将 结合图6讨论的,主机显示管理程序114还与相应的监视器标识符相关联地提供哪些监视 器30、32、34已经与源计算机相关联的可用性消息指示。图5a和图5b示出了用于基于在中央计算机28处从源计算机30接收到的显示请 求(步骤210)来向监视器22、24、26中的一个共享源计算机30的视频数据的过程200的 流程图。如果显示请求包括标识源计算机30的用户想要向其发送视频数据的特定监视器 的监视器标识符(步骤212),则进行检查以确定特定被请求的监视器是否已经与另一源计算机(在该情况下,为源计算机32或34)相关联(或者“被共享到另一源计算机”)。这将 是在特定被请求的监视器实际上正在显示另一源计算机的视频数据(步骤214)时,或者在 已经建立了关联并且被请求的监视器上的视频数据的显示即将发生时的情况。如果特定被 请求的监视器还没有被共享到另一源计算机,则被请求的监视器由中央计算机28预留用 于请求源计算机30 (步骤216)。更特别地,创建使源计算机30与被请求的监视器相关联的 存储器31中的电子预留记录。一旦已经以该方式建立了关联,则向请求源计算机30通知该预留(步骤234)。一 旦已被通知了该预留,请求源计算机30生成并且向中央计算机28发送用于在预留的监视 器22上显示视频数据的指令。然后,将用于在预留的监视器上显示视频数据的指令与存储器31中的预留记录 作比较,以确保源计算机30确实被授权在预留的监视器22上显示视频数据。然后,进行检 查以确定是否需要管理员/主持人进行对于显示的进一步许可(步骤236)。在该实施例 中,管理员/主持人是中央计算机28的用户。在需要进一步的许可的情况下,在中央计算 机28的本地屏幕(未示出)上为管理员/主持人提供作为用户界面的一部分的对话框,并 且提供准许或拒绝该预留的机会。还为管理员/主持人提供修改电子预留记录或创建新的 电子预留记录以实际上使请求源计算机30与替选监视器相关联的机会(步骤242)。如果 管理员拒绝该请求,则源计算机30接收拒绝监视器共享请求消息,并且不经由中央计算机 28向被请求的监视器转发视频数据(步骤244)。如果管理员确认该预留,则由中央计算机 28根据由源计算机30提供的包括显示参数(如果需要)的显示指令来自动地调整预留的 监视器的分辨率,并且在源计算机30与中央计算机28之间建立视频数据传送连接,使得视 频数据被提供给预留的监视器来进行显示(步骤238)。在管理员选择通过使另一可用监视 器与请求源计算机30相关联来调整预留的情况下,相应地修改电子预留请求,创建新的电 子预留请求来替代原始的电子预留请求,或不论电子预留请求如何中央计算机28都将视 频数据路由到替选监视器(步骤246),并且然后过程前进到步骤238。在替选实施例中,主机显示管理程序自动地决定确认还是拒绝该预留,或者将不 同的可用监视器指配给请求源计算机30。在做出决定(例如,在步骤238或步骤244)之 后,优选地删除没有指配给源计算机30的预留的监视器的电子预留记录。在步骤214处,在被请求的监视器当前正在显示视频数据并且因此已经被共享的 情况下,在步骤218处进行检查以确定是否自动地拒绝新的显示请求。在被请求的监视器 当前被共享的情况下,是否自动地拒绝显示请求的决定优选地基于在中央计算机28上运 行的主机显示管理程序112的用户可调整的设置。基于该设置,这时可以拒绝该请求(步 骤220)。否则,进行检查以确定是否可以替换当前共享被请求的监视器的源计算机(步骤 222),使得当前源计算机与被请求的监视器分离,并且使请求源计算机30与被请求的监视 器相关联。是否自动地替换现有监视器共享的决定优选地基于在中央计算机28上运行的 主机显示管理程序114的用户可调整的设置。在可以替换现有监视器共享的情况下,作出尝试来预留另一可用监视器用于将被 替换的源计算机,并且预留被请求的监视器用于请求源计算机30 (步骤224)。然后,该过程 移动到步骤234,并如上文所述地继续。如果在步骤222处,可以不替换被请求的监视器与其当前源计算机之间的现有关
10联,则在步骤226处进行关于是否存在任何可用监视器的检查。如果没有显示源计算机的 视频数据(例如,没有“共享到”源计算机),则认为该监视器可用。在至少一个监视器可用 的情况下,基于预留协议来预留可用监视器中的一个用于请求源计算机(步骤228)。预留 协议的细节可以包括诸如基于请求源计算机所连接(如果是有线连接)到的中央计算机28 中的特定插孔来选择监视器的规则。其它规则诸如由请求源计算机的用户以其选择请求源 计算机共享视频数据的顺序、下一个可用监视器所连接(如果是有线连接)到的中央计算 机28中的特定插孔、监视器以其连接到中央计算机28的顺序、或最近监视器使用的顺序。 可以采用其它这样的规则或规则的协议。然后,向请求源计算机通知该预留(以及被请求的监视器不可用)(步骤234),并 且过程如上所述地继续。在该实例中,对话框弹出以向请求源计算机的用户通知被请求的 监视器不可用,但是可以选择一个或多个替选监视器。在步骤226处,在不存在可用的监视器的情况下,那么来自请求源计算机的显示 请求在存储器31中进行排队(步骤230),直至使用中央计算机28的管理员选择该请求并 指定用于请求源计算机的监视器预留(步骤232),或者直至监视器变得可用(步骤226)。 这时,过程随后如上文所述从步骤228开始继续。在步骤212处,在来自请求源计算机的显示请求不包括监视器标识符的情况下, 那么过程在步骤226立即继续,以确定是否有任何监视器可用,并且如果是这样,则根据如 上所述的协议和主机显示管理程序114的设置来自动地或通过管理员/主持人选择来选择 监视器。图6是在中央计算机28或在源计算机30、32、34处本地地显示的用于选择用于显 示视频数据的监视器22、24、26的对话框150的图示。如上所指示的,该对话框使得用户能 够查看与中央计算机28与之进行通信的监视器的监视器标识符以及状态和分辨率信息。 例如,如图6所示,第三监视器156当前正在显示Andy的源计算机的桌面,并且第一和第二 监视器152和154可用于显示来自中央计算机28与之进行通信的其它源计算机的视频数 据。图7是示出在步骤238处用于将视频数据从源计算机30提供到相关监视器的过 程300的流程图。以为源计算机的本地显示准备视频数据相同的方式在源计算机处准备视 频数据(步骤310)。然后,将视频数据处理成适合于通过源计算机30与中央计算机28之 间的有线或无线连接传输到中央计算机28的格式(步骤312)。在实施例中,对视频数据进 行压缩和编码,以便于保持视频数据在传输期间的完整性,并且减少发送的视频数据量。然 后,处理的视频数据被发送到中央计算机28(步骤314),并且被路由到相关监视器来进行 显示(步骤316)。应当理解,完全运行的多监视器计算机系统20可以具有同时协调下的许多本地 和/或远程源计算机30、32、34和许多监视器22、24、26,以便于实时地实现来自多监视器计 算机系统20中的多个源计算机的视频数据的有用的和同时显示。虽然已经描述了采用单个中央计算机28的实施例,但是应当理解,可以将多个这 样的计算机28互连,以便于提供更大的范围来显示来自多个源的视频数据。例如,可以经 由中央计算机28之间的对等连接将每个都具有相应的中央计算机28的多个会议地点进行 互连。这将使得能够经由与在另一会议地点处的会议参与者的对等连接来共享连接到一个会议地点处的一个中央计算机28的源计算机视频数据,反之亦然。为了有助于该范围的系 统的协调,可能有用的是,经由配置设置来指定会议室中的一个或多个监视器是“远程”监 视器,而其余监视器是“本地的”。这可以通过限制可用于本地源计算机的监视器选择以便 于向被预留作为远程的那些监视器提供视频数据来实现。虽然已描述了实施例,由此源计算机的用户能够使用号码或图形用户界面来请求 监视器,但可以使用其它方法。例如,可能要求请求源计算机的用户在进行显示请求时预先 处理监视器连接代码,以便于根据允许用户在哪些监视器上显示来自其正在操作的源计算 机的视频数据来促进安全水平和协调性。某些有资格的用户可以在会议之前接收到其独特 的监视器连接代码,使得有资格的用户能够使用其独特的连接代码来向某些监视器提供视 频数据,同时防止具有连接到网络的源计算机的其它会议出席人这样做。应当理解,上述发明不限于用膝上型源计算机来进行使用,而是可以用于用作源 计算机和/或中央计算机28的各种类型的便携式计算机,诸如蜂窝式电话、PDA(个人数字 助理)或台式计算机。附录A是软件代码和关于该软件代码的注释,用于找到包括标识符的主机(中央) 计算机的监视器信息,向远程(源)客户端发送主机的监视器信息,并且针对要在其上显示 的监视器来提示远程(源)客户端,以在如上所述的识别监视器期间进行使用。用于显示来自多监视器计算机系统中的多个源计算机的视频数据的上述装置和 所述方法可以包括或者完全或部分地由程序模块来实现,程序模块包括但不限于例程、程 序、对象组件、数据结构等,并且可以被实现为存储在计算机可读介质上的计算机可读程序 代码。计算机可读介质是能够存储随后可以由计算机系统读取的数据的任何数据存储设 备。计算机可读介质的示例包括,例如,只读存储器、随机存取存储器、USB密钥、闪速存储 器(诸如SD卡)、CD-ROM、磁带和光学数据存储设备。计算机可读程序代码还可以分布在 包括耦接的计算机系统的网络上,使得以分布式方式存储和执行计算机可读程序代码。虽然本文所述的实施例包括发起对中央计算机28的显示请求的提供的源计算 机,但可以有替换方案。例如,中央计算机28可以发起针对源计算机30、32、34的“共享”状 态的其硬件连接的周期性轮询作为一种形式的显示请求,指示一个或多个源计算机可用于 提供视频数据。虽然上文已经描述了特定实施例,但本领域的技术人员应当认识到,在不脱离所 附权利要求所限定的本发明的精神和范围的情况下可以进行修改和变更。附录 A1.)找到主机计算机的监视器信息以下监视器代码可在下列各项处获得svn//calsvnO/LinQ/trunk/Source/1ibSharedData/MonitorData. cppsvn://calsvnO/LinQ/trunk/Source/1ibSharedData/MonitorData. h使用枚举函数来检索关于系统上的不同显示器的信息HDC hdcScreen = GetDC(O);EnumDisplayMonitors (hdcScreen, NULL, MonitorEnumProc,(LPARAM) this); ReleaseDC (0,hdcScreen);
12
枚举函数如下//枚举函数最初由Dan Mitchell写出,作为Bridgit会议软件的一Il 部分BOOL CALLBACK MonitorEnumProc (MONITOR hmon, HDC hdcmon,LPRECT rectmon, LPARAM Iparam){CMonitorData^pData = (CMonitorData*)Iparam ;M0NIT0RINF0EX mix ;mix. cbSize = sizeof (mix);int iMonitor = pData-> GetMonitorCountO ;int iDepth = GetDeviceCaps(hdcmon, BITSPIXEL);iDepth氺=GetDeviceCaps (hdcmon, PLANES);GetMonitorInfo(hmon, (M0NIT0RINF0*)&mix);H使用已经在阵列(它是静态定义的阵列)中的数据结构。//在当其已经锁定其桌面时具有读取颜色深度的问题的情况下使//用现有值(而不是创建整个新sMONITOR结构)。IMonitorModelsMONITOR monNew = pData-> GetMonitorByIndexUnchecked(iMonitor);monNew. rcMonitor = mix. rcMonitor ;monNew. csName = mix. szDevice ;monNew. hMon = hmon ;monNew. bPrimary = (mix. dwFlags & M0NIT0RINF0F_PRIMARY);monNew. iDepth = iDepth ;//如果其已经锁定其桌面,则在Windows XP下为此获得_1,因//为(猜测)对enumdisplaymonitors的调用不知何故出现错误。//在该情况下,使用我们有的最后一个值,只要该值是有效的。if (monNew. iDepth == -1){if (monNew. iLastDepth == -1){//这是非常坏的消息_我们不知道在该情况下该做什么,因此让我//们仅仅猜测32bpp。//这使得出错的可能性很大,但是-1是更严重的错误。monNew. iDepth = 32 ;}monNew. iDepth = monNew. iLastDepth ;}monNew. iLastDepth = monNew. iDepth ;//现在添加新的监视器
pData- > AddMonitor(monNew);return TRUE ;}2.)向远程客户端发送主机的监视器信息一旦我们具有主机PC的监视器信息,我们就可以将其发送到客户端PC,使得它知 道哪些监视器可用。这是我们从主机发送到客户端以概述哪些监视器可用及其尺寸和位置 是什么的消息。该文件可在以下处获得svn//calsvnO/LinQ/trunk/Source/1ibSharedData/message_contro11er.h////////////////////////////////////////////////////////////////////////"CSMsg_ControlIerRemoteMonitorSetup 等级class CSMsg_ControIlerRemoteMonitorSetup :publicCSMsg_Controller{public CAtlArray < IRemoteMonitorModel::sREMOTEMONITOR >m_caMonitors ;//默认构造函数CSMsg_ControlIerRemoteMonitorSetup (){m_caMonitors. RemoveAll () ;};//外出构造函数CSMsg_ControlIerRemoteMonitorSetup(CAtlArray < IRemoteMonitorModelsREMOTEMONITOR > &caMonitors){m_caMonitors. Append (caMonitors) ;};//进入构造函数CSMsg_ControIlerRemoteMonitorSetup(CSerializer^pSerial):CSMsg_Controller(pSerial){WORD wNumRect = pSerial- > Getfford ();for(int i = O ;i < wNumRect ;i++){IRemoteMonitorModel::sREMOTEMONITOR mon ;mon. bPrimary = (bool) pSerial-> GetBool ();mon. bSharing = (bool) pSerial-> GetBool ();CAtlString csString ;pSerial- > GetString(csString);mon. csName = csString ;mon. hMon = (MONITOR) pSerial- > GetDfford ();mon. iDepth = pSerial- > GetDfford ();
mon. iLastDepth = mon. iDepth ;POINT ptTopLeft = pSerial- > GetPointO ;POINT ptBotRight = pSerial- > GetPointO ;mon. rcMonitor = CRect (ptTopLeft, ptBotRight);m_caMonitors. Add (mon);}};virtual CSMsg_ControlIerRemoteMonitorSetup (){};virtual CONTROLLERMESSAGES GetControlIerMsgType(){returnCONTROLLER_REMOTEMONITORSETUP_MSG ;};virtual CAtlString ToStringO{CAtlString csTemp ;CsTemp. Format(_T(“ [CSMsgJDontrolIerRemoteMonitorSetup% dmonitors] “ ), m_caMonitors. GetCount ());return csTemp+CSMsg_ControllerToString ();}virtual int GetSize (){int rSize = CSMsg一Controller:GetSize()+sizeof(WORD);for (int i = O ;i < (int)m_caMonitors. GetCount () ;i++){rSize+ = sizeof(BYTE);rSize+ = sizeof (BYTE);rSize+ =(m_caMonitors[i]. csName. GetLength())*sizeof(TCHAR)+sizeof(WORD);rSize+ = sizeof(DWORD);rSize+ = sizeof(DWORD);rSize+= 8 ;//2个点,每点4个字节}return rSize ;}virtual void Serialize (CBufferSerializer^pSerial){CSMsg_Controller::Serialize (pSerial);WORD wNumMon = (WORD)m_caMonitors. GetCount ();pSerial- > Putfford(wNumMon);for (int i = O ;i < wNumMon ;i++){0187]
0188]
0189]
0190]
0191]
0192]
0193]
0194]
pSerial- > PutByte(m_caMonitors[i]. bPrimary) pSerial- > PutByte(m_caMonitors[i]. bSharing) pSerial- > PutString(m_caMonitors[i]. csName)
pSerial- > PutDfford(((DWORD)m_caMonitors[i]. hMon));
pSerial- > PutDfford(m_caMonitors[i]. iDepth);
pSerial- > PutPoint(m_caMonitors[i]. rcMonitor. TopLeft()); pSerial- > PutPoint (m_caMonitors[i]. rcMonitor. BottomRight());
0195]}
0196]};每当主计算机上的监视器设置改变时,或者当有人开始或停止共享到监视器时发 送该消息。3.)针对要在其上进行显示的监视器提示远程客户端如果当我们决定进行共享时存在多于一个可用的监视器,则我们CMultiMonitorDlg dig ;INT_PTR rv = dig. DoModal ();其启动多监视器选择对话svn://calsvnO/LinQ/trunk/Source/ZephyrClient/MultiMonitorDlg. cppsvn://calsvnO/LinQ/trunk/Source/ZephyrClient/MultiMonitorDlg. h当选择了监视器时,将HM0NIT0R值发送到主机计算机并且在匹配物理显示器上
幵始观看。
权利要求
一种用于显示来自多监视器计算机系统中的至少一个源计算机的视频数据的装置,包括源计算机接口,所述源计算机接口用于从至少一个源计算机接收至少视频数据;多监视器接口,所述多监视器接口用于向多个监视器提供视频数据;以及处理结构,所述处理结构基于从所述至少一个源计算机接收到的显示请求来协调视频数据经由所述多监视器接口到所述监视器的路由。
2.根据权利要求1所述的装置,其中,所述源计算机接口包括多个源计算机接口设备, 每个源计算机接口设备用于从相应的源计算机接收至少视频数据。
3.根据权利要求1至2中的一项所述的装置,其中,所述多监视器接口包括多个监视器 接口设备,每个监视器接口设备用于向相应的监视器提供视频数据。
4.根据权利要求1至3中的一项所述的装置,进一步包括存储设备,所述存储设备用于存储至少视频数据。
5.根据权利要求1至4中的一项所述的装置,进一步包括网络接口,所述网络接口向远程计算机发送至少视频数据并且从远程计算机接收至少 视频数据。
6.根据权利要求1至5中的一项所述的装置,其中,所述处理结构将来自每个源计算机 的视频数据路由到相应的监视器。
7.根据权利要求1至6中的一项所述的装置,其中,所述处理结构响应于接收显示请求 来创建用于使所述请求源计算机与被请求的监视器相关联的电子预留记录。
8.根据权利要求7所述的装置,其中,所述处理结构仅在视频数据在请求时没有被路 由到被请求的监视器的情况下创建所述电子预留记录。
9.根据权利要求7所述的装置,其中,所述处理结构向提供所述显示请求的所述源计 算机通知所述显示请求已经被准许。
10.根据权利要求1至9中的一项所述的装置,其中,所述处理结构引起用于手动地准 许或拒绝从源计算机接收到的显示请求的管理员界面的显示。
11.一种显示来自多监视器计算机系统中的至少一个源计算机的视频数据的方法,包括从至少一个源计算机接收至少视频数据;以及基于从所述至少一个源计算机接收到的显示请求来协调所接收到的视频数据到相应 的监视器的路由。
12.根据权利要求11所述的方法,进一步包括向所述至少一个源计算机提供用于包括在显示请求中的监视器标示符。
13.根据权利要求12所述的方法,其中,所述协调包括从请求源计算机接收将其相应的视频数据路由到与所述接收到的监视器标识符相对 应的被请求的监视器的包括监视器标识符的显示请求。
14.根据权利要求13所述的方法,进一步包括在视频数据已经被路由到所述被请求的监视器的情况下拒绝所述显示请求。
15.根据权利要求12所述的方法,进一步包括创建用于使所述请求源计算机与所述被请求的监视器相关联的电子预留记录。
16.根据权利要求12所述的方法,进一步包括在所述被请求的监视器已经与源计算机相关联的情况下,创建用于使所述请求源计算 机与替选监视器相关联的电子预留记录。
17.根据权利要求15至16中的一项所述的方法,其中,根据所述电子预留记录来协调 所述路由。
18.根据权利要求12至17中的一项所述的方法,进一步包括与相应的监视器标识符相关联地向所述至少一个源计算机提供监视器可用性数据,以 指示视频数据是否已经被路由到所述监视器。
19.根据权利要求11至18所述的方法,进一步包括在视频数据已经被路由到所有的所述监视器的情况下,对显示请求进行排队。
20.根据权利要求11至19中的一项所述的方法,进一步包括引起用于手动地准许或拒绝从源计算机接收到的显示请求的管理员界面的显示。
21.一种包含计算机程序的计算机可读介质,所述计算机程序用于显示来自多监视器 计算机系统中的至少一个源计算机的视频数据,所述计算机程序包括从至少一个源计算机接收至少视频数据的程序代码;以及基于从所述至少一个源计算机接收到的显示请求来协调所接收到的视频数据到多个 监视器的路由的程序代码。
22.一种包括多个监视器的系统,所述多个监视器在操作上与至少一个计算设备相关 联,所述至少一个计算设备用于从至少一个源计算机接收至少视频数据并且执行显示管理 程序,所述显示管理程序基于从所述至少一个源计算机接收到的显示请求来协调所接收到 的视频数据到相应的各个监视器的路由。
23.根据权利要求22所述的系统,其中,所述显示管理程序向所述至少一个源计算机 提供每个监视器所特有的监视器标识符,以供由相应的用户进行选择,从而将其包括在显 示请求中。
24.根据权利要求22所述的系统,其中,在被请求的监视器还没有与另一源计算机相 关联的情况下,所述显示管理程序响应于接收到显示请求来创建使请求源计算机与所述被 请求的监视器相关联的电子预留记录。
25.根据权利要求22至24中的一项所述的系统,其中,所述显示管理程序呈现用户界 面,所述用户界面用于使得所述至少一个计算设备的用户能够查看和准许从所述源计算机 接收到的显示请求。
26.根据权利要求23至24所述的系统,其中,在请求源计算机提供了包括用于已经与 另一源计算机相关联的被请求的监视器的监视器标识符的显示请求的情况下,所述显示管 理程序拒绝所述显示请求。
27.根据权利要求23所述的系统,其中,在请求源计算机提供了包括用于已经与另一 源计算机相关联的被请求的监视器的监视器标识符的显示请求的情况下,所述显示管理程 序自动地使所述被请求的监视器与所述另一源计算机分离,并且使所述被请求的监视器与 所述请求源计算机相关联。
28.根据权利要求27所述的系统,其中,所述显示管理程序自动地使所分离的另一源 计算机与替选监视器相关联。
29.根据权利要求23至28所述的系统,其中,使得每个源计算机显示表示每个监视器 的用户可选择的图标。
30.根据利要求29所述的系统,其中,使得每个源计算机与每个监视器的图标相关联 地显示用于每个监视器的可用性消息。
31.根据权利要求29所述的系统,其中,在相应的监视器与源计算机相关联的情况下, 每个可用性消息包括标识当前正在使用所述监视器的所述源计算设备的信息。
32.根据权利要求22至31所述的系统,进一步包括存储器,所述存储器用于存储从所 述至少一个源计算机中的一个或多个接收到的至少视频数据。
33.根据权利要求22至31所述的系统,其中,所述显示管理程序将显示请求的队列存 储在所述存储器中。
34.根据权利要求33所述的系统,其中,所述管理员界面使得用户能够调整存储在所 述队列中的显示请求,从而使源计算机与可用监视器相关联。
全文摘要
提供了一种用于显示来自多监视器计算机系统中的至少一个源计算机的视频数据的装置、方法和计算机程序产品。该装置包括用于从至少一个源计算机接收至少视频数据的源计算机接口以及用于向多个监视器提供视频数据的多监视器接口。处理结构基于从至少一个源计算机接收到的显示请求来协调接收到的视频数据经由多监视器接口到监视器的路由。
文档编号G09G5/14GK101965609SQ200980106596
公开日2011年2月2日 申请日期2009年1月7日 优先权日2008年1月7日
发明者安德鲁·莱昂, 维克托·安东纽克, 马克·麦克尔希尼 申请人:智能技术Ulc公司

最新回复(0)